EpuckDriver Class Reference

Plug-in driver for the e-puck robot, in conformity with Player version 2.1. More...

#include <epuckDriver.hpp>

Inheritance diagram for EpuckDriver:
Inheritance graph
Collaboration diagram for EpuckDriver:
Collaboration graph

Detailed Description

Plug-in driver for the e-puck robot, in conformity with Player version 2.1.

This class implements the player driver interface, and perform all comunication with the player-server. It must to have a pointer for each class that controls a e-puck device for which there are a player interface, and bind them with player-server.

Author
Renato Florentino Garcia
Date
November 2008

Public Member Functions

 EpuckDriver (ConfigFile *cf, int section)
 
virtual int MainSetup ()
 Sets up the resources needed by the driver thread.
 
virtual void MainQuit ()
 Cleanup method for driver thread (called when main exits) More...
 
virtual int ProcessMessage (QueuePointer &resp_queue, player_msghdr *hdr, void *data)
 Message handler. More...
 
virtual int Subscribe (player_devaddr_t addr)
 Subscribe to this driver. More...
 
virtual int Unsubscribe (player_devaddr_t addr)
 Unsubscribe from this driver. More...
 
- Public Member Functions inherited from ThreadedDriver
 ThreadedDriver (ConfigFile *cf, int section, bool overwrite_cmds, size_t queue_maxlen, int interface_)
 Constructor with implicit interface. More...
 
 ThreadedDriver (ConfigFile *cf, int section, bool overwrite_cmds=true, size_t queue_maxlen=PLAYER_MSGQUEUE_DEFAULT_MAXLEN)
 Constructor for multiple-interface drivers. More...
 
virtual ~ThreadedDriver ()
 Destructor.
 
virtual int Setup ()
 Initialize the driver. More...
 
virtual int Shutdown ()
 Finalize the driver. More...
 
virtual int Terminate ()
 Terminate the driver. More...
 
bool Wait (double TimeOut=0.0)
 Wait for new data to arrive on the driver's queue. More...
 
virtual void Update ()
 Update non-threaded drivers. More...
 
- Public Member Functions inherited from Driver
bool HasSubscriptions ()
 
virtual void Publish (player_devaddr_t addr, QueuePointer &queue, uint8_t type, uint8_t subtype, void *src=NULL, size_t deprecated=0, double *timestamp=NULL, bool copy=true)
 Publish a message via one of this driver's interfaces. More...
 
virtual void Publish (player_devaddr_t addr, uint8_t type, uint8_t subtype, void *src=NULL, size_t deprecated=0, double *timestamp=NULL, bool copy=true)
 Publish a message via one of this driver's interfaces. More...
 
virtual void Publish (QueuePointer &queue, player_msghdr_t *hdr, void *src, bool copy=true)
 Publish a message via one of this driver's interfaces. More...
 
virtual void Publish (player_msghdr_t *hdr, void *src, bool copy=true)
 Publish a message via one of this driver's interfaces. More...
 
 Driver (ConfigFile *cf, int section, bool overwrite_cmds, size_t queue_maxlen, int interf)
 Constructor for single-interface drivers. More...
 
 Driver (ConfigFile *cf, int section, bool overwrite_cmds=true, size_t queue_maxlen=PLAYER_MSGQUEUE_DEFAULT_MAXLEN)
 Constructor for multiple-interface drivers. More...
 
virtual ~Driver ()
 Destructor.
 
int GetError ()
 Get last error value. More...
 
virtual int Subscribe (QueuePointer &, player_devaddr_t)
 Subscribe to this driver. More...
 
virtual int Unsubscribe (QueuePointer &, player_devaddr_t)
 Unsubscribe from this driver. More...
 
void ProcessMessages (int maxmsgs)
 Process pending messages. More...
 
void ProcessMessages (void)
 Process pending messages. More...
 
virtual int ProcessInternalMessages (QueuePointer &resp_queue, player_msghdr *hdr, void *data)
 Internal message handler. More...
 
virtual bool RegisterProperty (const char *key, Property *property, ConfigFile *cf, int section)
 Property registration. More...
 
virtual bool RegisterProperty (Property *property, ConfigFile *cf, int section)
 Property registration. More...
 

Static Public Member Functions

static DriverEpuckDriver_Init (ConfigFile *cf, int section)
 

