|
opensurgsim
|
A device filter can be connected between a device and the InputConsumerInterface (e.g., InputComponent) and/or the OutputProducerInterface (e.g., OutputComponent), and can alter the data being passed from/to the device. More...
#include <DeviceFilter.h>
Public Member Functions | |
| DeviceFilter (const std::string &name) | |
| Constructor. More... | |
| SURGSIM_CLASSNAME (SurgSim::Devices::DeviceFilter) | |
| bool | initialize () override |
| Fully initialize the device. More... | |
| bool | isInitialized () const override |
| void | initializeInput (const std::string &device, const DataStructures::DataGroup &inputData) override |
| Set the initial input data group. More... | |
| void | handleInput (const std::string &device, const DataStructures::DataGroup &inputData) override |
| Notifies the consumer that the application input coming from the device has been updated. More... | |
| bool | requestOutput (const std::string &device, DataStructures::DataGroup *outputData) override |
| Asks the producer to provide output state to the device. More... | |
Public Member Functions inherited from SurgSim::Input::CommonDevice | |
| CommonDevice (const std::string &name) | |
| Constructor. More... | |
| CommonDevice (const std::string &name, const DataStructures::DataGroup &inputData) | |
| Constructor. More... | |
| CommonDevice (const std::string &name, DataStructures::DataGroup &&inputData) | |
| Constructor. More... | |
| virtual | ~CommonDevice () |
| Destructor. | |
| std::string | getName () const override |
| Return a (hopefully unique) device name. | |
| std::string | getClassName () const override |
| The class name for this class. More... | |
| void | setNameForCallback (const std::string &name) |
| Set the name used for calling the input consumers and output producer. More... | |
| std::string | getNameForCallback () const |
| Get the name used for calling the input consumers and output producer. More... | |
| bool | addInputConsumer (std::shared_ptr< InputConsumerInterface > inputConsumer) override |
| Adds an input consumer that will be notified when the application input state is updated. More... | |
| bool | removeInputConsumer (std::shared_ptr< InputConsumerInterface > inputConsumer) override |
| Removes an input consumer previously added via addInputConsumer. More... | |
| void | clearInputConsumers () override |
| Removes all InputConsumers. | |
| bool | setOutputProducer (std::shared_ptr< OutputProducerInterface > outputProducer) override |
| Sets an output producer that will be asked for application output state when the device needs it. More... | |
| bool | removeOutputProducer (std::shared_ptr< OutputProducerInterface > outputProducer) override |
| Removes an output producer previously added via setOutputProducer. More... | |
| bool | hasOutputProducer () override |
| Query if this object has output producer. More... | |
| void | clearOutputProducer () override |
| Removes any OutputProducer. | |
Public Member Functions inherited from SurgSim::Input::DeviceInterface | |
| virtual | ~DeviceInterface () |
| Virtual destructor (empty). | |
Public Member Functions inherited from SurgSim::Framework::Accessible | |
| Accessible () | |
| Default Constructor. | |
| ~Accessible () | |
| Destructor. | |
| template<class T > | |
| T | getValue (const std::string &name) const |
| Retrieves the value with the name by executing the getter if it is found and tries to convert it to the given type. More... | |
| boost::any | getValue (const std::string &name) const |
| Retrieves the value with the name by executing the getter if it is found. More... | |
| template<class T > | |
| bool | getValue (const std::string &name, T *value) const |
| Retrieves the value with the name by executing the getter if it is found, and converts it to the type of the output parameter. More... | |
| void | setValue (const std::string &name, const boost::any &value) |
| Sets a value of a property that has setter. More... | |
| bool | isReadable (const std::string &name) const |
| Check whether a property is readable. More... | |
| bool | isWriteable (const std::string &name) const |
| Check whether a property is writable. More... | |
| void | setGetter (const std::string &name, GetterType func) |
| Sets a getter for a given property. More... | |
| void | setSetter (const std::string &name, SetterType func) |
| Sets a setter for a given property. More... | |
| void | setAccessors (const std::string &name, GetterType getter, SetterType setter) |
| Sets the accessors getter and setter in one function. More... | |
| void | removeAccessors (const std::string &name) |
| Removes all the accessors (getter and setter) for a given property. More... | |
| void | forwardProperty (const std::string &name, const Accessible &target, const std::string &targetProperty) |
| Adds a property with the given name that uses the targets accessors, in effect forwarding the value to the target. More... | |
| void | setSerializable (const std::string &name, EncoderType encoder, DecoderType decoder) |
| Sets the functions used to convert data from and to a YAML::Node. More... | |
| void | setDecoder (const std::string &name, DecoderType decoder) |
| Sets the functions used to convert data from a YAML::Node. More... | |
| YAML::Node | encode () const |
| Encode this Accessible to a YAML::Node. More... | |
| void | decode (const YAML::Node &node, const std::vector< std::string > &ignoredProperties=std::vector< std::string >()) |
| Decode this Accessible from a YAML::Node, will throw an exception if the data type cannot be converted. More... | |
| std::vector< std::string > | getProperties () |
| template<> | |
| boost::any | getValue (const std::string &name) const |
Public Member Functions inherited from SurgSim::Input::InputConsumerInterface | |
| virtual | ~InputConsumerInterface () |
| Virtual destructor (empty). | |
Public Member Functions inherited from SurgSim::Input::OutputProducerInterface | |
| virtual | ~OutputProducerInterface () |
| Virtual destructor (empty). | |
Protected Member Functions | |
| virtual void | filterInput (const std::string &device, const DataStructures::DataGroup &dataToFilter, DataStructures::DataGroup *result) |
| Filter the input data. More... | |
| virtual void | filterOutput (const std::string &device, const DataStructures::DataGroup &dataToFilter, DataStructures::DataGroup *result) |
| Filter the output data. More... | |
| bool | finalize () override |
| Finalize (de-initialize) the device. | |
Protected Member Functions inherited from SurgSim::Input::CommonDevice | |
| virtual void | pushInput () |
| Push application input to consumers. | |
| virtual bool | pullOutput () |
| Pull application output from a producer. | |
| DataStructures::DataGroup & | getInputData () |
| Getter for the input data DataGroup. More... | |
| const DataStructures::DataGroup & | getOutputData () const |
| Getter for the output data DataGroup. More... | |
Protected Attributes | |
| bool | m_initialized |
| true if initialized and not finalized. | |
Additional Inherited Members | |
Public Types inherited from SurgSim::Framework::Accessible | |
| typedef std::function< boost::any(void)> | GetterType |
| typedef std::function< void(boost::any)> | SetterType |
| typedef std::function< YAML::Node(void)> | EncoderType |
| typedef std::function< void(const YAML::Node *)> | DecoderType |
Public Types inherited from SurgSim::Framework::FactoryBase1< DeviceInterface, std::string > | |
| typedef ObjectFactory1< DeviceInterface, std::string > | FactoryType |
Static Public Member Functions inherited from SurgSim::Framework::FactoryBase1< DeviceInterface, std::string > | |
| static FactoryType & | getFactory () |
A device filter can be connected between a device and the InputConsumerInterface (e.g., InputComponent) and/or the OutputProducerInterface (e.g., OutputComponent), and can alter the data being passed from/to the device.
|
explicit |
Constructor.
| name | Name of this device filter. |
|
protectedvirtual |
Filter the input data.
| device | The name of the device pushing the input data. | |
| dataToFilter | The data that will be filtered. | |
| [in,out] | result | A pointer to a DataGroup object that must be assignable to by the dataToFilter object. Will contain the filtered data. |
Reimplemented in LabJackToPoseFilter, and SurgSim::Devices::BoolToScalar.
|
protectedvirtual |
Filter the output data.
| device | The name of the device pulling the output data. | |
| dataToFilter | The data that will be filtered. | |
| [in,out] | result | A pointer to a DataGroup object that must be assignable to by the dataToFilter object. Will contain the filtered data. |
Reimplemented in LabJackToPoseFilter, and SurgSim::Devices::PoseIntegrator.
|
overridevirtual |
Notifies the consumer that the application input coming from the device has been updated.
Typical input data contents (but note that individual devices may do things differently):
| type | name | |
|---|---|---|
| pose | "pose" | Device pose (units are meters). |
| bool | "button1" | State of the first device button. |
| bool | "button2" | State of the second device button (and so on). |
Other possible contents includes:
| type | name | |
|---|---|---|
| bool | "isHomed" | Device homing status. |
| bool | "isHomedX" | Individual homing status for the X axis (and so on). |
| bool | "isHeld" | Safety sensor etc. status. |
| string | "model" | Device model description. |
| string | "serial" | Serial number string. |
| (any) | "debug:*" | Various debugging information |
| device | The name of the device that is producing the input. This should only be used to identify the device (e.g. if the consumer is listening to several devices at once). |
| inputData | The application input state coming from the device. |
Implements SurgSim::Input::InputConsumerInterface.
Reimplemented in SurgSim::Devices::PoseIntegrator.
|
overridevirtual |
Fully initialize the device.
When the manager object creates the device, the internal state of the device usually isn't fully initialized yet. This method performs any needed initialization.
Implements SurgSim::Input::DeviceInterface.
|
overridevirtual |
Set the initial input data group.
| device | The name of the device that is producing the input. This should only be used to identify the device (e.g. if the consumer is listening to several devices at once). |
| inputData | The application input state coming from the device. |
Implements SurgSim::Input::InputConsumerInterface.
Reimplemented in LabJackToPoseFilter, SurgSim::Devices::PoseIntegrator, and SurgSim::Devices::RecordPose.
|
overridevirtual |
Implements SurgSim::Input::DeviceInterface.
|
overridevirtual |
Asks the producer to provide output state to the device.
Note that devices may never call this method, e.g. because the device doesn't actually have any output capability.
Typical output data contents (but note that individual devices may do things differently):
| type | name | |
|---|---|---|
| vector | "force" | Commanded force for the device (units are newtons). |
| vector | "torque" | Commanded torque for the device (units are newton-meters). |
| bool | "isEnabled" | Safety switch input. |
Other possible contents includes:
| type | name | |
|---|---|---|
| bool | "led0" | Desired state for LED 0. |
| bool | "led1" | Desired state for LED 1. |
| string | "toolId" | Calibration ID to use, e.g. for camera devices. |
| device | The name of the device that is requesting the output. This should only be used to identify the device (e.g. if the producer is listening to several devices at once). | |
| [out] | outputData | The application output state being fed into the device. |
Implements SurgSim::Input::OutputProducerInterface.
1.8.12