Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
snd Class Reference
Inheritance diagram for snd:
ThreadedDriver Driver snd_Proxy

Public Member Functions

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

Public Attributes

double robot_radius
double min_gap_width
double obstacle_avoid_dist
double max_speed
double max_turn_rate
double goal_position_tol
double goal_angle_tol
double goalX
double goalY
double goalA
pthread_t algorithm_thread
pthread_mutex_t goal_mutex
pthread_cond_t goal_changed_cond
double goal_changed
pthread_mutex_t data_mutex
pthread_cond_t data_changed_cond
double data_changed
int data_odometry_ready
int data_laser_ready

Protected Member Functions

void SetSpeedCmd (player_position2d_cmd_vel_t cmd)
- Protected Member Functions inherited from ThreadedDriver
virtual void StartThread (void)
virtual void StopThread (void)
 Cancel (and wait for termination) of the driver thread.
void TestCancel ()
 enable thread cancellation and test for cancellation
- Protected Member Functions inherited from Driver
int AddInterface (player_devaddr_t addr)
 Add an interface.
int AddInterface (player_devaddr_t *addr, ConfigFile *cf, int section, int code, const char *key=NULL)
 Add an interface.
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.
virtual void Unlock (void)
 Unlock access to driver internals.
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.

Protected Attributes

player_pose2d_t odom_pose
std::vector< double > laser__ranges
double laser__resolution
double laser__max_range
uint32_t laser__ranges_count

Private Member Functions

virtual void Main ()
int Odometry_Setup ()
int Laser_Setup ()

Private Attributes

player_devaddr_t m_position_addr
player_devaddr_t m_laser_addr
player_devaddr_t laser_addr
player_devaddr_t odom_in_addr
player_devaddr_t odom_out_addr
Devicelaser_dev
Deviceodom_in_dev
Deviceodom_out_dev
player_position2d_geom_t robot_geom
int first_goal_has_been_set_to_init_position

Additional Inherited Members

- Static Protected Member Functions inherited from ThreadedDriver
static void * DummyMain (void *driver)
 Dummy main (just calls real main).
static void DummyMainQuit (void *driver)
 Dummy main cleanup (just calls real main cleanup).

Member Function Documentation

int snd::ProcessMessage ( QueuePointer resp_queue,
player_msghdr hdr,
void *  data 
)
virtual

Message handler.

This function is called once for each message in the incoming queue. Reimplement it to provide message handling. Return 0 if you handled the message and -1 otherwise

Parameters
resp_queueThe queue to which any response should go.
hdrThe message header
dataThe message body

Reimplemented from Driver.

References player_msghdr::addr, Driver::device_addr, Message::GetHeader(), Message::GetPayload(), Message::MatchMessage(), player_pose2d::pa, PLAYER_LASER_DATA_SCAN, PLAYER_MSG0, PLAYER_MSG3, PLAYER_MSGTYPE_CMD, PLAYER_MSGTYPE_DATA, PLAYER_MSGTYPE_REQ, PLAYER_POSITION2D_CMD_POS, PLAYER_POSITION2D_CMD_VEL, PLAYER_POSITION2D_DATA_STATE, PLAYER_WARN1, player_position2d_cmd_pos::pos, Driver::Publish(), player_pose2d::px, player_pose2d::py, Device::Request(), player_msghdr::size, player_msghdr::subtype, player_msghdr::timestamp, and player_msghdr::type.

int snd::Setup ( )
virtual

Initialize the driver.

This function is called with the first client subscribes; it MUST be implemented by the driver.

Returns
Returns 0 on success.

Reimplemented from ThreadedDriver.

References PLAYER_MSG0.

int snd::Shutdown ( )
virtual

Finalize the driver.

This function is called with the last client unsubscribes; the default version simple stops the driver thread if one is present. In this case resources should be cleaned up in MainQuit.

Returns
Returns 0 on success.

Reimplemented from ThreadedDriver.

References Driver::InQueue, PLAYER_MSG0, ThreadedDriver::StopThread(), and Device::Unsubscribe().


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

Last updated 12 September 2005 21:38:45