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
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149