|
INET Framework for OMNeT++/OMNEST
|
Implements IEEE 802.11 Distributed Coordination Function.
More...
#include <Dcf.h>
|
| virtual int | numInitStages () const override |
| |
| virtual void | initialize (int stage) override |
| |
| virtual void | forEachChild (cVisitor *v) override |
| |
| virtual void | handleMessage (cMessage *msg) override |
| |
| virtual void | updateDisplayString () const |
| |
| virtual void | sendUp (const std::vector< Packet * > &completeFrames) |
| |
| virtual bool | hasFrameToTransmit () |
| |
| virtual bool | isReceptionInProgress () |
| |
| virtual FrameSequenceContext * | buildContext () |
| |
| virtual void | recipientProcessReceivedFrame (Packet *packet, const Ptr< const Ieee80211MacHeader > &header) |
| |
| virtual void | recipientProcessReceivedControlFrame (Packet *packet, const Ptr< const Ieee80211MacHeader > &header) |
| |
| virtual void | recipientProcessTransmittedControlResponseFrame (Packet *packet, const Ptr< const Ieee80211MacHeader > &header) |
| |
| virtual void | channelGranted (IChannelAccess *channelAccess) override |
| |
| virtual void | transmitFrame (Packet *packet, simtime_t ifs) override |
| |
| virtual void | originatorProcessRtsProtectionFailed (Packet *packet) override |
| |
| virtual void | originatorProcessTransmittedFrame (Packet *packet) override |
| |
| virtual void | originatorProcessReceivedFrame (Packet *packet, Packet *lastTransmittedPacket) override |
| |
| virtual void | originatorProcessFailedFrame (Packet *packet) override |
| |
| virtual void | frameSequenceFinished () override |
| |
| virtual void | scheduleStartRxTimer (simtime_t timeout) override |
| |
| virtual void | transmissionComplete (Packet *packet, const Ptr< const Ieee80211MacHeader > &header) override |
| |
| virtual void | transmitControlResponseFrame (Packet *responsePacket, const Ptr< const Ieee80211MacHeader > &responseHeader, Packet *receivedPacket, const Ptr< const Ieee80211MacHeader > &receivedHeader) override |
| |
| virtual void | processMgmtFrame (Packet *mgmtPacket, const Ptr< const Ieee80211MgmtHeader > &mgmtHeader) override |
| |
| virtual bool | isSentByUs (const Ptr< const Ieee80211MacHeader > &header) const |
| |
| virtual bool | isForUs (const Ptr< const Ieee80211MacHeader > &header) const |
| |
| virtual void | receiveSignal (cComponent *source, simsignal_t signalID, cObject *obj, cObject *details) override |
| |
Implements IEEE 802.11 Distributed Coordination Function.
◆ ~Dcf()
| inet::ieee80211::Dcf::~Dcf |
( |
| ) |
|
|
virtual |
◆ buildContext()
◆ channelGranted()
| void inet::ieee80211::Dcf::channelGranted |
( |
IChannelAccess * |
channelAccess | ) |
|
|
overrideprotectedvirtual |
◆ corruptedFrameReceived()
| void inet::ieee80211::Dcf::corruptedFrameReceived |
( |
| ) |
|
|
overridevirtual |
◆ forEachChild()
| void inet::ieee80211::Dcf::forEachChild |
( |
cVisitor * |
v | ) |
|
|
overrideprotectedvirtual |
53 cSimpleModule::forEachChild(v);
◆ frameSequenceFinished()
| void inet::ieee80211::Dcf::frameSequenceFinished |
( |
| ) |
|
|
overrideprotectedvirtual |
◆ handleMessage()
| void inet::ieee80211::Dcf::handleMessage |
( |
cMessage * |
msg | ) |
|
|
overrideprotectedvirtual |
67 throw cRuntimeError(
"Unknown msg type");
◆ hasFrameToTransmit()
| bool inet::ieee80211::Dcf::hasFrameToTransmit |
( |
| ) |
|
|
protectedvirtual |
◆ initialize()
| void inet::ieee80211::Dcf::initialize |
( |
int |
stage | ) |
|
|
overrideprotectedvirtual |
Reimplemented from inet::ieee80211::ModeSetListener.
30 tx = check_and_cast<ITx *>(getModuleByPath(par(
"txModule")));
31 rx = check_and_cast<IRx *>(getModuleByPath(par(
"rxModule")));
32 channelAccess = check_and_cast<Dcaf *>(getSubmodule(
"channelAccess"));
33 originatorDataService = check_and_cast<IOriginatorMacDataService *>(getSubmodule((
"originatorMacDataService")));
34 recipientDataService = check_and_cast<IRecipientMacDataService *>(getSubmodule(
"recipientMacDataService"));
35 recoveryProcedure = check_and_cast<NonQosRecoveryProcedure *>(getSubmodule(
"recoveryProcedure"));
36 rateSelection = check_and_cast<IRateSelection *>(getSubmodule(
"rateSelection"));
38 rtsPolicy = check_and_cast<IRtsPolicy *>(getSubmodule(
"rtsPolicy"));
40 recipientAckPolicy = check_and_cast<IRecipientAckPolicy *>(getSubmodule(
"recipientAckPolicy"));
41 originatorAckPolicy = check_and_cast<IOriginatorAckPolicy *>(getSubmodule(
"originatorAckPolicy"));
43 ackHandler = check_and_cast<AckHandler *>(getSubmodule(
"ackHandler"));
45 ctsPolicy = check_and_cast<ICtsPolicy *>(getSubmodule(
"ctsPolicy"));
◆ isForUs()
| bool inet::ieee80211::Dcf::isForUs |
( |
const Ptr< const Ieee80211MacHeader > & |
header | ) |
const |
|
protectedvirtual |
371 return header->getReceiverAddress() ==
mac->
getAddress() || (header->getReceiverAddress().isMulticast() && !
isSentByUs(header));
◆ isReceptionInProgress()
| bool inet::ieee80211::Dcf::isReceptionInProgress |
( |
| ) |
|
|
protectedvirtual |
◆ isSentByUs()
| bool inet::ieee80211::Dcf::isSentByUs |
( |
const Ptr< const Ieee80211MacHeader > & |
header | ) |
const |
|
protectedvirtual |
379 if (
auto dataOrMgmtHeader = dynamicPtrCast<const Ieee80211DataOrMgmtHeader>(header))
◆ numInitStages()
| virtual int inet::ieee80211::Dcf::numInitStages |
( |
| ) |
const |
|
inlineoverrideprotectedvirtual |
◆ originatorProcessFailedFrame()
| void inet::ieee80211::Dcf::originatorProcessFailedFrame |
( |
Packet * |
packet | ) |
|
|
overrideprotectedvirtual |
Implements inet::ieee80211::IFrameSequenceHandler::ICallback.
339 EV_INFO <<
"Data/Mgmt frame transmission failed\n";
340 const auto& failedHeader = failedPacket->peekAtFront<Ieee80211DataOrMgmtHeader>();
350 if (retryLimitReached) {
354 EV_INFO <<
"Dropping frame " << failedPacket->getName() <<
", because retry limit is reached.\n";
355 PacketDropDetails details;
357 details.setLimit(-1);
362 EV_INFO <<
"Retrying frame " << failedPacket->getName() <<
".\n";
363 auto h = failedPacket->removeAtFront<Ieee80211DataOrMgmtHeader>();
365 failedPacket->insertAtFront(
h);
◆ originatorProcessReceivedFrame()
| void inet::ieee80211::Dcf::originatorProcessReceivedFrame |
( |
Packet * |
packet, |
|
|
Packet * |
lastTransmittedPacket |
|
) |
| |
|
overrideprotectedvirtual |
Implements inet::ieee80211::IFrameSequenceHandler::ICallback.
313 EV_INFO <<
"Processing received frame " << receivedPacket->getName() <<
" as originator in frame sequence.\n";
315 auto receivedHeader = receivedPacket->peekAtFront<Ieee80211MacHeader>();
316 auto lastTransmittedHeader = lastTransmittedPacket->peekAtFront<Ieee80211MacHeader>();
317 if (receivedHeader->getType() ==
ST_ACK) {
318 auto lastTransmittedDataOrMgmtHeader = dynamicPtrCast<const Ieee80211DataOrMgmtHeader>(lastTransmittedHeader);
320 int retryCount = lastTransmittedHeader->getRetry() ?
recoveryProcedure->
getRetryCount(lastTransmittedPacket, lastTransmittedDataOrMgmtHeader) : 0;
328 else if (receivedHeader->getType() ==
ST_RTS)
330 else if (receivedHeader->getType() ==
ST_CTS)
333 throw cRuntimeError(
"Unknown frame type");
◆ originatorProcessRtsProtectionFailed()
| void inet::ieee80211::Dcf::originatorProcessRtsProtectionFailed |
( |
Packet * |
packet | ) |
|
|
overrideprotectedvirtual |
Implements inet::ieee80211::IFrameSequenceHandler::ICallback.
269 EV_INFO <<
"RTS frame transmission failed\n";
270 auto protectedHeader = packet->peekAtFront<Ieee80211DataOrMgmtHeader>();
277 EV_INFO <<
"Dropping RTS/CTS protected frame " << packet->getName() <<
", because retry limit is reached.\n";
278 PacketDropDetails details;
◆ originatorProcessTransmittedFrame()
| void inet::ieee80211::Dcf::originatorProcessTransmittedFrame |
( |
Packet * |
packet | ) |
|
|
overrideprotectedvirtual |
Implements inet::ieee80211::IFrameSequenceHandler::ICallback.
289 EV_INFO <<
"Processing transmitted frame " << packet->getName() <<
" as originator in frame sequence.\n";
291 auto transmittedHeader = packet->peekAtFront<Ieee80211MacHeader>();
292 if (
auto dataOrMgmtHeader = dynamicPtrCast<const Ieee80211DataOrMgmtHeader>(transmittedHeader)) {
297 else if (dataOrMgmtHeader->getReceiverAddress().isMulticast()) {
302 else if (
auto rtsFrame = dynamicPtrCast<const Ieee80211RtsFrame>(transmittedHeader)) {
304 auto protectedHeader = protectedFrame->
peekAtFront<Ieee80211DataOrMgmtHeader>();
◆ processLowerFrame()
Implements inet::ieee80211::ICoordinationFunction.
146 Enter_Method(
"processLowerFrame(%s)", packet->getName());
148 EV_INFO <<
"Processing lower frame: " << packet->getName() << endl;
156 EV_INFO <<
"This frame is not for us" << std::endl;
157 PacketDropDetails details;
167 EV_INFO <<
"This frame is not for us" << std::endl;
168 PacketDropDetails details;
◆ processMgmtFrame()
◆ processUpperFrame()
Implements inet::ieee80211::ICoordinationFunction.
93 Enter_Method(
"processUpperFrame(%s)", packet->getName());
95 EV_INFO <<
"Processing upper frame: " << packet->getName() << endl;
98 if (!pendingQueue->isEmpty()) {
99 EV_DETAIL <<
"Requesting channel" << endl;
◆ recipientProcessReceivedControlFrame()
| void inet::ieee80211::Dcf::recipientProcessReceivedControlFrame |
( |
Packet * |
packet, |
|
|
const Ptr< const Ieee80211MacHeader > & |
header |
|
) |
| |
|
protectedvirtual |
238 if (
auto rtsFrame = dynamicPtrCast<const Ieee80211RtsFrame>(header))
241 throw cRuntimeError(
"Unknown control frame");
◆ recipientProcessReceivedFrame()
| void inet::ieee80211::Dcf::recipientProcessReceivedFrame |
( |
Packet * |
packet, |
|
|
const Ptr< const Ieee80211MacHeader > & |
header |
|
) |
| |
|
protectedvirtual |
215 EV_INFO <<
"Processing received frame " << packet->getName() <<
" as recipient.\n";
217 if (
auto dataOrMgmtHeader = dynamicPtrCast<const Ieee80211DataOrMgmtHeader>(header))
219 if (
auto dataHeader = dynamicPtrCast<const Ieee80211DataHeader>(header))
221 else if (
auto mgmtHeader = dynamicPtrCast<const Ieee80211MgmtHeader>(header))
◆ recipientProcessTransmittedControlResponseFrame()
| void inet::ieee80211::Dcf::recipientProcessTransmittedControlResponseFrame |
( |
Packet * |
packet, |
|
|
const Ptr< const Ieee80211MacHeader > & |
header |
|
) |
| |
|
protectedvirtual |
130 if (
auto ctsFrame = dynamicPtrCast<const Ieee80211CtsFrame>(header))
132 else if (
auto ackFrame = dynamicPtrCast<const Ieee80211AckFrame>(header))
135 throw cRuntimeError(
"Unknown control response frame");
◆ scheduleStartRxTimer()
| void inet::ieee80211::Dcf::scheduleStartRxTimer |
( |
simtime_t |
timeout | ) |
|
|
overrideprotectedvirtual |
◆ sendUp()
| void inet::ieee80211::Dcf::sendUp |
( |
const std::vector< Packet * > & |
completeFrames | ) |
|
|
protectedvirtual |
232 for (
auto frame : completeFrames)
◆ transmissionComplete()
◆ transmitControlResponseFrame()
Implements inet::ieee80211::IProcedureCallback.
107 responsePacket->insertAtBack(makeShared<Ieee80211MacTrailer>());
109 if (
auto rtsFrame = dynamicPtrCast<const Ieee80211RtsFrame>(receivedHeader))
111 else if (
auto dataOrMgmtHeader = dynamicPtrCast<const Ieee80211DataOrMgmtHeader>(receivedHeader))
114 throw cRuntimeError(
"Unknown received frame type");
117 EV_DEBUG <<
"Datarate for " << responsePacket->getName() <<
" is set to " << responseMode->
getDataMode()->
getNetBitrate() <<
".\n";
119 delete responsePacket;
◆ transmitFrame()
| void inet::ieee80211::Dcf::transmitFrame |
( |
Packet * |
packet, |
|
|
simtime_t |
ifs |
|
) |
| |
|
overrideprotectedvirtual |
Implements inet::ieee80211::IFrameSequenceHandler::ICallback.
178 const auto& header = packet->peekAtFront<Ieee80211MacHeader>();
182 EV_DEBUG <<
"Datarate for " << packet->getName() <<
" is set to " << mode->getDataMode()->getNetBitrate() <<
".\n";
185 const auto& updatedHeader = packet->removeAtFront<Ieee80211MacHeader>();
186 updatedHeader->setDurationField(duration);
187 EV_DEBUG <<
"Duration for " << packet->getName() <<
" is set to " << duration <<
" s.\n";
188 packet->insertAtFront(updatedHeader);
189 tx->
transmitFrame(packet, packet->peekAtFront<Ieee80211MacHeader>(), ifs,
this);
◆ updateDisplayString()
| void inet::ieee80211::Dcf::updateDisplayString |
( |
| ) |
const |
|
protectedvirtual |
74 getDisplayString().setTagArg(
"t", 0, (
"Fs: " + history).c_str());
77 getDisplayString().removeTag(
"t");
◆ ackHandler
| AckHandler* inet::ieee80211::Dcf::ackHandler = nullptr |
|
protected |
◆ channelAccess
| Dcaf* inet::ieee80211::Dcf::channelAccess = nullptr |
|
protected |
◆ ctsPolicy
| ICtsPolicy* inet::ieee80211::Dcf::ctsPolicy = nullptr |
|
protected |
◆ ctsProcedure
◆ dataAndMgmtRateControl
| IRateControl* inet::ieee80211::Dcf::dataAndMgmtRateControl = nullptr |
|
protected |
◆ frameSequenceHandler
◆ mac
◆ originatorAckPolicy
◆ originatorDataService
◆ originatorProtectionMechanism
◆ rateSelection
◆ receiveLifetimeHandler
◆ recipientAckPolicy
◆ recipientAckProcedure
◆ recipientDataService
◆ recoveryProcedure
◆ rtsPolicy
| IRtsPolicy* inet::ieee80211::Dcf::rtsPolicy = nullptr |
|
protected |
◆ rtsProcedure
◆ rx
| IRx* inet::ieee80211::Dcf::rx = nullptr |
|
protected |
◆ startRxTimer
| cMessage* inet::ieee80211::Dcf::startRxTimer = nullptr |
|
protected |
◆ stationRetryCounters
◆ transmitLifetimeHandler
◆ tx
| ITx* inet::ieee80211::Dcf::tx = nullptr |
|
protected |
The documentation for this class was generated from the following files:
virtual void sendDownPendingRadioConfigMsg()
Definition: Ieee80211Mac.cc:366
virtual void enqueuePacket(Packet *packet)=0
Enqueues the packet into the packet queue.
IRtsPolicy * rtsPolicy
Definition: Dcf.h:67
virtual Status getAckStatus(SequenceControlField id)
Definition: AckHandler.cc:24
virtual bool isSentByUs(const Ptr< const Ieee80211MacHeader > &header) const
Definition: Dcf.cc:374
virtual const physicallayer::IIeee80211Mode * computeMode(Packet *packet, const Ptr< const Ieee80211MacHeader > &header)=0
virtual void ackFrameReceived(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &ackedHeader, StationRetryCounters *stationCounters)
Definition: NonQosRecoveryProcedure.cc:105
virtual bool isRetryLimitReached(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &failedHeader)
Definition: NonQosRecoveryProcedure.cc:185
virtual void multicastFrameTransmitted(StationRetryCounters *stationCounters)
Definition: NonQosRecoveryProcedure.cc:77
ICtsPolicy * ctsPolicy
Definition: Dcf.h:69
virtual void recipientProcessReceivedFrame(Packet *packet, const Ptr< const Ieee80211MacHeader > &header)
Definition: Dcf.cc:213
simsignal_t packetReceivedFromPeerSignal
Definition: Simsignals.cc:94
virtual void processFailedFrame(const Ptr< const Ieee80211DataOrMgmtHeader > &dataOrMgmtHeader)
Definition: AckHandler.cc:79
virtual void releaseChannel(IChannelAccess::ICallback *callback) override
Definition: Dcaf.cc:110
virtual bool isReceptionInProgress()
Definition: Dcf.cc:208
virtual std::vector< Packet * > managementFrameReceived(Packet *mgmtPacket, const Ptr< const Ieee80211MgmtHeader > &mgmtHeader)=0
Dcaf * channelAccess
Definition: Dcf.h:55
virtual void requestChannel(IChannelAccess::ICallback *callback) override
Definition: Dcaf.cc:119
virtual void processReceivedAck(const Ptr< const Ieee80211AckFrame > &ack, const Ptr< const Ieee80211DataOrMgmtHeader > &ackedHeader)
Definition: AckHandler.cc:36
@ ST_ACK
Definition: Ieee80211Frame_m.h:165
virtual Packet * getPendingFrameFor(Packet *frame)
Definition: InProgressFrames.cc:95
virtual std::vector< Packet * > controlFrameReceived(Packet *controlPacket, const Ptr< const Ieee80211MacHeader > &controlHeader)=0
simsignal_t linkBrokenSignal
Definition: Simsignals.cc:22
virtual void processTransmittedCts(const Ptr< const Ieee80211CtsFrame > &ctsFrame)=0
ICtsProcedure * ctsProcedure
Definition: Dcf.h:68
virtual void processTransmittedRts(const Ptr< const Ieee80211RtsFrame > &rtsFrame)=0
simsignal_t packetSentToPeerSignal
Definition: Simsignals.cc:93
const Ptr< const Chunk > peekAtFront(b length=b(-1), int flags=0) const
Returns the designated part from the beginning of the data part of the packet as an immutable chunk i...
Definition: Packet.h:245
@ RETRY_LIMIT_REACHED
Definition: Simsignals_m.h:78
Ieee80211Mac * mac
Definition: Dcf.h:43
static void setFrameMode(Packet *packet, const Ptr< const Ieee80211MacHeader > &header, const physicallayer::IIeee80211Mode *mode)
Definition: RateSelection.cc:165
virtual const IIeee80211DataMode * getDataMode() const =0
IRtsProcedure * rtsProcedure
Definition: Dcf.h:66
cMessage * startRxTimer
Definition: Dcf.h:46
virtual void ctsFrameReceived(StationRetryCounters *stationCounters)
Definition: NonQosRecoveryProcedure.cc:93
virtual bool isEmpty() const =0
Returns true if there are no packets available in the collection.
virtual void processTransmittedAck(const Ptr< const Ieee80211AckFrame > &ack)=0
IRecipientAckProcedure * recipientAckProcedure
Definition: Dcf.h:64
virtual int getShortRetryLimit()
Definition: NonQosRecoveryProcedure.h:69
NetworkInterface * getContainingNicModule(const cModule *from)
Find the nic module (inside the networkNode) containing the given module.
Definition: NetworkInterface.cc:691
virtual void initialize(int stage) override
Definition: ModeSetListener.cc:17
virtual bps getNetBitrate() const =0
virtual simtime_t computeDurationField(Packet *packet, const Ptr< const Ieee80211MacHeader > &header, Packet *pendingPacket, const Ptr< const Ieee80211DataOrMgmtHeader > &pendingHeader)
Definition: OriginatorProtectionMechanism.cc:93
ITx * tx
Definition: Dcf.h:50
virtual bool hasInProgressFrames()
Definition: InProgressFrames.h:52
IOriginatorMacDataService * originatorDataService
Definition: Dcf.h:58
IRecipientMacDataService * recipientDataService
Definition: Dcf.h:59
virtual int getCw() override
Definition: Dcaf.h:64
simsignal_t packetDroppedSignal
Definition: Simsignals.cc:85
virtual void processReceivedRts(Packet *rtsPacket, const Ptr< const Ieee80211RtsFrame > &rtsFrame, ICtsPolicy *ctsPolicy, IProcedureCallback *callback)=0
virtual const IFrameSequence * getFrameSequence() const =0
virtual void processResponse(Packet *frame)=0
virtual const MacAddress & getAddress() const
Definition: Ieee80211Mac.h:101
virtual void transmitFrame(Packet *packet, const Ptr< const Ieee80211MacHeader > &header, ICallback *callback)=0
virtual bool isRtsFrameRetryLimitReached(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &protectedHeader)
Definition: NonQosRecoveryProcedure.cc:229
virtual bool isForUs(const Ptr< const Ieee80211MacHeader > &header) const
Definition: Dcf.cc:369
virtual const physicallayer::IIeee80211Mode * computeResponseCtsFrameMode(Packet *packet, const Ptr< const Ieee80211RtsFrame > &rtsFrame)=0
int getStationLongRetryCount() const
Definition: StationRetryCounters.h:23
virtual int getRetryCount(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &header)
Definition: NonQosRecoveryProcedure.cc:193
IRecipientAckPolicy * recipientAckPolicy
Definition: Dcf.h:65
virtual int getLongRetryCount(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &dataOrMgmtHeader)
Definition: NonQosRecoveryProcedure.cc:206
virtual FrameSequenceContext * buildContext()
Definition: Dcf.cc:244
virtual int getShortRetryCount(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &dataOrMgmtHeader)
Definition: NonQosRecoveryProcedure.cc:201
Definition: IIeee80211Mode.h:49
static simsignal_t frameSequenceStartedSignal
Definition: IFrameSequenceHandler.h:21
virtual void dropFrame(Packet *packet)
Definition: InProgressFrames.cc:126
IRateSelection * rateSelection
Definition: Dcf.h:52
virtual void transmissionComplete()=0
StationRetryCounters * stationRetryCounters
Definition: Dcf.h:83
virtual void processReceivedFrame(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &dataOrMgmtHeader, IRecipientAckPolicy *ackPolicy, IProcedureCallback *callback)=0
virtual void processTransmittedDataOrMgmtFrame(const Ptr< const Ieee80211DataOrMgmtHeader > &header)
Definition: AckHandler.cc:45
static simsignal_t datarateSelectedSignal
Definition: IRateSelection.h:27
virtual void retryLimitReached(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &header)
Definition: NonQosRecoveryProcedure.cc:132
AckHandler * ackHandler
Definition: Dcf.h:62
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
virtual void sendUp(const std::vector< Packet * > &completeFrames)
Definition: Dcf.cc:230
@ ST_DATA_WITH_QOS
Definition: Ieee80211Frame_m.h:169
simtime_t getSifsTime() const
Definition: Ieee80211ModeSet.h:67
virtual void dropFrame(const Ptr< const Ieee80211DataOrMgmtHeader > &dataOrMgmtHeader)
Definition: AckHandler.cc:90
physicallayer::Ieee80211ModeSet * modeSet
Definition: ModeSetListener.h:19
virtual const FrameSequenceContext * getContext() const =0
IFrameSequenceHandler * frameSequenceHandler
Definition: Dcf.h:80
virtual void recipientProcessTransmittedControlResponseFrame(Packet *packet, const Ptr< const Ieee80211MacHeader > &header)
Definition: Dcf.cc:127
#define Enter_Method(...)
Definition: SelfDoc.h:71
NonQosRecoveryProcedure * recoveryProcedure
Definition: Dcf.h:70
virtual void frameTransmitted(Packet *frame, int retryCount, bool isSuccessful, bool isGivenUp)=0
virtual void handleStartRxTimeout()=0
const value_type & get() const
Definition: Units.h:108
virtual std::vector< Packet * > dataFrameReceived(Packet *dataPacket, const Ptr< const Ieee80211DataHeader > &dataHeader)=0
virtual bool isSequenceRunning()=0
virtual void rtsFrameTransmissionFailed(const Ptr< const Ieee80211DataOrMgmtHeader > &protectedHeader, StationRetryCounters *stationCounters)
Definition: NonQosRecoveryProcedure.cc:173
IRateControl * dataAndMgmtRateControl
Definition: Dcf.h:44
IOriginatorAckPolicy * originatorAckPolicy
Definition: Dcf.h:63
@ ST_CTS
Definition: Ieee80211Frame_m.h:164
virtual Packet * getFrameToTransmit()
Definition: InProgressFrames.cc:85
virtual bool isReceptionInProgress() const =0
virtual const physicallayer::IIeee80211Mode * computeResponseAckFrameMode(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &dataOrMgmtHeader)=0
virtual void sendUpFrame(Packet *frame)
Definition: Ieee80211Mac.cc:345
virtual void updateDisplayString() const
Definition: Dcf.cc:70
virtual void startFrameSequence(IFrameSequence *frameSequence, FrameSequenceContext *context, ICallback *callback)=0
virtual queueing::IPacketQueue * getPendingQueue() const
Definition: Dcaf.h:50
virtual bool isAckNeeded(const Ptr< const Ieee80211DataOrMgmtHeader > &header) const =0
virtual bool hasFrameToTransmit()
Definition: Dcf.cc:261
static simsignal_t frameSequenceFinishedSignal
Definition: IFrameSequenceHandler.h:22
virtual InProgressFrames * getInProgressFrames() const
Definition: Dcaf.h:51
@ NOT_ADDRESSED_TO_US
Definition: Simsignals_m.h:76
IRx * rx
Definition: Dcf.h:49
int getStationShortRetryCount() const
Definition: StationRetryCounters.h:24
OriginatorProtectionMechanism * originatorProtectionMechanism
Definition: Dcf.h:77
const value< double, compose< units::J, units::s > > h(6.62606896e-34)
INET_API InitStage INITSTAGE_LINK_LAYER
Initialization of link-layer protocols.
virtual void recipientProcessReceivedControlFrame(Packet *packet, const Ptr< const Ieee80211MacHeader > &header)
Definition: Dcf.cc:236
virtual void dataOrMgmtFrameTransmissionFailed(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &failedHeader, StationRetryCounters *stationCounters)
Definition: NonQosRecoveryProcedure.cc:158
virtual std::string getHistory() const =0
@ ST_RTS
Definition: Ieee80211Frame_m.h:163