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 #include <sstream>
00004 
00005 const char* const EventBase::EventGeneratorNames[numEGIDs] = {
00006   "unknownEGID",
00007   "aiEGID",
00008   "audioEGID",
00009   "buttonEGID",
00010   "erouterEGID",
00011   "estopEGID",
00012   "locomotionEGID",
00013   "micOSndEGID",
00014   "micRawEGID",
00015   "micFFTEGID",
00016   "motmanEGID",
00017   "powerEGID",
00018   "sensorEGID",
00019   "stateMachineEGID",
00020   "stateTransitionEGID",
00021   "testmsgEGID",
00022   "timerEGID",
00023   "visOFbkEGID",
00024   "visRawCameraEGID",
00025   "visInterleaveEGID",
00026   "visJPEGEGID",
00027   "visSegmentEGID",
00028   "visRLEEGID",
00029   "visRegionEGID",
00030   "visObjEGID",
00031   "wmVarEGID",
00032   "worldModelEGID",
00033 };
00034 
00035 
00036 EventBase::EventBase()
00037   : LoadSave(), stim_id(), magnitude(0), timestamp(get_time()), nameisgen(true), genID(unknownEGID), typeID(statusETID), sourceID((unsigned int)-1), duration(0)
00038 {
00039   genName();
00040 }
00041 
00042 EventBase::EventBase(EventGeneratorID_t gid, unsigned int sid, EventTypeID_t tid, unsigned int dur)
00043   : LoadSave(), stim_id(), magnitude(0), timestamp(get_time()), nameisgen(true), genID(gid), typeID(tid), sourceID(sid), duration(dur)
00044 {
00045   genName();
00046   if(tid==deactivateETID)
00047     setMagnitude(0.0);
00048   else
00049     setMagnitude(1.0);
00050 }
00051 
00052 EventBase::EventBase(EventGeneratorID_t gid, unsigned int sid, EventTypeID_t tid, unsigned int dur, const std::string& n, float mag)
00053   : LoadSave(), stim_id(), magnitude(mag), timestamp(get_time()), nameisgen(true), genID(gid), typeID(tid), sourceID(sid), duration(dur)
00054 {
00055   setName(n);
00056 }
00057 
00058 EventBase&
00059 EventBase::setName(const std::string& sourcename) {
00060   stim_id='(';
00061   if(genID<numEGIDs) {
00062     stim_id+=EventGeneratorNames[genID];
00063   } else {
00064     stim_id+=std::string("InvalidGen");
00065     char tmp2[16];
00066     snprintf(tmp2,16,"(%d)",genID);
00067     stim_id+=tmp2; 
00068   }
00069   stim_id+=',';
00070   stim_id+=sourcename;
00071   stim_id+=',';
00072   switch(getTypeID()) {
00073   case EventBase::activateETID:
00074     stim_id+='A'; break;
00075   case EventBase::statusETID:
00076     stim_id+='S'; break;
00077   case EventBase::deactivateETID:
00078     stim_id+='D'; break;
00079   default:
00080     stim_id+='U'; break; //unknown
00081   }
00082   stim_id+=')';
00083   nameisgen=false;
00084   return *this;
00085 }
00086 
00087 std::string
00088 EventBase::getDescription(bool /*showTypeSpecific=true*/, unsigned int verbosity/*=0*/) const {
00089   std::ostringstream logdata;
00090   logdata << getName();
00091   if(verbosity>=1)
00092     logdata << '\t' << getGeneratorID() << '\t' << getSourceID() << '\t' << getTypeID();
00093   if(verbosity>=2)
00094     logdata << '\t' << getDuration() << '\t' << getTimeStamp();
00095   if(verbosity>=3)
00096     logdata << '\t' << getMagnitude();
00097   return logdata.str();
00098 }
00099 
00100 unsigned int
00101 EventBase::getBinSize() const {
00102   unsigned int used=0;
00103   used+=creatorSize("EventBase");
00104   used+=stim_id.size()+stringpad;
00105   used+=sizeof(magnitude);
00106   used+=sizeof(timestamp);
00107   used+=sizeof(nameisgen);
00108   used+=sizeof(char);
00109   used+=sizeof(char);
00110   used+=sizeof(sourceID);
00111   used+=sizeof(duration);
00112   return used;
00113 }
00114 
00115 unsigned int
00116 EventBase::LoadBuffer(const char buf[], unsigned int len) {
00117   unsigned int origlen=len;
00118   unsigned int used=0;
00119   if(0==(used=checkCreator("EventBase",buf,len,true))) return 0;
00120   len-=used; buf+=used;
00121   if(0==(used=decode(stim_id,buf,len))) return 0;
00122   len-=used; buf+=used;
00123   if(0==(used=decode(magnitude,buf,len))) return 0;
00124   len-=used; buf+=used;
00125   if(0==(used=decode(timestamp,buf,len))) return 0;
00126   len-=used; buf+=used;
00127   if(0==(used=decode(nameisgen,buf,len))) return 0;
00128   len-=used; buf+=used;
00129   char tmp;
00130   if(0==(used=decode(tmp,buf,len))) return 0;
00131   genID=(EventGeneratorID_t)tmp;
00132   len-=used; buf+=used;
00133   if(0==(used=decode(tmp,buf,len))) return 0;
00134   typeID=(EventTypeID_t)tmp;
00135   len-=used; buf+=used;
00136   if(0==(used=decode(sourceID,buf,len))) return 0;
00137   len-=used; buf+=used;
00138   if(0==(used=decode(duration,buf,len))) return 0;
00139   len-=used; buf+=used;
00140   return origlen-len; 
00141 }
00142 
00143 unsigned int
00144 EventBase::SaveBuffer(char buf[], unsigned int len) const {
00145   unsigned int origlen=len;
00146   unsigned int used=0;
00147   if(0==(used=saveCreator("EventBase",buf,len))) return 0;
00148   len-=used; buf+=used;
00149   if(0==(used=encode(stim_id,buf,len))) return 0;
00150   len-=used; buf+=used;
00151   if(0==(used=encode(magnitude,buf,len))) return 0;
00152   len-=used; buf+=used;
00153   if(0==(used=encode(timestamp,buf,len))) return 0;
00154   len-=used; buf+=used;
00155   if(0==(used=encode(nameisgen,buf,len))) return 0;
00156   len-=used; buf+=used;
00157   if(0==(used=encode((char)genID,buf,len))) return 0;
00158   len-=used; buf+=used;
00159   if(0==(used=encode((char)typeID,buf,len))) return 0;
00160   len-=used; buf+=used;
00161   if(0==(used=encode(sourceID,buf,len))) return 0;
00162   len-=used; buf+=used;
00163   if(0==(used=encode(duration,buf,len))) return 0;
00164   len-=used; buf+=used;
00165   return origlen-len;
00166 }
00167 
00168 void
00169 EventBase::genName() {
00170   if(!nameisgen)
00171     return;
00172   char tmp[16];
00173   snprintf(tmp,16,"%d",sourceID);
00174   setName(tmp);
00175   nameisgen=true;
00176 }
00177 
00178 /*! @file
00179  * @brief Implements EventBase, the basic class for sending events around the system
00180  * @author ejt (Creator)
00181  *
00182  * $Author: ejt $
00183  * $Name: tekkotsu-2_2_2 $
00184  * $Revision: 1.24 $
00185  * $State: Exp $
00186  * $Date: 2004/12/22 23:54:07 $
00187  */
00188 

Tekkotsu v2.2.2
Generated Tue Jan 4 15:43:13 2005 by Doxygen 1.4.0