#include <RecipientBlockAckProcedure.h>
Referenced by processReceivedBlockAckReq().
57 if (
auto basicBlockAckReq = dynamic_cast<Ieee80211BasicBlockAckReq*>(blockAckReq)) {
58 ASSERT(agreement !=
nullptr);
59 Ieee80211BasicBlockAck *blockAck =
new Ieee80211BasicBlockAck(
"BasicBlockAck");
60 int startingSequenceNumber = basicBlockAckReq->getStartingSequenceNumber();
61 for (
SequenceNumber seqNum = startingSequenceNumber; seqNum < startingSequenceNumber + 64; seqNum++) {
62 BitVector &bitmap = blockAck->getBlockAckBitmap(seqNum - startingSequenceNumber);
64 bool ackState = agreement->getBlockAckRecord()->getAckState(seqNum, fragNum);
65 bitmap.setBit(fragNum, ackState);
68 blockAck->setReceiverAddress(blockAckReq->getTransmitterAddress());
69 blockAck->setCompressedBitmap(
false);
70 blockAck->setStartingSequenceNumber(basicBlockAckReq->getStartingSequenceNumber());
71 blockAck->setTidInfo(basicBlockAckReq->getTidInfo());
75 throw cRuntimeError(
"Unsupported Block Ack Request");
int16_t SequenceNumber
Definition: Ieee80211Defs.h:26
int8_t FragmentNumber
Definition: Ieee80211Defs.h:27
Implements inet::ieee80211::IRecipientBlockAckProcedure.
32 if (
auto basicBlockAckReq = dynamic_cast<Ieee80211BasicBlockAckReq*>(blockAckReq)) {
33 auto agreement = blockAckAgreementHandler->getAgreement(basicBlockAckReq->getTidInfo(), basicBlockAckReq->getTransmitterAddress());
34 if (ackPolicy->isBlockAckNeeded(basicBlockAckReq, agreement)) {
36 blockAck->setDuration(ackPolicy->computeBasicBlockAckDurationField(basicBlockAckReq));
37 callback->transmitControlResponseFrame(blockAck, basicBlockAckReq);
41 throw cRuntimeError(
"Unsupported BlockAckReq");
int numReceivedBlockAckReq
Definition: RecipientBlockAckProcedure.h:32
virtual Ieee80211BlockAck * buildBlockAck(Ieee80211BlockAckReq *blockAckReq, RecipientBlockAckAgreement *agreement)
Definition: RecipientBlockAckProcedure.cc:55
void inet::ieee80211::RecipientBlockAckProcedure::processTransmittedBlockAck |
( |
Ieee80211BlockAck * |
blockAck | ) |
|
|
overridevirtual |
int inet::ieee80211::RecipientBlockAckProcedure::numReceivedBlockAckReq = 0 |
|
protected |
int inet::ieee80211::RecipientBlockAckProcedure::numSentBlockAck = 0 |
|
protected |
The documentation for this class was generated from the following files: