Homepage Demos Overview Downloads Tutorials Reference
Credits

EventBase Class Reference

#include <EventBase.h>

Inheritance diagram for EventBase:

Inheritance graph
[legend]
List of all members.

Detailed Description

The basis of events passed around the high level system.

Contains the list of 'known' event generators in EventGeneratorID_t and EventGeneratorNames[]. If you want to make a new generator, all you have to do is add a new entry to the ID list (EventGeneratorID_t) and then put its name in the EventGeneratorNames[] array.

Alternatively, there is an 'unlicensed spectrum' available under the unknownEGID. You can send out events from that generator just like any other, but it should only be used for quick tests and hacking around...

The sourceID (just an unsigned int) is generator specific. A SID of i from the button generator (buttonEGID) will refer to a particular button, whereas a SID from a vision detector (say visObjEGID) refers to seeing a particular object. These SIDs are usually defined in the generators themselves.

The duration field is also generator specific - some may refer to the time since the last activation event (e.g. button events) where as others refer to time since last status (e.g. sensors updates)

The EventGeneratorID_t list should contain links to the generators' documentation, or will directly give information about what to expect in events from that generator.

Definition at line 35 of file EventBase.h.

Public Types

enum  EventGeneratorID_t {
  unknownEGID = 0, aiEGID, audioEGID, buttonEGID,
  erouterEGID, estopEGID, locomotionEGID, motmanEGID,
  powerEGID, sensorEGID, stateMachineEGID, textmsgEGID,
  timerEGID, visOFbkEGID, visRawCameraEGID, visInterleaveEGID,
  visJPEGEGID, visSegmentEGID, visRLEEGID, visRegionEGID,
  visObjEGID, wmVarEGID, worldModelEGID, numEGIDs
}
 Lists all possible event generator ids. More...

enum  EventTypeID_t { activateETID, statusETID, deactivateETID, numETIDs }
 an event type id is used to denote whether it's the first in a sequence (button down), in a sequence (button still down), or last (button up) More...


Public Member Functions

Constructors/Destructors
 EventBase ()
 constructor

 EventBase (EventGeneratorID_t gid, unsigned int sid, EventTypeID_t tid, unsigned int dur=0)
 constructor

 EventBase (EventGeneratorID_t gid, unsigned int sid, EventTypeID_t tid, unsigned int dur, const std::string &n, float mag)
 constructor

virtual ~EventBase ()
 destructor

Methods
virtual const std::string & getName () const
 gets the name of the event - useful for debugging, outputs

virtual EventBasesetName (const std::string &n)
 sets name to a given string, prevents overwriting by generated names

virtual float getMagnitude () const
 gets "strength" of event - by default 1 for activate and status events, 0 for deactivate events

virtual EventBasesetMagnitude (float m)
 sets "strength" of event - you may want to override the default values (see getMagnitude())

virtual unsigned int getTimeStamp () const
 time event was created

virtual EventGeneratorID_t getGeneratorID () const
 gets the generator ID for this event

virtual EventBasesetGeneratorID (EventGeneratorID_t gid)
 sets the generator ID for this event

virtual unsigned int getSourceID () const
 gets the source ID for this event

virtual EventBasesetSourceID (unsigned int sid)
 sets the source ID for this event

virtual EventTypeID_t getTypeID () const
 gets the type ID

virtual EventBasesetTypeID (EventTypeID_t tid)
 sets the type ID

virtual unsigned int getDuration () const
 gets the time since the beginning of this sequence (the timestamp of the activate event)

virtual EventBasesetDuration (unsigned int d)
 sets the time since the beginning of this sequence (the timestamp of the activate event)

virtual const std::string & resetName ()
 resets name to generated form, overwriting any previous name

virtual bool isCustomName () const
 returns true if not using the generated name

bool operator< (const EventBase &e) const
 gets the name of the event - useful for debugging, outputs

virtual bool operator== (const EventBase &eb) const
 is true if the genID, typeID, and sourceID's all match

bool sameGenSource (const EventBase &eb) const
 tests to see if events have the same generator and source IDs

