13 #ifndef MITKIGTLDEVICE_H 14 #define MITKIGTLDEVICE_H 19 #include "itkObject.h" 20 #include "itkFastMutexLock.h" 21 #include "itkMultiThreader.h" 24 #include "igtlSocket.h" 25 #include "igtlMessageBase.h" 26 #include "igtlTransformMessage.h" 29 #include "MitkOpenIGTLinkExports.h" 57 class MITKOPENIGTLINK_EXPORT
IGTLDevice :
public itk::Object
78 virtual bool OpenConnection() = 0;
86 virtual bool CloseConnection();
93 virtual bool StopCommunication();
100 bool StartCommunication();
111 void RunCommunication(
void (
IGTLDevice::*ComFunction)(
void), itk::FastMutexLock* mutex);
122 void SendMessage(mitk::IGTLMessage::Pointer msg);
133 igtl::MessageBase::Pointer GetNextCommand();
139 igtl::ImageMessage::Pointer GetNextImage2dMessage();
141 igtl::ImageMessage::Pointer GetNextImage3dMessage();
143 igtl::TransformMessage::Pointer GetNextTransformMessage();
145 igtl::TrackingDataMessage::Pointer GetNextTrackingDataMessage();
147 igtl::StringMessage::Pointer GetNextStringMessage();
149 igtl::MessageBase::Pointer GetNextMiscMessage();
154 itkSetMacro(PortNumber,
int);
159 itkGetMacro(PortNumber,
int);
164 itkSetMacro(Hostname, std::string);
169 itkGetMacro(Hostname, std::string);
174 itkGetConstMacro(Name, std::string);
179 itkSetMacro(Name, std::string);
184 itkSetMacro(ReadFully,
bool);
189 itkGetConstMacro(MessageQueue, mitk::IGTLMessageQueue::Pointer);
194 itkGetMacro(MessageFactory, mitk::IGTLMessageFactory::Pointer);
200 static ITK_THREAD_RETURN_TYPE ThreadStartSending(
void* data);
206 static ITK_THREAD_RETURN_TYPE ThreadStartReceiving(
void* data);
212 static ITK_THREAD_RETURN_TYPE ThreadStartConnecting(
void* data);
228 virtual bool TestConnection();
233 bool SendRTSMessage(
const char* type);
238 void EnableNoBufferingMode(mitk::IGTLMessageQueue::Pointer queue,
241 void EnableNoBufferingMode(
bool enable =
true);
246 virtual unsigned int GetNumberOfConnections() = 0;
266 unsigned int SendMessagePrivate(mitk::IGTLMessage::Pointer msg,
267 igtl::Socket::Pointer socket);
274 virtual void Receive() = 0;
290 unsigned int ReceivePrivate(igtl::Socket* device);
296 virtual void Send() = 0;
306 virtual void Connect();
312 virtual void StopCommunicationWithSocket(igtl::Socket* socket) = 0;
359 itk::MultiThreader::Pointer m_MultiThreader;
363 int m_ReceiveThreadID;
365 int m_ConnectThreadID;
itk::FastMutexLock::Pointer m_ReceivingFinishedMutex
itk::FastMutexLock::Pointer m_StopCommunicationMutex
mitk::IGTLMessageFactory::Pointer m_MessageFactory
itkEventMacro(BoundingShapeInteractionEvent, itk::AnyEvent)
itk::FastMutexLock::Pointer m_StateMutex
void LogMessages(unsigned int threadID, unsigned int numberOfTimes)
itk::FastMutexLock::Pointer m_ConnectingFinishedMutex
DataCollection - Class to facilitate loading/accessing structured data.
#define mitkClassMacroItkParent(className, SuperClassName)
IGTLDeviceState
Type for state variable. The IGTLDevice is always in one of these states.
mitk::IGTLMessageQueue::Pointer m_MessageQueue
itk::FastMutexLock::Pointer m_SendingFinishedMutex
Interface for all OpenIGTLink Devices.
igtl::Socket::Pointer m_Socket