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...
 
void DisableFlowControl (void)
 Disable flow control only if you know what you are doing. More...
 
virtual NetDeviceContainer Install (const WifiPhyHelper &phy, const WifiMacHelper &mac, NodeContainer c) const
 
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, Ptr< Node > node) const
 
virtual NetDeviceContainer Install (const WifiPhyHelper &phy, const WifiMacHelper &mac, std::string nodeName) const
 
template<typename... Args>
void SetObssPdAlgorithm (std::string type, Args &&... args)
 Helper function used to set the OBSS-PD algorithm. More...
 
template<typename... Args>
void SetRemoteStationManager (std::string type, Args &&... args)
 Helper function used to set the station manager. More...
 
void SetSelectQueueCallback (SelectQueueCallback f)
 
virtual void SetStandard (WifiStandard 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...
 
bool m_enableFlowControl
 whether to enable flow control More...
 
ObjectFactory m_obssPdAlgorithm
 OBSS_PD algorithm. More...
 
SelectQueueCallback m_selectQueueCallback
 select queue callback More...
 
WifiStandard 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 273 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 309 of file wifi-helper.h.

Constructor & Destructor Documentation

◆ ~WifiHelper()

ns3::WifiHelper::~WifiHelper ( )
virtual

Definition at line 654 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 658 of file wifi-helper.cc.

References 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 889 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:

◆ DisableFlowControl()

void ns3::WifiHelper::DisableFlowControl ( void  )

Disable flow control only if you know what you are doing.

By disabling flow control, this NetDevice will be sent packets even if there is no room for them (such packets will be likely dropped by this NetDevice). Also, any queue disc installed on this NetDevice will have no effect, as every packet enqueued to the traffic control layer queue disc will be immediately dequeued.

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

References m_enableFlowControl.

◆ EnableLogComponents()

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

Helper to enable all WifiNetDevice log components with one statement.

Definition at line 792 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::MeshHelper::EnableLogComponents(), ns3::WaveHelper::EnableLogComponents(), and ns3::Wifi80211pHelper::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  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 770 of file wifi-helper.cc.

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

+ Here is the call graph for this function:

◆ Install() [2/4]

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

◆ 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 777 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 784 of file wifi-helper.cc.

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

+ Here is the call graph for this function:

◆ SetObssPdAlgorithm()

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

Helper function used to set the OBSS-PD algorithm.

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

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

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

+ Here is the call graph for this function:

◆ SetRemoteStationManager()

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

Helper function used to set the station manager.

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

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

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

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

+ 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 WifiMac with QoS enabled is used

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

References f(), and m_selectQueueCallback.

+ Here is the call graph for this function:

◆ SetStandard()

void ns3::WifiHelper::SetStandard ( WifiStandard  standard)
virtual
Parameters
standardthe 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)));
void Set(std::string path, const AttributeValue &value)
Definition: config.cc:839
Time MicroSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition: nstime.h:1260
See also
WifiMac::ConfigureStandard
Config::Set

Reimplemented in ns3::Wifi80211pHelper.

Definition at line 667 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 415 of file wifi-helper.h.

◆ m_enableFlowControl

bool ns3::WifiHelper::m_enableFlowControl
protected

whether to enable flow control

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

Referenced by DisableFlowControl(), and Install().

◆ m_obssPdAlgorithm

ObjectFactory ns3::WifiHelper::m_obssPdAlgorithm
protected

OBSS_PD algorithm.

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

Referenced by Install(), and SetObssPdAlgorithm().

◆ m_selectQueueCallback

SelectQueueCallback ns3::WifiHelper::m_selectQueueCallback
protected

select queue callback

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

Referenced by Install(), and SetSelectQueueCallback().

◆ m_standard

WifiStandard ns3::WifiHelper::m_standard
protected

wifi standard

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

Referenced by Install(), and SetStandard().

◆ m_stationManager

ObjectFactory ns3::WifiHelper::m_stationManager
protected

station manager

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

Referenced by Install(), and SetRemoteStationManager().


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