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

Implements the ARF and AARF rate control algorithms. More...

#include <AarfRateControl.h>

Inheritance diagram for inet::ieee80211::AarfRateControl:
inet::ieee80211::RateControlBase inet::ieee80211::ModeSetListener inet::ieee80211::IRateControl

Public Member Functions

virtual const physicallayer::IIeee80211ModegetRate () override
 
virtual void frameTransmitted (Packet *frame, int retryCount, bool isSuccessful, bool isGivenUp) override
 
virtual void frameReceived (Packet *frame) override
 
- Public Member Functions inherited from inet::ieee80211::IRateControl
virtual ~IRateControl ()
 

Protected Member Functions

virtual int numInitStages () const override
 
virtual void initialize (int stage) override
 
virtual void handleMessage (cMessage *msg) override
 
virtual void multiplyIncreaseThreshold (double factor)
 
virtual void resetIncreaseThreshdold ()
 
virtual void resetTimer ()
 
virtual void increaseRateIfTimerIsExpired ()
 
virtual void updateDisplayString () const
 
- Protected Member Functions inherited from inet::ieee80211::RateControlBase
virtual void receiveSignal (cComponent *source, simsignal_t signalID, cObject *obj, cObject *details) override
 
virtual void emitDatarateChangedSignal ()
 
const physicallayer::IIeee80211ModeincreaseRateIfPossible (const physicallayer::IIeee80211Mode *currentMode)
 
const physicallayer::IIeee80211ModedecreaseRateIfPossible (const physicallayer::IIeee80211Mode *currentMode)
 

Protected Attributes

simtime_t timer = SIMTIME_ZERO
 
simtime_t interval = SIMTIME_ZERO
 
bool probing = false
 
int increaseThreshold = -1
 
int maxIncreaseThreshold = -1
 
int decreaseThreshold = -1
 
double factor = -1
 
int numberOfConsSuccTransmissions = 0
 
- Protected Attributes inherited from inet::ieee80211::RateControlBase
const physicallayer::IIeee80211ModecurrentMode = nullptr
 
- Protected Attributes inherited from inet::ieee80211::ModeSetListener
physicallayer::Ieee80211ModeSetmodeSet = nullptr
 

Additional Inherited Members

- Static Public Attributes inherited from inet::ieee80211::RateControlBase
static simsignal_t datarateChangedSignal = cComponent::registerSignal("datarateChanged")
 

Detailed Description

Implements the ARF and AARF rate control algorithms.

Member Function Documentation

◆ frameReceived()

void inet::ieee80211::AarfRateControl::frameReceived ( Packet frame)
overridevirtual

Implements inet::ieee80211::IRateControl.

116 {
117 }

◆ frameTransmitted()

void inet::ieee80211::AarfRateControl::frameTransmitted ( Packet frame,
int  retryCount,
bool  isSuccessful,
bool  isGivenUp 
)
overridevirtual

Implements inet::ieee80211::IRateControl.

50 {
52 
53  if (!isSuccessful && probing) { // probing packet failed
58  EV_DETAIL << "Decreased rate to " << *currentMode << endl;
60  resetTimer();
61  }
62  else if (!isSuccessful && retryCount >= decreaseThreshold - 1) { // decreaseThreshold consecutive failed transmissions
67  EV_DETAIL << "Decreased rate to " << *currentMode << endl;
69  resetTimer();
70  }
71  else if (isSuccessful && retryCount == 0)
73 
79  EV_DETAIL << "Increased rate to " << *currentMode << endl;
80  resetTimer();
81  probing = true;
82  }
83  else
84  probing = false;
85 
86 }

◆ getRate()

const IIeee80211Mode * inet::ieee80211::AarfRateControl::getRate ( )
overridevirtual

Implements inet::ieee80211::IRateControl.

120 {
121  Enter_Method("getRate");
123  EV_INFO << "The current mode is " << currentMode << " the net bitrate is " << currentMode->getDataMode()->getNetBitrate() << std::endl;
124  return currentMode;
125 }

◆ handleMessage()

void inet::ieee80211::AarfRateControl::handleMessage ( cMessage *  msg)
overrideprotectedvirtual
40 {
41  throw cRuntimeError("This module doesn't handle self messages");
42 }

◆ increaseRateIfTimerIsExpired()

void inet::ieee80211::AarfRateControl::increaseRateIfTimerIsExpired ( )
protectedvirtual
105 {
106  if (simTime() - timer >= interval) {
110  EV_DETAIL << "Increased rate to " << *currentMode << endl;
111  resetTimer();
112  }
113 }

◆ initialize()

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

Reimplemented from inet::ieee80211::RateControlBase.

18 {
20  if (stage == INITSTAGE_LOCAL) {
21  factor = par("increaseThresholdFactor");
22  increaseThreshold = par("increaseThreshold");
23  maxIncreaseThreshold = par("maxIncreaseThreshold");
24  decreaseThreshold = par("decreaseThreshold");
25  interval = par("interval");
26  WATCH(factor);
27  WATCH(increaseThreshold);
28  WATCH(maxIncreaseThreshold);
29  WATCH(decreaseThreshold);
30  WATCH(interval);
31  WATCH(probing);
33  }
34  else if (stage == INITSTAGE_LINK_LAYER) {
36  }
37 }

