00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00036 #include "lib/common.h"
00037 #include "DeviceManager.h"
00038 #include "objects/KinectDevice.h"
00039 #include "ScolPlugin.h"
00040 #include "Core/Exception.h"
00041
00042 namespace NIDevice
00043 {
00044 namespace Core
00045 {
00046 template<> NIDevice::DeviceManager* Core::Singleton<NIDevice::DeviceManager>::instance = 0;
00047 }
00048
00049
00050 DeviceManager::DeviceManager()
00051 {
00052 }
00053
00054 DeviceManager::~DeviceManager()
00055 {
00056
00057 close();
00058 }
00059
00060
00061 DeviceManager& DeviceManager::GetSingleton()
00062 {
00063 assert(instance);
00064 return *instance;
00065 }
00066
00067 DeviceManager* DeviceManager::GetSingletonPtr()
00068 {
00069 return instance;
00070 }
00071
00072 void DeviceManager::close()
00073 {
00074 listOfKinectDevice.clear();
00075 }
00076
00077 unsigned int DeviceManager::createId()
00078 {
00079 int idFound = 0;
00080 while (listOfKinectDevice.find(idFound) != listOfKinectDevice.end())
00081 {
00082 idFound++;
00083 }
00084
00085 return idFound;
00086 }
00087
00088 NIDevice::Objects::KinectDevice* DeviceManager::CreateKinectDevice()
00089 {
00090 NIDevice::Objects::KinectDevice* newKinectDevice = new NIDevice::Objects::KinectDevice(createId());
00091
00092 addKinectDevice(newKinectDevice);
00093 return newKinectDevice;
00094 }
00095
00096 void DeviceManager::DestroyKinectDevice(NIDevice::Objects::KinectDevice* existingKinectDevice)
00097 {
00098 KinectDeviceMap::iterator iKinectDeviceSearched = listOfKinectDevice.find(existingKinectDevice->GetId());
00099 if (iKinectDeviceSearched != listOfKinectDevice.end())
00100 {
00101 listOfKinectDevice.erase(iKinectDeviceSearched);
00102 SAFE_DELETE(existingKinectDevice);
00103 }
00104 else
00105 {
00106 KINECT_EXCEPT(Core::ExceptionKinect, "Can't remove Kinect Device", "DeviceManagerManager::DestroyKinectDevice");
00107 }
00108 }
00109
00110 void DeviceManager::addKinectDevice(NIDevice::Objects::KinectDevice* existingKinectDevice)
00111 {
00112 KinectDeviceMap::iterator iKinectDeviceSearched = listOfKinectDevice.find(existingKinectDevice->GetId());
00113 if (iKinectDeviceSearched == listOfKinectDevice.end())
00114 {
00115 listOfKinectDevice.insert(std::make_pair(existingKinectDevice->GetId(), existingKinectDevice));
00116 }
00117 else
00118 {
00119
00120 KINECT_EXCEPT(Core::ExceptionKinect, "Kinect Device already Exists", "DeviceManager::addKinectDevice");
00121 }
00122 }
00123
00124 NIDevice::Objects::KinectDevice* DeviceManager::GetKinectDevice(unsigned int id)
00125 {
00126 KinectDeviceMap::iterator iKinectDeviceSearched = listOfKinectDevice.find(id);
00127 if(iKinectDeviceSearched != listOfKinectDevice.end())
00128 {
00129 return iKinectDeviceSearched->second;
00130 }
00131 return 0;
00132 }
00133 }