00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision$ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #ifndef MITKCLARONTRACKINGDEVICE_H_HEADER_INCLUDED_ 00019 #define MITKCLARONTRACKINGDEVICE_H_HEADER_INCLUDED_ 00020 00021 00022 #include <vector> 00023 #include <mitkIGTConfig.h> 00024 #include <mitkTrackingDevice.h> 00025 #include <mitkClaronTool.h> 00026 #include <itkMultiThreader.h> 00027 00028 //only include MicronTracker if cmake Variable is on else the ClaronInterfaceStub is included 00029 #ifdef MITK_USE_MICRON_TRACKER 00030 #include <mitkClaronInterface.h> 00031 #else 00032 #include <mitkClaronInterfaceStub.h> 00033 #endif 00034 00035 namespace mitk 00036 { 00043 class MitkIGT_EXPORT ClaronTrackingDevice : public TrackingDevice 00044 { 00045 public: 00046 00047 mitkClassMacro(ClaronTrackingDevice, TrackingDevice); 00048 itkNewMacro(Self); 00049 00054 virtual bool StartTracking(); 00055 00060 virtual bool StopTracking(); 00061 00065 virtual bool OpenConnection(); 00066 00070 virtual bool CloseConnection(); 00071 00075 virtual unsigned int GetToolCount() const; 00076 00082 TrackingTool* GetTool(unsigned int toolNumber) const; 00083 00084 00096 mitk::TrackingTool* AddTool(const char* toolName, const char* fileName); 00097 00098 00103 bool IsMicronTrackerInstalled(); 00104 00105 protected: 00106 ClaronTrackingDevice(); 00107 ~ClaronTrackingDevice(); 00108 00115 bool InternalAddTool(ClaronTool::Pointer tool); 00116 00121 void TrackTools(); 00122 00129 std::vector<ClaronTool::Pointer> DetectTools(); 00130 00134 std::vector<ClaronTool::Pointer> GetAllTools(); 00135 00139 ClaronInterface* GetDevice(); 00140 00141 static ITK_THREAD_RETURN_TYPE ThreadStartTracking(void* data); 00142 00143 std::vector<ClaronTool::Pointer> m_AllTools; 00144 ClaronInterface::Pointer m_Device; 00145 itk::MultiThreader::Pointer m_MultiThreader; 00146 int m_ThreadID; 00147 00149 std::string m_CalibrationDir; 00151 std::string m_ToolfilesDir; 00152 }; 00153 }//mitk 00154 #endif /* MITKCLARONTRACKINGDEVICE_H_HEADER_INCLUDED_ */