blob: b6c07b9eda033f0277d1bf6af378455472f2a70c [file] [log] [blame]
/**
* @author generated by eTrice
*
* Header File of ProtocolClass PTimer
*
*/
#ifndef _ROOM_BASIC_SERVICE_TIMING_PTIMER_H_
#define _ROOM_BASIC_SERVICE_TIMING_PTIMER_H_
#include "common/modelbase/InterfaceItemBase.h"
#include "common/modelbase/PortBase.h"
#include "common/modelbase/ReplicatedInterfaceItemBase.h"
#include "common/modelbase/ReplicatedPortBase.h"
#include "common/etDatatypesCpp.hpp"
/*--------------------- begin user code ---------------------*/
#define ET_TIMER_RUNNING 0x01
#define ET_TIMER_PERIODIC 0x02
/*--------------------- end user code ---------------------*/
class PTimer {
public:
/* message IDs */
typedef enum {
MSG_MIN = 0,
OUT_timeout = 1,
IN_startTimer = 2,
IN_startTimeout = 3,
IN_kill = 4,
MSG_MAX = 5
} msg_ids;
/*--------------------- begin user code ---------------------*/
//uc2
/*--------------------- end user code ---------------------*/
static bool isValidEvtID(int evtId) {
return ((MSG_MIN < evtId) && (evtId < MSG_MAX));
}
static bool isValidOutgoingEvtID(int evtId) {
return ((MSG_MIN < evtId) && (evtId < IN_startTimer));
}
static bool isValidIncomingEvtID(int evtId) {
return ((IN_startTimer <= evtId) && (evtId < MSG_MAX));
}
static const etRuntime::String& getMessageString(int msg_id);
private:
static const etRuntime::String s_messageStrings[];
};
//------------------------------------------------------------------------------------------------------------
// port class
//------------------------------------------------------------------------------------------------------------
class PTimerPort : public etRuntime::PortBase {
public:
PTimerPort(etRuntime::IInterfaceItemOwner* actor, const etRuntime::String& name, int localId);
PTimerPort(etRuntime::IInterfaceItemOwner* actor, const etRuntime::String& name, int localId, int idx);
virtual void destroy();
virtual void receive(const etRuntime::Message* m);
// sent messages
public: void timeout();
private: void timeout_impl();
};
//------------------------------------------------------------------------------------------------------------
// replicated port class
//------------------------------------------------------------------------------------------------------------
class PTimerReplPort : public etRuntime::ReplicatedPortBase {
public:
PTimerReplPort(etRuntime::IInterfaceItemOwner* actor, const etRuntime::String& name, int localId);
int getReplication() const { return getNInterfaceItems(); }
int getIndexOf(const etRuntime::InterfaceItemBase& ifitem) const { return ifitem.getIdx(); }
PTimerPort& get(int idx) const { return *dynamic_cast<PTimerPort*>(getInterfaceItem(idx)); }
// outgoing messages
public: void timeout();
protected:
virtual etRuntime::InterfaceItemBase* createInterfaceItem(etRuntime::IInterfaceItemOwner* rcv, const etRuntime::String& name, int lid, int idx) {
return new PTimerPort(rcv, name, lid, idx);
}
};
//------------------------------------------------------------------------------------------------------------
// conjugated port class
//------------------------------------------------------------------------------------------------------------
class PTimerConjPort : public etRuntime::PortBase {
public:
PTimerConjPort(etRuntime::IInterfaceItemOwner* actor, const etRuntime::String& name, int localId);
PTimerConjPort(etRuntime::IInterfaceItemOwner* actor, const etRuntime::String& name, int localId, int idx);
virtual void destroy();
virtual void receive(const etRuntime::Message* m);
/*--------------------- attributes ---------------------*/
int8 status;
/*--------------------- operations ---------------------*/
// sent messages
public: void startTimer(uint32 transitionData);
private: void startTimer_impl(uint32 transitionData);
public: void startTimeout(uint32 transitionData);
private: void startTimeout_impl(uint32 transitionData);
public: void kill();
private: void kill_impl();
};
//------------------------------------------------------------------------------------------------------------
// conjugated replicated port class
//------------------------------------------------------------------------------------------------------------
class PTimerConjReplPort : public etRuntime::ReplicatedPortBase {
public:
PTimerConjReplPort(etRuntime::IInterfaceItemOwner* actor, const etRuntime::String& name, int localId);
int getReplication() const { return getNInterfaceItems(); }
int getIndexOf(const etRuntime::InterfaceItemBase& ifitem) const { return ifitem.getIdx(); }
PTimerConjPort& get(int idx) const { return *dynamic_cast<PTimerConjPort*>(getInterfaceItem(idx)); }
// incoming messages
public: void startTimer(uint32 transitionData);
public: void startTimeout(uint32 transitionData);
public: void kill();
protected:
virtual etRuntime::InterfaceItemBase* createInterfaceItem(etRuntime::IInterfaceItemOwner* rcv, const etRuntime::String& name, int lid, int idx) {
return new PTimerConjPort(rcv, name, lid, idx);
}
};
#endif /* _ROOM_BASIC_SERVICE_TIMING_PTIMER_H_ */