Private Member Functions

virtual void Main ()
 Main method for driver thread. More...
 

Private Attributes

const unsigned EXPECTED_EPUCK_SIDE_VERSION
 
player_devaddr_t position2dAddr
 
player_position2d_data_t posData
 
std::auto_ptr< EpuckPosition2depuckPosition2d
 
player_devaddr_t irAddr
 
player_ir_data_t irData
 
std::auto_ptr< EpuckIRepuckIR
 
player_devaddr_t cameraAddr
 
player_camera_data_t cameraData
 
std::auto_ptr< EpuckCameraepuckCamera
 
player_devaddr_t ringLEDAddr [EpuckLEDs::RING_LEDS_NUM]
 
player_blinkenlight_data_t ringLEDsData [EpuckLEDs::RING_LEDS_NUM]
 
player_devaddr_t frontLEDAddr
 
player_blinkenlight_data_t frontLEDData
 
player_devaddr_t bodyLEDAddr
 
player_blinkenlight_data_t bodyLEDData
 
std::auto_ptr< EpuckLEDsepuckLEDs
 
SerialPortserialPort
 

Additional Inherited Members

- Public Attributes inherited from Driver
QueuePointer ret_queue
 Last requester's queue. More...
 
player_devaddr_t device_addr
 Default device address (single-interface drivers)
 
int entries
 Total number of entries in the device table using this driver. More...
 
bool alwayson
 Always on flag. More...
 
QueuePointer InQueue
 Queue for all incoming messages for this driver.
 
- Protected Member Functions inherited from ThreadedDriver
virtual void StartThread (void)
 
virtual void StopThread (void)
 Cancel (and wait for termination) of the driver thread. More...
 
void TestCancel ()
 enable thread cancellation and test for cancellation More...
 
- Protected Member Functions inherited from Driver
int AddInterface (player_devaddr_t addr)
 Add an interface. More...
 
int AddInterface (player_devaddr_t *addr, ConfigFile *cf, int section, int code, const char *key=NULL)
 Add an interface. More...
 
void SetError (int code)
 Set/reset error code.
 
int AddFileWatch (int fd, bool ReadWatch=true, bool WriteWatch=false, bool ExceptWatch=true)
 Wake up the driver if the specified event occurs on the file descriptor.
 
int RemoveFileWatch (int fd, bool ReadWatch=true, bool WriteWatch=false, bool ExceptWatch=true)
 Remove a previously added watch, call with the same arguments as when adding the watch.
 
virtual void Lock (void)
 Lock access between the server and driver threads. More...
 
virtual void Unlock (void)
 Unlock access to driver internals. More...
 
virtual void SubscriptionLock (void)
 Lock to protect the subscription count for the driver.
 
virtual void SubscriptionUnlock (void)
 Unlock to protect the subscription count for the driver. More...
 
- Static Protected Member Functions inherited from ThreadedDriver
static void * DummyMain (void *driver)
 Dummy main (just calls real main). More...
 
static void DummyMainQuit (void *driver)
 Dummy main cleanup (just calls real main cleanup). More...
 

Member Function Documentation

◆ Main()

◆ MainQuit()

void EpuckDriver::MainQuit ( void  )
virtual

Cleanup method for driver thread (called when main exits)

Overload this method and to do additional cleanup when the driver thread exits.

Reimplemented from ThreadedDriver.

◆ ProcessMessage()

◆ Subscribe()

int EpuckDriver::Subscribe ( player_devaddr_t  addr)
virtual

Subscribe to this driver.

The Subscribe() and Unsubscribe() methods are used to control subscriptions to the driver; a driver MAY override them, but usually won't.

Parameters
addrAddress of the device to subscribe to (the driver may have more than one interface).
Returns
Returns 0 on success.

Reimplemented from Driver.

References player_devaddr::interf.

◆ Unsubscribe()

int EpuckDriver::Unsubscribe ( player_devaddr_t  addr)
virtual

Unsubscribe from this driver.

The Subscribe() and Unsubscribe() methods are used to control subscriptions to the driver; a driver MAY override them, but usually won't.

Parameters
addrAddress of the device to unsubscribe from (the driver may have more than one interface).
Returns
Returns 0 on success.

Reimplemented from Driver.

References player_devaddr::interf.


The documentation for this class was generated from the following files: