25#ifndef _mtsIGTLBridge_h
26#define _mtsIGTLBridge_h
37class mtsIGTLBridgeData;
62template <
typename _cisstType,
typename _igtlType>
78template <
typename _cisstType,
typename _igtlType>
109 virtual bool Execute(igtl::Socket * socket, igtl::MessageBase * header) = 0;
116template <
typename _igtlType,
typename _cisstType>
124 bool Execute(igtl::Socket * socket, igtl::MessageBase * header)
override;
138 inline mtsIGTLBridge(
const std::string & componentName,
const double & period):
171 template <
typename _cisstType,
typename _igtlType>
173 const std::string & functionName,
174 const std::string & igtlDeviceName);
176 template <
typename _cisstType,
typename _igtlType>
178 const std::string & eventName,
179 const std::string & igtlDeviceName);
181 template <
typename _igtlType,
typename _cisstType>
183 const std::string & commandName,
184 const std::string & igtlDeviceName);
188 template <
typename _igtlMessagePo
inter>
189 void Send(_igtlMessagePointer message);
196 mtsIGTLBridgeData *
mData =
nullptr;
207template <
typename _cisstType,
typename _igtlType>
221 <<
" for " <<
mName << std::endl;
226template <
typename _cisstType,
typename _igtlType>
237template <
typename _cisstType,
typename _igtlType>
239 const std::string & functionName,
240 const std::string & igtlDeviceName)
245 if (!interfaceRequired) {
248 if (!interfaceRequired) {
250 << interfaceRequiredName <<
"\"" << std::endl;
257 << functionName <<
"\" to interface required \""
258 << interfaceRequiredName <<
"\"" << std::endl;
267template <
typename _cisstType,
typename _igtlType>
269 const std::string & eventName,
270 const std::string & igtlDeviceName)
275 if (!interfaceRequired) {
278 if (!interfaceRequired) {
280 << interfaceRequiredName <<
"\"" << std::endl;
286 newSender, eventName)) {
288 << eventName <<
"\" to required interface \""
289 << interfaceRequiredName <<
"\"" << std::endl;
297template <
typename _igtlType,
typename _cisstType>
299 const std::string & commandName,
300 const std::string & igtlDeviceName)
304 if (!interfaceRequired) {
307 if (!interfaceRequired) {
309 << interfaceRequiredName <<
"\"" << std::endl;
316 << commandName <<
"\" to interface required \""
317 << interfaceRequiredName <<
"\"" << std::endl;
321 mReceivers.insert({igtlDeviceName, newReceiver});
mtsInterfaceRequired * GetInterfaceRequired(const std::string &interfaceRequiredName)
mtsInterfaceRequired * AddInterfaceRequired(const std::string &interfaceRequiredName, mtsRequiredType isRequired=MTS_REQUIRED)
Definition mtsExecutionResult.h:34
Definition mtsFunctionRead.h:37
Definition mtsFunctionWrite.h:37
Definition mtsIGTLBridge.h:133
mtsIGTLBridge(const mtsTaskPeriodicConstructorArg &arg)
Definition mtsIGTLBridge.h:143
virtual void ConfigureJSON(const Json::Value &jsonConfig)
bool AddSenderFromEventWrite(const std::string &interfaceRequiredName, const std::string &eventName, const std::string &igtlDeviceName)
Definition mtsIGTLBridge.h:268
void Cleanup(void) override
ReceiversType mReceivers
Definition mtsIGTLBridge.h:203
mtsIGTLBridge(const std::string &componentName, const double &period)
Definition mtsIGTLBridge.h:138
mtsIGTLBridgeData * mData
Definition mtsIGTLBridge.h:196
std::map< std::string, mtsIGTLReceiverBase * > ReceiversType
Definition mtsIGTLBridge.h:202
bool AddSenderFromCommandRead(const std::string &interfaceRequiredName, const std::string &functionName, const std::string &igtlDeviceName)
Definition mtsIGTLBridge.h:238
void Configure(const std::string &jsonFile) override
~mtsIGTLBridge(void)
Definition mtsIGTLBridge.h:149
void Send(_igtlMessagePointer message)
void SetPort(const int port)
Definition mtsIGTLBridge.h:159
SendersType mSenders
Definition mtsIGTLBridge.h:200
int mPort
Definition mtsIGTLBridge.h:195
void Startup(void) override
std::list< mtsIGTLSenderBase * > SendersType
Definition mtsIGTLBridge.h:199
bool AddReceiverToCommandWrite(const std::string &interfaceRequiredName, const std::string &commandName, const std::string &igtlDeviceName)
Definition mtsIGTLBridge.h:298
Definition mtsIGTLBridge.h:80
void EventHandler(const _cisstType &cisstData)
Definition mtsIGTLBridge.h:227
_igtlType::Pointer IGTLPointer
Definition mtsIGTLBridge.h:93
virtual ~mtsIGTLEventWriteSender()
Definition mtsIGTLBridge.h:87
IGTLPointer mIGTLData
Definition mtsIGTLBridge.h:94
mtsIGTLEventWriteSender(const std::string &name, mtsIGTLBridge *bridge)
Definition mtsIGTLBridge.h:82
bool Execute(void) override
Definition mtsIGTLBridge.h:88
virtual bool Execute(igtl::Socket *socket, igtl::MessageBase *header)=0
virtual ~mtsIGTLReceiverBase()
Definition mtsIGTLBridge.h:107
mtsIGTLReceiverBase(const std::string &name, mtsIGTLBridge *bridge)
Definition mtsIGTLBridge.h:101
mtsIGTLBridge * mBridge
Definition mtsIGTLBridge.h:113
std::string mName
Definition mtsIGTLBridge.h:112
mtsFunctionWrite Function
Function used to pull data from the cisst component.
Definition mtsIGTLBridge.h:105
Definition mtsIGTLBridge.h:118
virtual ~mtsIGTLReceiver()
Definition mtsIGTLBridge.h:123
bool Execute(igtl::Socket *socket, igtl::MessageBase *header) override
_igtlType::Pointer IGTLPointer
Definition mtsIGTLBridge.h:127
mtsIGTLReceiver(const std::string &name, mtsIGTLBridge *bridge)
Definition mtsIGTLBridge.h:120
_cisstType mCISSTData
Definition mtsIGTLBridge.h:128
Definition mtsIGTLBridge.h:45
mtsIGTLBridge * mBridge
Definition mtsIGTLBridge.h:59
std::string mName
Definition mtsIGTLBridge.h:58
virtual bool Execute(void)=0
mtsFunctionRead Function
Function used to pull data from the cisst component.
Definition mtsIGTLBridge.h:51
virtual ~mtsIGTLSenderBase()
Definition mtsIGTLBridge.h:53
mtsIGTLSenderBase(const std::string &name, mtsIGTLBridge *bridge)
Definition mtsIGTLBridge.h:47
_cisstType mCISSTData
Definition mtsIGTLBridge.h:73
_igtlType::Pointer IGTLPointer
Definition mtsIGTLBridge.h:74
virtual ~mtsIGTLSender()
Definition mtsIGTLBridge.h:69
bool Execute(void) override
Definition mtsIGTLBridge.h:208
mtsIGTLSender(const std::string &name, mtsIGTLBridge *bridge)
Definition mtsIGTLBridge.h:66
IGTLPointer mIGTLData
Definition mtsIGTLBridge.h:75
Definition mtsInterfaceRequired.h:83
mtsCommandWriteBase * AddEventHandlerWrite(void(__classType::*method)(const __argumentType &), __classType *classInstantiation, const std::string &eventName, mtsEventQueueingPolicy queueingPolicy=MTS_INTERFACE_EVENT_POLICY)
Definition mtsInterfaceRequired.h:411
bool AddFunction(const std::string &functionName, mtsFunctionVoid &function, mtsRequiredType required=MTS_REQUIRED)
Definition mtsParameterTypes.h:1622
mtsTaskPeriodic(const std::string &name, double periodicityInSeconds, bool isHardRealTime=false, unsigned int sizeStateTable=256, bool newThread=true)
const int CMN_DYNAMIC_CREATION_ONEARG
Definition cmnClassRegisterMacros.h:330
#define CMN_DECLARE_SERVICES_INSTANTIATION(className)
Definition cmnClassRegisterMacros.h:199
#define CISST_EXPORT
Definition cmnExportMacros.h:50
#define CMN_LOG_ALLOW_DEFAULT
Definition cmnLogLoD.h:76
#define CMN_LOG_RUN_ERROR
Definition cmnLogger.h:166
#define CMN_LOG_CLASS_INIT_ERROR
Definition cmnLogger.h:113
bool mtsCISSTToIGTL(const std::string &cisstData, igtl::StringMessage::Pointer igtlData)
Declaration of mtsInterfaceRequired.
Definition mtsIGTLBridge.h:39