bool longerThan (const EventBase &eb) const
 compares event duration and ensures same event generator, source, and type - useful for event masks

bool shorterThan (const EventBase &eb) const
 compares event duration and ensures same event generator, source, and type - useful for event masks

bool equalOrLongerThan (const EventBase &eb) const
 compares event duration and ensures same event generator, source, and type - useful for event masks

bool equalOrShorterThan (const EventBase &eb) const
 compares event duration and ensures same event generator, source, and type - useful for event masks

LoadSave interface
Useful for serializing events to send between processes

virtual unsigned int getBinSize () const
 calculates space needed to save - if you can't precisely add up the size, overestimate and things will still work.

virtual unsigned int LoadBuffer (const char buf[], unsigned int len)
 Load from a saved buffer.

virtual unsigned int SaveBuffer (char buf[], unsigned int len) const
 Save to a given buffer.


Static Public Attributes

const char *const  EventGeneratorNames [numEGIDs]
 Holds string versions of each of the generator's names, handy for debugging so you can output the events as readable strings (you'll find this in EventBase.cc since it can't go in the header or we get multiply-defined errors during linking).


Protected Member Functions

virtual void genName ()
 This does the actual generation of names based on genID, sourceID, and typeID.


Protected Attributes

std::string stim_id
 the name of the event, use the same name consistently or else will be seen as different stimuli

float magnitude
 the current "strength" of the event/stimuli... MAKE SURE this gets set to ZERO IF event is DEACTIVATE

unsigned int timestamp
 the time the event was created - set automatically by constructor

bool nameisgen
 tracks whether the current name (stim_id) is generated or set

EventGeneratorID_t genID
 generator ID, see EventGeneratorID_t

EventTypeID_t typeID
 type ID, see EventTypeID_t

unsigned int sourceID
 the source ID for this event Source IDs are defined by the generator that made it

unsigned int duration
 the time since this sequence started (like, how long the button has been pressed); not all generators will set this; Typically, this would be 0 for activate, (activate.timestamp-get_time()) for status and deactivate


Member Enumeration Documentation

enum EventBase::EventGeneratorID_t
 

Lists all possible event generator ids.

An event generator is a abstract source of events, used for listening to and parsing certain classes of events

IF YOU ADD AN EVENT GENERATOR, DON'T FORGET TO NAME IT (EventBase::EventGeneratorNames, actual names are in EventBase.cc)

