Go to the documentation of this file.00001 #include "carl_phidgets/phidget.h"
00002
00003 namespace phidgets {
00004
00005 Phidget::Phidget()
00006 {
00007
00008 }
00009
00010 Phidget::~Phidget()
00011 {
00012
00013 CPhidget_delete(handle_);
00014 }
00015
00016 void Phidget::registerHandlers()
00017 {
00018 CPhidget_set_OnAttach_Handler(handle_, &Phidget::AttachHandler, this);
00019 CPhidget_set_OnDetach_Handler(handle_, &Phidget::DetachHandler, this);
00020 CPhidget_set_OnError_Handler (handle_, &Phidget::ErrorHandler, this);
00021 }
00022
00023 void Phidget::init(CPhidgetHandle handle)
00024 {
00025 handle_ = handle;
00026 }
00027
00028 int Phidget::open(int serial_number)
00029 {
00030 return CPhidget_open(handle_, serial_number);
00031 }
00032
00033 int Phidget::close()
00034 {
00035 return CPhidget_close(handle_);
00036 }
00037
00038 int Phidget::waitForAttachment(int timeout)
00039 {
00040 return CPhidget_waitForAttachment(handle_, timeout);
00041 }
00042
00043 std::string Phidget::getDeviceType()
00044 {
00045 char a[1000];
00046 const char * deviceptr = a;
00047 CPhidget_getDeviceType(handle_, &deviceptr);
00048 return std::string(deviceptr);
00049 }
00050
00051 std::string Phidget::getDeviceName()
00052 {
00053 char a[1000];
00054 const char * deviceptr = a;
00055 CPhidget_getDeviceName(handle_, &deviceptr);
00056 return std::string(deviceptr);
00057 }
00058
00059 std::string Phidget::getDeviceLabel()
00060 {
00061 char a[1000];
00062 const char * deviceptr = a;
00063 CPhidget_getDeviceType(handle_, &deviceptr);
00064 return std::string(deviceptr);
00065 }
00066
00067 std::string Phidget::getLibraryVersion(){
00068 char a[1000];
00069 const char * deviceptr = a;
00070 CPhidget_getLibraryVersion(&deviceptr);
00071 return std::string(deviceptr);
00072 }
00073
00074 int Phidget::getDeviceSerialNumber()
00075 {
00076 int sernum;
00077 CPhidget_getSerialNumber(handle_, &sernum);
00078 return sernum;
00079 }
00080
00081 int Phidget::getDeviceVersion()
00082 {
00083 int version;
00084 CPhidget_getDeviceVersion(handle_, &version);
00085 return version;
00086 }
00087
00088 std::string Phidget::getErrorDescription(int errorCode)
00089 {
00090 char a[1000];
00091 const char * errorPtr = a;
00092 CPhidget_getErrorDescription(errorCode, &errorPtr);
00093 return std::string(errorPtr);
00094 }
00095
00096 void Phidget::attachHandler()
00097 {
00098 printf("Phidget attached (serial# %d)\n", getDeviceSerialNumber());
00099 }
00100
00101 void Phidget::detachHandler()
00102 {
00103 printf("Phidget detached (serial# %d)\n", getDeviceSerialNumber());
00104 }
00105
00106 void Phidget::errorHandler(int error)
00107 {
00108 printf("Phidget error [%d]: %s\n", error, getErrorDescription(error).c_str());
00109 }
00110
00111 int Phidget::AttachHandler(CPhidgetHandle handle, void *userptr)
00112 {
00113 ((Phidget*)userptr)->attachHandler();
00114 return 0;
00115 }
00116
00117 int Phidget::DetachHandler(CPhidgetHandle handle, void *userptr)
00118 {
00119 ((Phidget*)userptr)->detachHandler();
00120 return 0;
00121 }
00122
00123 int Phidget::ErrorHandler(CPhidgetHandle handle, void *userptr, int ErrorCode, const char *unknown)
00124 {
00125 ((Phidget*)userptr)->errorHandler(ErrorCode);
00126 return 0;
00127 }
00128
00129 }