|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
21 #ifndef HE_FRAME_EXCHANGE_MANAGER_H
22 #define HE_FRAME_EXCHANGE_MANAGER_H
24 #include "ns3/vht-frame-exchange-manager.h"
27 #include <unordered_map>
31 class MultiUserScheduler;
34 class CtrlTriggerHeader;
99 const WifiTxVector& txVector,
const std::vector<bool>& perMpduStatus)
override;
132 const std::set<Mac48Address>* staMissedBlockAckFrom,
133 std::size_t nSolicitedStations);
145 const std::set<Mac48Address>* staMissedTbPpduFrom,
146 std::size_t nSolicitedStations);
182 std::map<uint16_t, CtrlBAckRequestHeader> recipients)
const;
a unique identifier for an interface.
WifiPsduMap m_psduMap
the A-MPDU being transmitted
HeFrameExchangeManager handles the frame exchange sequences for HE stations.
VhtFrameExchangeManager handles the frame exchange sequences for VHT stations.
std::unordered_map< uint16_t, Ptr< WifiPsdu > > WifiPsduMap
Map of PSDUs indexed by STA-ID.
An identifier for simulation events.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static TypeId GetTypeId(void)
Get the type ID.
void SendMultiStaBlockAck(const WifiTxParameters &txParams)
Send a Multi-STA Block Ack frame after the reception of some TB PPDUs.
Ptr< MultiUserScheduler > m_muScheduler
Multi-user Scheduler (HE APs only)
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
bool StartFrameExchange(Ptr< QosTxop > edca, Time availableTime, bool initialFrame) override
Start a frame exchange (including protection frames and acknowledgment frames as needed) that fits wi...
std::unordered_map< uint16_t, Ptr< const WifiPsdu > > WifiConstPsduMap
Map of const PSDUs indexed by STA-ID.
A tag to be attached to a response to a multi-user UL frame, that carries the SNR values with which t...
This class stores the TX parameters (TX vector, protection mechanism, acknowledgment mechanism,...
uint16_t GetSupportedBaBufferSize(void) const override
Get the maximum supported buffer size for a Block Ack agreement.
MuSnrTag m_muSnrTag
Tag to attach to Multi-STA BlockAck frames.
Ptr< ApWifiMac > m_apMac
MAC pointer (null if not an AP)
bool SendMpduFromBaManager(Ptr< QosTxop > edca, Time availableTime, bool initialFrame) override
If the Block Ack Manager associated with the given EDCA has a BlockAckReq frame to transmit (the dura...
Ptr< WifiMacQueueItem > PrepareMuBar(const WifiTxVector &responseTxVector, std::map< uint16_t, CtrlBAckRequestHeader > recipients) const
Build a MU-BAR Trigger Frame starting from the TXVECTOR used to respond to the MU-BAR (in case of mul...
WifiTxVector GetHeTbTxVector(CtrlTriggerHeader trigger, Mac48Address triggerSender) const
Return a TXVECTOR for the UL frame that the station will send in response to the given Trigger frame,...
void DoDispose() override
Destructor implementation.
void EndReceiveAmpdu(Ptr< const WifiPsdu > psdu, const RxSignalInfo &rxSignalInfo, const WifiTxVector &txVector, const std::vector< bool > &perMpduStatus) override
This method is called when the reception of an A-MPDU including multiple MPDUs is completed.
void SendPsduMap(void)
Send the current PSDU map as a DL MU PPDU.
void CalculateAcknowledgmentTime(WifiAcknowledgment *acknowledgment) const override
Calculate the time required to acknowledge a frame according to the given acknowledgment method.
void ForwardPsduMapDown(WifiConstPsduMap psduMap, WifiTxVector &txVector)
Forward a map of PSDUs down to the PHY layer.
void ReceiveMpdu(Ptr< WifiMacQueueItem > mpdu, RxSignalInfo rxSignalInfo, const WifiTxVector &txVector, bool inAmpdu) override
This method handles the reception of an MPDU (possibly included in an A-MPDU)
void SendQosNullFramesInTbPpdu(const CtrlTriggerHeader &trigger, const WifiMacHeader &hdr)
Send QoS Null frames in response to a Basic or BSRP Trigger Frame.
Simulation virtual time values and global simulation resolution.
EventId m_multiStaBaEvent
Sending a Multi-STA BlockAck event.
Time GetTxDuration(uint32_t ppduPayloadSize, Mac48Address receiver, const WifiTxParameters &txParams) const override
Get the updated TX duration of the frame associated with the given TX parameters if the size of the P...
virtual void BlockAckAfterTbPpduTimeout(Ptr< WifiPsdu > psdu, const WifiTxVector &txVector)
Take the necessary actions after that a Block Ack is missing after a TB PPDU solicited through a Trig...
void SetWifiMac(const Ptr< RegularWifiMac > mac) override
Set the MAC layer to use.
RxSignalInfo structure containing info on the received signal.
WifiAcknowledgment is an abstract base struct.
WifiTxParameters m_txParams
the TX parameters for the current PPDU
void SendPsduMapWithProtection(WifiPsduMap psduMap, WifiTxParameters &txParams)
Send a map of PSDUs as a DL MU PPDU.
void ReceiveBasicTrigger(const CtrlTriggerHeader &trigger, const WifiMacHeader &hdr)
Take the necessary actions when receiveing a Basic Trigger Frame.
Ptr< StaWifiMac > m_staMac
MAC pointer (null if not a STA)
virtual void SetTargetRssi(CtrlTriggerHeader &trigger) const
Set the UL Target RSSI subfield of every User Info fields of the given Trigger Frame to the most rece...
static Ptr< WifiPsdu > GetPsduTo(Mac48Address to, const WifiPsduMap &psduMap)
Get the PSDU in the given PSDU map that is addressed to the given MAC address, if any,...
virtual ~HeFrameExchangeManager()
std::set< Mac48Address > m_staExpectTbPpduFrom
set of stations expected to send a TB PPDU
virtual void TbPpduTimeout(WifiPsduMap *psduMap, const std::set< Mac48Address > *staMissedTbPpduFrom, std::size_t nSolicitedStations)
Take the necessary actions after that some TB PPDUs are missing in response to Trigger Frame.
virtual void BlockAcksInTbPpduTimeout(WifiPsduMap *psduMap, const std::set< Mac48Address > *staMissedBlockAckFrom, std::size_t nSolicitedStations)
Take the necessary actions after that some BlockAck frames are missing in response to a DL MU PPDU.
bool m_triggerFrameInAmpdu
True if the received A-MPDU contains an MU-BAR.
Ptr< WifiMacQueueItem > m_triggerFrame
Trigger Frame being sent.
void SetMultiUserScheduler(const Ptr< MultiUserScheduler > muScheduler)
Set the Multi-user Scheduler associated with this Frame Exchange Manager.