vrpn  07.33
Virtual Reality Peripheral Network
vrpn_BiosciencesTools.h
Go to the documentation of this file.
1 #ifndef VRPN_BIOSCIENCES_H
2 #define VRPN_BIOSCIENCES_H
3 
4 // XXX Need to have a VRPN boolean output device. Then we can set the
5 // temperature control to be on or off based on its value. For now, we're
6 // doing a horrible thing and packing it into an analog output channel.
7 
8 #include "vrpn_Analog.h" // for vrpn_Serial_Analog
9 #include "vrpn_Analog_Output.h" // for vrpn_Analog_Output
10 #include "vrpn_Button.h" // for vrpn_Button_Filter
11 #include "vrpn_Configure.h" // for VRPN_CALLBACK, VRPN_API
12 #include "vrpn_Connection.h" // for vrpn_CONNECTION_RELIABLE, etc
13 #include "vrpn_Shared.h" // for timeval
14 #include "vrpn_Types.h" // for vrpn_uint32, vrpn_float64
15 
16 /*
17 # Analog channels: (read by client)
18 # 0 Reading from stage 1 in degrees Celcius
19 # 1 Reading from bath 1 in degrees Celcius
20 # 2 External 1 in degrees Celcius (or setpoint if ext not used)
21 # 3 Reading from stage 2 in degrees Celcius
22 # 4 Reading from bath 2 in degrees Celcius
23 # 5 External 1 in degrees Celcius (or setpoint if ext not used)
24 # Button channels: (read by client)
25 # 0 Temperature control is on or off
26 # Analog_Output channels: (set by client)
27 # 0 Reference temperature for channel 1
28 # 1 Reference temperature for channel 2
29 # 2 Turn temperature control on/off (0 = off, otherwise on)
30 */
31 
34 {
35 public:
36  // Tell it the temperature to use to set channels 1 and 2 to
37  // in Celcius and also whether to turn the temperature control on.
38  vrpn_BiosciencesTools (const char * name, vrpn_Connection * c,
39  const char * port, float temp1, float temp2,
40  bool control_on);
42 
44  virtual void mainloop ();
45 
46  protected:
47  char d_buffer[128]; //< Buffer of characters in report
48  unsigned d_bufcount; //< How many characters we have so far
49 
50  struct timeval timestamp; //< Time of the last report from the device
51 
52  virtual int reset(void); //< Set device back to starting config
53  virtual int get_report(void); //< Try to read a report from the device
54 
55  // Channels are zero-referenced. Use 0 for channel 1.
56  bool set_reference_temperature(unsigned channel, float value);
57  bool set_control_status(bool on);
58  bool request_temperature(unsigned channel);
59 
60  // Sets a specified channel based on a new value from the Analog_Output.
61  // Channels 0 and 1 are temperature settings, and channel 2 is our
62  // hack to turn on and off temperatur control.
63  bool set_specified_channel(unsigned channel, vrpn_float64 value);
64 
65  // This lets us know which channel we're waiting for a reading on.
66  // It cycles; each time we hear from one, we ask for the next.
68 
69  float convert_bytes_to_reading(const char *buf);
70 
72  virtual void report_changes
73  (vrpn_uint32 class_of_service = vrpn_CONNECTION_RELIABLE);
75  virtual void report
76  (vrpn_uint32 class_of_service = vrpn_CONNECTION_RELIABLE);
77 
80  static int VRPN_CALLBACK handle_request_message(void *userdata, vrpn_HANDLERPARAM p);
81 
83  static int VRPN_CALLBACK handle_request_channels_message(void *userdata, vrpn_HANDLERPARAM p);
84 
86  static int VRPN_CALLBACK handle_connect_message(void *userdata, vrpn_HANDLERPARAM p);
87 };
88 
89 #endif
vrpn_Serial_Analog
Definition: vrpn_Analog.h:63
vrpn_BiosciencesTools
Definition: vrpn_BiosciencesTools.h:32
vrpn_Button_Filter::report_changes
virtual void report_changes(void)
Definition: vrpn_Button.C:382
vrpn_Types.h
vrpn_Analog_Output.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_Analog_Output
Definition: vrpn_Analog_Output.h:26
vrpn_BiosciencesTools::d_bufcount
unsigned d_bufcount
Definition: vrpn_BiosciencesTools.h:48
vrpn_CONNECTION_RELIABLE
const vrpn_uint32 vrpn_CONNECTION_RELIABLE
Classes of service for messages, specify multiple by ORing them together Priority of satisfying these...
Definition: vrpn_Connection.h:120
vrpn_HANDLERPARAM
This structure is what is passed to a vrpn_Connection message callback.
Definition: vrpn_Connection.h:44
vrpn_Shared.h
vrpn_Button.h
vrpn_BaseClass::mainloop
virtual void mainloop()=0
Called once through each main loop iteration to handle updates. Remote object mainloop() should call ...
vrpn_BiosciencesTools::~vrpn_BiosciencesTools
~vrpn_BiosciencesTools()
Definition: vrpn_BiosciencesTools.h:41
vrpn_Connection
Generic connection class not specific to the transport mechanism.
Definition: vrpn_Connection.h:510
vrpn_Connection.h
vrpn_Analog.h
vrpn_BiosciencesTools::d_next_channel_to_read
unsigned d_next_channel_to_read
Definition: vrpn_BiosciencesTools.h:67
VRPN_CALLBACK
#define VRPN_CALLBACK
Definition: vrpn_Configure.h:647
vrpn_Configure.h
VRPN_API
#define VRPN_API
Definition: vrpn_Configure.h:646
vrpn_Button_Filter
All button servers should derive from this class, which provides the ability to turn any of the butto...
Definition: vrpn_Button.h:65