1 #ifndef VRPN_IMMERSIONBOX_H
2 #define VRPN_IMMERSIONBOX_H
24 const int numchannels,
25 const int numencoders);
40 unsigned char _buffer[512];
43 struct timeval timestamp;
45 virtual void clear_values(
void);
46 virtual int reset(
void);
47 virtual int get_report(
void);
59 #define MAX_IENCODERS 6
60 #define MAX_ICHANNELS 8
61 #define MAX_IBUTTONS 7
62 #define MAX_IBOX_STRING 32
65 int syncBaudrate (
double seconds);
68 int sendIboxCommand (
char cmd,
char * returnString,
double delay);
81 unsigned char commandByte;
82 unsigned char dataPacketHeader;
88 inline void setupCommand (
int useTimeStamp,
89 unsigned int numAnalog,
90 unsigned int numEncoder) {
91 commandByte = (
unsigned char) (
92 (useTimeStamp ? 0x20 : 0) |
93 (numAnalog > 4 ? 0x0C : (numAnalog > 2 ? 0x08 : (numAnalog ? 0x04 : 0 ) ) ) |
94 (numEncoder > 3 ? 0x03 : (numEncoder > 2 ? 0x02 : (numEncoder ? 0x01 : 0 ) ) ) );
96 dataPacketHeader = (
unsigned char)(commandByte | 0x80);
103 dataRecordLength = 1 + (useTimeStamp ? 2 : 0) +
104 (numAnalog > 4 ? 9 :(numAnalog > 2 ? 5: (numAnalog ? 3 : 0 ) ) ) +
105 (numEncoder > 4 ? 12 :(numEncoder > 2 ? 8: (numEncoder ? 4: 0 ) ) );