Enumeration values:
unknownEGID  default EGID, used if you forget to set it, probably not a good idea to use this for anything except errors or testing quick hacks
aiEGID  not being used, yet (might use this when AI makes decisions?)
audioEGID  Sends an event when a sound starts/ends playback, status events as chained sounds end; SID is SoundManager::Play_ID; duration is playtime.
buttonEGID  Sends activate event for button down, deactivate for button up. Status events only for when pressure sensitive buttons' reading changes. (on sensorEGID updates); SIDs are from ButtonOffset_t in the namespace of the target model (e.g. ERS210Info::ButtonOffset_t); duration is button down time.
erouterEGID  Sends activate event on first listener, deactivate on last listener, and status on other listener changes.; SID is the generator ID affected (NOT IMPLEMENTED YET).
estopEGID  Sends an event when the estop is turned on or off; SID is the MotionManager::MC_ID of the EmergencyStopMC; duration is length of estop activation.
locomotionEGID  Sends events regarding transportation in the world; you can/should assume these will all be LocomotionEvent classes; SID is MotionManager::MC_ID of posting MotionCommand; duration is the time since last velocity change of that MC. (You could generate these for things other than walking...).
motmanEGID  Sends events when a MotionCommand is added or removed, SID is is the MotionManager::MC_ID, duration is always 0.
powerEGID  Sends events for low power warnings, temperature, etc. see PowerSourceID::PowerSourceID_t.
sensorEGID  Sends a status event when new sensor readings are available. see SensorSourceID::SensorSourceID_t.
stateMachineEGID  Sends an event upon entering and leaving a StateNode; SID is pointer to the StateNode; duration is always 0.
textmsgEGID  Sends status events when a text msg is received on console; generated by the Controller, SID is always -1; durations is always 0 (see Controller for more information).
timerEGID  Sends timer events; you set timers explicitly, you don't have to listen as well. (See EventRouter::addTimer()) There's no cross-talk, only the listener which requested the timer will receive it; SID is whatever you requested it to be; duration is the time (since boot, in ms) that the timer was supposed to go off; these are always status.
visOFbkEGID  Sends a DataEvent for every camera image received from the system; SID and duration are always 0 (This is generated by the MainObj instantiation of MMCombo).
visRawCameraEGID  Sends a FilterBankEvent when new raw camera images are available; SID is whatever value you gave during setup (typically in StartupBehavior_SetupVision.cc), duration is always 0.
visInterleaveEGID  Sends a FilterBankEvent when new interleaved images are available; SID is whatever value you gave during setup (typically in StartupBehavior_SetupVision.cc), duration is always 0.
visJPEGEGID  Sends a FilterBankEvent when JPEG compressed images are available; SID is whatever value you gave during setup (typically in StartupBehavior_SetupVision.cc), duration is always 0.
visSegmentEGID  Sends a SegmentedColorFilterBankEvent when color segmentated images are available; SID is whatever value you gave during setup (typically in StartupBehavior_SetupVision.cc), duration is always 0.
visRLEEGID  Sends a SegmentedColorFilterBankEvent when RLE encoded color segmentated images are available; SID is whatever value you gave during setup (typically in StartupBehavior_SetupVision.cc), duration is always 0.
visRegionEGID  Sends a SegmentedColorFilterBankEvent when color regions are available; SID is whatever value you gave during setup (typically in StartupBehavior_SetupVision.cc), duration is always 0.
visObjEGID  Sends VisionObjectEvents for objects detected in camera images; SID is whatever value you gave during setup (typically in StartupBehavior_SetupVision.cc), duration is always 0.
wmVarEGID  Sends an event when a watched memory is changed; source id is pointer to WMEntry.
worldModelEGID  not being used, yet (for when objects are detected/lost?)
numEGIDs  the number of generators available

Definition at line 41 of file EventBase.h.

Referenced by getGeneratorID(), and LoadBuffer().

enum EventBase::EventTypeID_t
 

an event type id is used to denote whether it's the first in a sequence (button down), in a sequence (button still down), or last (button up)

Enumeration values:
activateETID  Start of an event sequence, e.g. button down.
statusETID  Indicates a value has changed, e.g. new sensor readings.
deactivateETID  Last of a series of events, e.g. button up.
numETIDs  the number of different event types

Definition at line 72 of file EventBase.h.

Referenced by getTypeID(), and LoadBuffer().


Constructor & Destructor Documentation

EventBase::EventBase  ) 
 

constructor

See also:
EventRouter::postEvent()

Definition at line 31 of file EventBase.cc.

EventBase::EventBase EventGeneratorID_t  gid,
unsigned int  sid,
EventTypeID_t  tid,
unsigned int  dur = 0
 

constructor

See also:
EventRouter::postEvent()

Definition at line 37 of file EventBase.cc.

EventBase::EventBase EventGeneratorID_t  gid,
unsigned int  sid,
EventTypeID_t  tid,
unsigned int  dur,
const std::string &  n,
float  mag
 

constructor

See also:
EventRouter::postEvent()

Definition at line 47 of file EventBase.cc.

virtual EventBase::~EventBase  )  [inline, virtual]
 

destructor

Definition at line 85 of file EventBase.h.


Member Function Documentation

bool EventBase::equalOrLongerThan const EventBase eb  )  const [inline]
 

compares event duration and ensures same event generator, source, and type - useful for event masks

Definition at line 123 of file EventBase.h.

bool EventBase::equalOrShorterThan const EventBase eb  )  const [inline]
 

compares event duration and ensures same event generator, source, and type - useful for event masks

Definition at line 124 of file EventBase.h.

void EventBase::genName  )  [protected, virtual]
 

This does the actual generation of names based on genID, sourceID, and typeID.

Definition at line 123 of file EventBase.cc.

Referenced by EventBase(), resetName(), setGeneratorID(), setSourceID(), and setTypeID().