◆ multiplyIncreaseThreshold()

void inet::ieee80211::AarfRateControl::multiplyIncreaseThreshold ( double  factor)
protectedvirtual

◆ numInitStages()

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

Reimplemented from inet::ieee80211::RateControlBase.

33 { return NUM_INIT_STAGES; }

◆ resetIncreaseThreshdold()

void inet::ieee80211::AarfRateControl::resetIncreaseThreshdold ( )
protectedvirtual
95 {
96  increaseThreshold = par("increaseThreshold");
97 }

◆ resetTimer()

void inet::ieee80211::AarfRateControl::resetTimer ( )
protectedvirtual
100 {
101  timer = simTime();
102 }

◆ updateDisplayString()

void inet::ieee80211::AarfRateControl::updateDisplayString ( ) const
protectedvirtual
45 {
46  getDisplayString().setTagArg("t", 0, currentMode->getName());
47 }

Member Data Documentation

◆ decreaseThreshold

int inet::ieee80211::AarfRateControl::decreaseThreshold = -1
protected

◆ factor

double inet::ieee80211::AarfRateControl::factor = -1
protected

◆ increaseThreshold

int inet::ieee80211::AarfRateControl::increaseThreshold = -1
protected

◆ interval

simtime_t inet::ieee80211::AarfRateControl::interval = SIMTIME_ZERO
protected

◆ maxIncreaseThreshold

int inet::ieee80211::AarfRateControl::maxIncreaseThreshold = -1
protected

◆ numberOfConsSuccTransmissions

int inet::ieee80211::AarfRateControl::numberOfConsSuccTransmissions = 0
protected

◆ probing

bool inet::ieee80211::AarfRateControl::probing = false
protected

◆ timer

simtime_t inet::ieee80211::AarfRateControl::timer = SIMTIME_ZERO
protected

The documentation for this class was generated from the following files:
inet::ieee80211::AarfRateControl::probing
bool probing
Definition: AarfRateControl.h:24
inet::ieee80211::AarfRateControl::increaseThreshold
int increaseThreshold
Definition: AarfRateControl.h:25
inet::ieee80211::AarfRateControl::interval
simtime_t interval
Definition: AarfRateControl.h:23
inet::physicallayer::IIeee80211Mode::getDataMode
virtual const IIeee80211DataMode * getDataMode() const =0
inet::ieee80211::AarfRateControl::multiplyIncreaseThreshold
virtual void multiplyIncreaseThreshold(double factor)
Definition: AarfRateControl.cc:88
inet::ieee80211::AarfRateControl::numberOfConsSuccTransmissions
int numberOfConsSuccTransmissions
Definition: AarfRateControl.h:30
inet::ieee80211::AarfRateControl::factor
double factor
Definition: AarfRateControl.h:28
inet::physicallayer::IIeee80211DataMode::getNetBitrate
virtual bps getNetBitrate() const =0
inet::ieee80211::AarfRateControl::updateDisplayString
virtual void updateDisplayString() const
Definition: AarfRateControl.cc:44
inet::ieee80211::AarfRateControl::increaseRateIfTimerIsExpired
virtual void increaseRateIfTimerIsExpired()
Definition: AarfRateControl.cc:104
inet::ieee80211::RateControlBase::initialize
virtual void initialize(int stage) override
Definition: RateControlBase.cc:19
inet::ieee80211::AarfRateControl::resetIncreaseThreshdold
virtual void resetIncreaseThreshdold()
Definition: AarfRateControl.cc:94
inet::ieee80211::AarfRateControl::timer
simtime_t timer
Definition: AarfRateControl.h:22
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::IIeee80211Mode::getName
virtual const char * getName() const =0
inet::ieee80211::AarfRateControl::decreaseThreshold
int decreaseThreshold
Definition: AarfRateControl.h:27
Enter_Method
#define Enter_Method(...)
Definition: SelfDoc.h:71
inet::ieee80211::RateControlBase::decreaseRateIfPossible
const physicallayer::IIeee80211Mode * decreaseRateIfPossible(const physicallayer::IIeee80211Mode *currentMode)
Definition: RateControlBase.cc:30
inet::ieee80211::RateControlBase::currentMode
const physicallayer::IIeee80211Mode * currentMode
Definition: RateControlBase.h:23
inet::ieee80211::RateControlBase::emitDatarateChangedSignal
virtual void emitDatarateChangedSignal()
Definition: RateControlBase.cc:36
inet::ieee80211::RateControlBase::increaseRateIfPossible
const physicallayer::IIeee80211Mode * increaseRateIfPossible(const physicallayer::IIeee80211Mode *currentMode)
Definition: RateControlBase.cc:24
inet::INITSTAGE_LINK_LAYER
INET_API InitStage INITSTAGE_LINK_LAYER
Initialization of link-layer protocols.
inet::ieee80211::AarfRateControl::maxIncreaseThreshold
int maxIncreaseThreshold
Definition: AarfRateControl.h:26
inet::ieee80211::AarfRateControl::resetTimer
virtual void resetTimer()
Definition: AarfRateControl.cc:99