A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ns3::WifiMacHelper Class Reference

create MAC layers for a ns3::WifiNetDevice. More...

#include "wifi-mac-helper.h"

+ Collaboration diagram for ns3::WifiMacHelper:

Public Member Functions

 WifiMacHelper ()
 Create a WifiMacHelper to make life easier for people who want to work with Wifi MAC layers.
 
virtual ~WifiMacHelper ()
 Destroy a WifiMacHelper.
 
virtual Ptr< WifiMacCreate (Ptr< WifiNetDevice > device, WifiStandard standard) const
 
template<typename... Args>
void SetAckManager (std::string type, Args &&... args)
 Helper function used to set the Acknowledgment Manager.
 
template<typename... Args>
void SetAssocManager (std::string type, Args &&... args)
 Helper function used to set the Association Manager.
 
template<typename... Args>
void SetChannelAccessManager (Args &&... args)
 Helper function used to set the Channel Access Manager object.
 
template<typename... Args>
void SetDcf (Args &&... args)
 Helper function used to create and set the Txop object.
 
template<typename... Args>
void SetEdca (AcIndex aci, Args &&... args)
 Helper function used to create and set the QosTxop object corresponding to the given AC.
 
template<typename... Args>
void SetEmlsrManager (std::string type, Args &&... args)
 Helper function used to set the EMLSR Manager that can be installed on an EHT non-AP MLD.
 
template<typename... Args>
void SetFrameExchangeManager (Args &&... args)
 Helper function used to set the Frame Exchange Manager object.
 
template<typename... Args>
void SetMacQueueScheduler (std::string type, Args &&... args)
 Helper function used to set the MAC queue scheduler.
 
template<typename... Args>
void SetMultiUserScheduler (std::string type, Args &&... args)
 Helper function used to set the Multi User Scheduler that can be aggregated to an HE AP's MAC.
 
template<typename... Args>
void SetProtectionManager (std::string type, Args &&... args)
 Helper function used to set the Protection Manager.
 
template<typename... Args>
void SetType (std::string type, Args &&... args)
 

Protected Attributes

ObjectFactory m_ackManager
 Factory to create an acknowledgment manager.
 
ObjectFactory m_assocManager
 Association Manager.
 
ObjectFactory m_channelAccessManager
 Channel Access Manager object factory.
 
ObjectFactory m_dcf
 Txop (DCF) object factory.
 
std::map< AcIndex, ObjectFactory, std::greater<> > m_edca
 QosTxop (EDCA) object factories.
 
ObjectFactory m_emlsrManager
 EMLSR Manager object factory.
 
ObjectFactory m_frameExchangeManager
 Frame Exchange Manager object factory.
 
ObjectFactory m_mac
 MAC object factory.
 
ObjectFactory m_muScheduler
 Multi-user Scheduler object factory.
 
ObjectFactory m_protectionManager
 Factory to create a protection manager.
 
ObjectFactory m_queueScheduler
 MAC queue scheduler.
 

Detailed Description

create MAC layers for a ns3::WifiNetDevice.

This class can create MACs of type ns3::ApWifiMac, ns3::StaWifiMac and ns3::AdhocWifiMac. Its purpose is to allow a WifiHelper to configure and install WifiMac objects on a collection of nodes. The WifiMac objects themselves are mainly composed of TxMiddle, RxMiddle, ChannelAccessManager, FrameExchangeManager, WifiRemoteStationManager, MpduAggregator and MsduAggregartor objects, so this helper offers the opportunity to configure attribute values away from their default values, on a per-NodeContainer basis. By default, it creates an Adhoc MAC layer without QoS. Typically, it is used to set type and attribute values, then hand this object over to the WifiHelper that finishes the job of installing.

This class may be further subclassed (WaveMacHelper is an example of this).

Definition at line 50 of file wifi-mac-helper.h.

Constructor & Destructor Documentation

◆ WifiMacHelper()

ns3::WifiMacHelper::WifiMacHelper ( )

Create a WifiMacHelper to make life easier for people who want to work with Wifi MAC layers.

