00001
00002
00003
00004
00005
00006
00007
00008 #ifndef MultiValArrayPULSEGENERATOR_H_
00009 #define MultiValArrayPULSEGENERATOR_H_
00010
00011 #include "EvSimObject.h"
00012 #include "EvSimObjectTypeUtils.h"
00013 #include "DirectEventSender.h"
00014
00015 class MultiValArrayPulseGenerator : public EvSimObject, public DirectEventSender {
00016
00017 EV_SIM_OBJECT( MultiValArrayPulseGenerator )
00018
00019 public:
00020
00021 MultiValArrayPulseGenerator(unsigned short num_val = 2,
00022 const std::vector<unsigned short> & array = vector<unsigned short>(),
00023 bool isActive = true) :
00024 isActive(isActive), array(array), num_val(num_val)
00025 {}
00026
00027
00028 bool isActive;
00029
00030 const std::vector<unsigned short> & getMultiValArray() {
00031 return array;
00032 }
00033
00034 virtual unsigned numOutputPorts() const
00035 {
00036 return num_val;
00037 };
00038
00039 virtual EvSimObject::PortType outputPortType(port_id_t p) const
00040 {
00041 if (p < num_val)
00042 return EvSimObject::eventPortDirect;
00043 return EvSimObject::portUndefined;
00044 }
00045
00046
00047 void setMultiValArray(const std::vector<unsigned short> & array) {
00048 this->array = array;
00049 }
00050
00051 virtual ~MultiValArrayPulseGenerator() {}
00052
00053 virtual void reset(SimContext &sim_ctxt);
00054
00055 virtual void eventHit(SimContext & sim_ctxt, Time time, port_id_t port);
00056
00057 protected:
00058 vector<unsigned short> array;
00059 unsigned short num_val;
00060 unsigned curr_idx;
00061 };
00062
00063
00064 #endif