13 #ifndef MITKIGTLDEVICE_H 14 #define MITKIGTLDEVICE_H 22 #include "itkObject.h" 25 #include "igtlSocket.h" 26 #include "igtlMessageBase.h" 27 #include "igtlTransformMessage.h" 79 virtual bool OpenConnection() = 0;
87 virtual bool CloseConnection();
94 virtual bool StopCommunication();
101 bool StartCommunication();
112 void RunCommunication(
void (
IGTLDevice::*ComFunction)(
void), std::mutex& mutex);
123 void SendMessage(mitk::IGTLMessage::Pointer msg);
134 igtl::MessageBase::Pointer GetNextCommand();
140 igtl::ImageMessage::Pointer GetNextImage2dMessage();
142 igtl::ImageMessage::Pointer GetNextImage3dMessage();
144 igtl::TransformMessage::Pointer GetNextTransformMessage();
146 igtl::TrackingDataMessage::Pointer GetNextTrackingDataMessage();
148 igtl::StringMessage::Pointer GetNextStringMessage();
150 igtl::MessageBase::Pointer GetNextMiscMessage();
155 itkSetMacro(PortNumber,
int);
160 itkGetMacro(PortNumber,
int);
165 itkSetMacro(Hostname, std::string);
170 itkGetMacro(Hostname, std::string);
175 itkGetConstMacro(Name, std::string);
180 itkSetMacro(Name, std::string);
185 itkSetMacro(ReadFully,
bool);
190 itkGetConstMacro(MessageQueue, mitk::IGTLMessageQueue::Pointer);
195 itkGetMacro(MessageFactory, mitk::IGTLMessageFactory::Pointer);
200 void ThreadStartSending();
205 void ThreadStartReceiving();
210 void ThreadStartConnecting();
226 virtual bool TestConnection();
231 bool SendRTSMessage(
const char* type);
236 void EnableNoBufferingMode(mitk::IGTLMessageQueue::Pointer queue,
239 void EnableNoBufferingMode(
bool enable =
true);
244 virtual unsigned int GetNumberOfConnections() = 0;
246 itkGetMacro(LogMessages,
bool);
247 itkSetMacro(LogMessages,
bool);
264 unsigned int SendMessagePrivate(mitk::IGTLMessage::Pointer msg,
265 igtl::Socket::Pointer socket);
272 virtual void Receive() = 0;
288 unsigned int ReceivePrivate(igtl::Socket* device);
294 virtual void Send() = 0;
304 virtual void Connect();
310 virtual void StopCommunicationWithSocket(igtl::Socket* socket) = 0;
356 std::thread m_SendThread;
358 std::thread m_ReceiveThread;
360 std::thread m_ConnectThread;
mitk::IGTLMessageFactory::Pointer m_MessageFactory
DataCollection - Class to facilitate loading/accessing structured data.
#define MITKOPENIGTLINK_EXPORT
#define mitkClassMacroItkParent(className, SuperClassName)
itkEventMacroDeclaration(BoundingShapeInteractionEvent, itk::AnyEvent)
std::mutex m_SendingFinishedMutex
std::mutex m_StopCommunicationMutex
IGTLDeviceState
Type for state variable. The IGTLDevice is always in one of these states.
mitk::IGTLMessageQueue::Pointer m_MessageQueue
Interface for all OpenIGTLink Devices.
std::mutex m_ConnectingFinishedMutex
igtl::Socket::Pointer m_Socket
std::mutex m_ReceivingFinishedMutex