Definition at line 41 of file wifi-mac-helper.cc.

References ns3::GetFrameExchangeManagerTypeIdName(), m_ackManager, m_assocManager, m_channelAccessManager, m_dcf, m_edca, m_emlsrManager, m_frameExchangeManager, m_protectionManager, m_queueScheduler, SetType(), ns3::ObjectFactory::SetTypeId(), ns3::WIFI_STANDARD_COUNT, and ns3::wifiAcList.

+ Here is the call graph for this function:

◆ ~WifiMacHelper()

ns3::WifiMacHelper::~WifiMacHelper ( )
virtual

Destroy a WifiMacHelper.

Definition at line 64 of file wifi-mac-helper.cc.

Member Function Documentation

◆ Create()

Ptr< WifiMac > ns3::WifiMacHelper::Create ( Ptr< WifiNetDevice device,
WifiStandard  standard 
) const
virtual
Parameters
devicethe device within which the MAC object will reside
standardthe standard to configure during installation
Returns
a new MAC object.

This allows the ns3::WifiHelper class to create MAC objects from ns3::WifiHelper::Install.

Definition at line 69 of file wifi-mac-helper.cc.

References ns3::AC_BE_NQOS, ns3::Mac48Address::Allocate(), ns3::ObjectFactory::Create(), ns3::GetFrameExchangeManagerTypeIdName(), ns3::ObjectFactory::IsTypeIdSet(), m_ackManager, m_assocManager, m_channelAccessManager, m_dcf, m_edca, m_emlsrManager, m_frameExchangeManager, m_mac, m_muScheduler, m_protectionManager, m_queueScheduler, NS_ABORT_MSG_IF, ns3::ObjectFactory::Set(), ns3::ObjectFactory::SetTypeId(), ns3::WifiAckManager::SetWifiMac(), ns3::WifiProtectionManager::SetWifiMac(), ns3::WIFI_STANDARD_80211ax, ns3::WIFI_STANDARD_80211be, ns3::WIFI_STANDARD_80211n, and ns3::WIFI_STANDARD_UNSPECIFIED.

Referenced by ns3::WifiHelper::Install().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetAckManager()

template<typename... Args>
void ns3::WifiMacHelper::SetAckManager ( std::string  type,
Args &&...  args 
)

Helper function used to set the Acknowledgment Manager.

Template Parameters
Args[deduced] Template type parameter pack for the sequence of name-value pairs.
Parameters
typethe type of Acknowledgment Manager
argsA sequence of name-value pairs of the attributes to set.

Definition at line 268 of file wifi-mac-helper.h.

References m_ackManager, ns3::ObjectFactory::Set(), and ns3::ObjectFactory::SetTypeId().

+ Here is the call graph for this function:

◆ SetAssocManager()

template<typename... Args>
void ns3::WifiMacHelper::SetAssocManager ( std::string  type,
Args &&...  args 
)

Helper function used to set the Association Manager.

Template Parameters
Args[deduced] Template type parameter pack for the sequence of name-value pairs.
Parameters
typethe type of Association Manager
argsA sequence of name-value pairs of the attributes to set.

Definition at line 244 of file wifi-mac-helper.h.

References m_assocManager, ns3::ObjectFactory::Set(), and ns3::ObjectFactory::SetTypeId().

+ Here is the call graph for this function:

◆ SetChannelAccessManager()

template<typename... Args>
void ns3::WifiMacHelper::SetChannelAccessManager ( Args &&...  args)

Helper function used to set the Channel Access Manager object.

Template Parameters
Args[deduced] Template type parameter pack for the sequence of name-value pairs.
Parameters
argsA sequence of name-value pairs of the attributes to set.

Definition at line 230 of file wifi-mac-helper.h.

References m_channelAccessManager, and ns3::ObjectFactory::Set().

+ Here is the call graph for this function:

◆ SetDcf()

template<typename... Args>
void ns3::WifiMacHelper::SetDcf ( Args &&...  args)

Helper function used to create and set the Txop object.

Template Parameters
Args[deduced] Template type parameter pack for the sequence of name-value pairs.
Parameters
argsA sequence of name-value pairs of the attributes to set.

