21 #ifndef MULTI_USER_SCHEDULER_H
22 #define MULTI_USER_SCHEDULER_H
24 #include "ns3/object.h"
26 #include "ns3/ctrl-headers.h"
27 #include "ns3/ap-wifi-mac.h"
28 #include "ns3/wifi-mac-queue.h"
29 #include "ns3/wifi-tx-parameters.h"
30 #include "ns3/wifi-remote-station-manager.h"
31 #include <unordered_map>
35 class HeFrameExchangeManager;
37 typedef std::unordered_map <uint16_t , Ptr<WifiPsdu> >
WifiPsduMap;
MultiUserScheduler is an abstract base class defining the API that APs supporting at least VHT can us...
virtual TxFormat SelectTxFormat(void)=0
Select the format of the next transmission.
bool m_initialFrame
true if a TXOP is being started
void DoInitialize(void) override
Initialize() implementation.
UlMuInfo m_ulInfo
information required to solicit an UL MU transmission
TxFormat m_lastTxFormat
the format of last transmission
Ptr< ApWifiMac > m_apMac
the AP wifi MAC
Time m_availableTime
the time available for frame exchange
void DoDispose(void) override
Destructor implementation.
TxFormat GetLastTxFormat(void) const
Get the format of the last transmission, as determined by the last call to NotifyAccessGranted that d...
virtual UlMuInfo ComputeUlMuInfo(void)=0
Prepare the information required to solicit an UL MU transmission.
DlMuInfo m_dlInfo
information required to perform a DL MU transmission
void NotifyNewAggregate(void) override
Notify all Objects aggregated to this one of a new Object being aggregated.
Ptr< HeFrameExchangeManager > m_heFem
HE Frame Exchange Manager.
virtual DlMuInfo ComputeDlMuInfo(void)=0
Compute the information required to perform a DL MU transmission.
virtual ~MultiUserScheduler()
Ptr< WifiRemoteStationManager > GetWifiRemoteStationManager(void) const
Get the station manager attached to the AP.
Ptr< QosTxop > m_edca
the AC that gained channel access
uint32_t m_sizeOf8QosNull
size in bytes of 8 QoS Null frames
UlMuInfo & GetUlMuInfo(void)
Get the information required to solicit an UL MU transmission.
DlMuInfo & GetDlMuInfo(void)
Get the information required to perform a DL MU transmission.
void CheckTriggerFrame(void)
Ensure that the Trigger Frame returned in case of UL MU transmission is correct.
static TypeId GetTypeId(void)
Get the type ID.
void SetWifiMac(Ptr< ApWifiMac > mac)
Set the wifi MAC.
TxFormat
Enumeration of the possible transmission formats.
TxFormat NotifyAccessGranted(Ptr< QosTxop > edca, Time availableTime, bool initialFrame)
Notify the Multi-user Scheduler that the given AC of the AP gained channel access.
A base class which provides memory management and object aggregation.
Simulation virtual time values and global simulation resolution.
a unique identifier for an interface.
This class stores the TX parameters (TX vector, protection mechanism, acknowledgment mechanism,...
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::unordered_map< uint16_t, Ptr< WifiPsdu > > WifiPsduMap
Map of PSDUs indexed by STA-ID.
Information to be provided in case of DL MU transmission.
WifiTxParameters txParams
the transmission parameters
WifiPsduMap psduMap
the DL MU PPDU to transmit
Information to be provided in case of UL MU transmission.
WifiTxParameters txParams
the transmission parameters for the Trigger Frame
CtrlTriggerHeader trigger
the Trigger Frame used to solicit TB PPDUs
WifiMacHeader macHdr
the MAC header for the Trigger Frame