A Discrete-Event Network Simulator
API
ns3::WifiHelper Class Reference

helps to create WifiNetDevice objects More...

#include "wifi-helper.h"

+ Inheritance diagram for ns3::WifiHelper:
+ Collaboration diagram for ns3::WifiHelper:

Public Types

typedef std::function< std::size_t(Ptr< QueueItem >)> SelectQueueCallback
 Callback invoked to determine the MAC queue selected for a given packet. More...
 

Public Member Functions

 WifiHelper ()
 Create a Wifi helper in an empty state: all its parameters must be set before calling ns3::WifiHelper::Install. More...
 
virtual ~WifiHelper ()
 
int64_t AssignStreams (NetDeviceContainer c, int64_t stream)
 Assign a fixed random variable stream number to the random variables used by the Phy and Mac aspects of the Wifi models. More...
 
virtual NetDeviceContainer Install (const WifiPhyHelper &phy, const WifiMacHelper &mac, NodeContainer::Iterator first, NodeContainer::Iterator last) const
 
virtual NetDeviceContainer Install (const WifiPhyHelper &phy, const WifiMacHelper &mac, NodeContainer c) const
 
virtual NetDeviceContainer Install (const WifiPhyHelper &phy, const WifiMacHelper &mac, Ptr< Node > node) const
 
virtual NetDeviceContainer Install (const WifiPhyHelper &phy, const WifiMacHelper &mac, std::string nodeName) const
 
void SetAckPolicySelectorForAc (AcIndex ac, std::string type, std::string n0="", const AttributeValue &v0=EmptyAttributeValue(), std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue())
 
void SetObssPdAlgorithm (std::string type, std::string n0="", const AttributeValue &v0=EmptyAttributeValue(), std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue())
 
void SetRemoteStationManager (std::string type, std::string n0="", const AttributeValue &v0=EmptyAttributeValue(), std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue())
 
void SetSelectQueueCallback (SelectQueueCallback f)
 
virtual void SetStandard (WifiPhyStandard standard)
 

Static Public Member Functions

static void EnableLogComponents (void)
 Helper to enable all WifiNetDevice log components with one statement. More...
 

Protected Attributes

ObjectFactory m_ackPolicySelector [4]
 ack policy selector for all ACs More...
 
ObjectFactory m_obssPdAlgorithm
 OBSS PD algorithm. More...
 
SelectQueueCallback m_selectQueueCallback
 select queue callback More...
 
WifiPhyStandard m_standard
 wifi standard More...
 
ObjectFactory m_stationManager
 station manager More...
 

Detailed Description

helps to create WifiNetDevice objects

This class can help to create a large set of similar WifiNetDevice objects and to configure a large set of their attributes during creation.

Definition at line 300 of file wifi-helper.h.

Member Typedef Documentation

◆ SelectQueueCallback

typedef std::function<std::size_t (Ptr<QueueItem>)> ns3::WifiHelper::SelectQueueCallback

Callback invoked to determine the MAC queue selected for a given packet.

Definition at line 413 of file wifi-helper.h.

Constructor & Destructor Documentation

◆ ~WifiHelper()

ns3::WifiHelper::~WifiHelper ( )
virtual

Definition at line 650 of file wifi-helper.cc.

◆ WifiHelper()

ns3::WifiHelper::WifiHelper ( )

Create a Wifi helper in an empty state: all its parameters must be set before calling ns3::WifiHelper::Install.

The default state is defined as being an Adhoc MAC layer with an ARF rate control algorithm and both objects using their default attribute values. By default, configure MAC and PHY for 802.11a.

Definition at line 654 of file wifi-helper.cc.

References ns3::AC_BE, ns3::AC_BK, ns3::AC_VI, ns3::AC_VO, SetAckPolicySelectorForAc(), and SetRemoteStationManager().

+ Here is the call graph for this function:

Member Function Documentation

◆ AssignStreams()

int64_t ns3::WifiHelper::AssignStreams ( NetDeviceContainer  c,
int64_t  stream 
)

Assign a fixed random variable stream number to the random variables used by the Phy and Mac aspects of the Wifi models.

Each device in container c has fixed stream numbers assigned to its random variables. The Wifi channel (e.g. propagation loss model) is excluded. Return the number of streams (possibly zero) that have been assigned. The Install() method should have previously been called by the user.

Parameters
cNetDeviceContainer of the set of net devices for which the WifiNetDevice should be modified to use fixed streams
streamfirst stream index to use
Returns
the number of stream indices assigned by this helper

Definition at line 934 of file wifi-helper.cc.

References ns3::Txop::AssignStreams(), ns3::NetDeviceContainer::Begin(), ns3::NetDeviceContainer::End(), ns3::PointerValue::Get(), third::mac, and third::wifi.

+ Here is the call graph for this function:

◆ EnableLogComponents()

void ns3::WifiHelper::EnableLogComponents ( void  )
static

Helper to enable all WifiNetDevice log components with one statement.