unsigned int EventBase::getBinSize  )  const [virtual]
 

calculates space needed to save - if you can't precisely add up the size, overestimate and things will still work.

Returns:
number of bytes read/written, 0 if error (or empty)

Implements LoadSave.

Reimplemented in LocomotionEvent, TextMsgEvent, and VisionObjectEvent.

Definition at line 55 of file EventBase.cc.

Referenced by EventTranslator::enqueue(), VisionObjectEvent::getBinSize(), TextMsgEvent::getBinSize(), and LocomotionEvent::getBinSize().

virtual unsigned int EventBase::getDuration  )  const [inline, virtual]
 

gets the time since the beginning of this sequence (the timestamp of the activate event)

See also:
duration

Definition at line 106 of file EventBase.h.

Referenced by EventRouter::addListener(), EventRouter::addTimer(), EventLogger::processEvent(), and Controller::trapEvent().

virtual EventGeneratorID_t EventBase::getGeneratorID  )  const [inline, virtual]
 

gets the generator ID for this event

See also:
EventGeneratorID_t

Definition at line 97 of file EventBase.h.

Referenced by EventRouter::addListener(), EventRouter::addTrapper(), EventRouter::EventMapper::getMapping(), StartupBehavior::processEvent(), StareAtBallBehavior::processEvent(), SimpleChaseBallBehavior::processEvent(), SegCamBehavior::processEvent(), PlayMotionSequenceNode< SIZE >::processEvent(), FreeMemReportControl::processEvent(), DriveMeBehavior::processEvent(), ChaseBallBehavior::processEvent(), BatteryMonitorBehavior::processEvent(), BanditMachine::WaitNode::processEvent(), AutoGetupBehavior::processEvent(), AlanBehavior::processEvent(), EventRouter::removeListener(), EventRouter::removeTrapper(), and EventRouter::EventMapper::verifyMapping().

virtual float EventBase::getMagnitude  )  const [inline, virtual]
 

gets "strength" of event - by default 1 for activate and status events, 0 for deactivate events

Definition at line 92 of file EventBase.h.

Referenced by EventLogger::processEvent(), and Controller::trapEvent().

virtual const std::string& EventBase::getName  )  const [inline, virtual]
 

gets the name of the event - useful for debugging, outputs

Definition at line 89 of file EventBase.h.

Referenced by TimeOutTrans::processEvent(), RegionGenerator::processEvent(), HeadLevelBehavior::processEvent(), FollowHeadBehavior::processEvent(), EventLogger::processEvent(), BatteryMonitorBehavior::processEvent(), BallDetectionGenerator::processEvent(), and AlanBehavior::processEvent().

virtual unsigned int EventBase::getSourceID  )  const [inline, virtual]
 

gets the source ID for this event

See also:
sourceID

Definition at line 100 of file EventBase.h.

Referenced by EventRouter::addListener(), EventRouter::addTimer(), EventRouter::addTrapper(), EventRouter::EventMapper::getMapping(), WorldStateVelDaemon::processEvent(), WMMonitorBehavior::processEvent(), ValueEditControl< T >::processEvent(), StartupBehavior::processEvent(), SoundTestBehavior::processEvent(), FreeMemReportControl::processEvent(), BatteryMonitorBehavior::processEvent(), BatteryCheckControl::processEvent(), EventRouter::removeListener(), EventRouter::removeTrapper(), Controller::trapEvent(), and EventRouter::EventMapper::verifyMapping().

virtual unsigned int EventBase::getTimeStamp  )  const [inline, virtual]
 

time event was created

Definition at line 95 of file EventBase.h.

Referenced by WorldStateVelDaemon::processEvent(), WalkCalibration::processEvent(), EventLogger::processEvent(), WorldStateVelDaemon::trapEvent(), RawCamBehavior::writeColor(), SegCamBehavior::writeRLE(), SegCamBehavior::writeSeg(), and RawCamBehavior::writeSingleChannel().

virtual EventTypeID_t EventBase::getTypeID  )  const [inline, virtual]
 

gets the type ID

See also:
EventTypeID_t

Definition at line 103 of file EventBase.h.

