]> git.mxchange.org Git - flightgear.git/blob - Stripe_u/glove.h
First mostly successful tile triangulation works. There's plenty of tweaking
[flightgear.git] / Stripe_u / glove.h
1 /*
2  * dg2lib.h - header file for the DG2 library libdg2.a
3  *
4  * copyright 1988-92 VPL Research Inc.
5  *
6  */
7
8
9
10 /******** error returns from the library */
11
12 extern int DG2_error;           /* for error information */
13 extern float DG2_lib_version;   /* for the library version */
14 extern int DG2_box_version;     /* for the firmware version */
15 extern int DG2_glove_sensors;   /* for the number of sensors in the glove */
16
17 /* defines for DG2_error values */
18
19 #define DG2_AOK                 0 
20 #define DG2_SETTINGS_FILE       -1
21 #define DG2_SERIAL_OPEN         -2 
22 #define DG2_SERIAL_PORT         -4   
23 #define DG2_RESET               -6  
24 #define DG2_PARAMETER           -7  
25 #define DG2_FILE_IO             -8
26 #define DG2_CALIBRATION_FILE    -9
27 #define DG2_GESTURE_FILE        -10
28 #define DG2_CAL_GEST_FILES      -11
29 /* defines for DG2_response() */
30
31 #define DATAGLOVE       1
32 #define POLHEMUS        2
33 #define GESTURE         8
34
35 #define DG2_60Hz        1
36 #define DG2_30Hz        2
37 #define DG2_oneShot     3
38
39 /* defines for DG2_DataGlove_select() */
40
41 #define THUMB_INNER     0x1
42 #define THUMB_OUTER     0x2
43 #define INDEX_INNER     0x4
44 #define INDEX_OUTER     0x8
45 #define MIDDLE_INNER    0x10
46 #define MIDDLE_OUTER    0x20
47 #define RING_INNER      0x40
48 #define RING_OUTER      0x80
49 #define LITTLE_INNER    0x100
50 #define LITTLE_OUTER    0x200
51 #define NORMAL_JOINTS   0x3ff
52 #define FLEX11          0x400
53 #define FLEX12          0x800
54 #define FLEX13          0x1000
55 #define FLEX14          0x2000
56 #define FLEX15          0x4000
57 #define FLEX16          0x8000
58
59
60 /* defines for DG2_DataGlove_trans_select() */
61
62 #define DG2_TRANSLATED  5
63 #define DG2_RAW         6
64
65 /* defines for DG2_Polhemus_units() */
66
67 #define POL_RAW         0
68 #define POL_INCHES      1
69 #define POL_CM          2
70
71 /* defines for DG2_user_IRQ() */
72
73 #define IRQ_ON  1
74 #define IRQ_OFF 2
75
76
77 /* defines for DG2_get_data() */
78
79 #define DG2_report      1
80 #define DG2_userport    2
81
82
83 /* dg2 command codes*/
84 #define LEADINGBYTE     0x24
85 #define RPT60           0x41    /* repeat 60 */
86 #define RPT30           0x42    /* repeat 30 */
87 #define ONESHOT         0x43    /* one shot */
88 #define SYSID           0x44    /* system ID */
89 #define EPTBUF          0x45    /* empty buffer */
90 #define USRRD           0x46    /* user read */
91 #define USRIRQ          0x47    /* user IRQ */
92 #define QBRT            0x48    /* query bright */      
93 #define CDRST           0x49    /* cold reset */
94 #define WMRST           0x4A    /* warm reset */
95 #define MEMALLO         0x4B    /* memory alloc */
96 #define DLTSND          0x4C    /* delta send */
97 #define SETBRT          0x4D    /* set bright */
98 #define SETDIM          0x4E    /* set dim */
99 #define FILBUF          0x4F    /* fill buffer */
100 #define LDTBL           0x50    /* load table */
101 #define LDPOL           0x51    /* send up to 63 bytes to Polhemus  */
102 #define ANGLE           0x52    /* angles */
103 #define NSNSR           0x53    /* num sensors */
104 #define SETFB           0x54    /* set feedback */
105 #define QCUT            0X55    /* query cutoff*/
106 #define SETCUT          0X56    /* set cutoff */
107 #define FLXVAL          0X57    /* raw flex values */
108 #define USRWR           0X58    /* user write */
109 #define JNTMAP          0X59    /* joint map */
110 #define ERRMESS         0XFF    /* error in command input */
111 #define TIMOUT          0XFE    /* timed out during command */
112
113 /* response structure */
114
115 typedef struct DG2_data {
116         char gesture;
117         double location[3];     /* X,Y,Z */
118         double orientation[3];  /* yaw, pitch, roll */
119         short flex[16];
120         char gesture_name[20];
121         short reserved[16];
122                 /* user port data: */
123         char user_nibble;
124         char user_analog[3];
125 } DG2_data;
126
127
128 /**************function prototypes*************/
129 /*NOTE: all DG2_ functions return -1 on error*/
130
131 extern int DG2_open(char *portname, int baud);
132 extern int DG2_close(int filedes);
133 extern int DG2_direct(int filedes,char *message,int count);
134 extern int DG2_response(int filedes,int devices,int rate);
135 extern int DG2_DataGlove_select(int filedes,int flex_sensors);
136 extern int DG2_DataGlove_translation(int filedes,int flex_sensors,char table[16][256]);
137 extern int DG2_DataGlove_trans_select(int filedes,int status);
138 extern int DG2_DataGlove_LED_set(int filedes,int LED);
139 extern int DG2_DataGlove_LED_read(int filedes);
140 extern int DG2_Polhemus_units(int filedes,char type);
141 extern int DG2_Polhemus_direct(int filedes,char *message,int count);
142 extern int DG2_user_write(int filedes,int nibble);
143 extern int DG2_user_IRQ(int filedes,int mode);
144 extern int DG2_user_read(int filedes,DG2_data *data);
145 extern int DG2_get_data(int filedes,DG2_data *data);
146 extern int DG2_gesture_load(int filedes,char *calib,char *gest);
147
148 /*use this with caution since it does not return until it gets a correct
149  *response from the DG2
150 */
151 extern int DG2U_get_reply(int filedes,char *buff,int response,int size);