11#include "ns3/ap-emlsr-manager.h" 
   12#include "ns3/boolean.h" 
   13#include "ns3/eht-configuration.h" 
   14#include "ns3/emlsr-manager.h" 
   16#include "ns3/frame-exchange-manager.h" 
   17#include "ns3/gcr-manager.h" 
   18#include "ns3/multi-user-scheduler.h" 
   19#include "ns3/pointer.h" 
   20#include "ns3/wifi-ack-manager.h" 
   21#include "ns3/wifi-assoc-manager.h" 
   22#include "ns3/wifi-mac-queue-scheduler.h" 
   23#include "ns3/wifi-net-device.h" 
   24#include "ns3/wifi-protection-manager.h" 
   37    m_dcf.SetTypeId(
"ns3::Txop");
 
   40        auto [it, inserted] = 
m_edca.try_emplace(aci);
 
   41        it->second.SetTypeId(
"ns3::QosTxop");
 
 
   80    for (
auto [aci, edca] : 
m_edca)
 
   85        auto s = ss.str().substr(3); 
 
   91    auto nLinks = std::max<uint8_t>(device->GetNPhys(), 1);
 
   94    std::vector<Ptr<ChannelAccessManager>> caManagers;
 
   95    caManagers.reserve(nLinks);
 
   96    for (uint8_t linkId = 0; linkId < nLinks; ++linkId)
 
  102    mac->SetDevice(device);
 
  105    mac->SetChannelAccessManagers(caManagers);
 
  108    std::vector<Ptr<FrameExchangeManager>> feManagers;
 
  110    frameExchangeManager.SetTypeId(
 
  112    for (uint8_t linkId = 0; linkId < nLinks; ++linkId)
 
  115        feManagers.emplace_back(fem);
 
  119        protectionManager->SetLinkId(linkId);
 
  120        fem->SetProtectionManager(protectionManager);
 
  124        ackManager->SetLinkId(linkId);
 
  125        fem->SetAckManager(ackManager);
 
  131    mac->SetFrameExchangeManagers(feManagers);
 
  134    mac->SetMacQueueScheduler(queueScheduler);
 
  149        staMac->SetAssocManager(assocManager);
 
  155        device->GetEhtConfiguration()->m_emlsrActivated &&
 
  159        staMac->SetEmlsrManager(emlsrManager);
 
  164        device->GetEhtConfiguration()->m_emlsrActivated)
 
  167        apMac->SetApEmlsrManager(apEmlsrManager);
 
  171    if (apMac && apMac->GetRobustAVStreamingSupported() && 
m_gcrManager.IsTypeIdSet())
 
  174        apMac->SetGcrManager(gcrManager);
 
 
ApEmlsrManager is an abstract base class defining the API that EHT AP MLDs with EMLSR activated can u...
AttributeValue implementation for Boolean.
Manage a set of ns3::Txop.
EmlsrManager is an abstract base class defining the API that EHT non-AP MLDs with EMLSR activated can...
Hold variables of type enum.
FrameExchangeManager is a base class handling the basic frame exchange sequences for non-QoS stations...
GcrManager is a base class defining the API to handle 802.11aa GCR.
static Mac48Address Allocate()
Allocate a new Mac48Address.
MultiUserScheduler is an abstract base class defining the API that APs supporting at least VHT can us...
Instantiate subclasses of ns3::Object.
Ptr< Object > Create() const
Create an Object instance of the configured TypeId.
void Set(const std::string &name, const AttributeValue &value, Args &&... args)
Set an attribute to be set during construction.
void AggregateObject(Ptr< Object > other)
Aggregate two Objects together.
AttributeValue implementation for Pointer.
Smart pointer class similar to boost::intrusive_ptr.
Handles the packet queue and stores DCF/EDCA access parameters (one Txop per AC).
Handles the packet queue and stores DCF/EDCA access parameters (one Txop per AC).
WifiAckManager is an abstract base class.
void SetWifiMac(Ptr< WifiMac > mac)
Set the MAC which is using this Acknowledgment Manager.
Abstract base class for the Association Manager, which manages scanning and association for single li...
ObjectFactory m_apEmlsrManager
AP EMLSR Manager object factory.
std::map< AcIndex, ObjectFactory, std::greater<> > m_edca
QosTxop (EDCA) object factories.
ObjectFactory m_mac
MAC object factory.
ObjectFactory m_queueScheduler
MAC queue scheduler.
virtual ~WifiMacHelper()
Destroy a WifiMacHelper.
virtual Ptr< WifiMac > Create(Ptr< WifiNetDevice > device, WifiStandard standard) const
ObjectFactory m_protectionManager
Factory to create a protection manager.
ObjectFactory m_muScheduler
Multi-user Scheduler object factory.
ObjectFactory m_assocManager
Association Manager.
WifiMacHelper()
Create a WifiMacHelper to make life easier for people who want to work with Wifi MAC layers.
ObjectFactory m_emlsrManager
EMLSR Manager object factory.
ObjectFactory m_dcf
Txop (DCF) object factory.
ObjectFactory m_ackManager
Factory to create an acknowledgment manager.
void SetType(std::string type, Args &&... args)
ObjectFactory m_frameExchangeManager
Frame Exchange Manager object factory.
ObjectFactory m_channelAccessManager
Channel Access Manager object factory.
ObjectFactory m_gcrManager
GCR Manager object factory.
base class for all MAC-level wifi objects.
WifiMacQueueScheduler is an abstract base class defining the public interface for a wifi MAC queue sc...
WifiProtectionManager is an abstract base class.
void SetWifiMac(Ptr< WifiMac > mac)
Set the MAC which is using this Protection Manager.
#define NS_ABORT_MSG_IF(cond, msg)
Abnormal program termination if a condition is true, with a message.
WifiStandard
Identifies the IEEE 802.11 specifications that a Wifi device can be configured to use.
@ WIFI_STANDARD_UNSPECIFIED
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::string GetFrameExchangeManagerTypeIdName(WifiStandard standard, bool qosSupported)
Get the TypeId name for the FrameExchangeManager corresponding to the given standard.
Ptr< T1 > DynamicCast(const Ptr< T2 > &p)
Cast a Ptr.
const std::map< AcIndex, WifiAc > wifiAcList
Map containing the four ACs in increasing order of priority (according to Table 10-1 "UP-to-AC Mappin...