Referenced by EventRouter::addListener(), EventRouter::addTrapper(), EventRouter::EventMapper::getMapping(), WorldStateVelDaemon::processEvent(), WalkToTargetMachine::processEvent(), VisualTargetTrans::processEvent(), StareAtBallBehavior::processEvent(), SoundTestBehavior::processEvent(), SimpleChaseBallBehavior::processEvent(), EventLogger::processEvent(), EStopControllerBehavior::processEvent(), Controller::processEvent(), ChaseBallBehavior::processEvent(), EventRouter::removeListener(), EventRouter::removeTrapper(), Controller::trapEvent(), and EventRouter::EventMapper::verifyMapping().

virtual bool EventBase::isCustomName  )  const [inline, virtual]
 

returns true if not using the generated name

Definition at line 110 of file EventBase.h.

unsigned int EventBase::LoadBuffer const char  buf[],
unsigned int  len
[virtual]
 

Load from a saved buffer.

Parameters:
buf pointer to the memory where you should begin loading
len length of buf available (this isn't all yours, might be more stuff saved after yours)
Returns:
the number of bytes actually used

Implements LoadSave.

Reimplemented in LocomotionEvent, TextMsgEvent, and VisionObjectEvent.

Definition at line 70 of file EventBase.cc.

Referenced by VisionObjectEvent::LoadBuffer(), TextMsgEvent::LoadBuffer(), LocomotionEvent::LoadBuffer(), and EventTranslator::sendEvent().

bool EventBase::longerThan const EventBase eb  )  const [inline]
 

compares event duration and ensures same event generator, source, and type - useful for event masks

Definition at line 121 of file EventBase.h.

bool EventBase::operator< const EventBase e  )  const [inline]
 

gets the name of the event - useful for debugging, outputs

Definition at line 112 of file EventBase.h.

virtual bool EventBase::operator== const EventBase eb  )  const [inline, virtual]
 

is true if the genID, typeID, and sourceID's all match

Definition at line 115 of file EventBase.h.

virtual const std::string& EventBase::resetName  )  [inline, virtual]
 

resets name to generated form, overwriting any previous name

Definition at line 109 of file EventBase.h.

bool EventBase::sameGenSource const EventBase eb  )  const [inline]
 

tests to see if events have the same generator and source IDs

Definition at line 119 of file EventBase.h.

Referenced by Controller::trapEvent().

unsigned int EventBase::SaveBuffer char  buf[],
unsigned int  len
const [virtual]
 

Save to a given buffer.

Parameters:
buf pointer to the memory where you should begin writing
len length of buf available. (this isn't all yours, constrain yourself to what you returned in getBinSize() )
Returns:
the number of bytes actually used

Implements LoadSave.

Reimplemented in LocomotionEvent, TextMsgEvent, and VisionObjectEvent.

Definition at line 98 of file EventBase.cc.

Referenced by EventTranslator::enqueue(), VisionObjectEvent::SaveBuffer(), TextMsgEvent::SaveBuffer(), and LocomotionEvent::SaveBuffer().

virtual EventBase& EventBase::setDuration unsigned int  d  )  [inline, virtual]
 

sets the time since the beginning of this sequence (the timestamp of the activate event)

See also:
duration

Definition at line 107 of file EventBase.h.

virtual EventBase& EventBase::setGeneratorID EventGeneratorID_t  gid  )  [inline, virtual]
 

sets the generator ID for this event

See also:
EventGeneratorID_t

Definition at line 98 of file EventBase.h.

virtual EventBase& EventBase::setMagnitude float  m  )  [inline, virtual]
 

sets "strength" of event - you may want to override the default values (see getMagnitude())

Definition at line 93 of file EventBase.h.

Referenced by EventBase().

virtual EventBase& EventBase::setName const std::string &  n  )  [inline, virtual]
 

sets name to a given string, prevents overwriting by generated names

Definition at line 90 of file EventBase.h.

virtual EventBase& EventBase::setSourceID unsigned int  sid  )  [inline, virtual]
 

sets the source ID for this event

See also:
sourceID

Definition at line 101 of file EventBase.h.

