forked from vrpn/vrpn
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvrpn_CerealBox.h
56 lines (45 loc) · 1.99 KB
/
vrpn_CerealBox.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#ifndef VRPN_CEREALBOX_H
#define VRPN_CEREALBOX_H
#include "vrpn_Analog.h" // for vrpn_Serial_Analog
#include "vrpn_Button.h" // for vrpn_Button_Filter
#include "vrpn_Configure.h" // for VRPN_API
#include "vrpn_Connection.h" // for vrpn_CONNECTION_LOW_LATENCY, etc
#include "vrpn_Dial.h" // for vrpn_Dial
#include "vrpn_Shared.h" // for timeval
#include "vrpn_Types.h" // for vrpn_uint32
class VRPN_API vrpn_CerealBox: public vrpn_Serial_Analog
,public vrpn_Button_Filter
,public vrpn_Dial
{
public:
vrpn_CerealBox (const char * name, vrpn_Connection * c,
const char * port, int baud,
const int numbuttons, const int numchannels, const int numencoders);
~vrpn_CerealBox () {};
// Called once through each main loop iteration to handle
// updates.
virtual void mainloop ();
protected:
int _status;
int _numbuttons; // How many buttons to open
int _numchannels; // How many analog channels to open
int _numencoders; // How many encoders to open
unsigned _expected_chars; // How many characters to expect in the report
unsigned char _buffer[512]; // Buffer of characters in report
unsigned _bufcount; // How many characters we have so far
struct timeval 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
// send report iff changed
virtual void report_changes
(vrpn_uint32 class_of_service
= vrpn_CONNECTION_LOW_LATENCY);
// send report whether or not changed
virtual void report
(vrpn_uint32 class_of_service
= vrpn_CONNECTION_LOW_LATENCY);
// NOTE: class_of_service is only applied to vrpn_Analog
// values, not vrpn_Button or vrpn_Dial
};
#endif