vrpn
07.33
Virtual Reality Peripheral Network
vrpn_Atmel.h
Go to the documentation of this file.
1
// -*- Mode:C++ -*-
2
/***************************************************************************************************/
3
/* */
4
/* Copyright (C) 2004 Bauhaus University Weimar */
5
/* Released into the public domain on 6/23/2007 as part of the VRPN project */
6
/* by Jan P. Springer. */
7
/* */
8
/***************************************************************************************************/
9
/* */
10
/* module : vrpn_Atmel.h */
11
/* project : vrpn_Avango */
12
/* description: server for microcontroller board based on Atmel's ATMEGA32 */
13
/* hardware developed by Albotronic: www.albotronic.de */
14
/* */
15
/***************************************************************************************************/
16
17
#ifndef VRPN_ATMEL
18
#define VRPN_ATMEL
19
20
/***************************************************************************************************/
21
/* compiler flags */
22
23
/* serial lib
24
default is atmellib
25
can be changed to vrpn_Serial (problems when dropping connection from client side,
26
read blocks for unknown reason
27
*/
28
//#define VRPN_ATMEL_SERIAL_VRPN
29
30
/* debug flags */
31
#define VRPN_ATMEL_VERBOSE
32
//#define VRPN_ATMEL_TIME_MEASURE
33
34
35
/***************************************************************************************************/
36
/* vrpn atmellib error values -> reported to the client */
37
38
#define VRPN_ATMEL_ERROR_READING_IN -21
39
#define VRPN_ATMEL_ERROR_WRITING_DOWN -22
40
#define VRPN_ATMEL_ERROR_OUT_OF_RANGE -23
41
#define VRPN_ATMEL_ERROR_NOT_WRITABLE -24
42
43
#define VRPN_ATMEL_MODE_RO 101
44
#define VRPN_ATMEL_MODE_RW 102
45
#define VRPN_ATMEL_MODE_WO 103
46
#define VRPN_ATMEL_MODE_NA 104
47
48
#define VRPN_ATMEL_STATUS_WAITING_FOR_CONNECTION 201
49
#define VRPN_ATMEL_STATUS_RUNNING 202
50
#define VRPN_ATMEL_STATUS_ERROR -200
51
52
#define VRPN_ATMEL_CHANNEL_NOT_VALID -1
53
54
#define VRPN_ATMEL_ALIVE_TIME_LOOK_SEC 3
55
#define VRPN_ATMEL_ALIVE_TIME_LOOK_USEC 0
56
#define VRPN_ATMEL_ALIVE_INTERVAL_SEC 1
57
58
/***************************************************************************************************/
59
/* system includes */
60
#include <vector>
// for vector
61
#include <stddef.h>
// for NULL
62
63
/***************************************************************************************************/
64
/* project includes */
65
#include "
vrpn_Analog.h
"
// for vrpn_Analog_Server
66
#include "
vrpn_Analog_Output.h
"
// for vrpn_Analog_Output_Server
67
#include "
vrpn_Configure.h
"
// for VRPN_API
68
#include "
vrpn_Shared.h
"
// for timeval
69
70
class
VRPN_API
vrpn_Connection
;
71
72
#ifdef VRPN_ATMEL_SERIAL_VRPN
73
# include "
vrpn_Serial.h
"
74
#endif
75
76
/***************************************************************************************************/
77
class
VRPN_API
vrpn_Atmel
:
public
vrpn_Analog_Server
,
vrpn_Analog_Output_Server
{
78
79
public
:
80
81
static
vrpn_Atmel
*
82
Create(
char
* name,
vrpn_Connection
*c,
83
const
char
*port=
"/dev/ttyS0/"
,
long
baud=9600,
84
int
channel_count=0,
85
int
* channel_mode=NULL);
86
87
~
vrpn_Atmel
();
88
89
void
mainloop
();
90
91
private
:
92
93
// constructor
94
vrpn_Atmel
(
char
* name,
vrpn_Connection
*c,
int
fd);
95
96
private
:
97
98
void
init_channel_mode(
int
* channel_mode);
99
100
// do the serial communication in mainloop
101
bool
mainloop_serial_io();
102
103
// things which have to be done when a new connection has been established
104
bool
handle_new_connection();
105
106
// enable connection reliability checking by additional select
107
bool
Check_Serial_Alive();
108
109
private
:
110
111
// indicator for current status of server
112
// one of the predefined value: VRPN_ATMEL_STATUS_*
113
int
_status;
114
115
// time of report
116
struct
timeval timestamp;
117
118
int
serial_fd;
119
120
// indicator for io-mode of the channels
121
// one of the predefined values: VRPN_ATMEL_MODE_*
122
std::vector<int> _channel_mode;
123
124
// helper for Serial_Alive: do the stuff not in every mainloop -> _time_alive
125
struct
timeval _time_alive;
126
};
127
128
#endif // #ifndef VRPN_ATMEL
vrpn_Analog_Output.h
vrpn_Analog_Server
Definition:
vrpn_Analog.h:95
vrpn_Analog_Output_Server::mainloop
virtual void mainloop()
Called once through each main loop iteration to handle updates. Remote object mainloop() should call ...
Definition:
vrpn_Analog_Output.h:62
vrpn_Serial.h
vrpn_Serial: Pulls all the serial port routines into one file to make porting to new operating system...
vrpn_Shared.h
vrpn_Connection
Generic connection class not specific to the transport mechanism.
Definition:
vrpn_Connection.h:510
vrpn_Analog.h
vrpn_Analog_Output_Server
Definition:
vrpn_Analog_Output.h:56
vrpn_Configure.h
VRPN_API
#define VRPN_API
Definition:
vrpn_Configure.h:646
vrpn_Atmel
Definition:
vrpn_Atmel.h:77
vrpn_Atmel.h
Generated by
1.8.17