Referenced by CameraBehavior::DoStart(), HeadLevelBehavior::HeadLevelBehavior(), and SoundTestBehavior::SoundTestBehavior().

virtual EventBase& EventBase::setTypeID EventTypeID_t  tid  )  [inline, virtual]
 

sets the type ID

See also:
EventTypeID_t

Definition at line 104 of file EventBase.h.

bool EventBase::shorterThan const EventBase eb  )  const [inline]
 

compares event duration and ensures same event generator, source, and type - useful for event masks

Definition at line 122 of file EventBase.h.

Referenced by CameraBehavior::processEvent().


Member Data Documentation

unsigned int EventBase::duration [protected]
 

the time since this sequence started (like, how long the button has been pressed); not all generators will set this; Typically, this would be 0 for activate, (activate.timestamp-get_time()) for status and deactivate

Definition at line 147 of file EventBase.h.

Referenced by equalOrLongerThan(), equalOrShorterThan(), getBinSize(), getDuration(), LoadBuffer(), longerThan(), SaveBuffer(), setDuration(), and shorterThan().

const char *const EventBase::EventGeneratorNames [static]
 

Initial value:

 {
  "UnknownGen",
  "AI",
  "Audio",
  "Button",
  "EventRouter",
  "EStop",
  "Locomotion",
  "MotionManager",
  "Power",
  "Sensor",
  "StateMachine",
  "TextMsg",
  "Timer",
  "VisionOFbkVector",
  "VisionRawCamera",
  "VisionInterleaver",
  "VisionJPEGCompressor",
  "VisionSegmenter",
  "VisionRLEEncoder",
  "VisionRegionConnector",
  "VisionObjectDetector",
  "WMVariable",
  "WorldModel",
}
Holds string versions of each of the generator's names, handy for debugging so you can output the events as readable strings (you'll find this in EventBase.cc since it can't go in the header or we get multiply-defined errors during linking).

Definition at line 4 of file EventBase.cc.

Referenced by genName().

EventGeneratorID_t EventBase::genID [protected]
 

generator ID, see EventGeneratorID_t

Definition at line 141 of file EventBase.h.

Referenced by genName(), getGeneratorID(), LoadBuffer(), operator==(), sameGenSource(), SaveBuffer(), and setGeneratorID().

float EventBase::magnitude [protected]
 

the current "strength" of the event/stimuli... MAKE SURE this gets set to ZERO IF event is DEACTIVATE

Definition at line 135 of file EventBase.h.

Referenced by getBinSize(), getMagnitude(), LoadBuffer(), SaveBuffer(), and setMagnitude().

bool EventBase::nameisgen [protected]
 

tracks whether the current name (stim_id) is generated or set

Definition at line 138 of file EventBase.h.

Referenced by genName(), getBinSize(), isCustomName(), LoadBuffer(), resetName(), SaveBuffer(), and setName().

unsigned int EventBase::sourceID [protected]
 

the source ID for this event Source IDs are defined by the generator that made it

This should give authors flexibility to design their modules without having to worry about ID space collision

Definition at line 143 of file EventBase.h.

Referenced by genName(), getBinSize(), getSourceID(), LoadBuffer(), operator==(), sameGenSource(), SaveBuffer(), and setSourceID().

std::string EventBase::stim_id [protected]
 

the name of the event, use the same name consistently or else will be seen as different stimuli

Definition at line 134 of file EventBase.h.

Referenced by genName(), getBinSize(), getName(), LoadBuffer(), resetName(), SaveBuffer(), and setName().

unsigned int EventBase::timestamp [protected]
 

the time the event was created - set automatically by constructor

Definition at line 136 of file EventBase.h.

Referenced by getBinSize(), getTimeStamp(), LoadBuffer(), operator<(), and SaveBuffer().

EventTypeID_t EventBase::typeID [protected]
 

type ID, see EventTypeID_t

Definition at line 142 of file EventBase.h.

Referenced by getTypeID(), LoadBuffer(), operator==(), SaveBuffer(), and setTypeID().


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

Tekkotsu v2.1
Generated Tue Mar 16 23:22:06 2004 by Doxygen 1.3.5