CustusX  2023.01.05-dev+develop.0da12
An IGT application
cxOpenIGTLinkTrackingSystemService.h
Go to the documentation of this file.
1 /*=========================================================================
2 This file is part of CustusX, an Image Guided Therapy Application.
3 
4 Copyright (c) SINTEF Department of Medical Technology.
5 All rights reserved.
6 
7 CustusX is released under a BSD 3-Clause license.
8 
9 See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details.
10 =========================================================================*/
11 
12 #ifndef CXOPENIGTLINKTRACKINGSYSTEMSERVICE_H_
13 #define CXOPENIGTLINKTRACKINGSYSTEMSERVICE_H_
14 
15 #include "org_custusx_core_openigtlink3_Export.h"
16 
17 #include <QThread>
18 
19 #include "cxNetworkHandler.h"
21 
22 namespace cx
23 {
24 typedef boost::shared_ptr<class NetworkHandler> NetworkHandlerPtr;
25 typedef boost::shared_ptr<class OpenIGTLinkTool> OpenIGTLinkToolPtr;
26 
35 class org_custusx_core_openigtlink3_EXPORT OpenIGTLinkTrackingSystemService : public TrackingSystemService
36 {
37  Q_OBJECT
38  Q_INTERFACES(cx::TrackingSystemService)
39 
40 public:
41  OpenIGTLinkTrackingSystemService(NetworkHandlerPtr networkHandler);
43 
44  virtual QString getUid() const;
45  virtual void setState(const Tool::State val);
46  virtual std::vector<ToolPtr> getTools();
47  virtual TrackerConfigurationPtr getConfiguration();
48  virtual ToolPtr getReference();
49 
50  virtual void resetTimeSynchronization();
51 
52 protected:
53  void internalSetState(Tool::State val);
54  OpenIGTLinkToolPtr getTool(QString devicename);
55  bool printTransformIdWarning(QString devicename);
56 
58 
59 protected slots:
60  virtual void configure();
61  virtual void deconfigure();
62  virtual void receiveTransform(QString devicename, Transform3D transform, double timestampMS);
63 
64 private slots:
65  void serverIsConnected();
66  void serverIsDisconnected();
67 
68  void receiveCalibration(QString devicename, Transform3D calibration);
69  void receiveProbedefinition(QString devicename, ProbeDefinitionPtr definition);
70 
71 private:
72 
73  std::map<QString, OpenIGTLinkToolPtr> mTools;
74  ToolPtr mReference;
75  NetworkHandlerPtr mNetworkHandler;
76 
77 signals:
78  void setInternalState(const Tool::State val);
79 };
80 typedef boost::shared_ptr<OpenIGTLinkTrackingSystemService> OpenIGTLinkTrackingSystemServicePtr;
81 
82 } /* namespace cx */
83 
84 #endif /* CXOPENIGTLINKTRACKINGSYSTEMSERVICE_H_ */
85 
DoubleBoundingBox3D transform(const Transform3D &m, const DoubleBoundingBox3D &bb)
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
boost::shared_ptr< class NetworkHandler > NetworkHandlerPtr
boost::shared_ptr< class TrackerConfiguration > TrackerConfigurationPtr
Tracking System Service.
boost::shared_ptr< class OpenIGTLinkTrackingSystemService > OpenIGTLinkTrackingSystemServicePtr
boost::shared_ptr< class ProbeDefinition > ProbeDefinitionPtr
Namespace for all CustusX production code.
boost::shared_ptr< class Tool > ToolPtr