|
5DT Data Glove plugin 1.0
|
00001 /*--------------------------------------------------------------------------*/ 00002 // fglove.h 00003 // 00004 // 5DT Data Glove driver SDK 00005 // Version 2.1 00006 // 00007 // Copyright (C) 2000-2005, 5DT <Fifth Dimension Technologies> 00008 // http://www.5dt.com/ 00009 /*--------------------------------------------------------------------------*/ 00010 00011 #pragma once 00012 00013 /*--------------------------------------------------------------------------*/ 00014 00015 //--8<--- SNIP BEGIN 00016 // Release versions of this driver should have everything between "SNIP BEGIN" 00017 // and "SNIP END" pairs chopped out. 00018 // Also, all FGLOVEAPI should be snipped out. 00019 00020 #include <string> 00021 00022 #ifdef WIN32 00023 #define FGLOVEAPI __declspec( dllexport ) 00024 #else 00025 #define FGLOVEAPI 00026 #endif 00027 00028 #ifndef LPVOID 00029 #define LPVOID void* 00030 #endif 00031 00032 #ifndef SOCKET 00033 #define SOCKET unsigned int 00034 #endif 00035 00036 #ifndef HANDLE 00037 #define HANDLE void* 00038 #endif 00039 00040 // Uncomment the debug level you want - 00041 #define USER_DEBUG 0 // level 0 = user debug 00042 #define DEV_DEBUG 1 // level 1 = development debug 00043 00044 #define DEBUG_LEVEL USER_DEBUG 00045 //#define DEBUG_LEVEL DEV_DEBUG 00046 00047 #define VENDOR_ID_5DT 0x5d70 00048 00049 // Glove type / capability defines for DG14 Ultra 00050 #define DG14U_R 0x00 00051 #define DG14U_L 0x01 00052 #define DG14U_RW 0x02 00053 #define DG14U_LW 0x03 00054 #define DG14U_RW_SLAVE 0x06 00055 #define DG14U_LW_SLAVE 0x07 00056 #define DG5U_R 0x10 00057 #define DG5U_L 0x11 00058 #define DG5U_RW 0x12 00059 #define DG5U_LW 0x13 00060 #define DG5U_RW_SLAVE 0x16 00061 #define DG5U_LW_SLAVE 0x17 00062 #define DG14U_INFO 0x80 // Mask for info packet 00063 #define MASK_WIRELESS 0x02 00064 00065 // The packet size for DG14 Ultra 00066 #define PACKET_SIZE_DG14U 29 00067 // Serial Number length 00068 #define LENGTH_SERIAL_NUMBER 11 00069 // Length of date strings 00070 #define LENGTH_DATE 8 00071 00072 #ifdef WIN32 00073 // Network defines 00074 #define NETWORK_REQUESTUPDATE "UPDATE_REQUEST" 00075 #define NETWORK_REQUESTGLOVEINFO "GLOVEINFO_REQUEST" 00076 #define NETWORK_ACKNOWLEDGE "ACKNOWLEDGE" 00077 #define NETWORK_REQUESTDISCONNECT "DISCONNECT_REQUEST" 00078 #define NETWORK_CONNECTACCEPT "CONNECTION_ACCEPTED" 00079 #define NETWORK_CONNECTREJECT "CONNECTION_REJECTED" 00080 00081 enum EfdRecvState 00082 { 00083 STATE_REQUESTNONE, // No requests (used only at init) 00084 STATE_REQUESTSETUP, // Request for a glove initial setup packet 00085 STATE_REQUESTDATA, // A data packet request state. 00086 STATE_REQUESTDISCONNECT, // Request for disconnect 00087 }; 00088 00089 enum EfdNetworkType 00090 { 00091 FD_NONE, 00092 FD_SERVER, 00093 FD_CLIENT, 00094 FD_DISCONNECTED 00095 }; 00096 00097 // The network packet for the glove 00098 typedef struct 00099 { 00100 unsigned short usHeader; 00101 unsigned short usVersion; 00102 unsigned int uiSequence; 00103 int nGloveType; 00104 int nGloveHand; 00105 int nCurrentGesture; 00106 unsigned char acSerialNumber[11]; 00107 unsigned short pRaw[18]; 00108 unsigned short pCalibLow[18]; 00109 unsigned short pCalibHigh[18]; 00110 unsigned short usFooter; 00111 } GloveNetPacket; 00112 00113 // This packet is used to setup the initial parameters for this glove from a glove host. 00114 typedef struct 00115 { 00116 int nSensors; 00117 float fSensorMax; 00118 float fSensorScaled; 00119 float fUpperThr; 00120 float fLowerThr; 00121 int nGestures; 00122 int nGestIndex; 00123 } GloveSetupPacket; 00124 #endif 00125 00126 /*--------------------------------------------------------------------------*/ 00127 //--8<--- SNIP END 00128 00129 enum EfdGloveHand 00130 { 00131 FD_HAND_LEFT, // left-handed glove 00132 FD_HAND_RIGHT // right-handed glove 00133 }; 00134 00135 enum EfdGloveTypes 00136 { 00137 FD_GLOVENONE, // no glove 00138 FD_GLOVE5U, // DG5 Ultra serial 00139 FD_GLOVE5UW, // DG5 Ultra serial, wireless 00140 FD_GLOVE5U_USB, // DG5 Ultra USB 00141 FD_GLOVE7, // 7-sensor 00142 FD_GLOVE7W, // 7-sensor, wireless 00143 FD_GLOVE16, // 16-sensor 00144 FD_GLOVE16W, // 16-sensor, wireless 00145 FD_GLOVE14U, // DG14 Ultra serial 00146 FD_GLOVE14UW, // DG14 Ultra serial, wireless 00147 FD_GLOVE14U_USB // DG14 Ultra USB 00148 }; 00149 00150 enum EfdSensors 00151 { 00152 FD_THUMBNEAR=0, 00153 FD_THUMBFAR, 00154 FD_THUMBINDEX, 00155 FD_INDEXNEAR, 00156 FD_INDEXFAR, 00157 FD_INDEXMIDDLE, 00158 FD_MIDDLENEAR, 00159 FD_MIDDLEFAR, 00160 FD_MIDDLERING, 00161 FD_RINGNEAR, 00162 FD_RINGFAR, 00163 FD_RINGLITTLE, 00164 FD_LITTLENEAR, 00165 FD_LITTLEFAR, 00166 FD_THUMBPALM, 00167 FD_WRISTBEND, 00168 FD_PITCH, 00169 FD_ROLL 00170 }; 00171 00172 /*--------------------------------------------------------------------------*/ 00173 00174 typedef struct 00175 { 00176 // The contents of this struct are platform-dependent and subject to 00177 // change. You should not manipulate the contents of this struct directly. 00178 00179 /*New stuff*/ 00180 // HWND m_hWnd; 00181 // HDEVNOTIFY m_hDevNotify; 00182 00183 } fdGlove; 00184 00185 /*--------------------------------------------------------------------------*/ 00186 00187 FGLOVEAPI fdGlove *fdOpen(char *pPort, bool bOnlyAllowSingleConnection = false); 00188 FGLOVEAPI int fdClose(fdGlove *pFG); 00189 FGLOVEAPI int fdGetGloveHand(fdGlove *pFG); 00190 FGLOVEAPI int fdGetGloveType(fdGlove *pFG); 00191 FGLOVEAPI int fdGetNumSensors(fdGlove *pFG); 00192 FGLOVEAPI void fdGetSensorRawAll(fdGlove *pFG, unsigned short *pData); 00193 FGLOVEAPI unsigned short fdGetSensorRaw(fdGlove *pFG, int nSensor); 00194 FGLOVEAPI void fdSetSensorRawAll(fdGlove *pFG, unsigned short *pData); 00195 FGLOVEAPI void fdSetSensorRaw(fdGlove *pFG, int nSensor, unsigned short nRaw); 00196 FGLOVEAPI void fdGetSensorScaledAll(fdGlove *pFG, float *pData); 00197 FGLOVEAPI float fdGetSensorScaled(fdGlove *pFG, int nSensor); 00198 FGLOVEAPI int fdGetNumGestures(fdGlove *pFG); 00199 FGLOVEAPI int fdGetGesture(fdGlove *pFG); 00200 FGLOVEAPI void fdGetCalibrationAll(fdGlove *pFG, unsigned short *pUpper, unsigned short *pLower); 00201 FGLOVEAPI void fdGetCalibration(fdGlove *pFG, int nSensor, unsigned short *pUpper, unsigned short *pLower); 00202 FGLOVEAPI void fdSetCalibrationAll(fdGlove *pFG, unsigned short *pUpper, unsigned short *pLower); 00203 FGLOVEAPI void fdSetCalibration(fdGlove *pFG, int nSensor, unsigned short nUpper, unsigned short nLower); 00204 FGLOVEAPI void fdResetCalibration(fdGlove *pFG, int nSensor); 00205 FGLOVEAPI void fdResetCalibration(fdGlove *pFG); 00206 FGLOVEAPI void fdGetSensorMaxAll(fdGlove *pFG, float *pMax); 00207 FGLOVEAPI float fdGetSensorMax(fdGlove *pFG, int nSensor); 00208 FGLOVEAPI void fdSetSensorMaxAll(fdGlove *pFG, float *pMax); 00209 FGLOVEAPI void fdSetSensorMax(fdGlove *pFG, int nSensor, float fMax); 00210 FGLOVEAPI void fdGetThresholdAll(fdGlove *pFG, float *pUpper, float *pLower); 00211 FGLOVEAPI void fdGetThreshold(fdGlove *pFG, int nSensor, float *pUpper, float *pLower); 00212 FGLOVEAPI void fdSetThresholdAll(fdGlove *pFG, float *pUpper, float *pLower); 00213 FGLOVEAPI void fdSetThreshold(fdGlove *pFG, int nSensor, float fUpper, float fLower); 00214 FGLOVEAPI void fdGetGloveInfo(fdGlove *pFG, unsigned char *pData); 00215 FGLOVEAPI void fdGetDriverInfo(fdGlove *pFG, unsigned char *pData); 00216 FGLOVEAPI void fdSetCallback(fdGlove *pFG,void *pFunc, LPVOID param); 00217 FGLOVEAPI void fdRemoveCallback(fdGlove *pFG); 00218 FGLOVEAPI int fdGetPacketRate(fdGlove *pFG); 00219 FGLOVEAPI bool fdNewData(fdGlove *pFG); 00220 FGLOVEAPI int fdGetFWVersionMajor(fdGlove *pFG); 00221 FGLOVEAPI int fdGetFWVersionMinor(fdGlove *pFG); 00222 FGLOVEAPI bool fdGetAutoCalibrate(fdGlove *pFG); 00223 FGLOVEAPI bool fdSetAutoCalibrate(fdGlove *pFG, bool bAutoCalibrate); 00224 FGLOVEAPI bool fdSaveCalibration(fdGlove *pFG, const char *pFileName); 00225 FGLOVEAPI bool fdLoadCalibration(fdGlove *pFG, const char *pFileName); 00226 FGLOVEAPI int fdScanUSB(unsigned short *aPID, int &nNumMax); 00227 FGLOVEAPI int fdScanUSB(); 00228 FGLOVEAPI bool fdGetSerialNumber(fdGlove *pFG, char *pData); 00229
1.7.3