Definition at line 214 of file wifi-mac-helper.h.

References m_dcf, and ns3::ObjectFactory::Set().

+ Here is the call graph for this function:

◆ SetEdca()

template<typename... Args>
void ns3::WifiMacHelper::SetEdca ( AcIndex  aci,
Args &&...  args 
)

Helper function used to create and set the QosTxop object corresponding to the given AC.

Parameters
acithe AC index
Template Parameters
Args[deduced] Template type parameter pack for the sequence of name-value pairs.
Parameters
argsA sequence of name-value pairs of the attributes to set.

Definition at line 221 of file wifi-mac-helper.h.

References m_edca, and NS_ASSERT_MSG.

◆ SetEmlsrManager()

template<typename... Args>
void ns3::WifiMacHelper::SetEmlsrManager ( std::string  type,
Args &&...  args 
)

Helper function used to set the EMLSR Manager that can be installed on an EHT non-AP MLD.

Template Parameters
Args[deduced] Template type parameter pack for the sequence of name-value pairs.
Parameters
typethe type of EMLSR Manager
argsA sequence of name-value pairs of the attributes to set.

Definition at line 284 of file wifi-mac-helper.h.

References m_emlsrManager, ns3::ObjectFactory::Set(), and ns3::ObjectFactory::SetTypeId().

+ Here is the call graph for this function:

◆ SetFrameExchangeManager()

template<typename... Args>
void ns3::WifiMacHelper::SetFrameExchangeManager ( Args &&...  args)

Helper function used to set the Frame Exchange Manager object.

Template Parameters
Args[deduced] Template type parameter pack for the sequence of name-value pairs.
Parameters
argsA sequence of name-value pairs of the attributes to set.

Definition at line 237 of file wifi-mac-helper.h.

References m_frameExchangeManager, and ns3::ObjectFactory::Set().

+ Here is the call graph for this function:

◆ SetMacQueueScheduler()

template<typename... Args>
void ns3::WifiMacHelper::SetMacQueueScheduler ( std::string  type,
Args &&...  args 
)

Helper function used to set the MAC queue scheduler.

Template Parameters
Args[deduced] Template type parameter pack for the sequence of name-value pairs.
Parameters
typethe type of MAC queue scheduler
argsA sequence of name-value pairs of the attributes to set.

Definition at line 252 of file wifi-mac-helper.h.

References m_queueScheduler, ns3::ObjectFactory::Set(), and ns3::ObjectFactory::SetTypeId().

+ Here is the call graph for this function:

◆ SetMultiUserScheduler()

template<typename... Args>
void ns3::WifiMacHelper::SetMultiUserScheduler ( std::string  type,
Args &&...  args 
)

Helper function used to set the Multi User Scheduler that can be aggregated to an HE AP's MAC.

Template Parameters
Args[deduced] Template type parameter pack for the sequence of name-value pairs.
Parameters
typethe type of Multi User Scheduler
argsA sequence of name-value pairs of the attributes to set.

Definition at line 276 of file wifi-mac-helper.h.

References m_muScheduler, ns3::ObjectFactory::Set(), and ns3::ObjectFactory::SetTypeId().

+ Here is the call graph for this function:

◆ SetProtectionManager()

template<typename... Args>
void ns3::WifiMacHelper::SetProtectionManager ( std::string  type,
Args &&...  args 
)

Helper function used to set the Protection Manager.

Template Parameters
Args[deduced] Template type parameter pack for the sequence of name-value pairs.
Parameters
typethe type of Protection Manager
argsA sequence of name-value pairs of the attributes to set.

Definition at line 260 of file wifi-mac-helper.h.

References m_protectionManager, ns3::ObjectFactory::Set(), and ns3::ObjectFactory::SetTypeId().

+ Here is the call graph for this function:

◆ SetType()

template<typename... Args>
void ns3::WifiMacHelper::SetType ( std::string  type,
Args &&...  args 
)
Template Parameters
Args[deduced] Template type parameter pack for the sequence of name-value pairs.
Parameters
typethe type of ns3::WifiMac to create.
argsA sequence of name-value pairs of the attributes to set.

