vrpn  07.33
Virtual Reality Peripheral Network
vrpn_Analog_Radamec_SPI.h
Go to the documentation of this file.
1 #ifndef VRPN_RADAMEC_SPI_H
2 #define VRPN_RADAMEC_SPI_H
3 
4 #include "vrpn_Analog.h" // for vrpn_Serial_Analog
5 #include "vrpn_Configure.h" // for VRPN_API
6 #include "vrpn_Connection.h" // for vrpn_CONNECTION_LOW_LATENCY, etc
7 #include "vrpn_Shared.h" // for timeval
8 #include "vrpn_Types.h" // for vrpn_uint32, vrpn_int32
9 
11 {
12 public:
13  vrpn_Radamec_SPI (const char * name, vrpn_Connection * c,
14  const char * port, int baud = 38400);
15 
17 
19  virtual void mainloop ();
20 
21  protected:
22  int _status; //< Reset, Syncing, or Reading
23  int _camera_id; //< What is our camera ID, queried from device
24  int _numchannels; //< How many analog channels to open
25 
26  unsigned _expected_chars; //< How many characters to expect in the report
27  unsigned char _buffer[512]; //< Buffer of characters in report
28  unsigned _bufcount; //< How many characters we have so far
29 
30  struct timeval timestamp; //< Time of the last report from the device
31 
32  virtual int reset(void); //< Set device back to starting config
33  virtual int get_report(void); //< Try to read a report from the device
34 
35  virtual void clear_values(void); //< Clears all channels to 0
36 
38  unsigned char compute_crc(const unsigned char *head, int len);
39 
41  vrpn_uint32 convert_24bit_unsigned(const unsigned char *buf);
42 
44  vrpn_int32 convert_16bit_unsigned(const unsigned char *buf);
45 
46  double int_to_pan(vrpn_uint32 val); //< Returns pan in degrees
47  double int_to_tilt(vrpn_uint32 val) //< Returns tilt in degrees
48  { return int_to_pan(val); };
49  double int_to_zoom(vrpn_uint32 val); //< Returns zoom in meters
50  double int_to_focus(vrpn_uint32 val); //< Returns focal length in meters
51  double int_to_height(vrpn_uint32 val); //< Returns height in meters
52  double int_to_X(vrpn_uint32 mm, vrpn_uint32 frac); //< Returns X location in meters
53  double int_to_Y(vrpn_uint32 mm, vrpn_uint32 frac) //< Returns Y location in meters
54  { return int_to_X(mm, frac); };
55  double int_to_orientation(vrpn_uint32 val); //< Returns orientation in degrees
56 
59  int send_command(const unsigned char *cmd, int len);
60 
62  virtual void report_changes
63  (vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
65  virtual void report
66  (vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
67 };
68 
69 #endif
vrpn_Serial_Analog
Definition: vrpn_Analog.h:63
vrpn_Radamec_SPI::~vrpn_Radamec_SPI
~vrpn_Radamec_SPI()
Definition: vrpn_Analog_Radamec_SPI.h:16
vrpn_Types.h
vrpn_Analog::report
virtual void report(vrpn_uint32 class_of_service=vrpn_CONNECTION_LOW_LATENCY, const struct timeval time=vrpn_ANALOG_NOW)
Send a report whether something has changed or not (for servers) Optionally, tell what time to stamp ...
Definition: vrpn_Analog.C:94
vrpn_Radamec_SPI::int_to_Y
double int_to_Y(vrpn_uint32 mm, vrpn_uint32 frac)
Definition: vrpn_Analog_Radamec_SPI.h:53
vrpn_Radamec_SPI::_camera_id
int _camera_id
Definition: vrpn_Analog_Radamec_SPI.h:23
vrpn_Radamec_SPI::_status
int _status
Definition: vrpn_Analog_Radamec_SPI.h:22
vrpn_CONNECTION_LOW_LATENCY
const vrpn_uint32 vrpn_CONNECTION_LOW_LATENCY
Definition: vrpn_Connection.h:122
vrpn_Shared.h
vrpn_BaseClass::mainloop
virtual void mainloop()=0
Called once through each main loop iteration to handle updates. Remote object mainloop() should call ...
vrpn_Connection
Generic connection class not specific to the transport mechanism.
Definition: vrpn_Connection.h:510
vrpn_Connection.h
vrpn_Analog.h
vrpn_Radamec_SPI::_expected_chars
unsigned _expected_chars
Definition: vrpn_Analog_Radamec_SPI.h:26
vrpn_Radamec_SPI::int_to_tilt
double int_to_tilt(vrpn_uint32 val)
Definition: vrpn_Analog_Radamec_SPI.h:47
vrpn_Radamec_SPI::_numchannels
int _numchannels
Definition: vrpn_Analog_Radamec_SPI.h:24
vrpn_Radamec_SPI
Definition: vrpn_Analog_Radamec_SPI.h:11
vrpn_Configure.h
vrpn_Analog::report_changes
virtual void report_changes(vrpn_uint32 class_of_service=vrpn_CONNECTION_LOW_LATENCY, const struct timeval time=vrpn_ANALOG_NOW)
Send a report only if something has changed (for servers) Optionally, tell what time to stamp the val...
Definition: vrpn_Analog.C:71
VRPN_API
#define VRPN_API
Definition: vrpn_Configure.h:646