00001 #ifndef GRABBING_DEVICE_MANAGER_H 00002 #define GRABBING_DEVICE_MANAGER_H 00003 00004 00005 // unicap bindings 00006 extern "C" 00007 { 00008 #include <unicap/unicap.h> 00009 } 00010 00011 #include <string> 00012 #include <vector> 00013 00014 00015 00016 namespace puma2{ 00017 00018 00019 typedef std::vector<unicap_device_t*> device_ptr_vec; 00020 00021 // forwards 00022 class GrabbingDevice; 00023 class PumaLogger; 00031 class GrabbingDeviceManager 00032 { 00033 public: 00034 00038 static GrabbingDeviceManager* getGrabbingDeviceManager(); 00039 00040 00047 bool connectGrabbingDevice(GrabbingDevice **_device, const uint _id); 00048 00049 00056 bool connectGrabbingDevice(GrabbingDevice **_device, const std::string &_description); 00057 00058 00062 uint getNumDevices(); 00063 00064 00070 std::string getDeviceInfo(const uint _id); 00071 00072 00078 std::string getDeviceInfo(const std::string &_description); 00079 00080 00084 bool scan(); 00085 00089 std::string getDeviceList(); 00090 00091 00092 private: 00093 GrabbingDeviceManager(); 00094 GrabbingDeviceManager( const GrabbingDeviceManager&); 00095 ~GrabbingDeviceManager(); 00096 00097 00098 bool findDeviceById(unicap_device_t **_device, const uint _id); 00099 bool findDeviceByDesc(unicap_device_t **_device, const std::string &_description); 00100 00101 bool connectGrabbingDevice(GrabbingDevice **_device, unicap_device_t *_udevice); 00102 00103 static GrabbingDeviceManager* mTheManager; 00104 device_ptr_vec mDevices; 00105 00106 PumaLogger *mLogger; 00107 }; 00108 00109 00110 00111 00112 00113 } 00114 #endif