|
INET Framework for OMNeT++/OMNEST
|
#include <OriginatorQosAckPolicy.h>
◆ checkAgreementPolicy()
118 bool bufferFull = agreement->getBufferSize() == agreement->getNumSentBaPolicyFrames();
119 bool aMsduOk = agreement->getIsAMsduSupported() || !header->getAMsduPresent();
121 return !bufferFull && aMsduOk && (header->getSequenceNumber() >= agreement->getStartingSequenceNumber());
Referenced by computeAckPolicy().
◆ computeAckPolicy()
◆ computeBlockAckReqParameters()
Implements inet::ieee80211::IOriginatorQoSAckPolicy.
81 for (
auto outstandingFrames : outstandingFramesPerReceiver) {
83 auto largestOutstandingFrames = outstandingFramesPerReceiver.begin();
84 for (
auto it = outstandingFramesPerReceiver.begin(); it != outstandingFramesPerReceiver.end(); it++) {
85 if (it->second.size() > largestOutstandingFrames->second.size())
86 largestOutstandingFrames = it;
88 MacAddress receiverAddress = largestOutstandingFrames->first;
90 Tid tid = largestOutstandingFrames->second.at(0)->peekAtFront<Ieee80211DataHeader>()->getTid();
91 return std::make_tuple(receiverAddress, startingSequenceNumber, tid);
◆ computeStartingSequenceNumber()
| SequenceNumberCyclic inet::ieee80211::OriginatorQosAckPolicy::computeStartingSequenceNumber |
( |
const std::vector< Packet * > & |
outstandingFrames | ) |
const |
|
protectedvirtual |
45 ASSERT(outstandingFrames.size() > 0);
46 auto startingSequenceNumber = outstandingFrames[0]->peekAtFront<Ieee80211DataHeader>()->getSequenceNumber();
47 for (
size_t i = 1; i < outstandingFrames.size(); i++) {
48 auto seqNum = outstandingFrames[i]->peekAtFront<Ieee80211DataHeader>()->getSequenceNumber();
49 if (seqNum < startingSequenceNumber)
50 startingSequenceNumber = seqNum;
52 return startingSequenceNumber;
Referenced by computeBlockAckReqParameters().
◆ getAckTimeout()
| simtime_t inet::ieee80211::OriginatorQosAckPolicy::getAckTimeout |
( |
Packet * |
packet, |
|
|
const Ptr< const Ieee80211DataOrMgmtHeader > & |
dataOrMgmtHeader |
|
) |
| const |
|
overridevirtual |
◆ getBlockAckTimeout()
| simtime_t inet::ieee80211::OriginatorQosAckPolicy::getBlockAckTimeout |
( |
Packet * |
packet, |
|
|
const Ptr< const Ieee80211BlockAckReq > & |
blockAckReq |
|
) |
| const |
|
overridevirtual |
◆ getOutstandingFramesPerReceiver()
| std::map< MacAddress, std::vector< Packet * > > inet::ieee80211::OriginatorQosAckPolicy::getOutstandingFramesPerReceiver |
( |
InProgressFrames * |
inProgressFrames | ) |
const |
|
protectedvirtual |
36 auto outstandingFrames = inProgressFrames->getOutstandingFrames();
37 std::map<MacAddress, std::vector<Packet *>> outstandingFramesPerReceiver;
38 for (
auto frame : outstandingFrames)
39 outstandingFramesPerReceiver[frame->peekAtFront<Ieee80211MacHeader>()->getReceiverAddress()].push_back(frame);
40 return outstandingFramesPerReceiver;
Referenced by computeBlockAckReqParameters(), and isBlockAckReqNeeded().
◆ initialize()
| void inet::ieee80211::OriginatorQosAckPolicy::initialize |
( |
int |
stage | ) |
|
|
overrideprotectedvirtual |
◆ isAckNeeded()
| bool inet::ieee80211::OriginatorQosAckPolicy::isAckNeeded |
( |
const Ptr< const Ieee80211MgmtHeader > & |
header | ) |
const |
|
overridevirtual |
◆ isBlockAckPolicyEligibleFrame()
| bool inet::ieee80211::OriginatorQosAckPolicy::isBlockAckPolicyEligibleFrame |
( |
Packet * |
packet, |
|
|
const Ptr< const Ieee80211DataHeader > & |
header |
|
) |
| const |
|
overridevirtual |
◆ isBlockAckReqNeeded()
◆ isCompressedBlockAckReq()
| bool inet::ieee80211::OriginatorQosAckPolicy::isCompressedBlockAckReq |
( |
const std::vector< Packet * > & |
outstandingFrames, |
|
|
int |
startingSequenceNumber |
|
) |
| const |
|
protectedvirtual |
◆ numInitStages()
| virtual int inet::ieee80211::OriginatorQosAckPolicy::numInitStages |
( |
| ) |
const |
|
inlineoverrideprotectedvirtual |
◆ ackTimeout
| simtime_t inet::ieee80211::OriginatorQosAckPolicy::ackTimeout = -1 |
|
protected |
◆ blockAckReqThreshold
| int inet::ieee80211::OriginatorQosAckPolicy::blockAckReqThreshold = -1 |
|
protected |
◆ blockAckTimeout
| simtime_t inet::ieee80211::OriginatorQosAckPolicy::blockAckTimeout = -1 |
|
protected |
◆ maxBlockAckPolicyFrameLength
| int inet::ieee80211::OriginatorQosAckPolicy::maxBlockAckPolicyFrameLength = -1 |
|
protected |
◆ rateSelection
The documentation for this class was generated from the following files:
int maxBlockAckPolicyFrameLength
Definition: OriginatorQosAckPolicy.h:23
virtual bool isBlockAckPolicyEligibleFrame(Packet *packet, const Ptr< const Ieee80211DataHeader > &header) const override
Definition: OriginatorQosAckPolicy.cc:111
@ BLOCK_ACK
Definition: Ieee80211Frame_m.h:196
virtual std::map< MacAddress, std::vector< Packet * > > getOutstandingFramesPerReceiver(InProgressFrames *inProgressFrames) const
Definition: OriginatorQosAckPolicy.cc:34
virtual void initialize(int stage) override
Definition: ModeSetListener.cc:17
simtime_t ackTimeout
Definition: OriginatorQosAckPolicy.h:27
virtual const physicallayer::IIeee80211Mode * computeResponseAckFrameMode(Packet *packet, const Ptr< const Ieee80211DataOrMgmtHeader > &dataOrMgmtHeader)=0
int8_t Tid
Definition: Ieee80211Defs.h:17
IQosRateSelection * rateSelection
Definition: OriginatorQosAckPolicy.h:22
virtual const simtime_t getPhyRxStartDelay() const =0
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
simtime_t blockAckTimeout
Definition: OriginatorQosAckPolicy.h:26
virtual SequenceNumberCyclic computeStartingSequenceNumber(const std::vector< Packet * > &outstandingFrames) const
Definition: OriginatorQosAckPolicy.cc:43
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
simtime_t getSlotTime() const
Definition: Ieee80211ModeSet.h:68
@ ST_DATA_WITH_QOS
Definition: Ieee80211Frame_m.h:169
virtual const physicallayer::IIeee80211Mode * computeResponseBlockAckFrameMode(Packet *packet, const Ptr< const Ieee80211BlockAckReq > &blockAckReq)=0
simtime_t getSifsTime() const
Definition: Ieee80211ModeSet.h:67
physicallayer::Ieee80211ModeSet * modeSet
Definition: ModeSetListener.h:19
virtual bool checkAgreementPolicy(const Ptr< const Ieee80211DataHeader > &header, OriginatorBlockAckAgreement *agreement) const
Definition: OriginatorQosAckPolicy.cc:116
static const MacAddress UNSPECIFIED_ADDRESS
The unspecified MAC address, 00:00:00:00:00:00.
Definition: MacAddress.h:31
int blockAckReqThreshold
Definition: OriginatorQosAckPolicy.h:24
@ NORMAL_ACK
Definition: Ieee80211Frame_m.h:193