Maintains information for a block ack agreement. More...
#include "block-ack-agreement.h"
Public Member Functions | |
BlockAckAgreement (Mac48Address peer, uint8_t tid) | |
Constructor for BlockAckAgreement with given peer and TID. | |
virtual | ~BlockAckAgreement () |
BlockAckReqType | GetBlockAckReqType () const |
Get the type of the Block Ack Requests sent by the originator of this agreement. | |
BlockAckType | GetBlockAckType () const |
Get the type of the Block Acks sent by the recipient of this agreement. | |
uint16_t | GetBufferSize () const |
Return the buffer size. | |
const std::optional< Mac48Address > & | GetGcrGroupAddress () const |
Get the GCR group address of this agreement if it is a GCR Block Ack agreement. | |
Mac48Address | GetPeer () const |
Return the peer address. | |
virtual uint16_t | GetStartingSequence () const |
Return the starting sequence number. | |
uint16_t | GetStartingSequenceControl () const |
Return the starting sequence control. | |
uint8_t | GetTid () const |
Return the Traffic ID (TID). | |
uint16_t | GetTimeout () const |
Return the timeout. | |
uint16_t | GetWinEnd () const |
Return the last sequence number covered by the ack window. | |
bool | IsAmsduSupported () const |
Check whether A-MSDU is supported. | |
bool | IsHtSupported () const |
Check whether HT is supported. | |
bool | IsImmediateBlockAck () const |
Check whether the current ack policy is immediate BlockAck. | |
void | SetAmsduSupport (bool supported) |
Enable or disable A-MSDU support. | |
void | SetBufferSize (uint16_t bufferSize) |
Set buffer size. | |
void | SetDelayedBlockAck () |
Set block ack policy to delayed Ack. | |
void | SetGcrGroupAddress (const Mac48Address &gcrGroupAddress) |
Set the GCR group address for this agreement. | |
void | SetHtSupported (bool htSupported) |
Enable or disable HT support. | |
void | SetImmediateBlockAck () |
Set block ack policy to immediate Ack. | |
void | SetStartingSequence (uint16_t seq) |
Set starting sequence number. | |
void | SetStartingSequenceControl (uint16_t seq) |
Set starting sequence control. | |
void | SetTimeout (uint16_t timeout) |
Set timeout. | |
Static Public Member Functions | |
static std::size_t | GetDistance (uint16_t seqNumber, uint16_t startingSeqNumber) |
Get the distance between the given starting sequence number and the given sequence number. | |
Protected Attributes | |
bool | m_amsduSupported |
Flag whether MSDU aggregation is supported. | |
uint8_t | m_blockAckPolicy |
Type of block ack: immediate or delayed. | |
uint16_t | m_bufferSize |
Buffer size. | |
std::optional< Mac48Address > | m_gcrGroupAddress |
the optional GCR group address | |
bool | m_htSupported |
Flag whether HT is supported. | |
EventId | m_inactivityEvent |
inactivity event | |
Mac48Address | m_peer |
Peer address. | |
uint16_t | m_startingSeq |
Starting sequence control. | |
uint8_t | m_tid |
Traffic ID. | |
uint16_t | m_timeout |
Timeout. | |
uint16_t | m_winEnd |
Ending sequence number. | |
Friends | |
class | HtFrameExchangeManager |
Maintains information for a block ack agreement.
Definition at line 25 of file block-ack-agreement.h.
ns3::BlockAckAgreement::BlockAckAgreement | ( | Mac48Address | peer, |
uint8_t | tid ) |
Constructor for BlockAckAgreement with given peer and TID.
peer | the peer station |
tid | the TID |
Definition at line 22 of file block-ack-agreement.cc.
References NS_LOG_FUNCTION.
|
virtual |
Definition at line 33 of file block-ack-agreement.cc.
References ns3::EventId::Cancel(), m_inactivityEvent, and NS_LOG_FUNCTION.
BlockAckReqType ns3::BlockAckAgreement::GetBlockAckReqType | ( | ) | const |
Get the type of the Block Ack Requests sent by the originator of this agreement.
Definition at line 177 of file block-ack-agreement.cc.
References ns3::BlockAckReqType::BASIC, ns3::BlockAckReqType::COMPRESSED, and m_htSupported.
BlockAckType ns3::BlockAckAgreement::GetBlockAckType | ( | ) | const |
Get the type of the Block Acks sent by the recipient of this agreement.
Definition at line 160 of file block-ack-agreement.cc.
References ns3::BlockAckType::BASIC, ns3::BlockAckType::COMPRESSED, ns3::BlockAckType::GCR, m_bufferSize, m_gcrGroupAddress, m_htSupported, and NS_ASSERT_MSG.
Referenced by ns3::HtFrameExchangeManager::SendBlockAck().
uint16_t ns3::BlockAckAgreement::GetBufferSize | ( | ) | const |
Return the buffer size.
Definition at line 104 of file block-ack-agreement.cc.
References m_bufferSize.
Referenced by GetWinEnd().
|
static |
Get the distance between the given starting sequence number and the given sequence number.
seqNumber | the given sequence number |
startingSeqNumber | the given starting sequence number |
Definition at line 188 of file block-ack-agreement.cc.
References NS_ASSERT, and ns3::SEQNO_SPACE_SIZE.
Referenced by ns3::OriginatorBlockAckAgreement::GetDistance(), ns3::RecipientBlockAckAgreement::NotifyReceivedBar(), ns3::RecipientBlockAckAgreement::NotifyReceivedMpdu(), ns3::RecipientBlockAckAgreement::PassBufferedMpdusUntilFirstLost(), and ns3::RecipientBlockAckAgreement::PassBufferedMpdusWithSeqNumberLessThan().
const std::optional< Mac48Address > & ns3::BlockAckAgreement::GetGcrGroupAddress | ( | ) | const |
Get the GCR group address of this agreement if it is a GCR Block Ack agreement.
Definition at line 201 of file block-ack-agreement.cc.
References m_gcrGroupAddress.
Mac48Address ns3::BlockAckAgreement::GetPeer | ( | ) | const |
Return the peer address.
Definition at line 97 of file block-ack-agreement.cc.
References m_peer, and NS_LOG_FUNCTION.
Referenced by ns3::HtFrameExchangeManager::SendBlockAck().
|
virtual |
Return the starting sequence number.
Reimplemented in ns3::OriginatorBlockAckAgreement.
Definition at line 116 of file block-ack-agreement.cc.
References m_startingSeq.
Referenced by GetWinEnd().
uint16_t ns3::BlockAckAgreement::GetStartingSequenceControl | ( | ) | const |
Return the starting sequence control.
Definition at line 122 of file block-ack-agreement.cc.
References m_startingSeq.
uint8_t ns3::BlockAckAgreement::GetTid | ( | ) | const |
Return the Traffic ID (TID).
Definition at line 91 of file block-ack-agreement.cc.
References m_tid.
Referenced by ns3::HtFrameExchangeManager::SendBlockAck().
uint16_t ns3::BlockAckAgreement::GetTimeout | ( | ) | const |
Return the timeout.
Definition at line 110 of file block-ack-agreement.cc.
References m_timeout.
Referenced by ns3::BlockAckManager::UpdateOriginatorAgreement().
uint16_t ns3::BlockAckAgreement::GetWinEnd | ( | ) | const |
Return the last sequence number covered by the ack window.
Definition at line 141 of file block-ack-agreement.cc.
References GetBufferSize(), GetStartingSequence(), and ns3::SEQNO_SPACE_SIZE.
bool ns3::BlockAckAgreement::IsAmsduSupported | ( | ) | const |
Check whether A-MSDU is supported.
Definition at line 135 of file block-ack-agreement.cc.
References m_amsduSupported.
bool ns3::BlockAckAgreement::IsHtSupported | ( | ) | const |
Check whether HT is supported.
Definition at line 154 of file block-ack-agreement.cc.
References m_htSupported.
bool ns3::BlockAckAgreement::IsImmediateBlockAck | ( | ) | const |
Check whether the current ack policy is immediate BlockAck.
Definition at line 129 of file block-ack-agreement.cc.
References m_blockAckPolicy.
void ns3::BlockAckAgreement::SetAmsduSupport | ( | bool | supported | ) |
Enable or disable A-MSDU support.
supported | enable or disable A-MSDU support |
Definition at line 84 of file block-ack-agreement.cc.
References m_amsduSupported, and NS_LOG_FUNCTION.
Referenced by ns3::BlockAckManager::CreateOriginatorAgreement(), and ns3::BlockAckManager::UpdateOriginatorAgreement().
void ns3::BlockAckAgreement::SetBufferSize | ( | uint16_t | bufferSize | ) |
Set buffer size.
bufferSize | the buffer size (in number of MPDUs) |
Definition at line 40 of file block-ack-agreement.cc.
References m_bufferSize, and NS_LOG_FUNCTION.
Referenced by ns3::BlockAckManager::CreateOriginatorAgreement(), OriginatorBlockAckWindowTest::DoRun(), and ns3::BlockAckManager::UpdateOriginatorAgreement().
void ns3::BlockAckAgreement::SetDelayedBlockAck | ( | ) |
Set block ack policy to delayed Ack.
Definition at line 77 of file block-ack-agreement.cc.
References m_blockAckPolicy, and NS_LOG_FUNCTION.
Referenced by ns3::BlockAckManager::CreateOriginatorAgreement(), ns3::BlockAckManager::CreateRecipientAgreement(), and ns3::BlockAckManager::UpdateOriginatorAgreement().
void ns3::BlockAckAgreement::SetGcrGroupAddress | ( | const Mac48Address & | gcrGroupAddress | ) |
Set the GCR group address for this agreement.
gcrGroupAddress | the GCR group address |
Definition at line 195 of file block-ack-agreement.cc.
References m_gcrGroupAddress.
Referenced by ns3::BlockAckManager::CreateOriginatorAgreement(), ns3::BlockAckManager::CreateRecipientAgreement(), and ns3::BlockAckManager::UpdateOriginatorAgreement().
void ns3::BlockAckAgreement::SetHtSupported | ( | bool | htSupported | ) |
Enable or disable HT support.
htSupported | enable or disable HT support |
Definition at line 147 of file block-ack-agreement.cc.
References m_htSupported, and NS_LOG_FUNCTION.
Referenced by ns3::BlockAckManager::CreateOriginatorAgreement().
void ns3::BlockAckAgreement::SetImmediateBlockAck | ( | ) |
Set block ack policy to immediate Ack.
Definition at line 70 of file block-ack-agreement.cc.
References m_blockAckPolicy, and NS_LOG_FUNCTION.
Referenced by ns3::BlockAckManager::CreateOriginatorAgreement(), ns3::BlockAckManager::CreateRecipientAgreement(), and ns3::BlockAckManager::UpdateOriginatorAgreement().
void ns3::BlockAckAgreement::SetStartingSequence | ( | uint16_t | seq | ) |
Set starting sequence number.
seq | the starting sequence number |
Definition at line 54 of file block-ack-agreement.cc.
References m_startingSeq, NS_ASSERT, and NS_LOG_FUNCTION.
Referenced by ns3::BlockAckManager::CreateOriginatorAgreement(), OriginatorBlockAckWindowTest::DoRun(), and ns3::BlockAckManager::UpdateOriginatorAgreement().
void ns3::BlockAckAgreement::SetStartingSequenceControl | ( | uint16_t | seq | ) |
Set starting sequence control.
seq | the starting sequence control |
Definition at line 62 of file block-ack-agreement.cc.
References m_startingSeq, NS_ASSERT, and NS_LOG_FUNCTION.
void ns3::BlockAckAgreement::SetTimeout | ( | uint16_t | timeout | ) |
Set timeout.
timeout | the timeout value |
Definition at line 47 of file block-ack-agreement.cc.
References m_timeout, NS_LOG_FUNCTION, and timeout.
Referenced by ns3::BlockAckManager::CreateOriginatorAgreement(), and ns3::BlockAckManager::UpdateOriginatorAgreement().
|
friend |
Definition at line 27 of file block-ack-agreement.h.
|
protected |
Flag whether MSDU aggregation is supported.
Definition at line 181 of file block-ack-agreement.h.
Referenced by ns3::RecipientBlockAckAgreement::RecipientBlockAckAgreement(), IsAmsduSupported(), and SetAmsduSupport().
|
protected |
Type of block ack: immediate or delayed.
Definition at line 182 of file block-ack-agreement.h.
Referenced by IsImmediateBlockAck(), SetDelayedBlockAck(), and SetImmediateBlockAck().
|
protected |
Buffer size.
Definition at line 184 of file block-ack-agreement.h.
Referenced by ns3::RecipientBlockAckAgreement::RecipientBlockAckAgreement(), GetBlockAckType(), GetBufferSize(), ns3::OriginatorBlockAckAgreement::InitTxWindow(), and SetBufferSize().
|
protected |
the optional GCR group address
Definition at line 189 of file block-ack-agreement.h.
Referenced by GetBlockAckType(), GetGcrGroupAddress(), and SetGcrGroupAddress().
|
protected |
Flag whether HT is supported.
Definition at line 188 of file block-ack-agreement.h.
Referenced by ns3::RecipientBlockAckAgreement::RecipientBlockAckAgreement(), GetBlockAckReqType(), GetBlockAckType(), IsHtSupported(), and SetHtSupported().
|
mutableprotected |
inactivity event
Definition at line 190 of file block-ack-agreement.h.
Referenced by ~BlockAckAgreement(), and ns3::BlockAckManager::UpdateOriginatorAgreement().
|
protected |
|
protected |
Starting sequence control.
Definition at line 186 of file block-ack-agreement.h.
Referenced by ns3::RecipientBlockAckAgreement::RecipientBlockAckAgreement(), GetStartingSequence(), ns3::OriginatorBlockAckAgreement::GetStartingSequence(), GetStartingSequenceControl(), ns3::OriginatorBlockAckAgreement::InitTxWindow(), SetStartingSequence(), and SetStartingSequenceControl().
|
protected |
|
protected |
Timeout.
Definition at line 185 of file block-ack-agreement.h.
Referenced by ns3::RecipientBlockAckAgreement::RecipientBlockAckAgreement(), GetTimeout(), and SetTimeout().
|
protected |
Ending sequence number.
Definition at line 187 of file block-ack-agreement.h.