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

Implements the Onoe rate control algorithms. More...

#include <OnoeRateControl.h>

Inheritance diagram for inet::ieee80211::OnoeRateControl:
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 computeMode ()
 
virtual void resetStatisticalVariables ()
 
virtual void computeModeIfTimerIsExpired ()
 
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
 
int numOfRetries = 0
 
int numOfSuccTransmissions = 0
 
int numOfGivenUpTransmissions = 0
 
double avgRetriesPerFrame = 0
 
int credit = 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 Onoe rate control algorithms.

Member Function Documentation

◆ computeMode()

void inet::ieee80211::OnoeRateControl::computeMode ( )
protectedvirtual
72 {
73  int numOfFrameTransmitted = numOfSuccTransmissions + numOfGivenUpTransmissions + numOfRetries;
75 
76  if (numOfSuccTransmissions > 0) {
77  if (numOfFrameTransmitted >= 10 && avgRetriesPerFrame > 1) {
81  EV_DETAIL << "Decreased rate to " << *currentMode << endl;
82  credit = 0;
83  }
84  else if (avgRetriesPerFrame >= 0.1)
85  credit--;
86  else
87  credit++;
88 
89  if (credit >= 10) {
93  EV_DETAIL << "Increased rate to " << *currentMode << endl;
94  credit = 0;
95  }
96 
98  }
99 }

◆ computeModeIfTimerIsExpired()

void inet::ieee80211::OnoeRateControl::computeModeIfTimerIsExpired ( )
protectedvirtual
60 {
61  if (simTime() - timer >= interval) {
62  computeMode();
63  timer = simTime();
64  }
65 }

◆ frameReceived()

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

Implements inet::ieee80211::IRateControl.

68 {
69 }

◆ frameTransmitted()

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

Implements inet::ieee80211::IRateControl.

49 {
51  if (isSuccessful)
53  else if (isGivenUp)
55  if (retryCount > 0)
56  numOfRetries++;
57 }

◆ getRate()

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

Implements inet::ieee80211::IRateControl.

102 {
103  Enter_Method("getRate");
105  EV_INFO << "The current mode is " << currentMode << " the net bitrate is " << currentMode->getDataMode()->getNetBitrate() << std::endl;
106  return currentMode;
107 }

◆ handleMessage()

void inet::ieee80211::OnoeRateControl::handleMessage ( cMessage *  msg)
overrideprotectedvirtual
44 {
45  throw cRuntimeError("This module doesn't handle self messages");
46 }

◆ initialize()

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

Reimplemented from inet::ieee80211::RateControlBase.

18 {
20  if (stage == INITSTAGE_LOCAL) {
21  interval = par("interval");
22  WATCH(numOfRetries);
23  WATCH(credit);
26  WATCH(avgRetriesPerFrame);
28  }
29 }

◆ numInitStages()

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

Reimplemented from inet::ieee80211::RateControlBase.

33 { return NUM_INIT_STAGES; }

◆ resetStatisticalVariables()

void inet::ieee80211::OnoeRateControl::resetStatisticalVariables ( )
protectedvirtual
37 {
38  numOfRetries = 0;
41 }

◆ updateDisplayString()

void inet::ieee80211::OnoeRateControl::updateDisplayString ( ) const
protectedvirtual
32 {
33  getDisplayString().setTagArg("t", 0, currentMode->getName());
34 }

Member Data Documentation

◆ avgRetriesPerFrame

double inet::ieee80211::OnoeRateControl::avgRetriesPerFrame = 0
protected

◆ credit

int inet::ieee80211::OnoeRateControl::credit = 0
protected

◆ interval

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

◆ numOfGivenUpTransmissions

int inet::ieee80211::OnoeRateControl::numOfGivenUpTransmissions = 0
protected

◆ numOfRetries

int inet::ieee80211::OnoeRateControl::numOfRetries = 0
protected

◆ numOfSuccTransmissions

int inet::ieee80211::OnoeRateControl::numOfSuccTransmissions = 0
protected

◆ timer

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

The documentation for this class was generated from the following files:
inet::ieee80211::OnoeRateControl::credit
int credit
Definition: OnoeRateControl.h:30
inet::ieee80211::OnoeRateControl::numOfGivenUpTransmissions
int numOfGivenUpTransmissions
Definition: OnoeRateControl.h:27
inet::ieee80211::OnoeRateControl::updateDisplayString
virtual void updateDisplayString() const
Definition: OnoeRateControl.cc:31
inet::physicallayer::IIeee80211Mode::getDataMode
virtual const IIeee80211DataMode * getDataMode() const =0
inet::ieee80211::OnoeRateControl::computeMode
virtual void computeMode()
Definition: OnoeRateControl.cc:71
inet::physicallayer::IIeee80211DataMode::getNetBitrate
virtual bps getNetBitrate() const =0
inet::ieee80211::OnoeRateControl::interval
simtime_t interval
Definition: OnoeRateControl.h:23
inet::ieee80211::RateControlBase::initialize
virtual void initialize(int stage) override
Definition: RateControlBase.cc:19
inet::ieee80211::OnoeRateControl::numOfSuccTransmissions
int numOfSuccTransmissions
Definition: OnoeRateControl.h:26
inet::ieee80211::OnoeRateControl::numOfRetries
int numOfRetries
Definition: OnoeRateControl.h:25
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::ieee80211::OnoeRateControl::timer
simtime_t timer
Definition: OnoeRateControl.h:22
inet::physicallayer::IIeee80211Mode::getName
virtual const char * getName() const =0
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::OnoeRateControl::computeModeIfTimerIsExpired
virtual void computeModeIfTimerIsExpired()
Definition: OnoeRateControl.cc:59
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::ieee80211::OnoeRateControl::resetStatisticalVariables
virtual void resetStatisticalVariables()
Definition: OnoeRateControl.cc:36
inet::ieee80211::OnoeRateControl::avgRetriesPerFrame
double avgRetriesPerFrame
Definition: OnoeRateControl.h:29