All the attributes specified in this method should exist in the requested MAC.

Definition at line 206 of file wifi-mac-helper.h.

References m_mac, ns3::ObjectFactory::Set(), and ns3::ObjectFactory::SetTypeId().

Referenced by WifiMacHelper(), BatteryLifetimeTest::ConstantLoadTest(), AodvExample::CreateDevices(), ChainRegressionTest::CreateDevices(), Bug772ChainTest::CreateDevices(), TracerouteExample::CreateDevices(), DsdvManetExample::CreateDevices(), BasicEnergyDepletionTest::DepletionTestCase(), ns3::aodv::LoopbackTestCase::DoRun(), WifiAcMappingTest::DoRun(), WifiMsduAggregatorThroughputTest::DoRun(), WifiUseAvailBwTest::DoRun(), SetChannelFrequencyTest::DoRun(), experiment(), RoutingExperiment::Run(), and BatteryLifetimeTest::VariableLoadTest().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ m_ackManager

ObjectFactory ns3::WifiMacHelper::m_ackManager
protected

Factory to create an acknowledgment manager.

Definition at line 190 of file wifi-mac-helper.h.

Referenced by WifiMacHelper(), Create(), and SetAckManager().

◆ m_assocManager

ObjectFactory ns3::WifiMacHelper::m_assocManager
protected

Association Manager.

Definition at line 187 of file wifi-mac-helper.h.

Referenced by WifiMacHelper(), Create(), and SetAssocManager().

◆ m_channelAccessManager

ObjectFactory ns3::WifiMacHelper::m_channelAccessManager
protected

Channel Access Manager object factory.

Definition at line 185 of file wifi-mac-helper.h.

Referenced by WifiMacHelper(), Create(), and SetChannelAccessManager().

◆ m_dcf

ObjectFactory ns3::WifiMacHelper::m_dcf
protected

Txop (DCF) object factory.

Definition at line 183 of file wifi-mac-helper.h.

Referenced by WifiMacHelper(), Create(), and SetDcf().

◆ m_edca

std::map<AcIndex, ObjectFactory, std::greater<> > ns3::WifiMacHelper::m_edca
protected

QosTxop (EDCA) object factories.

Definition at line 184 of file wifi-mac-helper.h.

Referenced by WifiMacHelper(), Create(), and SetEdca().

◆ m_emlsrManager

ObjectFactory ns3::WifiMacHelper::m_emlsrManager
protected

EMLSR Manager object factory.

Definition at line 192 of file wifi-mac-helper.h.

Referenced by WifiMacHelper(), Create(), and SetEmlsrManager().

◆ m_frameExchangeManager

ObjectFactory ns3::WifiMacHelper::m_frameExchangeManager
protected

Frame Exchange Manager object factory.

Definition at line 186 of file wifi-mac-helper.h.

Referenced by WifiMacHelper(), Create(), and SetFrameExchangeManager().

◆ m_mac

ObjectFactory ns3::WifiMacHelper::m_mac
protected

MAC object factory.

Definition at line 182 of file wifi-mac-helper.h.

Referenced by Create(), and SetType().

◆ m_muScheduler

ObjectFactory ns3::WifiMacHelper::m_muScheduler
protected

Multi-user Scheduler object factory.

Definition at line 191 of file wifi-mac-helper.h.

Referenced by Create(), and SetMultiUserScheduler().

◆ m_protectionManager

ObjectFactory ns3::WifiMacHelper::m_protectionManager
protected

Factory to create a protection manager.

Definition at line 189 of file wifi-mac-helper.h.

Referenced by WifiMacHelper(), Create(), and SetProtectionManager().

◆ m_queueScheduler

ObjectFactory ns3::WifiMacHelper::m_queueScheduler
protected

MAC queue scheduler.

Definition at line 188 of file wifi-mac-helper.h.

Referenced by WifiMacHelper(), Create(), and SetMacQueueScheduler().


The documentation for this class was generated from the following files: