typedef struct { uint32_t version; /* CAVElib version */ uint32_t numSensors; /* Total number of sensors */ uint32_t sensorOffset; /* Byte offset from of header to start of sensor array */ uint32_t sensorSize; /* sizeof() of a sensor struct */ uint32_t timestamp[2]; /* timestamp of latest data */ uint32_t command; /* For sending commands (such as 'reset') to daemon */ } CAVE_TRACKDTRACKER_HEADER; typedef struct { float x, y, z; float azim, elev, roll; CAVE_TIMESTAMP_ST timestamp; boolean calibrated; CAVEID frame; /* CAVE_TRACKER_FRAME or CAVE_NAV_FRAME */ } CAVE_SENSOR_ST; typedef struct { uint32_t version; /* CAVElib version */ uint32_t buttonOffset; /* Byte offset from start of header to start of button data */ uint32_t valuatorOffset; /* Byte offset from start of header to start of valuator data */ uint32_t numButtons; uint32_t numValuators; uint32_t timestamp[2]; uint32_t command; /* For sending commands (such as 'reset') to daemon */ } CAVE_TRACKDCONTROLLER_HEADER; struct { int32_t button[CAVE_MAX_BUTTONS]; float valuator[CAVE_MAX_VALUATORS]; };