24 const int numchannels,
25 const int numencoders);
39 unsigned _expected_chars;
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);
50 virtual void report_changes (vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
52 virtual void report (vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
59#define MAX_IENCODERS 6
60#define MAX_ICHANNELS 8
62#define MAX_IBOX_STRING 32
65 int syncBaudrate (
double seconds);
68 int sendIboxCommand (
char cmd,
char * returnString,
double delay);
71 char iname [MAX_IBOX_STRING];
72 char comment[MAX_IBOX_STRING];
73 char serial [MAX_IBOX_STRING];
74 char id [MAX_IBOX_STRING];
75 char model [MAX_IBOX_STRING];
76 char vers [MAX_IBOX_STRING];
77 char parmf [MAX_IBOX_STRING];
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 ) ) );