Tekkotsu Homepage
Demos
Overview
Downloads
Dev. Resources
Reference
Credits

HeadController Class Reference

Listens to control commands coming in from the command port for remotely controlling the head. More...

#include <HeadController.h>

Inheritance diagram for HeadController:

Detailed Description

Listens to control commands coming in from the command port for remotely controlling the head.

The communication protocol is a very simple binary format, shared with WalkControllerBehavior. Each command is sent as a 5-byte group. The first byte is a command selector, and the following 4 bytes are a floating point argument:

  • <char: command indicator>
  • <float: value>

The valid values for command indicator are given by CMD_tilt, CMD_pan, or CMD_roll ('t', 'p', or 'r' respectively).

Definition at line 25 of file HeadController.h.

List of all members.

Public Member Functions

 HeadController ()
 constructor
virtual ~HeadController ()
 destructor
virtual void doStart ()
 Delegate function for subclasses to be notified when the behavior starts up.
virtual void doStop ()
 Delegate function for subclasses to be notified when the behavior starts up.
virtual std::string getDescription () const
 Gives a short description of what this particular instantiation does (in case a more specific description is needed on an individual basis).

Static Public Member Functions

static int mechacmd_callback (char *buf, int bytes)
 called by wireless when there's new data
static std::string getClassDescription ()
 Gives a short description of what this class of behaviors does... you should override this (but don't have to).

Static Public Attributes

static HeadControllertheOne = NULL

Protected Attributes

MotionManager::MC_ID head_id
 the HeadPointerMC to use

Private Member Functions

void runCommand (unsigned char *command)
 Executes a command. Called by mechacmd_callback.
 HeadController (const HeadController &)
 don't call
HeadController operator= (const HeadController &)
 don't call

Private Attributes

float t
 head parameter
float p
 head parameter
float r
 head parameter
HeadControllertheLastOne
Socketcmdsock
 The input command stream socket.

Static Private Attributes

Command Bytes

static const char CMD_tilt = 't'
 handy symbol for matching incoming communication
static const char CMD_pan = 'p'
 handy symbol for matching incoming communication
static const char CMD_roll = 'r'
 handy symbol for matching incoming communication

Constructor & Destructor Documentation

HeadController::HeadController ( const HeadController  )  [private]

don't call

HeadController::HeadController (  ) 

constructor

Definition at line 66 of file HeadController.h.

virtual HeadController::~HeadController (  )  [virtual]

destructor

Definition at line 74 of file HeadController.h.


Member Function Documentation

void HeadController::doStart (  )  [virtual]

Delegate function for subclasses to be notified when the behavior starts up.

Should be overridden by subclasses to subscribe to events, install motion commands, etc.

doStart() is basically a hook to allow subclasses to jump in and do some customization of behavior parameters while the behavior is starting. If you are writing a behavior class and do not expect further derivation, just override doStart() yourself. However, if you do expect further derivation of your class, consider using preStart() or postStart() instead, and leave doStart() for the 'leaf' classes.

Reimplemented from BehaviorBase.

Definition at line 96 of file HeadController.cc.

void HeadController::doStop (  )  [virtual]

Delegate function for subclasses to be notified when the behavior starts up.

May be overridden to cleanup when the behavior is shutting down. However events will automatically be unsubscribed, and by using addMotion(), motions will automatically be removed by stop(), so you may not need any cleanup.

Reimplemented from BehaviorBase.

Definition at line 114 of file HeadController.cc.

static std::string HeadController::getClassDescription (  )  [static]

Gives a short description of what this class of behaviors does... you should override this (but don't have to).

If you do override this, also consider overriding getDescription() to return it

Reimplemented from BehaviorBase.

Definition at line 80 of file HeadController.h.

Referenced by getDescription().

virtual std::string HeadController::getDescription (  )  const [virtual]

Gives a short description of what this particular instantiation does (in case a more specific description is needed on an individual basis).

By default simply returns getName(), because any calls from a BehaviorBase function to getClassDescription() are going to call BehaviorBase::getClassDescription(), not ~YourSubClass~getClassDescription(), because static functions can't be virtual in C++ (doh!)

This means that getDescription called on a pointer to a BehaviorBase of unknown subtype would always return an empty string, which is pretty useless. So instead we return the name in this situation. If you want getDescription to return getClassDescription, you'll have to override it in your subclass to do so.

Reimplemented from BehaviorBase.

Definition at line 85 of file HeadController.h.

int HeadController::mechacmd_callback ( char *  buf,
int  bytes 
) [static]

called by wireless when there's new data

Definition at line 130 of file HeadController.cc.

Referenced by doStart().

HeadController HeadController::operator= ( const HeadController  )  [private]

don't call

void HeadController::runCommand ( unsigned char *  command  )  [private]

Executes a command. Called by mechacmd_callback.

Definition at line 16 of file HeadController.cc.

Referenced by mechacmd_callback().


Member Data Documentation

const char HeadController::CMD_pan = 'p' [static, private]

handy symbol for matching incoming communication

Definition at line 40 of file HeadController.h.

Referenced by runCommand().

const char HeadController::CMD_roll = 'r' [static, private]

handy symbol for matching incoming communication

Definition at line 41 of file HeadController.h.

Referenced by runCommand().

const char HeadController::CMD_tilt = 't' [static, private]

handy symbol for matching incoming communication

Definition at line 39 of file HeadController.h.

Referenced by runCommand().

The input command stream socket.

Definition at line 56 of file HeadController.h.

Referenced by doStart(), and doStop().

the HeadPointerMC to use

Definition at line 35 of file HeadController.h.

Referenced by doStart(), doStop(), and runCommand().

head parameter

Definition at line 45 of file HeadController.h.

Referenced by runCommand().

head parameter

Definition at line 46 of file HeadController.h.

Referenced by runCommand().

head parameter

Definition at line 44 of file HeadController.h.

Referenced by runCommand().

The last HPCB object that was theOne, so we can restore it to prominence when we die. This is a nice gesture, but it doesn't really make sense since we're all using the same port. But just in case something changes and we don't do that, this mechanism is in place.

Definition at line 53 of file HeadController.h.

Referenced by doStart(), doStop(), and ~HeadController().

Points to the one HeadController object that the input command stream is talking to. A kludge. Dunno how you're gonna make sure you're not using this uninitialized.

Definition at line 31 of file HeadController.h.

Referenced by doStart(), doStop(), and ~HeadController().


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

Tekkotsu v5.1CVS
Generated Mon May 9 04:59:09 2016 by Doxygen 1.6.3