Tekkotsu Homepage
Demos
Overview
Downloads
Dev. Resources
Reference
Credits

CreateDriver Class Reference

description of CreateDriver More...

#include <CreateDriver.h>

Inheritance diagram for CreateDriver:

Detailed Description

description of CreateDriver

Definition at line 158 of file CreateDriver.h.

List of all members.

Public Member Functions

 CreateDriver (const std::string &name)
virtual ~CreateDriver ()
virtual std::string getClassName () const
 Returns the name of the class (aka its type).
virtual MotionHookgetMotionSink ()
virtual void getSensorSources (std::map< std::string, DataSource * > &sources)
virtual void motionStarting ()
 Called when motion process is starting.
virtual bool isConnected ()
 Should return true if the MotionHook is successfully connected to physical hardware.
virtual void motionStopping ()
 Called when motion process is stopping.
virtual void motionCheck (const float outputs[][NumOutputs])
 Called each time the motion process has polled active motion commands.
virtual unsigned int nextTimestamp ()
 Returns the simulator time of the next data segment.
virtual const std::string & nextName ()
 Returns a descriptive name of the next data segment for user feedback (e.g. a filename for logged data).
virtual bool advance ()
 Called when the simulator is stepping while paused or advancing a frozen data source, return true if successful, or false if no more data is available.
virtual void registerSource ()
 User hook, called when the data source should claim which outputs it provides feedback (providingOuput()).
virtual void deregisterSource ()
 User hook, called when the data source should release its claim on outputs with feedback (ignoringOuput()).
virtual void enteringRealtime (const plist::Primitive< double > &simTimeScale)
 User hook, called when the controller is going to be running in realtime mode, which is probably the normal mode you'd expect.
virtual void leavingRealtime (bool isFullSpeed)
 User hook, called when leaving realtime mode, which means you have no idea when motionCheck() is going to be called in terms of wall-clock time.
virtual void plistValueChanged (const plist::PrimitiveBase &pl)

Public Attributes

plist::Primitive< std::string > commName

Protected Member Functions

void doFreeze ()
 user hook for when frozen is set to true; advance() will be called by simulator at user discretion.
void doUnfreeze ()
 user hook for when frozen is set to false; if enteringRealtime() has been called then you should resume sending data.
bool sendCommand (std::vector< unsigned char > bytes, unsigned int timeout)
virtual void connect ()
virtual unsigned int readUnsignedChar (std::istream &is, unsigned char &chk)
virtual unsigned int readUnsignedShort (std::istream &is, unsigned char &chk)
virtual int readPacket (std::istream &is, const char &type, CreateStatus &createStatus, unsigned char &chk)
bool attemptPacketRead (std::istream &is, CreateStatus &createStatus)
bool attemptStreamRead (std::istream &is, CreateStatus &createStatus)
 Not used at present.
void resetStatus (CreateStatus &status)
void mergeStatus (CreateStatus &oldStatus, CreateStatus &newStatus)
void provideOutput (unsigned int idx)
 forwards call to DataSource::providingOutput() if the index is valid
void ignoreOutput (unsigned int idx)
 forwards call to DataSource::ignoringOutput() if the index is valid
virtual float getAnalog (unsigned int inputIdx, unsigned char s)
 converts the value s from specified input's signal to voltage
virtual float getDigital (unsigned int inputIdx, unsigned char cur, unsigned char latch)
 converts the value cur and latch to the output format (0 if low, 0.5 if high but has been low, 1 if consistent high)
bool calcLEDValue (unsigned int i, float x)
 allows LEDs to flicker at various frequencies to emulate having linear brightness control instead of boolean control

Protected Attributes

float ledActivation [NumLEDs]
 used to track partial LED activation (see calcLEDValue())
CallbackPollThread poller
bool motionActive
bool sensorsActive
bool firstMessage
unsigned int frameNumber
CreateStatus globalStatus
unsigned char lastDesiredMode
unsigned int packetFailures

Private Attributes

unsigned int lastPollTime
short prevEncoderLeft
short prevEncoderRight
float distOffset
float angleOffset

Static Private Attributes

static const std::string autoRegisterCreateDriver = DeviceDriver::getRegistry().registerType<CreateDriver>("Create")
 holds the class name, set via registration with the DeviceDriver registry
static const int PACKET_LENGTH = 52+4
static const unsigned int pollInterval = 100

Constructor & Destructor Documentation

CreateDriver ( const std::string &  name  )  [explicit]

Definition at line 160 of file CreateDriver.h.

virtual ~CreateDriver (  )  [virtual]

Definition at line 170 of file CreateDriver.h.


Member Function Documentation

bool advance (  )  [virtual]

Called when the simulator is stepping while paused or advancing a frozen data source, return true if successful, or false if no more data is available.

Implements DataSource.

Definition at line 921 of file CreateDriver.cc.

bool attemptPacketRead ( std::istream &  is,
CreateStatus createStatus 
) [protected]

Definition at line 727 of file CreateDriver.cc.

Referenced by advance().

