|
INET Framework for OMNeT++/OMNEST
|
Implements IEEE 802.11 Enhanced Distributed Channel Access Function.
More...
#include <Edcaf.h>
Implements IEEE 802.11 Enhanced Distributed Channel Access Function.
◆ ~Edcaf()
| inet::ieee80211::Edcaf::~Edcaf |
( |
| ) |
|
|
virtual |
◆ calculateTimingParameters()
| void inet::ieee80211::Edcaf::calculateTimingParameters |
( |
| ) |
|
|
protectedvirtual |
75 int aifsn = par(
"aifsn");
79 EV_DEBUG <<
"Timing parameters are initialized: slotTime = " <<
slotTime <<
", sifs = " <<
sifs <<
", ifs = " <<
ifs <<
", eifs = " <<
eifs << std::endl;
88 EV_DEBUG <<
"Contention window parameters are initialized: cw = " <<
cw <<
", cwMin = " <<
cwMin <<
", cwMax = " <<
cwMax << std::endl;
◆ channelAccessGranted()
| void inet::ieee80211::Edcaf::channelAccessGranted |
( |
| ) |
|
|
overridevirtual |
◆ expectedChannelAccess()
| void inet::ieee80211::Edcaf::expectedChannelAccess |
( |
simtime_t |
time | ) |
|
|
overridevirtual |
◆ getAccessCategory() [1/2]
◆ getAccessCategory() [2/2]
| AccessCategory inet::ieee80211::Edcaf::getAccessCategory |
( |
const char * |
ac | ) |
|
|
protectedvirtual |
◆ getAckHandler()
| virtual QosAckHandler* inet::ieee80211::Edcaf::getAckHandler |
( |
| ) |
const |
|
inlinevirtual |
◆ getAifsNumber()
112 case AC_BK:
return 7;
113 case AC_BE:
return 3;
114 case AC_VI:
return 2;
115 case AC_VO:
return 2;
116 default:
throw cRuntimeError(
"Unknown access category = %d",
ac);
◆ getCw()
| virtual int inet::ieee80211::Edcaf::getCw |
( |
| ) |
|
|
inlineoverridevirtual |
◆ getCwMax()
| int inet::ieee80211::Edcaf::getCwMax |
( |
AccessCategory |
ac, |
|
|
int |
aCwMax, |
|
|
int |
aCwMin |
|
) |
| |
|
protectedvirtual |
180 case AC_BK:
return aCwMax;
181 case AC_BE:
return aCwMax;
182 case AC_VI:
return aCwMin;
183 case AC_VO:
return (aCwMin + 1) / 2 - 1;
184 default:
throw cRuntimeError(
"Unknown access category = %d",
ac);
◆ getCwMin()
| int inet::ieee80211::Edcaf::getCwMin |
( |
AccessCategory |
ac, |
|
|
int |
aCwMin |
|
) |
| |
|
protectedvirtual |
191 case AC_BK:
return aCwMin;
192 case AC_BE:
return aCwMin;
193 case AC_VI:
return (aCwMin + 1) / 2 - 1;
194 case AC_VO:
return (aCwMin + 1) / 4 - 1;
195 default:
throw cRuntimeError(
"Unknown access category = %d",
ac);
◆ getInProgressFrames()
◆ getPendingQueue()
◆ getRecoveryProcedure()
◆ getStationRetryCounters()
◆ getTxopProcedure()
| virtual TxopProcedure* inet::ieee80211::Edcaf::getTxopProcedure |
( |
| ) |
const |
|
inlinevirtual |
◆ incrementCw()
| void inet::ieee80211::Edcaf::incrementCw |
( |
| ) |
|
|
overridevirtual |
◆ initialize()
| void inet::ieee80211::Edcaf::initialize |
( |
int |
stage | ) |
|
|
overrideprotectedvirtual |
Reimplemented from inet::ieee80211::ModeSetListener.
34 contention = check_and_cast<IContention *>(getSubmodule(
"contention"));
35 collisionController = check_and_cast<IEdcaCollisionController *>(getModuleByPath(par(
"collisionControllerModule")));
36 pendingQueue = check_and_cast<queueing::IPacketQueue *>(getSubmodule(
"pendingQueue"));
37 recoveryProcedure = check_and_cast<QosRecoveryProcedure *>(getSubmodule(
"recoveryProcedure"));
38 ackHandler = check_and_cast<QosAckHandler *>(getSubmodule(
"ackHandler"));
39 inProgressFrames = check_and_cast<InProgressFrames *>(getSubmodule(
"inProgressFrames"));
40 txopProcedure = check_and_cast<TxopProcedure *>(getSubmodule(
"txopProcedure"));
53 auto rx = check_and_cast<IRx *>(getModuleByPath(par(
"rxModule")));
◆ isInternalCollision()
| bool inet::ieee80211::Edcaf::isInternalCollision |
( |
| ) |
|
|
virtual |
◆ isOwning()
| virtual bool inet::ieee80211::Edcaf::isOwning |
( |
| ) |
|
|
inlinevirtual |
◆ numInitStages()
| virtual int inet::ieee80211::Edcaf::numInitStages |
( |
| ) |
const |
|
inlineoverrideprotectedvirtual |
◆ receiveSignal()
| void inet::ieee80211::Edcaf::receiveSignal |
( |
cComponent * |
source, |
|
|
simsignal_t |
signalID, |
|
|
cObject * |
obj, |
|
|
cObject * |
details |
|
) |
| |
|
overrideprotectedvirtual |
◆ refreshDisplay()
| void inet::ieee80211::Edcaf::refreshDisplay |
( |
| ) |
const |
|
overrideprotectedvirtual |
65 text +=
"\nContending";
68 getDisplayString().setTagArg(
"t", 0, text.c_str());
◆ releaseChannel()
◆ requestChannel()
◆ resetCw()
| void inet::ieee80211::Edcaf::resetCw |
( |
| ) |
|
|
overridevirtual |
◆ ac
◆ ackHandler
◆ callback
◆ collisionController
◆ contention
| IContention* inet::ieee80211::Edcaf::contention = nullptr |
|
protected |
◆ cw
| int inet::ieee80211::Edcaf::cw = -1 |
|
protected |
◆ cwMax
| int inet::ieee80211::Edcaf::cwMax = -1 |
|
protected |
◆ cwMin
| int inet::ieee80211::Edcaf::cwMin = -1 |
|
protected |
◆ eifs
| simtime_t inet::ieee80211::Edcaf::eifs = -1 |
|
protected |
◆ ifs
| simtime_t inet::ieee80211::Edcaf::ifs = -1 |
|
protected |
◆ inProgressFrames
◆ owning
| bool inet::ieee80211::Edcaf::owning = false |
|
protected |
◆ pendingQueue
◆ recoveryProcedure
◆ sifs
| simtime_t inet::ieee80211::Edcaf::sifs = -1 |
|
protected |
◆ slotTime
| simtime_t inet::ieee80211::Edcaf::slotTime = -1 |
|
protected |
◆ stationRetryCounters
◆ txopProcedure
The documentation for this class was generated from the following files:
virtual void calculateTimingParameters()
Definition: Edcaf.cc:71
QosRecoveryProcedure * recoveryProcedure
Definition: Edcaf.h:40
virtual bool isInternalCollision(Edcaf *channelAccess)=0
InProgressFrames * inProgressFrames
Definition: Edcaf.h:47
AccessCategory ac
Definition: Edcaf.h:56
virtual void startContention(int cw, simtime_t ifs, simtime_t eifs, simtime_t slotTime, ICallback *callback)=0
StationRetryCounters * stationRetryCounters
Definition: Edcaf.h:38
virtual bool isContentionInProgress()=0
NetworkInterface * getContainingNicModule(const cModule *from)
Find the nic module (inside the networkNode) containing the given module.
Definition: NetworkInterface.cc:691
virtual int getCwMin(AccessCategory ac, int aCwMin)
Definition: Edcaf.cc:188
simsignal_t modesetChangedSignal
Definition: Simsignals.cc:24
virtual const simtime_t getDuration(b dataLength) const =0
@ AC_BK
Definition: AccessCategory.h:20
static simsignal_t channelOwnershipChangedSignal
Definition: IChannelAccess.h:19
const IIeee80211Mode * getSlowestMandatoryMode() const
Definition: Ieee80211ModeSet.cc:565
const b LENGTH_ACK
Definition: Ieee80211Frame_m.h:94
std::string printAccessCategory(AccessCategory ac)
Definition: AccessCategory.h:27
@ AC_BE
Definition: AccessCategory.h:21
int cwMin
Definition: Edcaf.h:58
virtual int getAifsNumber(AccessCategory ac)
Definition: Edcaf.cc:109
QosAckHandler * ackHandler
Definition: Edcaf.h:39
virtual void channelGranted(IChannelAccess *channelAccess)=0
double fallback(double a, double b)
Definition: Edcaf.cc:21
bool owning
Definition: Edcaf.h:49
simtime_t ifs
Definition: Edcaf.h:53
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
int getCwMin() const
Definition: Ieee80211ModeSet.h:70
virtual AccessCategory getAccessCategory()
Definition: Edcaf.h:103
int cwMax
Definition: Edcaf.h:59
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
int cw
Definition: Edcaf.h:57
@ AC_VI
Definition: AccessCategory.h:22
simtime_t getSlotTime() const
Definition: Ieee80211ModeSet.h:68
simtime_t getSifsTime() const
Definition: Ieee80211ModeSet.h:67
physicallayer::Ieee80211ModeSet * modeSet
Definition: ModeSetListener.h:19
#define Enter_Method(...)
Definition: SelfDoc.h:71
@ AC_VO
Definition: AccessCategory.h:23
IChannelAccess::ICallback * callback
Definition: Edcaf.h:35
queueing::IPacketQueue * pendingQueue
Definition: Edcaf.h:46
simtime_t slotTime
Definition: Edcaf.h:51
simtime_t eifs
Definition: Edcaf.h:54
virtual void expectedChannelAccess(Edcaf *channelAccess, simtime_t time)=0
simtime_t sifs
Definition: Edcaf.h:52
TxopProcedure * txopProcedure
Definition: Edcaf.h:43
int getCwMax() const
Definition: Ieee80211ModeSet.h:71
virtual int getCwMax(AccessCategory ac, int aCwMax, int aCwMin)
Definition: Edcaf.cc:177
INET_API InitStage INITSTAGE_LINK_LAYER
Initialization of link-layer protocols.
IEdcaCollisionController * collisionController
Definition: Edcaf.h:36
IContention * contention
Definition: Edcaf.h:34