00001 /* -*- mode:c++ -*- ******************************************************** 00002 * 00003 * 00004 * 00005 */ 00006 00007 #ifndef DECIDER_H_ 00008 #define DECIDER_H_ 00009 00010 #include <omnetpp.h> 00011 00012 #include "DeciderToPhyInterface.h" 00013 #include "Signal_.h" 00014 #include "ChannelSenseRequest_m.h" 00015 #include "ChannelState.h" 00016 00017 00018 00031 class DeciderResult 00032 { 00033 protected: 00035 bool isCorrect; 00036 public: 00037 00038 virtual ~DeciderResult() {} 00039 00044 DeciderResult(bool isCorrect = true): 00045 isCorrect(isCorrect) {} 00046 00050 virtual bool isSignalCorrect() const; 00051 00052 }; 00053 00054 00068 class Decider 00069 { 00070 protected: 00072 DeciderToPhyInterface* phy; 00073 00075 const simtime_t notAgain; 00076 00078 typedef DeciderToPhyInterface::AirFrameVector AirFrameVector; 00079 00080 public: 00081 00085 Decider(DeciderToPhyInterface* phy); 00086 00087 virtual ~Decider() {} 00088 00093 virtual simtime_t processSignal(AirFrame* frame); 00094 00102 virtual ChannelState getChannelState(); 00103 00116 virtual simtime_t handleChannelSenseRequest(ChannelSenseRequest* request); 00117 00122 virtual void finish() {} 00123 00134 virtual void channelChanged(int newChannel) {} 00135 00136 }; 00137 00138 00139 #endif /*DECIDER_H_*/