58 const char *tracker_cfg_file_name = NULL);
141#ifndef VRPN_CLIENT_ONLY
142#define VRPN_TRACKER_BUF_SIZE 100
147 const char *port =
"/dev/ttyS1",
long baud = 38400);
176#if defined(VRPN_USE_LIBUSB_1_0)
177struct libusb_device_handle;
178struct libusb_context;
179#define VRPN_TRACKER_USB_BUF_SIZE 1000
184 vrpn_uint16 product,
long baud = 115200);
228 vrpn_int32 sensors = 1, vrpn_float64 Hz = 1.0);
250 vrpn_int32 sensors = 1, vrpn_float64 reportRateHz = 1.0,
251 vrpn_float64 axisX = 0, vrpn_float64 axisY = 0,
252 vrpn_float64 axisZ = 1, vrpn_float64 spinRateHz = 0.5);
276 vrpn_int32 sensors = 1);
284 const int sensor,
const struct timeval t,
285 const vrpn_float64 position[3],
const vrpn_float64 quaternion[4],
288 const int sensor,
const struct timeval t,
289 const vrpn_float64 position[3],
const vrpn_float64 quaternion[4],
290 const vrpn_float64 interval,
293 const int sensor,
const struct timeval t,
294 const vrpn_float64 position[3],
const vrpn_float64 quaternion[4],
295 const vrpn_float64 interval,
306typedef struct _vrpn_TRACKERCB {
319typedef struct _vrpn_TRACKERVELCB {
333typedef struct _vrpn_TRACKERACCCB {
348typedef struct _vrpn_TRACKERTRACKER2ROOMCB {
356typedef struct _vrpn_TRACKERUNIT2SENSORCB {
365typedef struct _vrpn_TRACKERWORKSPACECB {
vrpn_MESSAGEHANDLER handler
virtual void mainloop()=0
Called once through each main loop iteration to handle updates. Remote object mainloop() should call ...
virtual int register_types(void)=0
Register the types of messages this device sends/receives. Return 0 on success, -1 on fail.
vrpn_BaseClass(const char *name, vrpn_Connection *c=NULL)
Names the device and assigns or opens connection, calls registration methods.
Generic connection class not specific to the transport mechanism.
Helper class for vrpn_Connection that automates redundant transmission for unreliable (low-latency) m...
vrpn_RedundantTransmission * d_redundancy
vrpn_Tracker_NULL(const char *name, vrpn_Connection *c, vrpn_int32 sensors=1, vrpn_float64 Hz=1.0)
void setRedundantTransmission(vrpn_RedundantTransmission *)
vrpn_Tracker_Sensor_Callbacks * sensor_callbacks
unsigned num_sensor_callbacks
virtual int unregister_change_handler(void *userdata, vrpn_TRACKERCHANGEHANDLER handler, vrpn_int32 sensor=vrpn_ALL_SENSORS)
vrpn_Tracker_Sensor_Callbacks all_sensor_callbacks
virtual int unregister_change_handler(void *userdata, vrpn_TRACKERWORKSPACECHANGEHANDLER handler)
int request_workspace(void)
bool ensure_enough_sensor_callbacks(unsigned num)
static int VRPN_CALLBACK handle_workspace_change_message(void *userdata, vrpn_HANDLERPARAM p)
static int VRPN_CALLBACK handle_vel_change_message(void *userdata, vrpn_HANDLERPARAM p)
static int VRPN_CALLBACK handle_change_message(void *userdata, vrpn_HANDLERPARAM p)
vrpn_Callback_List< vrpn_TRACKERWORKSPACECB > d_workspacechange_list
virtual int unregister_change_handler(void *userdata, vrpn_TRACKERTRACKER2ROOMCHANGEHANDLER handler)
virtual int register_change_handler(void *userdata, vrpn_TRACKERCHANGEHANDLER handler, vrpn_int32 sensor=vrpn_ALL_SENSORS)
static int VRPN_CALLBACK handle_unit2sensor_change_message(void *userdata, vrpn_HANDLERPARAM p)
vrpn_Tracker_Remote(const char *name, vrpn_Connection *c=NULL)
static int VRPN_CALLBACK handle_tracker2room_change_message(void *userdata, vrpn_HANDLERPARAM p)
int request_u2s_xform(void)
virtual int register_change_handler(void *userdata, vrpn_TRACKERTRACKER2ROOMCHANGEHANDLER handler)
vrpn_Callback_List< vrpn_TRACKERTRACKER2ROOMCB > d_tracker2roomchange_list
virtual int register_change_handler(void *userdata, vrpn_TRACKERWORKSPACECHANGEHANDLER handler)
int request_t2r_xform(void)
static int VRPN_CALLBACK handle_acc_change_message(void *userdata, vrpn_HANDLERPARAM p)
int set_update_rate(vrpn_float64 samplesPerSecond)
vrpn_Callback_List< vrpn_TRACKERCB > d_change
vrpn_Callback_List< vrpn_TRACKERVELCB > d_velchange
vrpn_Callback_List< vrpn_TRACKERACCCB > d_accchange
void operator=(const vrpn_Tracker_Sensor_Callbacks &from)
vrpn_Callback_List< vrpn_TRACKERUNIT2SENSORCB > d_unit2sensorchange
unsigned char buffer[VRPN_TRACKER_BUF_SIZE]
char portname[VRPN_TRACKER_BUF_SIZE]
virtual void send_report(void)
virtual void reset(void)=0
Reset the tracker.
virtual int get_report(void)=0
Gets a report if one is available, returns 0 if not, 1 if complete report.
vrpn_Tracker_Serial(const char *name, vrpn_Connection *c, const char *port="/dev/ttyS1", long baud=38400)
virtual int report_pose_acceleration(const int sensor, const struct timeval t, const vrpn_float64 position[3], const vrpn_float64 quaternion[4], const vrpn_float64 interval, const vrpn_uint32 class_of_service=vrpn_CONNECTION_LOW_LATENCY)
vrpn_Tracker_Server(const char *name, vrpn_Connection *c, vrpn_int32 sensors=1)
virtual int report_pose(const int sensor, const struct timeval t, const vrpn_float64 position[3], const vrpn_float64 quaternion[4], const vrpn_uint32 class_of_service=vrpn_CONNECTION_LOW_LATENCY)
These functions should be called to report changes in state, once per sensor.
virtual int report_pose_velocity(const int sensor, const struct timeval t, const vrpn_float64 position[3], const vrpn_float64 quaternion[4], const vrpn_float64 interval, const vrpn_uint32 class_of_service=vrpn_CONNECTION_LOW_LATENCY)
vrpn_Tracker_Spin(const char *name, vrpn_Connection *c, vrpn_int32 sensors=1, vrpn_float64 reportRateHz=1.0, vrpn_float64 axisX=0, vrpn_float64 axisY=0, vrpn_float64 axisZ=1, vrpn_float64 spinRateHz=0.5)
vrpn_float64 spin_rate_Hz
vrpn_Tracker_USB(const char *name, vrpn_Connection *c, vrpn_uint16 vendor, vrpn_uint16 product, long baud=115200)
vrpn_uint8 buffer[VRPN_TRACKER_USB_BUF_SIZE]
virtual void reset(void)=0
Reset the tracker.
virtual void send_report(void)
struct libusb_device_handle * _device_handle
virtual int get_report(void)=0
Gets reports if some are available, returns 0 if not, 1 if complete report(s).
struct libusb_context * _context
virtual int encode_to(char *buf)
int register_server_handlers(void)
vrpn_float64 workspace_max[3]
vrpn_int32 request_t2r_m_id
vrpn_int32 reset_origin_m_id
vrpn_int32 connection_dropped_m_id
static int VRPN_CALLBACK handle_t2r_request(void *userdata, vrpn_HANDLERPARAM p)
virtual int encode_acc_to(char *buf)
bool ensure_enough_unit2sensors(unsigned num)
static int VRPN_CALLBACK handle_u2s_request(void *userdata, vrpn_HANDLERPARAM p)
vrpn_int32 request_workspace_m_id
vrpn_int32 update_rate_id
vrpn_Tracker(const char *name, vrpn_Connection *c=NULL, const char *tracker_cfg_file_name=NULL)
void get_local_u2s(vrpn_int32 sensor, vrpn_float64 *vec, vrpn_float64 *quat)
struct timeval watchdog_timestamp
vrpn_int32 workspace_m_id
void get_local_t2r(vrpn_float64 *vec, vrpn_float64 *quat)
virtual int encode_unit2sensor_to(char *buf)
Encodes the "Unit to Sensor" transformation into the buffer specified.
vrpn_int32 request_u2s_m_id
virtual int encode_workspace_to(char *buf)
virtual int encode_vel_to(char *buf)
virtual int encode_tracker2room_to(char *buf)
Encodes the "Tracker to Room" transformation into the buffer specified.
vrpn_float64 workspace_min[3]
vrpn_Tracker_Quat * unit2sensor_quat
void print_latest_report(void)
unsigned num_unit2sensors
int read_config_file(FILE *config_file, const char *tracker_name)
vrpn_int32 unit2sensor_m_id
vrpn_Tracker_Pos * unit2sensor
vrpn_float64 tracker2room_quat[4]
vrpn_int32 tracker2room_m_id
static int VRPN_CALLBACK handle_workspace_request(void *userdata, vrpn_HANDLERPARAM p)
vrpn_float64 tracker2room[3]
This structure is what is passed to a vrpn_Connection message callback.
vrpn_float64 tracker2room_quat[4]
vrpn_float64 tracker2room[3]
vrpn_float64 unit2sensor_quat[4]
vrpn_float64 unit2sensor[3]
vrpn_float64 workspace_min[3]
vrpn_float64 workspace_max[3]
All types of client/server/peer objects in VRPN should be derived from the vrpn_BaseClass type descri...
const vrpn_uint32 vrpn_CONNECTION_LOW_LATENCY
#define VRPN_TRACKER_BUF_SIZE
void(VRPN_CALLBACK * vrpn_TRACKERTRACKER2ROOMCHANGEHANDLER)(void *userdata, const vrpn_TRACKERTRACKER2ROOMCB info)
#define VRPN_TRACKER_USB_BUF_SIZE
const int vrpn_TRACKER_FAIL
const int vrpn_ALL_SENSORS
class VRPN_API vrpn_RedundantTransmission
const int vrpn_TRACKER_RESETTING
void(VRPN_CALLBACK * vrpn_TRACKERACCCHANGEHANDLER)(void *userdata, const vrpn_TRACKERACCCB info)
vrpn_float64 vrpn_Tracker_Quat[4]
const int vrpn_TRACKER_SYNCING
const int vrpn_TRACKER_PARTIAL
void(VRPN_CALLBACK * vrpn_TRACKERCHANGEHANDLER)(void *userdata, const vrpn_TRACKERCB info)
vrpn_float64 vrpn_Tracker_Pos[3]
const int vrpn_TRACKER_REPORT_READY
void(VRPN_CALLBACK * vrpn_TRACKERVELCHANGEHANDLER)(void *userdata, const vrpn_TRACKERVELCB info)
const int vrpn_TRACKER_AWAITING_STATION
void(VRPN_CALLBACK * vrpn_TRACKERUNIT2SENSORCHANGEHANDLER)(void *userdata, const vrpn_TRACKERUNIT2SENSORCB info)
void(VRPN_CALLBACK * vrpn_TRACKERWORKSPACECHANGEHANDLER)(void *userdata, const vrpn_TRACKERWORKSPACECB info)