Dummy Multi User Scheduler used to test OFDMA ack sequences. More...
Public Member Functions | |
TestMultiUserScheduler () | |
~TestMultiUserScheduler () override | |
Public Member Functions inherited from ns3::MultiUserScheduler | |
MultiUserScheduler () | |
~MultiUserScheduler () override | |
DlMuInfo & | GetDlMuInfo (uint8_t linkId) |
Get the information required to perform a DL MU transmission on the given link. More... | |
UlMuInfo & | GetUlMuInfo (uint8_t linkId) |
Get the information required to solicit an UL MU transmission on the given link. More... | |
TxFormat | NotifyAccessGranted (Ptr< QosTxop > edca, Time availableTime, bool initialFrame, uint16_t allowedWidth, uint8_t linkId) |
Notify the Multi-user Scheduler that the given AC of the AP gained channel access. More... | |
void | SetAccessReqInterval (Time interval) |
Set the duration of the interval between two consecutive requests for channel access made by the MultiUserScheduler. More... | |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. More... | |
~Object () override | |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose () |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. More... | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. More... | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. More... | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized () const |
Check if the object has been initialized. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o[[maybe_unused]]) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o[[maybe_unused]]) |
Assignment operator. More... | |
void | Ref () const |
Increment the reference count. More... | |
void | Unref () const |
Decrement the reference count. More... | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Static Public Member Functions inherited from ns3::MultiUserScheduler | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId () |
Register this type. More... | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Private Member Functions | |
DlMuInfo | ComputeDlMuInfo () override |
Compute the information required to perform a DL MU transmission. More... | |
UlMuInfo | ComputeUlMuInfo () override |
Prepare the information required to solicit an UL MU transmission. More... | |
void | ComputeWifiTxVector () |
Compute the TX vector to use for MU PPDUs. More... | |
TxFormat | SelectTxFormat () override |
Select the format of the next transmission. More... | |
Private Attributes | |
WifiModulationClass | m_modClass |
modulation class for DL MU PPDUs and TB PPDUs More... | |
WifiPsduMap | m_psduMap |
the DL MU PPDU to transmit More... | |
CtrlTriggerHeader | m_trigger |
Trigger Frame to send. More... | |
WifiMacHeader | m_triggerHdr |
MAC header for Trigger Frame. More... | |
TxFormat | m_txFormat |
the format of next transmission More... | |
WifiTxParameters | m_txParams |
TX parameters. More... | |
WifiTxVector | m_txVector |
the TX vector for MU PPDUs More... | |
TriggerFrameType | m_ulTriggerType |
Trigger Frame type for UL MU. More... | |
Additional Inherited Members | |
Public Types inherited from ns3::MultiUserScheduler | |
enum | TxFormat { NO_TX = 0 , SU_TX , DL_MU_TX , UL_MU_TX } |
Enumeration of the possible transmission formats. More... | |
Protected Member Functions inherited from ns3::MultiUserScheduler | |
void | DoDispose () override |
Destructor implementation. More... | |
void | DoInitialize () override |
Initialize() implementation. More... | |
Ptr< HeFrameExchangeManager > | GetHeFem (uint8_t linkId) const |
Get the HE Frame Exchange Manager attached to the AP on the given link. More... | |
TxFormat | GetLastTxFormat (uint8_t linkId) |
Get the format of the last transmission on the given link, as determined by the last call to NotifyAccessGranted that did not return NO_TX. More... | |
uint32_t | GetMaxSizeOfQosNullAmpdu (const CtrlTriggerHeader &trigger) const |
Get the maximum size in bytes among the A-MPDUs containing QoS Null frames and solicited by the given (BSRP) Trigger Frame. More... | |
Ptr< WifiMpdu > | GetTriggerFrame (const CtrlTriggerHeader &trigger, uint8_t linkId) const |
Get an MPDU containing the given Trigger Frame. More... | |
Ptr< WifiRemoteStationManager > | GetWifiRemoteStationManager (uint8_t linkId) const |
Get the station manager attached to the AP on the given link. More... | |
void | NotifyNewAggregate () override |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. More... | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. More... | |
Protected Attributes inherited from ns3::MultiUserScheduler | |
uint16_t | m_allowedWidth |
the allowed width in MHz for the current transmission More... | |
Ptr< ApWifiMac > | m_apMac |
the AP wifi MAC More... | |
Time | m_availableTime |
the time available for frame exchange More... | |
Ptr< QosTxop > | m_edca |
the AC that gained channel access More... | |
bool | m_initialFrame |
true if a TXOP is being started More... | |
uint8_t | m_linkId |
the ID of the link over which channel access has been granted More... | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
Dummy Multi User Scheduler used to test OFDMA ack sequences.
This Multi User Scheduler returns SU_TX until the simulation time reaches 1.5 seconds (when all BA agreements have been established). Afterwards, it cycles through UL_MU_TX (with a BSRP Trigger Frame), UL_MU_TX (with a Basic Trigger Frame) and DL_MU_TX. This scheduler requires that 4 stations are associated with the AP.
Definition at line 61 of file wifi-mac-ofdma-test.cc.
TestMultiUserScheduler::TestMultiUserScheduler | ( | ) |
Definition at line 112 of file wifi-mac-ofdma-test.cc.
References ns3::BSRP_TRIGGER, and NS_LOG_FUNCTION.
|
override |
Definition at line 119 of file wifi-mac-ofdma-test.cc.
References NS_LOG_FUNCTION_NOARGS.
|
overrideprivatevirtual |
Compute the information required to perform a DL MU transmission.
Implements ns3::MultiUserScheduler.
Definition at line 355 of file wifi-mac-ofdma-test.cc.
References m_psduMap, m_txParams, and NS_LOG_FUNCTION.
|
overrideprivatevirtual |
Prepare the information required to solicit an UL MU transmission.
Implements ns3::MultiUserScheduler.
Definition at line 362 of file wifi-mac-ofdma-test.cc.
References m_trigger, m_triggerHdr, m_txParams, and NS_LOG_FUNCTION.
|
private |
Compute the TX vector to use for MU PPDUs.
Definition at line 287 of file wifi-mac-ofdma-test.cc.
References ns3::WifiPhy::GetChannelWidth(), ns3::WifiMac::GetHeConfiguration(), ns3::WifiMac::GetHeSupported(), ns3::WifiTxVector::GetPreambleType(), ns3::ApWifiMac::GetStaList(), ns3::WifiMac::GetWifiPhy(), ns3::MultiUserScheduler::GetWifiRemoteStationManager(), ns3::WifiTxVector::IsDlMu(), ns3::IsEht(), ns3::MultiUserScheduler::m_apMac, m_modClass, m_txVector, NS_ABORT_MSG, NS_ABORT_MSG_IF, ns3::WifiTxVector::SetChannelWidth(), ns3::WifiTxVector::SetEhtPpduType(), ns3::WifiTxVector::SetGuardInterval(), ns3::WifiTxVector::SetHeMuUserInfo(), ns3::WifiTxVector::SetPreambleType(), ns3::WifiTxVector::SetRuAllocation(), ns3::WifiTxVector::SetTxPowerLevel(), ns3::SINGLE_LINK_OP_ID, ns3::WIFI_MOD_CLASS_HE, ns3::WIFI_PREAMBLE_EHT_MU, and ns3::WIFI_PREAMBLE_HE_MU.
Referenced by SelectTxFormat().
|
static |
Get the type ID.
Definition at line 96 of file wifi-mac-ofdma-test.cc.
References m_modClass, ns3::MakeEnumChecker(), ns3::TypeId::SetParent(), ns3::WIFI_MOD_CLASS_EHT, and ns3::WIFI_MOD_CLASS_HE.
|
overrideprivatevirtual |
Select the format of the next transmission.
Implements ns3::MultiUserScheduler.
Definition at line 125 of file wifi-mac-ofdma-test.cc.
References ns3::Packet::AddHeader(), ns3::CtrlTriggerHeader::begin(), ns3::WifiTxParameters::Clear(), ComputeWifiTxVector(), ns3::MultiUserScheduler::DL_MU_TX, ns3::WifiMacHeader::GetAddr1(), ns3::WifiMac::GetAddress(), ns3::CtrlTriggerHeader::GetGuardInterval(), ns3::MultiUserScheduler::GetHeFem(), ns3::WifiMac::GetHeSupported(), ns3::CtrlTriggerHeader::GetHeTbTxVector(), ns3::MultiUserScheduler::GetMaxSizeOfQosNullAmpdu(), ns3::QosTxop::GetNextMpdu(), ns3::WifiPhy::GetPhyBand(), ns3::WifiMac::GetQosTxop(), ns3::WifiPhy::GetSifs(), ns3::ApWifiMac::GetStaList(), ns3::WifiMac::GetWifiPhy(), ns3::WifiMac::GetWifiRemoteStationManager(), ns3::WifiTxParameters::m_acknowledgment, ns3::MultiUserScheduler::m_allowedWidth, ns3::MultiUserScheduler::m_apMac, ns3::MultiUserScheduler::m_availableTime, ns3::MultiUserScheduler::m_initialFrame, m_modClass, ns3::WifiTxParameters::m_protection, m_psduMap, m_trigger, m_triggerHdr, ns3::WifiTxParameters::m_txDuration, m_txFormat, m_txParams, ns3::WifiTxParameters::m_txVector, m_txVector, m_ulTriggerType, Min, ns3::Now(), NS_ABORT_MSG, NS_ABORT_MSG_IF, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::QosTxop::PeekNextMpdu(), ns3::Seconds(), ns3::WifiMacHeader::SetAddr1(), ns3::WifiMacHeader::SetAddr2(), ns3::WifiMacHeader::SetDsNotFrom(), ns3::WifiMacHeader::SetDsNotTo(), ns3::WifiTxVector::SetGuardInterval(), ns3::WifiTxVector::SetPreambleType(), ns3::CtrlTriggerHeader::SetUlLength(), ns3::SINGLE_LINK_OP_ID, ns3::MultiUserScheduler::SU_TX, ns3::MultiUserScheduler::UL_MU_TX, ns3::WIFI_MAC_CTL_TRIGGER, ns3::WIFI_MOD_CLASS_HE, ns3::WIFI_PREAMBLE_EHT_TB, and ns3::WIFI_PREAMBLE_HE_TB.
|
private |
modulation class for DL MU PPDUs and TB PPDUs
Definition at line 90 of file wifi-mac-ofdma-test.cc.
Referenced by ComputeWifiTxVector(), GetTypeId(), and SelectTxFormat().
|
private |
the DL MU PPDU to transmit
Definition at line 89 of file wifi-mac-ofdma-test.cc.
Referenced by ComputeDlMuInfo(), and SelectTxFormat().
|
private |
Trigger Frame to send.
Definition at line 85 of file wifi-mac-ofdma-test.cc.
Referenced by ComputeUlMuInfo(), and SelectTxFormat().
|
private |
MAC header for Trigger Frame.
Definition at line 86 of file wifi-mac-ofdma-test.cc.
Referenced by ComputeUlMuInfo(), and SelectTxFormat().
|
private |
the format of next transmission
Definition at line 83 of file wifi-mac-ofdma-test.cc.
Referenced by SelectTxFormat().
|
private |
TX parameters.
Definition at line 88 of file wifi-mac-ofdma-test.cc.
Referenced by ComputeDlMuInfo(), ComputeUlMuInfo(), and SelectTxFormat().
|
private |
the TX vector for MU PPDUs
Definition at line 87 of file wifi-mac-ofdma-test.cc.
Referenced by ComputeWifiTxVector(), and SelectTxFormat().
|
private |
Trigger Frame type for UL MU.
Definition at line 84 of file wifi-mac-ofdma-test.cc.
Referenced by SelectTxFormat().