#include <OriginatorBlockAckAgreementHandler.h>
◆ ~OriginatorBlockAckAgreementHandler()
| inet::ieee80211::OriginatorBlockAckAgreementHandler::~OriginatorBlockAckAgreementHandler |
( |
| ) |
|
|
virtual |
◆ blockAckAgreementExpired()
Implements inet::ieee80211::IOriginatorBlockAckAgreementHandler.
42 simtime_t now = simTime();
44 auto agreement =
id.second;
45 if (agreement->getExpirationTime() == now) {
46 MacAddress receiverAddr =
id.first.first;
47 Tid tid =
id.first.second;
48 const auto& delba =
buildDelba(receiverAddr, tid, 39);
49 auto delbaPacket =
new Packet(
"Delba", delba);
50 procedureCallback->processMgmtFrame(delbaPacket, delba);
◆ buildAddbaRequest()
58 auto addbaRequest = makeShared<Ieee80211AddbaRequest>();
59 addbaRequest->setReceiverAddress(receiverAddr);
60 addbaRequest->setTid(tid);
61 addbaRequest->setAMsduSupported(blockAckAgreementPolicy->isMsduSupported());
62 addbaRequest->setBlockAckTimeoutValue(blockAckAgreementPolicy->getBlockAckTimeoutValue());
63 addbaRequest->setBufferSize(blockAckAgreementPolicy->getMaximumAllowedBufferSize());
65 addbaRequest->setBlockAckPolicy(blockAckAgreementPolicy->isDelayedAckPolicySupported() ? 0 : 1);
66 addbaRequest->setStartingSequenceNumber(startingSequenceNumber);
Referenced by processTransmittedDataFrame().
◆ buildDelba()
| const Ptr< Ieee80211Delba > inet::ieee80211::OriginatorBlockAckAgreementHandler::buildDelba |
( |
MacAddress |
receiverAddr, |
|
|
Tid |
tid, |
|
|
int |
reasonCode |
|
) |
| |
|
protectedvirtual |
104 auto delba = makeShared<Ieee80211Delba>();
105 delba->setReceiverAddress(receiverAddr);
107 delba->setReasonCode(reasonCode);
109 delba->setInitiator(
true);
Referenced by blockAckAgreementExpired().
◆ computeEarliestExpirationTime()
| simtime_t inet::ieee80211::OriginatorBlockAckAgreementHandler::computeEarliestExpirationTime |
( |
| ) |
|
|
protectedvirtual |
24 simtime_t earliestTime = SIMTIME_MAX;
26 auto agreement =
id.second;
27 if (agreement->getIsAddbaResponseReceived()) {
28 ASSERT(earliestTime >= 0);
29 ASSERT(agreement->getExpirationTime() >= 0);
30 earliestTime =
std::min(earliestTime, agreement->getExpirationTime());
Referenced by scheduleInactivityTimer().
◆ createAgreement()
| void inet::ieee80211::OriginatorBlockAckAgreementHandler::createAgreement |
( |
const Ptr< const Ieee80211AddbaRequest > & |
addbaRequest | ) |
|
|
protectedvirtual |
17 OriginatorBlockAckAgreement *blockAckAgreement =
new OriginatorBlockAckAgreement(addbaRequest->getReceiverAddress(), addbaRequest->getTid(), addbaRequest->getStartingSequenceNumber(), addbaRequest->getBufferSize(), addbaRequest->getAMsduSupported(), addbaRequest->getBlockAckPolicy() == 0);
18 auto agreementId = std::make_pair(addbaRequest->getReceiverAddress(), addbaRequest->getTid());
Referenced by processTransmittedDataFrame().
◆ getAgreement()
◆ processReceivedAddbaResp()
◆ processReceivedBlockAck()
Implements inet::ieee80211::IOriginatorBlockAckAgreementHandler.
76 if (
auto basicBlockAck = dynamicPtrCast<const Ieee80211BasicBlockAck>(blockAck)) {
77 auto agreement =
getAgreement(basicBlockAck->getTransmitterAddress(), basicBlockAck->getTidInfo());
79 agreement->setStartingSequenceNumber(basicBlockAck->getStartingSequenceNumber());
80 agreement->calculateExpirationTime();
85 throw cRuntimeError(
"Unsupported BlockAck");
◆ processReceivedDelba()
◆ processTransmittedAddbaReq()
| void inet::ieee80211::OriginatorBlockAckAgreementHandler::processTransmittedAddbaReq |
( |
const Ptr< const Ieee80211AddbaRequest > & |
addbaReq | ) |
|
|
overridevirtual |
◆ processTransmittedDataFrame()
Implements inet::ieee80211::IOriginatorBlockAckAgreementHandler.
126 auto agreement =
getAgreement(dataHeader->getReceiverAddress(), dataHeader->getTid());
127 if (blockAckAgreementPolicy->isAddbaReqNeeded(packet, dataHeader) && agreement ==
nullptr) {
128 auto addbaReq =
buildAddbaRequest(dataHeader->getReceiverAddress(), dataHeader->getTid(), dataHeader->getSequenceNumber() + 1, blockAckAgreementPolicy);
130 auto addbaPacket =
new Packet(
"AddbaReq", addbaReq);
131 callback->processMgmtFrame(addbaPacket, addbaReq);
◆ processTransmittedDelba()
| void inet::ieee80211::OriginatorBlockAckAgreementHandler::processTransmittedDelba |
( |
const Ptr< const Ieee80211Delba > & |
delba | ) |
|
|
overridevirtual |
◆ scheduleInactivityTimer()
◆ terminateAgreement()
| void inet::ieee80211::OriginatorBlockAckAgreementHandler::terminateAgreement |
( |
MacAddress |
originatorAddr, |
|
|
Tid |
tid |
|
) |
| |
|
protectedvirtual |
◆ updateAgreement()
149 agreement->setIsAddbaResponseReceived(
true);
150 agreement->setBufferSize(addbaResp->getBufferSize());
151 agreement->setBlockAckTimeoutValue(addbaResp->getBlockAckTimeoutValue());
152 agreement->calculateExpirationTime();
Referenced by processReceivedAddbaResp().
◆ blockAckAgreements
The documentation for this class was generated from the following files: