INET Framework for OMNeT++/OMNEST
inet::ieee80211::CtsPolicy Class Reference

#include <CtsPolicy.h>

Inheritance diagram for inet::ieee80211::CtsPolicy:
inet::ieee80211::ModeSetListener inet::ieee80211::ICtsPolicy

Public Member Functions

virtual bool isCtsNeeded (const Ptr< const Ieee80211RtsFrame > &rtsFrame) const override
 
virtual simtime_t computeCtsDurationField (Packet *packet, const Ptr< const Ieee80211RtsFrame > &rtsFrame) const override
 
- Public Member Functions inherited from inet::ieee80211::ICtsPolicy
virtual ~ICtsPolicy ()
 

Protected Member Functions

virtual int numInitStages () const override
 
virtual void initialize (int stage) override
 
virtual simtime_t computeCtsDuration (Packet *rtsPacket, const Ptr< const Ieee80211RtsFrame > &rtsFrame) const
 
- Protected Member Functions inherited from inet::ieee80211::ModeSetListener
virtual void receiveSignal (cComponent *source, simsignal_t signalID, cObject *obj, cObject *details) override
 

Protected Attributes

IRateSelectionrateSelection = nullptr
 
IRxrx = nullptr
 
- Protected Attributes inherited from inet::ieee80211::ModeSetListener
physicallayer::Ieee80211ModeSetmodeSet = nullptr
 

Member Function Documentation

◆ computeCtsDuration()

simtime_t inet::ieee80211::CtsPolicy::computeCtsDuration ( Packet rtsPacket,
const Ptr< const Ieee80211RtsFrame > &  rtsFrame 
) const
protectedvirtual
27 {
28  return rateSelection->computeResponseCtsFrameMode(rtsPacket, rtsFrame)->getDuration(LENGTH_CTS);
29 }

Referenced by computeCtsDurationField().

◆ computeCtsDurationField()

simtime_t inet::ieee80211::CtsPolicy::computeCtsDurationField ( Packet packet,
const Ptr< const Ieee80211RtsFrame > &  rtsFrame 
) const
overridevirtual

Implements inet::ieee80211::ICtsPolicy.

37 {
38  simtime_t duration = rtsFrame->getDurationField() - modeSet->getSifsTime() - computeCtsDuration(rtsPacket, rtsFrame);
39  return duration < 0 ? 0 : duration;
40 }

◆ initialize()

void inet::ieee80211::CtsPolicy::initialize ( int  stage)
overrideprotectedvirtual

Reimplemented from inet::ieee80211::ModeSetListener.

18 {
20  if (stage == INITSTAGE_LOCAL) {
21  rx = check_and_cast<IRx *>(getModuleByPath(par("rxModule")));
22  rateSelection = check_and_cast<IRateSelection *>(getModuleByPath(par("rateSelectionModule")));
23  }
24 }

◆ isCtsNeeded()

bool inet::ieee80211::CtsPolicy::isCtsNeeded ( const Ptr< const Ieee80211RtsFrame > &  rtsFrame) const
overridevirtual

Implements inet::ieee80211::ICtsPolicy.

48 {
49  return rx->isMediumFree();
50 }

◆ numInitStages()

virtual int inet::ieee80211::CtsPolicy::numInitStages ( ) const
inlineoverrideprotectedvirtual

Reimplemented from inet::ieee80211::ModeSetListener.

26 { return NUM_INIT_STAGES; }

Member Data Documentation

◆ rateSelection

IRateSelection* inet::ieee80211::CtsPolicy::rateSelection = nullptr
protected

Referenced by computeCtsDuration(), and initialize().

◆ rx

IRx* inet::ieee80211::CtsPolicy::rx = nullptr
protected

Referenced by initialize(), and isCtsNeeded().


The documentation for this class was generated from the following files:
inet::ieee80211::CtsPolicy::rateSelection
IRateSelection * rateSelection
Definition: CtsPolicy.h:22
inet::ieee80211::ModeSetListener::initialize
virtual void initialize(int stage) override
Definition: ModeSetListener.cc:17
inet::ieee80211::CtsPolicy::computeCtsDuration
virtual simtime_t computeCtsDuration(Packet *rtsPacket, const Ptr< const Ieee80211RtsFrame > &rtsFrame) const
Definition: CtsPolicy.cc:26
inet::physicallayer::IIeee80211Mode::getDuration
virtual const simtime_t getDuration(b dataLength) const =0
inet::ieee80211::IRateSelection::computeResponseCtsFrameMode
virtual const physicallayer::IIeee80211Mode * computeResponseCtsFrameMode(Packet *packet, const Ptr< const Ieee80211RtsFrame > &rtsFrame)=0
inet::ieee80211::IRx::isMediumFree
virtual bool isMediumFree() const =0
inet::ieee80211::LENGTH_CTS
const b LENGTH_CTS
Definition: Ieee80211Frame_m.h:93
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
NUM_INIT_STAGES
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
inet::physicallayer::Ieee80211ModeSet::getSifsTime
simtime_t getSifsTime() const
Definition: Ieee80211ModeSet.h:67
inet::ieee80211::ModeSetListener::modeSet
physicallayer::Ieee80211ModeSet * modeSet
Definition: ModeSetListener.h:19
inet::ieee80211::CtsPolicy::rx
IRx * rx
Definition: CtsPolicy.h:23