26 #include "ns3/traced-value.h" 33 class QosBlockedDestinations;
34 class MgtAddBaResponseHeader;
36 class AggregationCapableTransmissionListener;
38 class QosFrameExchangeManager;
39 class WifiTxParameters;
360 Time availableTime,
bool initialFrame,
AcIndex m_ac
the access category
void ScheduleBar(Ptr< const WifiMacQueueItem > bar, bool skipIfNoDataQueued=false)
Ptr< const WifiMacQueueItem > PeekNextMpdu(uint8_t tid=8, Mac48Address recipient=Mac48Address::GetBroadcast())
Peek the next frame to transmit to the given receiver and of the given TID from the block ack manager...
Simulation virtual time values and global simulation resolution.
void ResetBa(Mac48Address recipient, uint8_t tid)
Reset BA agreement after BA negotiation failed.
void SetWifiRemoteStationManager(const Ptr< WifiRemoteStationManager > remoteManager) override
Set WifiRemoteStationsManager this Txop is associated to.
void DoDispose(void) override
Destructor implementation.
AcIndex
This enumeration defines the Access Categories as an enumeration with values corresponding to the AC ...
Time m_startTxop
the start TXOP time
Handle packet fragmentation and retransmissions for QoS data frames as well as MSDU aggregation (A-MS...
Information needed to remove an MSDU from the queue.
Ptr< BlockAckManager > GetBaManager(void)
Get the Block Ack Manager associated with this QosTxop.
void SetBlockAckInactivityTimeout(uint16_t timeout)
Set the BlockAck inactivity timeout.
uint16_t GetBaStartingSequence(Mac48Address address, uint8_t tid) const
void GotDelBaFrame(const MgtDelBaHeader *delBaHdr, Mac48Address recipient)
Event handler when a DELBA frame is received.
virtual Time GetRemainingTxop(void) const
Return the remaining duration in the current TXOP.
void SetAccessCategory(AcIndex ac)
Set the access category of this EDCAF.
The different BlockAckRequest variants.
static TypeId GetTypeId(void)
Get the type ID.
uint8_t GetBlockAckThreshold(void) const
Return the current threshold for block ack mechanism.
bool UseExplicitBarAfterMissedBlockAck(void) const
Return true if an explicit BlockAckRequest is sent after a missed BlockAck.
Time m_failedAddBaTimeout
timeout after failed BA agreement
bool IsQosTxop(void) const override
Check for QoS TXOP.
void AssignSequenceNumber(Ptr< WifiMacQueueItem > mpdu) const
Assign a sequence number to the given MPDU, if it is not a fragment and it is not a retransmitted fra...
Time GetAddBaResponseTimeout(void) const
Get the timeout for ADDBA response.
Ptr< QosFrameExchangeManager > m_qosFem
the QoS Frame Exchange Manager
friend class AggregationCapableTransmissionListener
allow AggregationCapableTransmissionListener class access
uint16_t GetBlockAckInactivityTimeout(void) const
Get the BlockAck inactivity timeout.
void SetQosFrameExchangeManager(const Ptr< QosFrameExchangeManager > qosFem)
Set the Frame Exchange Manager associated with this QoS STA.
void SetFailedAddBaTimeout(Time failedAddBaTimeout)
Set the timeout for failed BA agreement.
Ptr< BlockAckManager > m_baManager
the block ack manager
void DoInitialize(void) override
Initialize() implementation.
static Mac48Address GetBroadcast(void)
void GotAddBaResponse(const MgtAddBaResponseHeader *respHdr, Mac48Address recipient)
Event handler when an ADDBA response is received.
uint16_t GetNextSequenceNumberFor(const WifiMacHeader *hdr)
Return the next sequence number for the given header.
void PushFront(Ptr< const Packet > packet, const WifiMacHeader &hdr)
uint16_t PeekNextSequenceNumberFor(const WifiMacHeader *hdr)
Return the next sequence number for the Traffic ID and destination, but do not pick it (i...
void SetAddBaResponseTimeout(Time addBaResponseTimeout)
Set the timeout to wait for ADDBA response.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Time m_txopDuration
the duration of a TXOP
BlockAckType GetBlockAckType(Mac48Address recipient, uint8_t tid) const
void CompleteMpduTx(Ptr< WifiMacQueueItem > mpdu)
Stores an MPDU (part of an A-MPDU) in block ack agreement (i.e.
void NotifyChannelAccessed(Time txopDuration) override
Called by the FrameExchangeManager to notify that channel access has been granted for the given amoun...
void SetDroppedMpduCallback(DroppedMpdu callback) override
void SetBlockAckThreshold(uint8_t threshold)
Set threshold for block ack mechanism.
uint8_t m_blockAckThreshold
the block ack threshold (use BA mechanism if number of packets in queue reaches this value...
AcIndex GetAccessCategory(void) const override
Get the access category.
BlockAckReqType GetBlockAckReqType(Mac48Address recipient, uint8_t tid) const
bool IsQosOldPacket(Ptr< const WifiMacQueueItem > mpdu)
Check if the given MPDU is to be considered old according to the current starting sequence number of ...
bool HasFramesToTransmit(void) override
Check if the Txop has frames to transmit.
void SetQosQueueSize(Ptr< WifiMacQueueItem > mpdu)
Set the Queue Size subfield of the QoS Control field of the given QoS data frame. ...
The different BlockAck variants.
void NotifyChannelReleased(void) override
Called by the FrameExchangeManager to notify the completion of the transmissions. ...
bool GetBaAgreementEstablished(Mac48Address address, uint8_t tid) const
bool m_useExplicitBarAfterMissedBlockAck
flag whether explicit BlockAckRequest should be sent upon missed BlockAck Response ...
Ptr< const WifiMacQueueItem > PrepareBlockAckRequest(Mac48Address recipient, uint8_t tid) const
This class stores the TX parameters (TX vector, protection mechanism, acknowledgment mechanism...
Ptr< QosBlockedDestinations > m_qosBlockedDestinations
the QoS blocked destinations
uint16_t GetBaBufferSize(Mac48Address address, uint8_t tid) const
TracedCallback< Time, Time > m_txopTrace
TXOP trace callback.
Time m_currentPacketTimestamp
the current packet timestamp
Ptr< WifiMacQueueItem > GetNextMpdu(Ptr< const WifiMacQueueItem > peekedItem, WifiTxParameters &txParams, Time availableTime, bool initialFrame, WifiMacQueueItem::QueueIteratorPair &queueIt)
Prepare the frame to transmit starting from the MPDU that has been previously peeked by calling PeekN...
Time GetFailedAddBaTimeout(void) const
Get the timeout for failed BA agreement.
uint16_t m_blockAckInactivityTimeout
the BlockAck inactivity timeout value (in TUs, i.e.
a unique identifier for an interface.
void AddBaResponseTimeout(Mac48Address recipient, uint8_t tid)
Callback when ADDBA response is not received after timeout.
Time m_addBaResponseTimeout
timeout for ADDBA response
virtual bool IsTxopStarted(void) const
Return true if a TXOP has started.
void NotifyInternalCollision(void) override
Notify the Txop that internal collision has occurred.
Handle packet fragmentation and retransmissions for data and management frames.