22 #include "ns3/boolean.h"
23 #include "ns3/eht-configuration.h"
24 #include "ns3/emlsr-manager.h"
25 #include "ns3/frame-exchange-manager.h"
26 #include "ns3/multi-user-scheduler.h"
27 #include "ns3/wifi-ack-manager.h"
28 #include "ns3/wifi-assoc-manager.h"
29 #include "ns3/wifi-mac-queue-scheduler.h"
30 #include "ns3/wifi-net-device.h"
31 #include "ns3/wifi-protection-manager.h"
65 mac->SetDevice(device);
68 mac->ConfigureStandard(standard);
71 mac->SetMacQueueScheduler(queueScheduler);
76 for (uint8_t linkId = 0; linkId < std::max<uint8_t>(device->
GetNPhys(), 1); ++linkId)
78 auto fem =
mac->GetFrameExchangeManager(linkId);
82 protectionManager->SetWifiMac(
mac);
83 protectionManager->SetLinkId(linkId);
84 fem->SetProtectionManager(protectionManager);
87 ackManager->SetWifiMac(
mac);
88 ackManager->SetLinkId(linkId);
89 fem->SetAckManager(ackManager);
106 (apMac = DynamicCast<ApWifiMac>(
mac)))
113 auto staMac = DynamicCast<StaWifiMac>(
mac);
117 staMac->SetAssocManager(assocManager);
124 emlsrActivated.Get())
127 staMac->SetEmlsrManager(emlsrManager);
EmlsrManager is an abstract base class defining the API that EHT non-AP MLDs with EMLSR activated can...
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 SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
bool IsTypeIdSet() const
Check if the ObjectFactory has been configured with a TypeId.
void AggregateObject(Ptr< Object > other)
Aggregate two Objects together.
WifiAckManager is an abstract base class.
Abstract base class for the Association Manager, which manages scanning and association for single li...
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_ackManager
Factory to create an acknowledgment manager.
void SetType(std::string type, Args &&... args)
base class for all MAC-level wifi objects.
WifiMacQueueScheduler is an abstract base class defining the public interface for a wifi MAC queue sc...
void SetMac(const Ptr< WifiMac > mac)
Ptr< EhtConfiguration > GetEhtConfiguration() const
WifiProtectionManager is an abstract base class.
#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.