Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef MITKMIRCOBIRDTRACKINGDEVICE_H_HEADER_INCLUDED
00019 #define MITKMIRCOBIRDTRACKINGDEVICE_H_HEADER_INCLUDED
00020
00021 #include "mitkTrackingDevice.h"
00022
00023 #include <MitkIGTExports.h>
00024 #include <itkMultiThreader.h>
00025
00026 #include <list>
00027
00028 #include "mitkTrackingTypes.h"
00029 #include "mitkMicroBirdTool.h"
00030
00031 #include "PCIBird3.h"
00032
00033 namespace mitk {
00045 class MitkIGT_EXPORT MicroBirdTrackingDevice : public TrackingDevice
00046 {
00047 public:
00048 mitkClassMacro(MicroBirdTrackingDevice, TrackingDevice);
00049 itkNewMacro(Self);
00050
00054 itkSetMacro(Type,TrackingDeviceType);
00055
00059 virtual bool OpenConnection();
00060
00064 virtual bool CloseConnection();
00065
00071 virtual bool StartTracking();
00072
00076 virtual bool StopTracking();
00077
00081 virtual TrackingTool* GetTool(unsigned int toolNumber);
00082
00086 virtual unsigned int GetToolCount() const;
00087
00091 itkGetStringMacro(ErrorMessage);
00092
00093 protected:
00094 void HandleError(int errorCode);
00095 bool CompareError(int errorCode, int errorConstant);
00096
00097 typedef InternalTrackingTool ToolType;
00098 typedef std::vector<ToolType::Pointer> ToolContainerType;
00099 MicroBirdTrackingDevice();
00100 virtual ~MicroBirdTrackingDevice();
00101
00105 ToolType* GetMicroBirdTool(unsigned int toolNumber);
00106
00107 virtual void InvalidateAll();
00108 bool SwitchTransmitter(bool switchOn);
00109
00115 virtual void TrackTools();
00116
00117 static ITK_THREAD_RETURN_TYPE ThreadStartTracking(void* data);
00118
00119 itkSetStringMacro(ErrorMessage);
00120
00121 itk::FastMutexLock::Pointer m_ToolsMutex;
00122 ToolContainerType m_Tools;
00123
00124 std::string m_ErrorMessage;
00125
00126 itk::MultiThreader::Pointer m_MultiThreader;
00127 int m_ThreadID;
00128
00129
00130 DOUBLE_POSITION_QUATERNION_TIME_Q_RECORD record, *pRecord;
00131 SYSTEM_CONFIGURATION m_SystemConfig;
00132 SENSOR_CONFIGURATION *m_SensorConfig;
00133 TRANSMITTER_CONFIGURATION *m_TransmitterConfig;
00134 BOOL m_metric;
00135 double m_measurementRate;
00136 double m_pl;
00137 bool m_agcModeBoth;
00138 AGC_MODE_TYPE m_agc;
00139 };
00140 }
00141 #endif