p_driver.h
Go to the documentation of this file.
1#ifndef _STAGE_PLAYER_DRIVER_H
2#define _STAGE_PLAYER_DRIVER_H
3
4#include <unistd.h>
5#include <string.h>
6#include <math.h>
7
8#include <libplayercore/playercore.h>
9
10#include "../libstage/stage.hh"
11
12#define DRIVER_ERROR(X) printf("Stage driver error: %s\n", X)
13
14// foward declare;
15class Interface;
16class StgTime;
17
18class StgDriver : public Driver {
19public:
20 // Constructor; need that
21 StgDriver(ConfigFile *cf, int section);
22
23 // Destructor
24 ~StgDriver(void);
25
26 // Must implement the following methods.
27 virtual int Setup();
28 virtual int Shutdown();
29 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data);
30 virtual int Subscribe(QueuePointer &queue, player_devaddr_t addr);
31 virtual int Unsubscribe(QueuePointer &queue, player_devaddr_t addr);
32
35 virtual void Update();
36
40 static bool usegui;
41
43 Interface *LookupInterface(player_devaddr_t addr);
44
45 Stg::Model *LocateModel(char *basename, player_devaddr_t *addr, const std::string &type);
46
47protected:
49 std::vector<Interface *> ifaces;
50};
51
52class Interface {
53public:
54 Interface(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
55
56 virtual ~Interface(void){ /* TODO: clean up*/ };
57
58 player_devaddr_t addr;
59
60 StgDriver *driver; // the driver instance that created this device
61
62 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data)
63 {
64 return (-1);
65 } // empty implementation
66
67 virtual void Publish(void){}; // do nothing
68 virtual void StageSubscribe(void){}; // do nothing
69 virtual void StageUnsubscribe(void){}; // do nothing
70
71 virtual void Subscribe(QueuePointer &queue){}; // do nothing
72 virtual void Unsubscribe(QueuePointer &queue){}; // do nothing};
73};
74
76public:
77 InterfaceSimulation(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
78 virtual ~InterfaceSimulation(void){ /* TODO: clean up*/ };
79 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data);
80};
81
82// base class for all interfaces that are associated with a model
84
85 : public Interface {
86public:
87 InterfaceModel(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section,
88 const std::string &type);
89
90 virtual ~InterfaceModel(void) { StageUnsubscribe(); };
91 virtual void StageSubscribe(void);
92 virtual void StageUnsubscribe(void);
93
94protected:
96
97private:
98 bool subscribed;
99};
100
102public:
103 InterfacePosition(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
104 virtual ~InterfacePosition(void){ /* TODO: clean up*/ };
105 virtual void Publish(void);
106 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data);
107};
108
110public:
111 InterfaceGripper(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
112 virtual ~InterfaceGripper(void){ /* TODO: clean up*/ };
113 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data);
114 virtual void Publish(void);
115};
116
118public:
119 InterfaceWifi(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
120 virtual ~InterfaceWifi(void){ /* TODO: clean up*/ };
121 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data);
122 virtual void Publish(void);
123};
124
126public:
127 InterfaceSpeech(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
128 virtual ~InterfaceSpeech(void){ /* TODO: clean up*/ };
129 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data);
130 virtual void Publish(void);
131};
132
134private:
135 int scan_id;
136
137public:
138 InterfaceRanger(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
139 virtual ~InterfaceRanger(void){ /* TODO: clean up*/ };
140 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data);
141 virtual void Publish(void);
142};
143
144/* class InterfaceAio : public InterfaceModel */
145/* { */
146/* public: */
147/* InterfaceAio( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); */
148/* virtual ~InterfaceAio( void ){ /\* TODO: clean up*\/ }; */
149/* virtual int ProcessMessage(QueuePointer & resp_queue, */
150/* player_msghdr_t* hdr, */
151/* void* data); */
152/* virtual void Publish( void ); */
153/* }; */
154
155/* class InterfaceDio : public InterfaceModel */
156/* { */
157/* public: */
158/* InterfaceDio(player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section); */
159/* virtual ~InterfaceDio(); */
160/* virtual int ProcessMessage(QueuePointer & resp_queue, player_msghdr_t* hdr, void* data); */
161/* virtual void Publish(); */
162/* }; */
163
165public:
166 InterfacePower(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
167 virtual ~InterfacePower(void){ /* TODO: clean up*/ };
168
169 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data);
170
171 virtual void Publish(void);
172};
173
175public:
176 InterfaceFiducial(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
177 virtual ~InterfaceFiducial(void){ /* TODO: clean up*/ };
178
179 virtual void Publish(void);
180 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data);
181};
182
184public:
185 InterfaceActArray(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
186 virtual ~InterfaceActArray(void){ /* TODO: clean up*/ };
187
188 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data);
189 virtual void Publish(void);
190};
191
193public:
194 InterfaceBlobfinder(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
195 virtual ~InterfaceBlobfinder(void){ /* TODO: clean up*/ };
196
197 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data);
198 virtual void Publish(void);
199};
200
202public:
203 InterfaceCamera(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
204 virtual ~InterfaceCamera(void){ /* TODO: clean up*/ };
205
206 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data);
207 virtual void Publish(void);
208};
209
211public:
212 InterfacePtz(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
213 virtual ~InterfacePtz(void){ /* TODO: clean up*/ };
214
215 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data);
216 virtual void Publish(void);
217};
218
220public:
221 InterfaceBumper(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
222 virtual ~InterfaceBumper(void){ /* TODO: clean up*/ };
223
224 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data);
225 virtual void Publish(void);
226};
227
229public:
230 InterfaceLocalize(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
231
232 virtual ~InterfaceLocalize(void){ /* TODO: clean up*/ };
233
234 virtual void Publish(void);
235 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data);
236};
237
239public:
240 InterfaceMap(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
241 virtual ~InterfaceMap(void){ /* TODO: clean up*/ };
242
243 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data);
244
245 // called by ProcessMessage to handle individual messages
246
247 int HandleMsgReqInfo(QueuePointer &resp_queue, player_msghdr *hdr, void *data);
248 int HandleMsgReqData(QueuePointer &resp_queue, player_msghdr *hdr, void *data);
249};
250
251class PlayerGraphics2dVis;
253public:
254 InterfaceGraphics2d(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
255 virtual ~InterfaceGraphics2d(void);
256
257 virtual void Subscribe(QueuePointer &queue);
258 virtual void Unsubscribe(QueuePointer &queue);
259
260 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data);
261
262 PlayerGraphics2dVis *vis;
263};
264
265class PlayerGraphics3dVis;
267public:
268 InterfaceGraphics3d(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section);
269 virtual ~InterfaceGraphics3d(void);
270
271 virtual void Subscribe(QueuePointer &queue);
272 virtual void Unsubscribe(QueuePointer &queue);
273
274 virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data);
275
276 PlayerGraphics3dVis *vis;
277};
278
280class StTime : public PlayerTime {
281private:
282 StgDriver *driver;
283
284public:
285 // Constructor
286 explicit StTime(StgDriver *driver);
287
288 // Destructor
289 virtual ~StTime();
290
291 // Get the simulator time
292 int GetTime(struct timeval *time);
293 int GetTimeDouble(double *time);
294};
295
296#endif
Definition: p_driver.h:183
virtual void Publish(void)
Definition: p_actarray.cc:99
virtual ~InterfaceActArray(void)
Definition: p_driver.h:186
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
Definition: p_actarray.cc:51
Definition: p_driver.h:192
virtual ~InterfaceBlobfinder(void)
Definition: p_driver.h:195
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
Definition: p_blobfinder.cc:110
virtual void Publish(void)
Definition: p_blobfinder.cc:48
Definition: p_driver.h:219
virtual ~InterfaceBumper(void)
Definition: p_driver.h:222
virtual void Publish(void)
Definition: p_bumper.cc:51
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
Definition: p_bumper.cc:77
Definition: p_driver.h:201
virtual ~InterfaceCamera(void)
Definition: p_driver.h:204
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
Definition: p_camera.cc:89
virtual void Publish(void)
Definition: p_camera.cc:46
Definition: p_driver.h:174
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data)
Definition: p_fiducial.cc:92
virtual ~InterfaceFiducial(void)
Definition: p_driver.h:177
virtual void Publish(void)
Definition: p_fiducial.cc:56
Definition: p_driver.h:252
virtual void Subscribe(QueuePointer &queue)
Definition: p_graphics.cc:207
virtual void Unsubscribe(QueuePointer &queue)
Definition: p_graphics.cc:212
PlayerGraphics2dVis * vis
Definition: p_driver.h:262
virtual ~InterfaceGraphics2d(void)
Definition: p_graphics.cc:201
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
Definition: p_graphics.cc:217
Definition: p_driver.h:266
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
Definition: p_graphics.cc:321
PlayerGraphics3dVis * vis
Definition: p_driver.h:276
virtual void Subscribe(QueuePointer &queue)
Definition: p_graphics.cc:311
virtual void Unsubscribe(QueuePointer &queue)
Definition: p_graphics.cc:316
virtual ~InterfaceGraphics3d(void)
Definition: p_graphics.cc:305
Definition: p_driver.h:109
virtual void Publish(void)
Definition: p_gripper.cc:50
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data)
Definition: p_gripper.cc:74
virtual ~InterfaceGripper(void)
Definition: p_driver.h:112
Definition: p_driver.h:228
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data)
virtual void Publish(void)
InterfaceLocalize(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section)
virtual ~InterfaceLocalize(void)
Definition: p_driver.h:232
Definition: p_driver.h:238
virtual ~InterfaceMap(void)
Definition: p_driver.h:241
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
int HandleMsgReqData(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
int HandleMsgReqInfo(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
InterfaceMap(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section)
Definition: p_driver.h:85
Stg::Model * mod
Definition: p_driver.h:95
virtual void StageSubscribe(void)
Definition: p_driver.cc:259
virtual void StageUnsubscribe(void)
Definition: p_driver.cc:267
virtual ~InterfaceModel(void)
Definition: p_driver.h:90
Definition: p_driver.h:101
virtual void Publish(void)
Definition: p_position.cc:203
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data)
Definition: p_position.cc:56
virtual ~InterfacePosition(void)
Definition: p_driver.h:104
Definition: p_driver.h:164
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
virtual void Publish(void)
InterfacePower(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section)
virtual ~InterfacePower(void)
Definition: p_driver.h:167
Definition: p_driver.h:210
virtual ~InterfacePtz(void)
Definition: p_driver.h:213
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
InterfacePtz(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section)
virtual void Publish(void)
Definition: p_driver.h:133
virtual ~InterfaceRanger(void)
Definition: p_driver.h:139
virtual void Publish(void)
Definition: p_ranger.cc:51
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data)
Definition: p_ranger.cc:102
Definition: p_driver.h:75
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data)
Definition: p_simulation.cc:78
virtual ~InterfaceSimulation(void)
Definition: p_driver.h:78
Definition: p_driver.h:125
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data)
Definition: p_speech.cc:64
virtual ~InterfaceSpeech(void)
Definition: p_driver.h:128
virtual void Publish(void)
Definition: p_speech.cc:45
Definition: p_driver.h:117
InterfaceWifi(player_devaddr_t addr, StgDriver *driver, ConfigFile *cf, int section)
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data)
virtual ~InterfaceWifi(void)
Definition: p_driver.h:120
virtual void Publish(void)
Definition: p_driver.h:52
virtual void Publish(void)
Definition: p_driver.h:67
player_devaddr_t addr
Definition: p_driver.h:58
StgDriver * driver
Definition: p_driver.h:60
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data)
Definition: p_driver.h:62
virtual ~Interface(void)
Definition: p_driver.h:56
virtual void Subscribe(QueuePointer &queue)
Definition: p_driver.h:71
virtual void StageSubscribe(void)
Definition: p_driver.h:68
virtual void Unsubscribe(QueuePointer &queue)
Definition: p_driver.h:72
virtual void StageUnsubscribe(void)
Definition: p_driver.h:69
Definition: p_driver.h:280
virtual ~StTime()
Definition: stg_time.cc:43
int GetTimeDouble(double *time)
Definition: stg_time.cc:66
int GetTime(struct timeval *time)
Definition: stg_time.cc:49
Definition: p_driver.h:18
Interface * LookupInterface(player_devaddr_t addr)
find the device record with this Player id
Definition: p_driver.cc:510
Stg::Model * LocateModel(char *basename, player_devaddr_t *addr, const std::string &type)
Definition: p_driver.cc:473
virtual int Subscribe(QueuePointer &queue, player_devaddr_t addr)
Definition: p_driver.cc:524
static StgDriver * master_driver
Definition: p_driver.h:39
static Stg::World * world
all player devices share the same Stage world (for now)
Definition: p_driver.h:38
std::vector< Interface * > ifaces
an array of pointers to Interface objects, defined below
Definition: p_driver.h:49
~StgDriver(void)
Definition: p_driver.cc:557
static bool usegui
Definition: p_driver.h:40
virtual int Setup()
Definition: p_driver.cc:501
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
Definition: p_driver.cc:579
virtual int Unsubscribe(QueuePointer &queue, player_devaddr_t addr)
Definition: p_driver.cc:542
virtual int Shutdown()
Definition: p_driver.cc:565
virtual void Update()
Definition: p_driver.cc:592
Model class
Definition: stage.hh:1651
World class
Definition: stage.hh:764