Homepage Demos Overview Downloads Tutorials Reference
Credits

EventBase.cc

Go to the documentation of this file.
00001 #include "EventBase.h"
00002 #include <stdio.h>
00003 
00004 const char* const EventBase::EventGeneratorNames[numEGIDs] = {
00005   "UnknownGen",
00006   "AI",
00007   "Audio",
00008   "Button",
00009   "EventRouter",
00010   "EStop",
00011   "Locomotion",
00012   "MotionManager",
00013   "Power",
00014   "Sensor",
00015   "StateMachine",
00016   "TextMsg",
00017   "Timer",
00018   "VisionOFbkVector",
00019   "VisionRawCamera",
00020   "VisionInterleaver",
00021   "VisionJPEGCompressor",
00022   "VisionSegmenter",
00023   "VisionRLEEncoder",
00024   "VisionRegionConnector",
00025   "VisionObjectDetector",
00026   "WMVariable",
00027   "WorldModel",
00028 };
00029 
00030 
00031 EventBase::EventBase()
00032   : LoadSave(), stim_id(), magnitude(0), timestamp(get_time()), nameisgen(true), genID(unknownEGID), typeID(statusETID), sourceID((unsigned int)-1), duration(0)
00033 {
00034   genName();
00035 }
00036 
00037 EventBase::EventBase(EventGeneratorID_t gid, unsigned int sid, EventTypeID_t tid, unsigned int dur)
00038   : LoadSave(), stim_id(), magnitude(0), timestamp(get_time()), nameisgen(true), genID(gid), typeID(tid), sourceID(sid), duration(dur)
00039 {
00040   genName();
00041   if(tid==deactivateETID)
00042     setMagnitude(0.0);
00043   else
00044     setMagnitude(1.0);
00045 }
00046 
00047 EventBase::EventBase(EventGeneratorID_t gid, unsigned int sid, EventTypeID_t tid, unsigned int dur, const std::string& n, float mag)
00048   : LoadSave(), stim_id(n), magnitude(mag), timestamp(get_time()), nameisgen(false), genID(gid), typeID(tid), sourceID(sid), duration(dur)
00049 {
00050   
00051 }
00052 
00053 
00054 unsigned int
00055 EventBase::getBinSize() const {
00056   unsigned int used=0;
00057   used+=creatorSize("EventBase");
00058   used+=stim_id.size()+stringpad;
00059   used+=sizeof(magnitude);
00060   used+=sizeof(timestamp);
00061   used+=sizeof(nameisgen);
00062   used+=sizeof(char);
00063   used+=sizeof(char);
00064   used+=sizeof(sourceID);
00065   used+=sizeof(duration);
00066   return used;
00067 }
00068 
00069 unsigned int
00070 EventBase::LoadBuffer(const char buf[], unsigned int len) {
00071   unsigned int origlen=len;
00072   unsigned int used=0;
00073   if(0==(used=checkCreator("EventBase",buf,len,true))) return 0;
00074   len-=used; buf+=used;
00075   if(0==(used=decode(stim_id,buf,len))) return 0;
00076   len-=used; buf+=used;
00077   if(0==(used=decode(magnitude,buf,len))) return 0;
00078   len-=used; buf+=used;
00079   if(0==(used=decode(timestamp,buf,len))) return 0;
00080   len-=used; buf+=used;
00081   if(0==(used=decode(nameisgen,buf,len))) return 0;
00082   len-=used; buf+=used;
00083   char tmp;
00084   if(0==(used=decode(tmp,buf,len))) return 0;
00085   genID=(EventGeneratorID_t)tmp;
00086   len-=used; buf+=used;
00087   if(0==(used=decode(tmp,buf,len))) return 0;
00088   typeID=(EventTypeID_t)tmp;
00089   len-=used; buf+=used;
00090   if(0==(used=decode(sourceID,buf,len))) return 0;
00091   len-=used; buf+=used;
00092   if(0==(used=decode(duration,buf,len))) return 0;
00093   len-=used; buf+=used;
00094   return origlen-len; 
00095 }
00096 
00097 unsigned int
00098 EventBase::SaveBuffer(char buf[], unsigned int len) const {
00099   unsigned int origlen=len;
00100   unsigned int used=0;
00101   if(0==(used=saveCreator("EventBase",buf,len))) return 0;
00102   len-=used; buf+=used;
00103   if(0==(used=encode(stim_id,buf,len))) return 0;
00104   len-=used; buf+=used;
00105   if(0==(used=encode(magnitude,buf,len))) return 0;
00106   len-=used; buf+=used;
00107   if(0==(used=encode(timestamp,buf,len))) return 0;
00108   len-=used; buf+=used;
00109   if(0==(used=encode(nameisgen,buf,len))) return 0;
00110   len-=used; buf+=used;
00111   if(0==(used=encode((char)genID,buf,len))) return 0;
00112   len-=used; buf+=used;
00113   if(0==(used=encode((char)typeID,buf,len))) return 0;
00114   len-=used; buf+=used;
00115   if(0==(used=encode(sourceID,buf,len))) return 0;
00116   len-=used; buf+=used;
00117   if(0==(used=encode(duration,buf,len))) return 0;
00118   len-=used; buf+=used;
00119   return origlen-len;
00120 }
00121 
00122 void
00123 EventBase::genName() {
00124   if(!nameisgen)
00125     return;
00126   if(genID<numEGIDs) {
00127     stim_id=std::string("Evt_");
00128     stim_id+=EventGeneratorNames[genID];
00129   } else {
00130     stim_id=std::string("Evt_InvalidGen");
00131     stim_id+=genID; 
00132   }
00133   stim_id+="::";
00134   char tmp[16];
00135   snprintf(tmp,16,"0x%x",sourceID);
00136   stim_id+=tmp;
00137 }
00138 
00139 /*! @file
00140  * @brief Implements EventBase, the basic class for sending events around the system
00141  * @author ejt (Creator)
00142  *
00143  * $Author: ejt $
00144  * $Name: tekkotsu-2_0 $
00145  * $Revision: 1.15 $
00146  * $State: Exp $
00147  * $Date: 2003/12/05 20:26:42 $
00148  */
00149 

Tekkotsu v2.0
Generated Wed Jan 21 03:20:28 2004 by Doxygen 1.3.4