bool attemptStreamRead ( std::istream &  is,
CreateStatus createStatus 
) [protected]

Not used at present.

Definition at line 746 of file CreateDriver.cc.

bool calcLEDValue ( unsigned int  i,
float  x 
) [protected]

allows LEDs to flicker at various frequencies to emulate having linear brightness control instead of boolean control

Definition at line 225 of file CreateDriver.h.

Referenced by motionCheck().

void connect (  )  [protected, virtual]

Definition at line 136 of file CreateDriver.cc.

Referenced by advance(), motionStarting(), plistValueChanged(), and registerSource().

void deregisterSource (  )  [virtual]

User hook, called when the data source should release its claim on outputs with feedback (ignoringOuput()).

It would be wise to call this from your destructor as well.

Reimplemented from DataSource.

Definition at line 1072 of file CreateDriver.cc.

void doFreeze (  )  [protected, virtual]

user hook for when frozen is set to true; advance() will be called by simulator at user discretion.

Reimplemented from DataSource.

Definition at line 1090 of file CreateDriver.cc.

void doUnfreeze (  )  [protected, virtual]

user hook for when frozen is set to false; if enteringRealtime() has been called then you should resume sending data.

Reimplemented from DataSource.

Definition at line 1081 of file CreateDriver.cc.

virtual void enteringRealtime ( const plist::Primitive< double > &   )  [virtual]

User hook, called when the controller is going to be running in realtime mode, which is probably the normal mode you'd expect.

You might be in realtime mode, but a debugger breakpoint will still pause things, or thread scheduling could hiccup, so try to be robust.
The argument is a reference to SharedGlobals::timeScale, so the data source can subscribe to changes in simulation speed if it can use that information. (We avoid direct dependency on the tekkotsu simulator so this code can be reused for other tools too.)

Reimplemented from DataSource.

Definition at line 190 of file CreateDriver.h.

float getAnalog ( unsigned int  inputIdx,
unsigned char  s 
) [protected, virtual]

converts the value s from specified input's signal to voltage

Definition at line 1137 of file CreateDriver.cc.

virtual std::string getClassName (  )  const [virtual]

Returns the name of the class (aka its type).

Suggested implementation is to declare a static string member, set it to the result of calling the registry's registerType, and then return that member here

Implements DeviceDriver.

Definition at line 172 of file CreateDriver.h.

float getDigital ( unsigned int  inputIdx,
unsigned char  cur,
unsigned char  latch 
) [protected, virtual]

converts the value cur and latch to the output format (0 if low, 0.5 if high but has been low, 1 if consistent high)

Definition at line 1141 of file CreateDriver.cc.

virtual MotionHook* getMotionSink (  )  [virtual]

Reimplemented from DeviceDriver.

Definition at line 174 of file CreateDriver.h.

virtual void getSensorSources ( std::map< std::string, DataSource * > &  sources  )  [virtual]

Reimplemented from DeviceDriver.

Definition at line 175 of file CreateDriver.h.

void ignoreOutput ( unsigned int  idx  )  [protected]

forwards call to DataSource::ignoringOutput() if the index is valid

Definition at line 217 of file CreateDriver.h.

bool isConnected (  )  [virtual]

Should return true if the MotionHook is successfully connected to physical hardware.

If relevant, this will only be called after motionStarting() has been called in order to initialize a connection.

This is used mainly to cancel out of the WaitForSensors if all MotionHooks return false. If you are still in the process of connecting or unsure of status, be optimistic and return true. This function will be polled at a coarse rate while blocked on sensors in case of timeouts on the part of the MotionHook render it moot.

Implements MotionHook.

Definition at line 37 of file CreateDriver.cc.

virtual void leavingRealtime ( bool   )  [virtual]

User hook, called when leaving realtime mode, which means you have no idea when motionCheck() is going to be called in terms of wall-clock time.

Argument set to true if entering full speed mode, which indicates everything should run at full native "frame rate", and may indicate more data will be processed than normal, CPU speed permitting. However, if false, almost certainly indicates updates will be sparse, trigger by user 'step' commands. May be called multiple times if changing between full-speed mode and paused

A non-realtime mode might be triggered if the user wants to pause the simulator/controller to step through something... No guarantees though! The debugger might catch a breakpoint and stop things, and this won't be called!

Reimplemented from DataSource.

Definition at line 191 of file CreateDriver.h.

void mergeStatus ( CreateStatus oldStatus,
CreateStatus newStatus 
) [protected]

Definition at line 865 of file CreateDriver.cc.

Referenced by advance().

void motionCheck ( const float  outputs[][NumOutputs]  )  [virtual]

Called each time the motion process has polled active motion commands.

When in realtime mode, this should be called every FrameTime*NumFrames (defined in the RobotInfo) milliseconds if running at full speed. See enteringRealtime() and leavingRealtime().

This default implementation checks to see which outputs have changed value since the last call and passes the summary on to motionUpdated(). lastOutputs will be updated with the new values after the call to motionUpdated().

If you need to process all the outputs on every frame, you only need to override this function. Your subclass doesn't need to call the MotionHook implementation unless you want to have lastOutputs updated for you.

