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

Public Member Functions

 Erratic (ConfigFile *cf, int section)
 
virtual int Subscribe (player_devaddr_t id)
 Subscribe to this driver. More...
 
virtual int Unsubscribe (player_devaddr_t id)
 Unsubscribe from this driver. More...
 
virtual void Main ()
 Talking to the Player architecture.
 
virtual int Setup ()
 Initialize the driver. More...
 
virtual int Shutdown ()
 Finalize the driver. More...
 
virtual int ProcessMessage (QueuePointer &resp_queue, player_msghdr *hdr, void *data)
 Message handler. 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...
 
virtual int Terminate ()
 Terminate the driver. More...
 
void ProcessMessages (int maxmsgs)
 Process pending messages. More...
 
void ProcessMessages (void)
 Process pending messages. More...
 
virtual void Update ()
 Update non-threaded drivers. 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...
 

Private Member Functions

int Connect ()
 
int Disconnect ()
 
void ResetRawPositions ()
 
void ToggleMotorPower (unsigned char val)
 
void ToggleAIn (unsigned char val)
 
void ToggleSonar (unsigned char val)
 
int HandleConfig (QueuePointer &resp_queue, player_msghdr *hdr, void *data)
 
int HandleCommand (player_msghdr *hdr, void *data)
 
void HandlePositionCommand (player_position2d_cmd_vel_t position_cmd)
 
void HandleCarCommand (player_position2d_cmd_car_t position_cmd)
 
void HandlePtzCommand (player_ptz_cmd_t ptz_cmd, player_devaddr_t id)
 
void PublishAllData ()
 
void PublishPosition2D ()
 
void PublishPower ()
 
void PublishAIn ()
 
void PublishIR ()
 
void PublishSonar ()
 
float IRRangeFromVoltage (float voltage)
 
float IRFloorRange (float value)
 
void StartThreads ()
 
void StopThreads ()
 
void Send (ErraticPacket *packet)
 
void SendThread ()
 
void ReceiveThread ()
 Talking to the robot.
 

Static Private Member Functions

static void * SendThreadDummy (void *driver)
 
static void * ReceiveThreadDummy (void *driver)
 

Private Attributes

int mcount
 
player_erratic_data_t erratic_data
 
player_devaddr_t position_id
 
player_devaddr_t power_id
 
player_devaddr_t aio_id
 
player_devaddr_t ir_id
 
player_devaddr_t sonar_id
 
player_devaddr_t ptz_id
 
player_devaddr_t ptz2_id
 
int position_subscriptions
 
int aio_ir_subscriptions
 
int sonar_subscriptions
 
int ptz_subscriptions
 
int ptz2_subscriptions
 
ErraticMotorPacketmotor_packet
 
pthread_mutex_t motor_packet_mutex
 
int read_fd
 
int write_fd
 
const char * psos_serial_port
 
player_position2d_cmd_vel_t last_position_cmd
 
player_position2d_cmd_car_t last_car_cmd
 
std::queue< ErraticPacket * > send_queue
 
pthread_mutex_t send_queue_mutex
 
pthread_cond_t send_queue_cond
 
pthread_t send_thread
 
pthread_t receive_thread
 
bool direct_wheel_vel_control
 
bool print_all_packets
 
bool print_status_summary
 
bool save_settings_in_robot
 
int param_idx
 
int motor_max_speed
 
int motor_max_turnspeed
 
int16_t pid_trans_p
 
int16_t pid_trans_v
 
int16_t pid_trans_i
 
int16_t pid_rot_p
 
int16_t pid_rot_v
 
int16_t pid_rot_i
 
uint16_t motor_pwm_frequency
 
uint16_t motor_pwm_max_on
 
bool use_vel_band
 
short motor_max_trans_accel
 
short motor_max_trans_decel
 
short motor_max_rot_accel
 
short motor_max_rot_decel
 

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 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.
 
virtual bool Wait (double TimeOut=0.0)
 Wait for new data to arrive on the driver's queue. More...
 
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...
 
virtual void TestCancel ()
 enable thread cancellation and test for cancellation More...
 

Member Function Documentation

◆ ProcessMessage()

int Erratic::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_position2d_cmd_car::angle, Device::MatchDeviceAddress(), Message::MatchMessage(), player_pose2d::pa, player_ptz_cmd::pan, PLAYER_IR_REQ_POSE, PLAYER_MSGTYPE_CMD, PLAYER_MSGTYPE_REQ, PLAYER_MSGTYPE_RESP_ACK, PLAYER_POSITION2D_CMD_CAR, PLAYER_POSITION2D_CMD_VEL, PLAYER_POSITION2D_CMD_VEL_HEAD, PLAYER_POSITION2D_REQ_GET_GEOM, PLAYER_POSITION2D_REQ_MOTOR_POWER, PLAYER_POSITION2D_REQ_RESET_ODOM, PLAYER_POSITION2D_REQ_SET_ODOM, PLAYER_POSITION2D_REQ_VELOCITY_MODE, PLAYER_PTZ_CMD_STATE, PLAYER_SONAR_DATA_GEOM, PLAYER_SONAR_REQ_GET_GEOM, PLAYER_WARN, player_position2d_geom::pose, player_position2d_set_odom_req::pose, player_sonar_geom::poses, player_ir_pose::poses, player_sonar_geom::poses_count, player_ir_pose::poses_count, Driver::Publish(), player_pose2d::px, player_pose3d::px, player_pose2d::py, player_pose3d::py, player_pose3d::pyaw, player_msghdr::size, player_position2d_geom::size, player_bbox3d::sl, player_position2d_power_config::state, player_bbox3d::sw, player_ptz_cmd::tilt, player_msghdr::type, player_position2d_velocity_mode_config::value, player_position2d_cmd_vel::vel, and player_position2d_cmd_car::velocity.

Here is the call graph for this function:

◆ Setup()

int Erratic::Setup ( void  )
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 Driver.

◆ Shutdown()

int Erratic::Shutdown ( void  )
virtual

Finalize the driver.

This function is called with the last client unsubscribes.

Returns
Returns 0 on success.

Reimplemented from Driver.

◆ Subscribe()

int Erratic::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 Device::MatchDeviceAddress(), and Driver::Subscribe().

Here is the call graph for this function:

◆ Unsubscribe()

int Erratic::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 Device::MatchDeviceAddress(), and Driver::Unsubscribe().

Here is the call graph for this function:

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