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
32
class
VRPN_API
vrpn_BiosciencesTools
:
public
vrpn_Serial_Analog
,
33
public
vrpn_Analog_Output
,
public
vrpn_Button_Filter
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);
41
~vrpn_BiosciencesTools
() {};
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.
67
unsigned
d_next_channel_to_read
;
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:34
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_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
vrpn_BiosciencesTools.h
Generated by
1.8.18