CustusX  18.04
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 protected:
51  void internalSetState(Tool::State val);
52 
53 protected slots:
54  virtual void configure();
55  virtual void deconfigure();
56 
57 private slots:
58  void serverIsConnected();
59  void serverIsDisconnected();
60 
61  void receiveTransform(QString devicename, Transform3D transform, double timestamp);
62  void receiveCalibration(QString devicename, Transform3D calibration);
63  void receiveProbedefinition(QString devicename, ProbeDefinitionPtr definition);
64 
65 private:
66  OpenIGTLinkToolPtr getTool(QString devicename);
67 
68  std::map<QString, OpenIGTLinkToolPtr> mTools;
69  ToolPtr mReference;
70  NetworkHandlerPtr mNetworkHandler;
71 
72 signals:
73  void setInternalState(const Tool::State val);
74 };
75 typedef boost::shared_ptr<OpenIGTLinkTrackingSystemService> OpenIGTLinkTrackingSystemServicePtr;
76 
77 } /* namespace cx */
78 
79 #endif /* CXOPENIGTLINKTRACKINGSYSTEMSERVICE_H_ */
80 
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