Decider.h

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_*/