Definition at line 872 of file wifi-helper.cc.

References ns3::LOG_LEVEL_ALL, ns3::LOG_PREFIX_NODE, ns3::LOG_PREFIX_TIME, ns3::LogComponentEnable(), and ns3::LogComponentEnableAll().

Referenced by ns3::Wifi80211pHelper::EnableLogComponents(), and ns3::WaveHelper::EnableLogComponents().

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

◆ Install() [1/4]

NetDeviceContainer ns3::WifiHelper::Install ( const WifiPhyHelper phy,
const WifiMacHelper mac,
NodeContainer::Iterator  first,
NodeContainer::Iterator  last 
) const
virtual

◆ Install() [2/4]

NetDeviceContainer ns3::WifiHelper::Install ( const WifiPhyHelper phy,
const WifiMacHelper mac,
NodeContainer  c 
) const
virtual
Parameters
phythe PHY helper to create PHY objects
macthe MAC helper to create MAC objects
cthe set of nodes on which a wifi device must be created
Returns
a device container which contains all the devices created by this method.

Reimplemented in ns3::Wifi80211pHelper.

Definition at line 850 of file wifi-helper.cc.

References ns3::NodeContainer::Begin(), ns3::NodeContainer::End(), and Install().

+ Here is the call graph for this function:

◆ Install() [3/4]

NetDeviceContainer ns3::WifiHelper::Install ( const WifiPhyHelper phy,
const WifiMacHelper mac,
Ptr< Node node 
) const
virtual
Parameters
phythe PHY helper to create PHY objects
macthe MAC helper to create MAC objects
nodethe node on which a wifi device must be created
Returns
a device container which contains all the devices created by this method.

Definition at line 857 of file wifi-helper.cc.

References Install(), third::mac, and third::phy.

+ Here is the call graph for this function:

◆ Install() [4/4]

NetDeviceContainer ns3::WifiHelper::Install ( const WifiPhyHelper phy,
const WifiMacHelper mac,
std::string  nodeName 
) const
virtual
Parameters
phythe PHY helper to create PHY objects
macthe MAC helper to create MAC objects
nodeNamethe name of node on which a wifi device must be created
Returns
a device container which contains all the devices created by this method.

Definition at line 864 of file wifi-helper.cc.

References Install(), third::mac, and third::phy.

+ Here is the call graph for this function:

◆ SetAckPolicySelectorForAc()

void ns3::WifiHelper::SetAckPolicySelectorForAc ( AcIndex  ac,
std::string  type,
std::string  n0 = "",
const AttributeValue v0 = EmptyAttributeValue (),
std::string  n1 = "",
const AttributeValue v1 = EmptyAttributeValue (),
std::string  n2 = "",
const AttributeValue v2 = EmptyAttributeValue (),
std::string  n3 = "",
const AttributeValue v3 = EmptyAttributeValue (),
std::string  n4 = "",
const AttributeValue v4 = EmptyAttributeValue (),
std::string  n5 = "",
const AttributeValue v5 = EmptyAttributeValue (),
std::string  n6 = "",
const AttributeValue v6 = EmptyAttributeValue (),
std::string  n7 = "",
const AttributeValue v7 = EmptyAttributeValue () 
)
Parameters
acthe Access Category to attach the ack policy selector to.
typethe type of ns3::WifiAckPolicySelector to create.
n0the name of the attribute to set
v0the value of the attribute to set
n1the name of the attribute to set
v1the value of the attribute to set
n2the name of the attribute to set
v2the value of the attribute to set
n3the name of the attribute to set
v3the value of the attribute to set
n4the name of the attribute to set
v4the value of the attribute to set
n5the name of the attribute to set
v5the value of the attribute to set
n6the name of the attribute to set
v6the value of the attribute to set
n7the name of the attribute to set
v7the value of the attribute to set

All the attributes specified in this method should exist in the requested ack policy selector.

Definition at line 712 of file wifi-helper.cc.

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

Referenced by WifiHelper().

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

◆ SetObssPdAlgorithm()

void ns3::WifiHelper::SetObssPdAlgorithm ( std::string  type,
std::string  n0 = "",
const AttributeValue v0 = EmptyAttributeValue (),
std::string  n1 = "",
const AttributeValue v1 = EmptyAttributeValue (),
std::string  n2 = "",
const AttributeValue v2 = EmptyAttributeValue (),
std::string  n3 = "",
const AttributeValue v3 = EmptyAttributeValue (),
std::string  n4 = "",
const AttributeValue v4 = EmptyAttributeValue (),
std::string  n5 = "",
const AttributeValue v5 = EmptyAttributeValue (),
std::string  n6 = "",
const AttributeValue v6 = EmptyAttributeValue (),
std::string  n7 = "",
const AttributeValue v7 = EmptyAttributeValue () 
)
Parameters
typethe type of ns3::ObssPdAlgorithm to create.
n0the name of the attribute to set
v0the value of the attribute to set
n1the name of the attribute to set
v1the value of the attribute to set
n2the name of the attribute to set
v2the value of the attribute to set
n3the name of the attribute to set
v3the value of the attribute to set
n4the name of the attribute to set
v4the value of the attribute to set
n5the name of the attribute to set
v5the value of the attribute to set
n6the name of the attribute to set
v6the value of the attribute to set
n7the name of the attribute to set
v7the value of the attribute to set

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

