00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef BASE_LAYER_H
00024 #define BASE_LAYER_H
00025
00026 #include "BatteryAccess.h"
00027 #include "PassedMessage.h"
00028
00038 class BaseLayer : public BatteryAccess
00039 {
00040 protected:
00041
00044 int upperGateIn;
00045 int upperGateOut;
00046 int lowerGateIn;
00047 int lowerGateOut;
00048 int upperControlIn;
00049 int upperControlOut;
00050 int lowerControlIn;
00051 int lowerControlOut;
00052
00056 bool doStats;
00058 int catPassedMsg;
00060 PassedMessage *passedMsg;
00062 int hostId;
00063
00064 public:
00065
00066
00068 virtual void initialize(int);
00069
00071 virtual void handleMessage( cMessage* );
00072
00074 virtual void finish();
00075 virtual ~BaseLayer();
00076
00077 protected:
00088
00091 virtual void handleSelfMsg(cMessage* msg) = 0;
00092
00098 virtual void handleUpperMsg(cMessage *msg) = 0;
00099
00101 virtual void handleLowerMsg(cMessage *msg) = 0;
00102
00104 virtual void handleLowerControl(cMessage *msg) = 0;
00105
00107 virtual void handleUpperControl(cMessage *msg) = 0;
00108
00123
00131 void sendDown(cMessage *msg);
00132
00140 void sendUp(cMessage *msg);
00141
00143 void sendControlUp(cMessage *msg);
00144
00146 void sendControlDown(cMessage *msg);
00147
00148 void recordPacket(PassedMessage::direction_t dir,
00149 PassedMessage::gates_t gate,
00150 const cMessage *m);
00151
00152
00153
00154
00156 };
00157
00158 #endif