#include <RecipientBlockAckProcedure.h>
◆ buildBlockAck()
51 if (
auto basicBlockAckReq = dynamicPtrCast<const Ieee80211BasicBlockAckReq>(blockAckReq)) {
52 ASSERT(agreement !=
nullptr);
53 auto blockAck = makeShared<Ieee80211BasicBlockAck>();
54 auto startingSequenceNumber = basicBlockAckReq->getStartingSequenceNumber();
55 for (
int i = 0; i < 64; i++) {
56 BitVector& bitmap = blockAck->getBlockAckBitmapForUpdate(i);
58 bool ackState = agreement->getBlockAckRecord()->getAckState(startingSequenceNumber + i, fragNum);
59 bitmap.setBit(fragNum, ackState);
62 blockAck->setReceiverAddress(blockAckReq->getTransmitterAddress());
63 blockAck->setCompressedBitmap(
false);
64 blockAck->setStartingSequenceNumber(basicBlockAckReq->getStartingSequenceNumber());
65 blockAck->setTidInfo(basicBlockAckReq->getTidInfo());
69 throw cRuntimeError(
"Unsupported Block Ack Request");
Referenced by processReceivedBlockAckReq().
◆ processReceivedBlockAckReq()
Implements inet::ieee80211::IRecipientBlockAckProcedure.
23 if (
auto basicBlockAckReq = dynamicPtrCast<const Ieee80211BasicBlockAckReq>(blockAckReq)) {
24 auto agreement = blockAckAgreementHandler->getAgreement(basicBlockAckReq->getTidInfo(), basicBlockAckReq->getTransmitterAddress());
25 if (ackPolicy->isBlockAckNeeded(basicBlockAckReq, agreement)) {
27 auto duration = ackPolicy->computeBasicBlockAckDurationField(blockAckPacketReq, basicBlockAckReq);
28 blockAck->setDurationField(duration);
29 auto blockAckPacket =
new Packet(
"BasicBlockAck", blockAck);
30 EV_DEBUG <<
"Duration for " << blockAckPacket->getName() <<
" is set to " << duration <<
" s.\n";
31 callback->transmitControlResponseFrame(blockAckPacket, blockAck, blockAckPacketReq, basicBlockAckReq);
35 throw cRuntimeError(
"Unsupported BlockAckReq");
◆ processTransmittedBlockAck()
| void inet::ieee80211::RecipientBlockAckProcedure::processTransmittedBlockAck |
( |
const Ptr< const Ieee80211BlockAck > & |
blockAck | ) |
|
|
overridevirtual |
◆ numReceivedBlockAckReq
| int inet::ieee80211::RecipientBlockAckProcedure::numReceivedBlockAckReq = 0 |
|
protected |
◆ numSentBlockAck
| int inet::ieee80211::RecipientBlockAckProcedure::numSentBlockAck = 0 |
|
protected |
The documentation for this class was generated from the following files: