Something went wrong on our end
vrpn_GlobalHapticsOrb.h 2.22 KiB
#ifndef VRPN_GLOBALHAPTICSORB_H
#define VRPN_GLOBALHAPTICSORB_H
#include "vrpn_Analog.h" // for vrpn_Serial_Analog
#include "vrpn_Button.h" // for vrpn_Button_Filter
#include "vrpn_Configure.h" // for VRPN_API, VRPN_CALLBACK
#include "vrpn_Connection.h" // for vrpn_CONNECTION_RELIABLE, etc
#include "vrpn_Dial.h" // for vrpn_Dial
#include "vrpn_Shared.h" // for timeval
#include "vrpn_Types.h" // for vrpn_uint32
// Exports buttons 0-25 as 0-25.
// Exports left pushbutton as 26, right pushbutton as 27.
// Exports rocker up as 28, rocker down as 29.
// Exports Thumbwheel both as clamping analog (-1..1) 0 and as dial 0.
// Exports Trackball both as clamping analogs 1 and 2 and as dials 1 and 2.
class VRPN_API vrpn_GlobalHapticsOrb: public vrpn_Serial_Analog
,public vrpn_Button_Filter
,public vrpn_Dial
{
public:
vrpn_GlobalHapticsOrb (const char * name, vrpn_Connection * c,
const char * port, int baud);
~vrpn_GlobalHapticsOrb () {};
// Called once through each main loop iteration to handle
// updates.
virtual void mainloop ();
protected:
int d_status;
unsigned d_expected_chars; //< How many characters to expect in the report
unsigned char d_buffer[512]; //< Buffer of characters in report
unsigned d_bufcount; //< How many characters we have so far
struct timeval d_timestamp; //< Time of the last report from the device
virtual void clear_values(void); //< Set all buttons, analogs and encoders back to 0
virtual int reset(void); //< Set device back to starting config
virtual int get_report(void); //< Try to read a report from the device
// NOTE: class_of_service is only applied to vrpn_Analog
// values, not vrpn_Button or vrpn_Dial
/// Send report iff changed
virtual void report_changes(vrpn_uint32 class_of_service
= vrpn_CONNECTION_RELIABLE);
/// Send report whether or not changed
virtual void report(vrpn_uint32 class_of_service
= vrpn_CONNECTION_RELIABLE);
/// Clear all of the values when we get our first client connection request
static int VRPN_CALLBACK handle_firstConnection(void * userdata, vrpn_HANDLERPARAM);
};
#endif