33 vrpn_Button(
const char *name, vrpn_Connection *c = NULL);
34 virtual ~vrpn_Button(
void);
39 virtual void set_momentary(vrpn_int32 which_button);
40 virtual void set_toggle(vrpn_int32 which_button, vrpn_int32 current_state);
41 virtual void set_all_momentary(
void);
42 virtual void set_all_toggle(vrpn_int32 default_state);
45 unsigned char buttons[vrpn_BUTTON_MAX_BUTTONS];
46 unsigned char lastbuttons[vrpn_BUTTON_MAX_BUTTONS];
47 vrpn_int32 minrate[vrpn_BUTTON_MAX_BUTTONS];
48 vrpn_int32 num_buttons;
49 struct timeval timestamp;
50 vrpn_int32 change_message_id;
51 vrpn_int32 states_message_id;
52 vrpn_int32 admin_message_id;
55 virtual void report_changes(
void);
56 virtual void report_states(
void);
57 virtual vrpn_int32 encode_to(
char *buf, vrpn_int32 button,
59 virtual vrpn_int32 encode_states_to(
char *buf);
66class VRPN_API vrpn_Button_Filter :
public vrpn_Button {
68 vrpn_int32 buttonstate[vrpn_BUTTON_MAX_BUTTONS];
69 virtual void set_momentary(vrpn_int32 which_button);
70 virtual void set_toggle(vrpn_int32 which_button, vrpn_int32 current_state);
71 virtual void set_all_momentary(
void);
72 virtual void set_all_toggle(vrpn_int32 default_state);
73 void set_alerts(vrpn_int32);
77 vrpn_Button_Filter(
const char *, vrpn_Connection *c = NULL);
80 virtual vrpn_int32 encode_states_to(
char *buf);
81 virtual void report_changes(
void);
86 static int VRPN_CALLBACK
121class VRPN_API vrpn_Button_Example_Server :
public vrpn_Button_Filter {
123 vrpn_Button_Example_Server(
const char *name, vrpn_Connection *c,
124 int numbuttons = 1, vrpn_float64 rate = 1.0);
129 vrpn_float64 _update_rate;
174class VRPN_API vrpn_Button_Serial :
public vrpn_Button_Filter {
176 vrpn_Button_Serial(
const char *name, vrpn_Connection *c,
177 const char *port =
"/dev/ttyS1/",
long baud = 38400);
178 virtual ~vrpn_Button_Serial();
181 char portname[VRPN_BUTTON_BUF_SIZE];
187 buffer[VRPN_BUTTON_BUF_SIZE];
188 vrpn_uint32 bufcount;
190 virtual void read() = 0;
251class VRPN_API vrpn_Button_Remote :
public vrpn_Button {
256 vrpn_Button_Remote(
const char *name, vrpn_Connection *cn = NULL);
257 virtual ~vrpn_Button_Remote(
void);
263 virtual int register_change_handler(
void *userdata,
264 vrpn_BUTTONCHANGEHANDLER handler)
266 return d_callback_list.register_handler(userdata, handler);
268 virtual int unregister_change_handler(
void *userdata,
269 vrpn_BUTTONCHANGEHANDLER handler)
271 return d_callback_list.unregister_handler(userdata, handler);
275 virtual int register_states_handler(
void *userdata,
276 vrpn_BUTTONSTATESHANDLER handler)
278 return d_states_callback_list.register_handler(userdata, handler);
280 virtual int unregister_states_handler(
void *userdata,
281 vrpn_BUTTONSTATESHANDLER handler)
283 return d_states_callback_list.unregister_handler(userdata, handler);
287 vrpn_Callback_List<vrpn_BUTTONCB> d_callback_list;
288 static int VRPN_CALLBACK
289 handle_change_message(
void *userdata, vrpn_HANDLERPARAM p);
291 vrpn_Callback_List<vrpn_BUTTONSTATESCB> d_states_callback_list;
292 static int VRPN_CALLBACK
293 handle_states_message(
void *userdata, vrpn_HANDLERPARAM p);