SegwayRMP400 Class Reference
Inheritance diagram for SegwayRMP400:
Inheritance graph
Collaboration diagram for SegwayRMP400:
Collaboration graph

Private Attributes

Devicesegwayrmp2d [2]
 
Devicesegwayrmp3d [2]
 
player_devaddr_t segwayrmp2d_id [2]
 
player_devaddr_t segwayrmp3d_id [2]
 
player_devaddr_t position3d_id
 
player_devaddr_t position2d_id
 
player_position2d_data_t rmp2d_data [2]
 
player_position3d_data_t rmp3d_data [2]
 
player_position2d_data_t position2d_data
 
player_position2d_cmd_vel_t position2d_cmd
 
player_position3d_data_t position3d_data
 
player_position3d_cmd_vel_t position3d_cmd
 
bool provide_2d
 
bool provide_3d
 
int counter
 
bool newfront3d
 
bool newback3d
 
bool newfront2d
 
bool newback2d
 
bool fullspeed
 
 SegwayRMP400 (ConfigFile *cf, int section)
 
virtual int MainSetup ()
 Sets up the resources needed by the driver thread. More...
 
virtual void MainQuit ()
 Cleanup method for driver thread (called when main exits) More...
 
void Main ()
 Main method for driver thread. More...
 
int ProcessMessage (QueuePointer &resp_queue, player_msghdr_t *hdr, void *data)
 Message handler. More...
 
void ProcessData ()
 
int HandlePosition3DCmd (player_position3d_cmd_vel_t *cmd)
 
int HandlePosition2DCmd (player_position2d_cmd_vel_t *cmd)
 

Additional Inherited Members

- 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 (player_devaddr_t addr)
 Subscribe to this driver. More...
 
virtual int Subscribe (QueuePointer &, player_devaddr_t)
 Subscribe to this driver. More...
 
virtual int Unsubscribe (player_devaddr_t addr)
 Unsubscribe from 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...
 
- 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...
 

Constructor & Destructor Documentation

◆ SegwayRMP400()

SegwayRMP400::SegwayRMP400 ( ConfigFile cf,
int  section 
)
Todo:
Add smarter approach to combine the data from both RMPs. For now, just average.

References ConfigFile::ReadDeviceAddr().

Here is the call graph for this function:

Member Function Documentation

◆ HandlePosition2DCmd()

int SegwayRMP400::HandlePosition2DCmd ( player_position2d_cmd_vel_t cmd)
private
Todo:
Add smarter approach to combine the data from both RMPs. For now, just average.

References Driver::InQueue, PLAYER_MSGTYPE_CMD, PLAYER_POSITION2D_CMD_VEL, and Device::PutMsg().

Referenced by ProcessMessage().

Here is the call graph for this function:

◆ HandlePosition3DCmd()

int SegwayRMP400::HandlePosition3DCmd ( player_position3d_cmd_vel_t cmd)
private
Todo:
Add smarter approach to combine the data from both RMPs. For now, just average.

References Driver::InQueue, PLAYER_MSGTYPE_CMD, PLAYER_POSITION3D_CMD_SET_VEL, and Device::PutMsg().

Referenced by ProcessMessage().

Here is the call graph for this function:

◆ Main()

void SegwayRMP400::Main ( )
privatevirtual

Main method for driver thread.

drivers have their own thread of execution, created using StartThread(); this is the entry point for the driver thread, and must be overloaded by all threaded drivers.

Todo:
Add smarter approach to combine the data from both RMPs. For now, just average.

Implements ThreadedDriver.

References ProcessData(), and Driver::ProcessMessages().

Here is the call graph for this function:

◆ MainQuit()

void SegwayRMP400::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.

Todo:
Add smarter approach to combine the data from both RMPs. For now, just average.

Reimplemented from ThreadedDriver.

References Driver::InQueue, PLAYER_MSG0, and Driver::Unsubscribe().

Here is the call graph for this function:

◆ MainSetup()

int SegwayRMP400::MainSetup ( void  )
virtual

Sets up the resources needed by the driver thread.

Todo:
Add smarter approach to combine the data from both RMPs. For now, just average.

Reimplemented from ThreadedDriver.

References Driver::InQueue, PLAYER_ERROR1, PLAYER_MSG0, and Driver::Subscribe().

Here is the call graph for this function:

◆ ProcessData()

◆ ProcessMessage()

int SegwayRMP400::ProcessMessage ( QueuePointer resp_queue,
player_msghdr_t hdr,
void *  data 
)
privatevirtual

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
Todo:
Add smarter approach to combine the data from both RMPs. For now, just average.

Reimplemented from Driver.

References player_msghdr::addr, Message::GetHeader(), Message::GetPayload(), HandlePosition2DCmd(), HandlePosition3DCmd(), Driver::InQueue, Message::MatchMessage(), PLAYER_MSGTYPE_CMD, PLAYER_MSGTYPE_DATA, PLAYER_MSGTYPE_REQ, PLAYER_MSGTYPE_RESP_ACK, PLAYER_POSITION2D_CMD_VEL, PLAYER_POSITION2D_DATA_STATE, PLAYER_POSITION2D_REQ_GET_GEOM, PLAYER_POSITION3D_CMD_SET_VEL, PLAYER_POSITION3D_DATA_STATE, player_position2d_geom::pose, Driver::Publish(), player_pose3d::px, player_pose3d::py, player_pose3d::pyaw, Device::Request(), player_msghdr::size, player_position2d_geom::size, player_bbox3d::sl, player_msghdr::subtype, player_bbox3d::sw, player_msghdr::timestamp, and player_msghdr::type.

Here is the call graph for this function:

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