Definition at line 689 of file wifi-helper.cc.

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

+ Here is the call graph for this function:

◆ SetRemoteStationManager()

void ns3::WifiHelper::SetRemoteStationManager ( std::string  type,
std::string  n0 = "",
const AttributeValue v0 = EmptyAttributeValue (),
std::string  n1 = "",
const AttributeValue v1 = EmptyAttributeValue (),
std::string  n2 = "",
const AttributeValue v2 = EmptyAttributeValue (),
std::string  n3 = "",
const AttributeValue v3 = EmptyAttributeValue (),
std::string  n4 = "",
const AttributeValue v4 = EmptyAttributeValue (),
std::string  n5 = "",
const AttributeValue v5 = EmptyAttributeValue (),
std::string  n6 = "",
const AttributeValue v6 = EmptyAttributeValue (),
std::string  n7 = "",
const AttributeValue v7 = EmptyAttributeValue () 
)
Parameters
typethe type of ns3::WifiRemoteStationManager to create.
n0the name of the attribute to set
v0the value of the attribute to set
n1the name of the attribute to set
v1the value of the attribute to set
n2the name of the attribute to set
v2the value of the attribute to set
n3the name of the attribute to set
v3the value of the attribute to set
n4the name of the attribute to set
v4the value of the attribute to set
n5the name of the attribute to set
v5the value of the attribute to set
n6the name of the attribute to set
v6the value of the attribute to set
n7the name of the attribute to set
v7the value of the attribute to set

All the attributes specified in this method should exist in the requested station manager.

Definition at line 666 of file wifi-helper.cc.

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

Referenced by OcbWifiMacTestCase::ConfigureOcbMode(), ns3::Wifi80211pHelper::Default(), VanetRoutingExperiment::SetupAdhocDevices(), and WifiHelper().

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

◆ SetSelectQueueCallback()

void ns3::WifiHelper::SetSelectQueueCallback ( SelectQueueCallback  f)
Parameters
fthe select queue callback

Set the select queue callback to set on the netdevice queue interface aggregated to the WifiNetDevice, in case RegularWifiMac with QoS enabled is used

Definition at line 741 of file wifi-helper.cc.

References f(), and m_selectQueueCallback.

+ Here is the call graph for this function:

◆ SetStandard()

void ns3::WifiHelper::SetStandard ( WifiPhyStandard  standard)
virtual
Parameters
standardthe phy standard to configure during installation

This method sets standards-compliant defaults for WifiMac parameters such as sifs time, slot time, timeout values, etc., based on the standard selected. It results in WifiMac::ConfigureStandard(standard) being called on each installed mac object.

The default standard of 802.11a will be applied if SetStandard() is not called.

Note that WifiMac::ConfigureStandard () will overwrite certain defaults in the attribute system, so if a user wants to manipulate any default values affected by ConfigureStandard() while using this helper, the user should use a post-install configuration such as Config::Set() on any objects that this helper creates, such as:

Config::Set ("/NodeList/0/DeviceList/0/$ns3::WifiNetDevice/Mac/Slot", TimeValue (MicroSeconds (slot)));
See also
WifiMac::ConfigureStandard
Config::Set

Reimplemented in ns3::Wifi80211pHelper.

Definition at line 735 of file wifi-helper.cc.

References m_standard.

Referenced by ns3::Wifi80211pHelper::SetStandard().

+ Here is the caller graph for this function:

Member Data Documentation

◆ m_ackPolicySelector

ObjectFactory ns3::WifiHelper::m_ackPolicySelector[4]
protected

ack policy selector for all ACs

Definition at line 508 of file wifi-helper.h.

Referenced by Install(), and SetAckPolicySelectorForAc().

◆ m_obssPdAlgorithm

ObjectFactory ns3::WifiHelper::m_obssPdAlgorithm
protected

OBSS PD algorithm.

Definition at line 511 of file wifi-helper.h.

Referenced by Install(), and SetObssPdAlgorithm().

◆ m_selectQueueCallback

SelectQueueCallback ns3::WifiHelper::m_selectQueueCallback
protected

select queue callback

Definition at line 510 of file wifi-helper.h.

Referenced by Install(), and SetSelectQueueCallback().

◆ m_standard

WifiPhyStandard ns3::WifiHelper::m_standard
protected

wifi standard

Definition at line 509 of file wifi-helper.h.

Referenced by Install(), and SetStandard().

◆ m_stationManager

ObjectFactory ns3::WifiHelper::m_stationManager
protected

station manager

Definition at line 507 of file wifi-helper.h.

Referenced by Install(), and SetRemoteStationManager().


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