If you only need to process the changed outputs for each frame, override motionUpdated() instead. motionUpdated() is always called for each update, even if there aren't any changes, so you can still use that if there are some outputs which need to be updated every cycle.

Reimplemented from MotionHook.

Definition at line 52 of file CreateDriver.cc.

void motionStarting (  )  [virtual]

Called when motion process is starting.

Reimplemented from MotionHook.

Definition at line 23 of file CreateDriver.cc.

void motionStopping (  )  [virtual]

Called when motion process is stopping.

Reimplemented from MotionHook.

Definition at line 42 of file CreateDriver.cc.

virtual const std::string& nextName (  )  [virtual]

Returns a descriptive name of the next data segment for user feedback (e.g. a filename for logged data).

Just use your class name if you don't have a useful name for individual samples.

Implements DataSource.

Definition at line 186 of file CreateDriver.h.

unsigned int nextTimestamp (  )  [virtual]

Returns the simulator time of the next data segment.

Should be in the future if nothing new since last data segment, otherwise should be the timestamp of the most recent data segment (older segments are skipped), return -1U if there is no more data

Implements DataSource.

Definition at line 144 of file CreateDriver.cc.

void plistValueChanged ( const plist::PrimitiveBase pl  )  [virtual]

Implements PrimitiveListener.

Definition at line 1097 of file CreateDriver.cc.

void provideOutput ( unsigned int  idx  )  [protected]

forwards call to DataSource::providingOutput() if the index is valid

Definition at line 215 of file CreateDriver.h.

int readPacket ( std::istream &  is,
const char &  type,
CreateStatus createStatus,
unsigned char &  chk 
) [protected, virtual]

Definition at line 177 of file CreateDriver.cc.

Referenced by attemptPacketRead(), and attemptStreamRead().

unsigned int readUnsignedChar ( std::istream &  is,
unsigned char &  chk 
) [protected, virtual]

Definition at line 151 of file CreateDriver.cc.

Referenced by attemptStreamRead(), readPacket(), and readUnsignedShort().

unsigned int readUnsignedShort ( std::istream &  is,
unsigned char &  chk 
) [protected, virtual]

Definition at line 165 of file CreateDriver.cc.

Referenced by readPacket().

void registerSource (  )  [virtual]

User hook, called when the data source should claim which outputs it provides feedback (providingOuput()).

Does not indicate the data source should start sending updates yet — wait for enteringRealtime() or advance() to be called

Reimplemented from DataSource.

Definition at line 1059 of file CreateDriver.cc.

void resetStatus ( CreateStatus status  )  [protected]

Definition at line 808 of file CreateDriver.cc.

Referenced by advance(), and CreateDriver().

bool sendCommand ( std::vector< unsigned char >  bytes,
unsigned int  timeout 
) [protected]

Definition at line 102 of file CreateDriver.cc.

Referenced by advance(), connect(), and motionCheck().


Member Data Documentation

float angleOffset [private]

Definition at line 263 of file CreateDriver.h.

const std::string autoRegisterCreateDriver = DeviceDriver::getRegistry().registerType<CreateDriver>("Create") [static, private]

holds the class name, set via registration with the DeviceDriver registry

Definition at line 257 of file CreateDriver.h.

Referenced by getClassName().

float distOffset [private]

Definition at line 263 of file CreateDriver.h.

bool firstMessage [protected]

Definition at line 249 of file CreateDriver.h.

Referenced by readPacket().

unsigned int frameNumber [protected]

Definition at line 250 of file CreateDriver.h.

Referenced by advance().

Definition at line 251 of file CreateDriver.h.

Referenced by advance(), and CreateDriver().

unsigned char lastDesiredMode [protected]

Definition at line 253 of file CreateDriver.h.

unsigned int lastPollTime [private]

Definition at line 261 of file CreateDriver.h.

Referenced by advance().

float ledActivation[NumLEDs] [protected]

used to track partial LED activation (see calcLEDValue())

Definition at line 243 of file CreateDriver.h.

Referenced by calcLEDValue().

bool motionActive [protected]
const int PACKET_LENGTH = 52+4 [static, private]

Definition at line 259 of file CreateDriver.h.

Referenced by attemptStreamRead().

unsigned int packetFailures [protected]

Definition at line 254 of file CreateDriver.h.

Referenced by advance().

Definition at line 245 of file CreateDriver.h.

Referenced by doFreeze(), doUnfreeze(), and plistValueChanged().

const unsigned int pollInterval = 100 [static, private]

Definition at line 264 of file CreateDriver.h.

Referenced by advance().

short prevEncoderLeft [private]

Definition at line 262 of file CreateDriver.h.

Referenced by readPacket().

short prevEncoderRight [private]

Definition at line 262 of file CreateDriver.h.

Referenced by readPacket().

bool sensorsActive [protected]

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

Tekkotsu Hardware Abstraction Layer 5.1CVS
Generated Mon May 9 05:01:40 2016 by Doxygen 1.6.3