00001
00002
00003
00004
00005
00006
00007
00008 #ifndef BINARYARRAYPULSEGENERATOR_H_
00009 #define BINARYARRAYPULSEGENERATOR_H_
00010
00011 #include "EvSimObject.h"
00012 #include "EvSimObjectTypeUtils.h"
00013 #include "DirectEventSender.h"
00014
00015 class BinaryArrayPulseGenerator : public EvSimObject, public DirectEventSender {
00016
00017 EV_SIM_OBJECT( BinaryArrayPulseGenerator )
00018
00019 public:
00020
00021 BinaryArrayPulseGenerator(const std::vector<bool> & bin_array = vector<bool>(),
00022 bool isActive = true) :
00023 isActive(isActive), bin_array(bin_array)
00024 {}
00025
00026
00027 bool isActive;
00028
00029 const std::vector<bool> & getBinaryArray() {
00030 return bin_array;
00031 }
00032
00033 virtual unsigned numOutputPorts() const
00034 {
00035 return 2;
00036 };
00037
00038 virtual EvSimObject::PortType outputPortType(port_id_t p) const
00039 {
00040 if (p == 0 || p == 1)
00041 return EvSimObject::eventPortDirect;
00042 return EvSimObject::portUndefined;
00043 }
00044
00045
00046 void setBinaryArray(const std::vector<bool> & bin_array) {
00047 this->bin_array = bin_array;
00048 }
00049
00050 virtual ~BinaryArrayPulseGenerator() {}
00051
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<bool> bin_array;
00059 unsigned curr_idx;
00060 };
00061
00062
00063 #endif