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;
15 class Interface;
16 class StgTime;
17 
18 class StgDriver : public Driver
19 {
20  public:
21  // Constructor; need that
22  StgDriver(ConfigFile* cf, int section);
23 
24  // Destructor
25  ~StgDriver(void);
26 
27  // Must implement the following methods.
28  virtual int Setup();
29  virtual int Shutdown();
30  virtual int ProcessMessage(QueuePointer &resp_queue,
31  player_msghdr * hdr,
32  void * data);
33  virtual int Subscribe(QueuePointer &queue, player_devaddr_t addr);
34  virtual int Unsubscribe(QueuePointer &queue, player_devaddr_t addr);
35 
38  virtual void Update();
39 
41  static Stg::World* world;
42  static bool usegui;
43 
45  Interface* LookupDevice( player_devaddr_t addr );
46 
48  player_devaddr_t* addr,
49  const std::string& type );
50 
51  protected:
52 
54  std::vector<Interface*> devices;
55 };
56 
57 
58 class Interface
59 {
60  public:
61  Interface(player_devaddr_t addr,
62  StgDriver* driver,
63  ConfigFile* cf,
64  int section );
65 
66  virtual ~Interface( void ){ /* TODO: clean up*/ };
67 
68  player_devaddr_t addr;
71 
72  StgDriver* driver; // the driver instance that created this device
73 
74  virtual int ProcessMessage(QueuePointer &resp_queue,
75  player_msghdr_t* hdr,
76  void* data) { return(-1); } // empty implementation
77 
78  virtual void Publish( void ){}; // do nothing
79  virtual void Subscribe( void ){}; // do nothing
80  virtual void Unsubscribe( void ){}; // do nothing
81  virtual void Subscribe( QueuePointer &queue ){}; // do nothing
82  virtual void Unsubscribe( QueuePointer &queue ){}; // do nothing};
83 };
84 
86 {
87  public:
88  InterfaceSimulation( player_devaddr_t addr, StgDriver* driver,ConfigFile* cf, int section );
89  virtual ~InterfaceSimulation( void ){ /* TODO: clean up*/ };
90  virtual int ProcessMessage(QueuePointer & resp_queue,
91  player_msghdr_t* hdr,
92  void* data);
93 };
94 
95 // base class for all interfaces that are associated with a model
97 
98  : public Interface
99 {
100  public:
101  InterfaceModel( player_devaddr_t addr,
102  StgDriver* driver,
103  ConfigFile* cf,
104  int section,
105  const std::string& type );
106 
107  virtual ~InterfaceModel( void ){ Unsubscribe(); };
108 
109  virtual void Subscribe( void );
110  virtual void Unsubscribe( void );
111  //virtual void Subscribe( QueuePointer &queue );
112  //virtual void Unsubscribe( QueuePointer &queue );
113 
114  protected:
116 
117  private:
119 };
120 
121 
123 {
124  public:
125  InterfacePosition( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
126  virtual ~InterfacePosition( void ){ /* TODO: clean up*/ };
127  virtual void Publish( void );
128  virtual int ProcessMessage(QueuePointer & resp_queue,
129  player_msghdr_t* hdr,
130  void* data);
131 };
132 
134 {
135  public:
136  InterfaceGripper( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
137  virtual ~InterfaceGripper( void ){ /* TODO: clean up*/ };
138  virtual int ProcessMessage(QueuePointer & resp_queue,
139  player_msghdr_t* hdr,
140  void* data);
141  virtual void Publish( void );
142 };
143 
145 {
146  public:
147  InterfaceWifi( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
148  virtual ~InterfaceWifi( 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 
156 {
157  public:
158  InterfaceSpeech( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
159  virtual ~InterfaceSpeech( void ){ /* TODO: clean up*/ };
160  virtual int ProcessMessage(QueuePointer & resp_queue,
161  player_msghdr_t* hdr,
162  void* data);
163  virtual void Publish( void );
164 };
165 
166 /* DEPRECATED */
167 /* class InterfaceLaser : public InterfaceModel */
168 /* { */
169 /* private: */
170 /* int scan_id; */
171 /* public: */
172 /* InterfaceLaser( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); */
173 /* virtual ~InterfaceLaser( void ){ /\* TODO: clean up*\/ }; */
174 /* virtual int ProcessMessage(QueuePointer & resp_queue, */
175 /* player_msghdr_t* hdr, */
176 /* void* data); */
177 /* virtual void Publish( void ); */
178 /* }; */
179 
181 {
182  private:
183  int scan_id;
184  public:
185  InterfaceRanger( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
186  virtual ~InterfaceRanger( void ){ /* TODO: clean up*/ };
187  virtual int ProcessMessage(QueuePointer & resp_queue,
188  player_msghdr_t* hdr,
189  void* data);
190  virtual void Publish( void );
191 };
192 
193 /* class InterfaceAio : public InterfaceModel */
194 /* { */
195 /* public: */
196 /* InterfaceAio( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); */
197 /* virtual ~InterfaceAio( void ){ /\* TODO: clean up*\/ }; */
198 /* virtual int ProcessMessage(QueuePointer & resp_queue, */
199 /* player_msghdr_t* hdr, */
200 /* void* data); */
201 /* virtual void Publish( void ); */
202 /* }; */
203 
204 
205 /* class InterfaceDio : public InterfaceModel */
206 /* { */
207 /* public: */
208 /* InterfaceDio(player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section); */
209 /* virtual ~InterfaceDio(); */
210 /* virtual int ProcessMessage(QueuePointer & resp_queue, player_msghdr_t* hdr, void* data); */
211 /* virtual void Publish(); */
212 /* }; */
213 
214 
216 {
217  public:
218  InterfacePower( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
219  virtual ~InterfacePower( void ){ /* TODO: clean up*/ };
220 
221  virtual int ProcessMessage( QueuePointer & resp_queue,
222  player_msghdr * hdr,
223  void * data );
224 
225  virtual void Publish( void );
226 };
227 
229 {
230  public:
231  InterfaceFiducial( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
232  virtual ~InterfaceFiducial( void ){ /* TODO: clean up*/ };
233 
234  virtual void Publish( void );
235  virtual int ProcessMessage(QueuePointer & resp_queue,
236  player_msghdr_t* hdr,
237  void* data);
238 };
239 
240 
242 {
243  public:
244  InterfaceActArray( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
245  virtual ~InterfaceActArray( void ){ /* TODO: clean up*/ };
246 
247  virtual int ProcessMessage( QueuePointer & resp_queue,
248  player_msghdr * hdr,
249  void * data );
250  virtual void Publish( void );
251 };
252 
254 {
255  public:
256  InterfaceBlobfinder( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
257  virtual ~InterfaceBlobfinder( void ){ /* TODO: clean up*/ };
258 
259  virtual int ProcessMessage( QueuePointer & resp_queue,
260  player_msghdr * hdr,
261  void * data );
262  virtual void Publish( void );
263 };
264 
266 {
267  public:
268  InterfacePtz( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
269  virtual ~InterfacePtz( void ){ /* TODO: clean up*/ };
270 
271  virtual int ProcessMessage( QueuePointer & resp_queue,
272  player_msghdr * hdr,
273  void * data );
274  virtual void Publish( void );
275 };
276 
277 /* DEPRECATED */
278 /* class InterfaceSonar : public InterfaceModel */
279 /* { */
280 /* public: */
281 /* InterfaceSonar( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); */
282 /* virtual ~InterfaceSonar( void ){ /\* TODO: clean up*\/ }; */
283 
284 /* virtual int ProcessMessage( QueuePointer & resp_queue, */
285 /* player_msghdr * hdr, */
286 /* void * data ); */
287 /* virtual void Publish( void ); */
288 /* }; */
289 
290 
292 {
293  public:
294  InterfaceBumper( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
295  virtual ~InterfaceBumper( void ){ /* TODO: clean up*/ };
296 
297  virtual int ProcessMessage( QueuePointer & resp_queue,
298  player_msghdr * hdr,
299  void * data );
300  virtual void Publish( void );
301 };
302 
304 {
305  public:
306  InterfaceLocalize( player_devaddr_t addr,
307  StgDriver* driver,
308  ConfigFile* cf,
309  int section );
310 
311  virtual ~InterfaceLocalize( void ){ /* TODO: clean up*/ };
312 
313  virtual void Publish( void );
314  virtual int ProcessMessage(QueuePointer & resp_queue,
315  player_msghdr_t* hdr,
316  void* data);
317 };
318 
320 {
321  public:
322  InterfaceMap( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
323  virtual ~InterfaceMap( void ){ /* TODO: clean up*/ };
324 
325  virtual int ProcessMessage( QueuePointer & resp_queue,
326  player_msghdr * hdr,
327  void * data );
328  //virtual void Publish( void );
329 
330  // called by ProcessMessage to handle individual messages
331 
332  int HandleMsgReqInfo( QueuePointer & resp_queue,
333  player_msghdr * hdr,
334  void * data );
335  int HandleMsgReqData( QueuePointer & resp_queue,
336  player_msghdr * hdr,
337  void * data );
338 };
339 
340 class PlayerGraphics2dVis;
342 {
343  public:
344  InterfaceGraphics2d( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
345  virtual ~InterfaceGraphics2d( void );
346 
347  void Subscribe(QueuePointer &queue);
348  void Unsubscribe(QueuePointer &queue);
349 
350  virtual int ProcessMessage( QueuePointer & resp_queue,
351  player_msghdr * hdr,
352  void * data );
353 
355 };
356 
357 class PlayerGraphics3dVis;
359 {
360  public:
361  InterfaceGraphics3d( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section );
362  virtual ~InterfaceGraphics3d( void );
363 
364  void Subscribe(QueuePointer &queue);
365  void Unsubscribe(QueuePointer &queue);
366 
367  virtual int ProcessMessage( QueuePointer & resp_queue,
368  player_msghdr * hdr,
369  void * data );
370 
372 };
373 
375 class StTime : public PlayerTime
376 {
377  private:
379 
380  public:
381  // Constructor
382  StTime( StgDriver* driver );
383 
384  // Destructor
385  virtual ~StTime();
386 
387  // Get the simulator time
388  int GetTime(struct timeval* time);
389  int GetTimeDouble(double* time);
390 };
391 
392 
393 #endif
Model class
Definition: stage.hh:1742
virtual ~InterfaceGripper(void)
Definition: p_driver.h:137
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
Definition: p_driver.cc:565
World class
Definition: stage.hh:814
virtual void Subscribe(QueuePointer &queue)
Definition: p_driver.h:81
PlayerGraphics3dVis * vis
Definition: p_driver.h:371
const char * basename(const char *filename)
Definition: basename.c:35
virtual int Shutdown()
Definition: p_driver.cc:547
Stg::Model * LocateModel(char *basename, player_devaddr_t *addr, const std::string &type)
Definition: p_driver.cc:445
double last_publish_time
Definition: p_driver.h:69
double publish_interval_msec
Definition: p_driver.h:70
virtual ~InterfaceBlobfinder(void)
Definition: p_driver.h:257
static bool usegui
Definition: p_driver.h:42
virtual ~InterfacePower(void)
Definition: p_driver.h:219
StgDriver * driver
Definition: p_driver.h:72
virtual int Unsubscribe(QueuePointer &queue, player_devaddr_t addr)
Definition: p_driver.cc:521
virtual ~InterfaceWifi(void)
Definition: p_driver.h:148
virtual ~InterfaceLocalize(void)
Definition: p_driver.h:311
virtual ~InterfaceActArray(void)
Definition: p_driver.h:245
std::vector< Interface * > devices
an array of pointers to Interface objects, defined below
Definition: p_driver.h:54
virtual void Update()
Definition: p_driver.cc:585
virtual ~InterfaceMap(void)
Definition: p_driver.h:323
uint64_t GetTime(Stg::Model *mod)
Definition: avonstage.cc:55
StgDriver(ConfigFile *cf, int section)
Definition: p_driver.cc:291
StgDriver * driver
Definition: p_driver.h:378
virtual void Publish(void)
Definition: p_driver.h:78
virtual void Subscribe(void)
Definition: p_driver.h:79
virtual void Unsubscribe(void)
Definition: p_driver.h:80
virtual int Subscribe(QueuePointer &queue, player_devaddr_t addr)
Definition: p_driver.cc:501
Stg::Model * mod
Definition: p_driver.h:115
virtual ~InterfaceFiducial(void)
Definition: p_driver.h:232
virtual ~InterfaceSimulation(void)
Definition: p_driver.h:89
virtual ~InterfaceBumper(void)
Definition: p_driver.h:295
static Stg::World * world
all player devices share the same Stage world (for now)
Definition: p_driver.h:41
virtual ~InterfacePosition(void)
Definition: p_driver.h:126
virtual ~InterfaceModel(void)
Definition: p_driver.h:107
bool subscribed
Definition: p_driver.h:118
virtual ~InterfaceSpeech(void)
Definition: p_driver.h:159
Interface * LookupDevice(player_devaddr_t addr)
find the device record with this Player id
Definition: p_driver.cc:484
PlayerGraphics2dVis * vis
Definition: p_driver.h:354
virtual int Setup()
Definition: p_driver.cc:475
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr_t *hdr, void *data)
Definition: p_driver.h:74
virtual ~Interface(void)
Definition: p_driver.h:66
~StgDriver(void)
Definition: p_driver.cc:538
virtual ~InterfaceRanger(void)
Definition: p_driver.h:186
virtual ~InterfacePtz(void)
Definition: p_driver.h:269
virtual void Unsubscribe(QueuePointer &queue)
Definition: p_driver.h:82


stage
Author(s): Richard Vaughan , Brian Gerkey , Reed Hedges , Andrew Howard , Toby Collett , Pooya Karimian , Jeremy Asher , Alex Couture-Beil , Geoff Biggs , Rich Mattes , Abbas Sadat
autogenerated on Mon Jun 10 2019 15:06:09