Go to the documentation of this file.00001
00018 #ifndef GLOVEDEVICE_H
00019 #define GLOVEDEVICE_H
00020
00021
00022 #include <pthread.h>
00023
00024
00025 #include "gloveTypes.h"
00026 #include "gloveStatus.h"
00027 #include "serial.h"
00028
00036 #define CR 13
00037 #define LF 10
00038 #define MAX_SENSORS 22
00039
00040 class gloveDevice
00041 {
00042 public:
00043 gloveDevice();
00044 ~gloveDevice();
00045
00046 bool init(const char *serialDev);
00047 void stop();
00048
00049
00050 void showCurrentStatus();
00051
00052
00053
00054
00055 bool cmdSetSwSensorMask(sensorMask_t mask);
00056 bool cmdGetSwSensorMask(sensorMask_t *mask);
00057
00058 bool cmdGetHwSensorMask(sensorMask_t *mask);
00059
00060 bool cmdSetNbSensorsEnabled(uchar_t n);
00061 bool cmdGetNbSensorsEnabled(uchar_t *n);
00062
00063 bool cmdGetNbSensorsTotal(uchar_t *n);
00064
00065 bool cmdSetSamplePeriod(samplePeriod_t period);
00066 bool cmdGetSamplePeriod(samplePeriod_t *period);
00067
00068
00069
00070
00071 bool cmdSetTimeStamp(bool enable);
00072 bool cmdGetTimeStamp(bool *enable);
00073
00074 bool cmdSetGloveStatus(bool enable);
00075 bool cmdGetGloveStatus(bool *enable);
00076
00077
00078
00079
00080 bool cmdGetSensorValues(vector_t values, uchar_t *n, statusQuery_t *query,
00081 gloveStatusByte_t *gloveStatusByte);
00082
00083 bool cmdGetSensorValuesSync(vector_t values, uchar_t *n, bool *errorSync,
00084 gloveStatusByte_t *gloveStatusByte);
00085
00086 bool cmdSetStreamValues(bool enable);
00087
00088 bool cmdGetSensorDummyValues(vector_t values, uchar_t *n,
00089 statusQuery_t *query, gloveStatusByte_t *gloveStatusByte);
00090
00091
00092
00093
00094 bool cmdSetActuate(int n, vector_t index, vector_t values);
00095 bool cmdSetActuateAll(vector_t values);
00096 bool cmdGetActuateAll(vector_t values);
00097
00098 bool cmdSetCalibrateAll(vector_t offset, vector_t gain);
00099 bool cmdSetCalibrateOffset(uchar_t index, uchar_t offset);
00100 bool cmdSetCalibrateGain(uchar_t index, uchar_t gain);
00101 bool cmdGetCalibrateAll(vector_t offset, vector_t gain);
00102
00103
00104
00105
00106 bool cmdSetBaudRate(uchar_t baudDivide);
00107 bool cmdGetBaudRate(uchar_t *baudDivide);
00108
00109 bool cmdSetParameterFlags(parameterFlags_t flags);
00110 bool cmdGetParameterFlags(parameterFlags_t *flags);
00111
00112 bool cmdGetConnectStatus(statusConnect_t *status);
00113
00114 bool cmdGetHand(bool *rightHand);
00115
00116 bool cmdGetGloveVersion(gloveVersion_t *version);
00117
00118 bool cmdSetBinarySync(bool enable);
00119 bool cmdGetBinarySync(bool *enable);
00120
00121
00122
00123
00124 bool cmdSetDigitalFilter(bool enable);
00125 bool cmdGetDigitalFilter(bool *enable);
00126
00127 bool cmdSetControlLight(bool enable);
00128 bool cmdGetControlLight(bool *enable);
00129
00130 bool cmdSetWristLight(bool enable);
00131 bool cmdGetWristLight(bool *enable);
00132
00133 bool cmdSetQuantized(bool enable);
00134 bool cmdGetQuantized(bool *enable);
00135
00136 bool cmdSetWristToggle(bool enable);
00137 bool cmdGetWristToggle(bool *enable);
00138
00139
00140
00141
00142 bool cmdReinitializeCyberGlove();
00143
00144 bool cmdRestartFirmware();
00145
00146 private:
00147 gloveStatus status;
00148 SerialDevice serial;int serialId;
00149 bool error;
00150 pthread_mutex_t serial_lock;
00151
00152 void lock_serial();
00153 void unlock_serial();
00154
00155 uchar_t getChar();
00156 void getString(vector_t s, int n);
00157 void sendChar(uchar_t);
00158 void sendString(vector_t s, int n);
00159
00160 bool readResponseSet(uchar_t c);
00161 bool readResponseSet(uchar_t c1, uchar_t c2);
00162 bool readNullChar();
00163 bool readResponseGet(uchar_t c);
00164
00165 bool cmdSetChar(uchar_t name, uchar_t val);
00166 bool cmdGetChar(uchar_t name, uchar_t *val);
00167 bool cmdGetBool(uchar_t name, bool *val);
00168
00169 bool internalCmd(uchar_t cmd);
00170
00171 };
00172
00173 #endif