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

Class that keeps track of all information about the current PHY operating channel. More...

#include "wifi-phy-operating-channel.h"

+ Collaboration diagram for ns3::WifiPhyOperatingChannel:

Public Types

typedef std::set< FrequencyChannelInfo >::const_iterator ConstIterator
 Typedef for a const iterator pointing to a channel in the set of available channels. More...
 

Public Member Functions

 WifiPhyOperatingChannel ()
 Create an uninitialized PHY operating channel. More...
 
 WifiPhyOperatingChannel (ConstIterator it)
 Create a PHY operating channel from an iterator pointing to a channel in the set of available channels. More...
 
virtual ~WifiPhyOperatingChannel ()
 
std::set< uint8_t > GetAll20MHzChannelIndicesInPrimary (uint16_t width) const
 Get the channel indices of all the 20 MHz channels included in the primary channel of the given width, if such primary channel exists, or an empty set, otherwise. More...
 
std::set< uint8_t > GetAll20MHzChannelIndicesInSecondary (const std::set< uint8_t > &primaryIndices) const
 Get the channel indices of all the 20 MHz channels included in the secondary channel corresponding to the given primary channel, if such secondary channel exists, or an empty set, otherwise. More...
 
std::set< uint8_t > GetAll20MHzChannelIndicesInSecondary (uint16_t width) const
 Get the channel indices of all the 20 MHz channels included in the secondary channel of the given width, if such secondary channel exists, or an empty set, otherwise. More...
 
uint16_t GetFrequency (void) const
 Return the center frequency of the operating channel (in MHz). More...
 
uint8_t GetNumber (void) const
 Return the channel number identifying the whole operating channel. More...
 
WifiPhyBand GetPhyBand (void) const
 Return the PHY band of the operating channel. More...
 
uint16_t GetPrimaryChannelCenterFrequency (uint16_t primaryChannelWidth) const
 Get the center frequency of the primary channel of the given width. More...
 
uint8_t GetPrimaryChannelIndex (uint16_t primaryChannelWidth) const
 If the operating channel width is a multiple of 20 MHz, return the index of the primary channel of the given width within the operating channel (0 indicates the 20 MHz subchannel with the lowest center frequency). More...
 
uint8_t GetPrimaryChannelNumber (uint16_t primaryChannelWidth, WifiStandard standard) const
 Get channel number of the primary channel. More...
 
uint16_t GetSecondaryChannelCenterFrequency (uint16_t secondaryChannelWidth) const
 Get the center frequency of the secondary channel of the given width. More...
 
uint8_t GetSecondaryChannelIndex (uint16_t secondaryChannelWidth) const
 If the operating channel width is made of a multiple of 20 MHz, return the index of the secondary channel of the given width within the operating channel (0 indicates the 20 MHz subchannel with the lowest center frequency). More...
 
uint16_t GetWidth (void) const
 Return the width of the whole operating channel (in MHz). More...
 
bool Is80211p (void) const
 Return whether the operating channel is an 802.11p channel. More...
 
bool IsDsss (void) const
 Return whether the operating channel is a DSSS channel. More...
 
bool IsOfdm (void) const
 Return whether the operating channel is an OFDM channel. More...
 
bool IsSet (void) const
 Return true if a valid channel has been set, false otherwise. More...
 
void Set (uint8_t number, uint16_t frequency, uint16_t width, WifiStandard standard, WifiPhyBand band)
 Set the channel according to the specified parameters if a unique frequency channel matches the specified criteria, or abort the simulation otherwise. More...
 
void SetDefault (uint16_t width, WifiStandard standard, WifiPhyBand band)
 Set the default channel of the given width and for the given standard and band. More...
 
void SetPrimary20Index (uint8_t index)
 Set the index of the primary 20 MHz channel (0 indicates the 20 MHz subchannel with the lowest center frequency). More...
 

Static Public Member Functions

static ConstIterator FindFirst (uint8_t number, uint16_t frequency, uint16_t width, WifiStandard standard, WifiPhyBand band, ConstIterator start=m_frequencyChannels.begin())
 Find the first channel matching the specified parameters. More...
 
static uint8_t GetDefaultChannelNumber (uint16_t width, WifiStandard standard, WifiPhyBand band)
 Get the default channel number of the given width and for the given standard and band. More...
 

Static Public Attributes

static const std::set< FrequencyChannelInfom_frequencyChannels
 Available frequency channels. More...
 

Private Attributes

ConstIterator m_channelIt
 const iterator pointing to the configured frequency channel More...
 
uint8_t m_primary20Index
 index of the primary20 channel (0 indicates the 20 MHz subchannel with the lowest center frequency) More...
 

Detailed Description

Class that keeps track of all information about the current PHY operating channel.

Definition at line 43 of file wifi-phy-operating-channel.h.

Member Typedef Documentation

◆ ConstIterator

Typedef for a const iterator pointing to a channel in the set of available channels.

Definition at line 47 of file wifi-phy-operating-channel.h.

Constructor & Destructor Documentation

◆ WifiPhyOperatingChannel() [1/2]

ns3::WifiPhyOperatingChannel::WifiPhyOperatingChannel ( )

Create an uninitialized PHY operating channel.

Definition at line 267 of file wifi-phy-operating-channel.cc.

◆ WifiPhyOperatingChannel() [2/2]

ns3::WifiPhyOperatingChannel::WifiPhyOperatingChannel ( ConstIterator  it)

Create a PHY operating channel from an iterator pointing to a channel in the set of available channels.

Parameters
itthe iterator pointing to a channel in the set of available channels

Definition at line 272 of file wifi-phy-operating-channel.cc.

References NS_LOG_FUNCTION.

◆ ~WifiPhyOperatingChannel()

ns3::WifiPhyOperatingChannel::~WifiPhyOperatingChannel ( )
virtual

Definition at line 279 of file wifi-phy-operating-channel.cc.

References NS_LOG_FUNCTION_NOARGS.

Member Function Documentation

◆ FindFirst()

WifiPhyOperatingChannel::ConstIterator ns3::WifiPhyOperatingChannel::FindFirst ( uint8_t  number,
uint16_t  frequency,
uint16_t  width,
WifiStandard  standard,
WifiPhyBand  band,
ConstIterator  start = m_frequencyChannels.begin () 
)
static

Find the first channel matching the specified parameters.

Parameters
numberthe channel number (use 0 to leave it unspecified)
frequencythe channel center frequency in MHz (use 0 to leave it unspecified)
widththe channel width in MHz (use 0 to leave it unspecified)
standardthe standard (use WIFI_STANDARD_UNSPECIFIED not to check whether a channel is suitable for a specific standard)
bandthe PHY band
startan iterator pointing to the channel to start the search with
Returns
an iterator pointing to the found channel, if any, or to past-the-end of the set of available channels

Definition at line 336 of file wifi-phy-operating-channel.cc.

References third::channel, ns3::GetFrequencyChannelType(), ns3::GetMaximumChannelWidth(), m_frequencyChannels, visualizer.core::start(), ns3::WIFI_STANDARD_UNSPECIFIED, and ns3::wifiStandards.

Referenced by GetDefaultChannelNumber(), GetPrimaryChannelNumber(), and Set().

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

◆ GetAll20MHzChannelIndicesInPrimary()

std::set< uint8_t > ns3::WifiPhyOperatingChannel::GetAll20MHzChannelIndicesInPrimary ( uint16_t  width) const

Get the channel indices of all the 20 MHz channels included in the primary channel of the given width, if such primary channel exists, or an empty set, otherwise.

Parameters
widththe width in MHz of the primary channel
Returns
the channel indices of all the 20 MHz channels included in the primary channel of the given width, if such primary channel exists, or an empty set, otherwise

Definition at line 504 of file wifi-phy-operating-channel.cc.

References GetAll20MHzChannelIndicesInSecondary(), GetWidth(), and m_primary20Index.

Referenced by GetAll20MHzChannelIndicesInSecondary(), ns3::HePhy::GetPer20MHzDurations(), ns3::HePhy::GetTxPowerSpectralDensity(), and Wifi20MHzChannelIndicesTest::RunOne().

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

◆ GetAll20MHzChannelIndicesInSecondary() [1/2]

std::set< uint8_t > ns3::WifiPhyOperatingChannel::GetAll20MHzChannelIndicesInSecondary ( const std::set< uint8_t > &  primaryIndices) const

Get the channel indices of all the 20 MHz channels included in the secondary channel corresponding to the given primary channel, if such secondary channel exists, or an empty set, otherwise.

Parameters
primaryIndicesthe channel indices of all the 20 MHz channels included in the primary channel
Returns
the channel indices of all the 20 MHz channels included in the secondary channel corresponding to the given primary channel, if such secondary channel exists, or an empty set, otherwise

Definition at line 532 of file wifi-phy-operating-channel.cc.

References GetWidth().

+ Here is the call graph for this function:

◆ GetAll20MHzChannelIndicesInSecondary() [2/2]

std::set< uint8_t > ns3::WifiPhyOperatingChannel::GetAll20MHzChannelIndicesInSecondary ( uint16_t  width) const

Get the channel indices of all the 20 MHz channels included in the secondary channel of the given width, if such secondary channel exists, or an empty set, otherwise.

Parameters
widththe width in MHz of the secondary channel
Returns
the channel indices of all the 20 MHz channels included in the secondary channel of the given width, if such secondary channel exists, or an empty set, otherwise

Definition at line 526 of file wifi-phy-operating-channel.cc.

References GetAll20MHzChannelIndicesInPrimary(), and GetAll20MHzChannelIndicesInSecondary().

Referenced by GetAll20MHzChannelIndicesInPrimary(), GetAll20MHzChannelIndicesInSecondary(), and Wifi20MHzChannelIndicesTest::RunOne().

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

◆ GetDefaultChannelNumber()

uint8_t ns3::WifiPhyOperatingChannel::GetDefaultChannelNumber ( uint16_t  width,
WifiStandard  standard,
WifiPhyBand  band 
)
static

Get the default channel number of the given width and for the given standard and band.

Parameters
widththe channel width in MHz
standardthe standard
bandthe PHY band
Returns
the default channel number

Definition at line 321 of file wifi-phy-operating-channel.cc.

References FindFirst(), and m_frequencyChannels.

Referenced by ns3::WifiPhy::DoChannelSwitch(), and SetDefault().

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

◆ GetFrequency()

uint16_t ns3::WifiPhyOperatingChannel::GetFrequency ( void  ) const

Return the center frequency of the operating channel (in MHz).

Returns
the center frequency of the operating channel (in MHz)

Definition at line 388 of file wifi-phy-operating-channel.cc.

References IsSet(), m_channelIt, and NS_ASSERT.

Referenced by MultiLinkSetupTest::CheckMlSetup(), ns3::WifiPhy::GetFrequency(), and GetPrimaryChannelCenterFrequency().

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

◆ GetNumber()

uint8_t ns3::WifiPhyOperatingChannel::GetNumber ( void  ) const

Return the channel number identifying the whole operating channel.

Returns
the channel number identifying the whole operating channel

Definition at line 381 of file wifi-phy-operating-channel.cc.

References IsSet(), m_channelIt, and NS_ASSERT.

Referenced by MultiLinkSetupTest::CheckMlSetup(), and ns3::WifiPhy::GetChannelNumber().

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

◆ GetPhyBand()

WifiPhyBand ns3::WifiPhyOperatingChannel::GetPhyBand ( void  ) const

Return the PHY band of the operating channel.

Returns
the PHY band of the operating channel

Definition at line 402 of file wifi-phy-operating-channel.cc.

References IsSet(), m_channelIt, and NS_ASSERT.

Referenced by MultiLinkSetupTest::CheckMlSetup().

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

◆ GetPrimaryChannelCenterFrequency()

uint16_t ns3::WifiPhyOperatingChannel::GetPrimaryChannelCenterFrequency ( uint16_t  primaryChannelWidth) const

Get the center frequency of the primary channel of the given width.

Parameters
primaryChannelWidththe width of the primary channel in MHz
Returns
the center frequency of the primary channel of the given width

Definition at line 476 of file wifi-phy-operating-channel.cc.

References GetFrequency(), GetPrimaryChannelIndex(), GetWidth(), and NS_LOG_FUNCTION.

Referenced by ns3::PhyEntity::BuildPpdu(), ns3::EhtPhy::BuildPpdu(), ns3::HePhy::BuildPpdu(), ns3::HtPhy::BuildPpdu(), ns3::DsssPhy::BuildPpdu(), ns3::ErpOfdmPhy::BuildPpdu(), ns3::OfdmPhy::BuildPpdu(), ns3::VhtPhy::BuildPpdu(), ns3::HtPhy::GetCcaIndication(), ns3::VhtPhy::GetCcaIndication(), ns3::PhyEntity::GetCenterFrequencyForChannelWidth(), GetPrimaryChannelNumber(), GetSecondaryChannelCenterFrequency(), and ns3::SpectrumWifiPhy::StartRx().

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

◆ GetPrimaryChannelIndex()

uint8_t ns3::WifiPhyOperatingChannel::GetPrimaryChannelIndex ( uint16_t  primaryChannelWidth) const

If the operating channel width is a multiple of 20 MHz, return the index of the primary channel of the given width within the operating channel (0 indicates the 20 MHz subchannel with the lowest center frequency).

Otherwise, return 0.

Parameters
primaryChannelWidththe width of the primary channel in MHz
Returns
the index of the requested primary channel within the operating channel

Definition at line 430 of file wifi-phy-operating-channel.cc.

References GetWidth(), m_primary20Index, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

Referenced by ns3::EhtPhy::BuildPpdu(), ns3::HePhy::BuildPpdu(), MultiLinkSetupTest::CheckMlSetup(), ns3::HePhy::GetCenterFrequencyForNonOfdmaPart(), ns3::HePhy::GetNonOfdmaBand(), ns3::WifiPhy::GetPrimary20Index(), ns3::PhyEntity::GetPrimaryBand(), GetPrimaryChannelCenterFrequency(), ns3::HePhy::GetRuBandForRx(), GetSecondaryChannelCenterFrequency(), GetSecondaryChannelIndex(), ns3::HePhy::GetTxPowerSpectralDensity(), and ns3::SpectrumWifiPhy::UpdateInterferenceHelperBands().

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

◆ GetPrimaryChannelNumber()

uint8_t ns3::WifiPhyOperatingChannel::GetPrimaryChannelNumber ( uint16_t  primaryChannelWidth,
WifiStandard  standard 
) const

Get channel number of the primary channel.

Parameters
primaryChannelWidththe width of the primary channel (MHz)
standardthe standard
Returns
channel number of the primary channel

Definition at line 494 of file wifi-phy-operating-channel.cc.

References FindFirst(), GetPrimaryChannelCenterFrequency(), and m_channelIt.

Referenced by ns3::WifiPhy::GetPrimaryChannelNumber().

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

◆ GetSecondaryChannelCenterFrequency()

uint16_t ns3::WifiPhyOperatingChannel::GetSecondaryChannelCenterFrequency ( uint16_t  secondaryChannelWidth) const

Get the center frequency of the secondary channel of the given width.

Parameters
secondaryChannelWidththe width of the secondary channel in MHz
Returns
the center frequency of the secondary channel of the given width

Definition at line 486 of file wifi-phy-operating-channel.cc.

References GetPrimaryChannelCenterFrequency(), and GetPrimaryChannelIndex().

Referenced by ns3::HtPhy::GetCcaIndication(), and ns3::VhtPhy::GetCcaIndication().

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

◆ GetSecondaryChannelIndex()

uint8_t ns3::WifiPhyOperatingChannel::GetSecondaryChannelIndex ( uint16_t  secondaryChannelWidth) const

If the operating channel width is made of a multiple of 20 MHz, return the index of the secondary channel of the given width within the operating channel (0 indicates the 20 MHz subchannel with the lowest center frequency).

Otherwise, return 0.

Parameters
secondaryChannelWidththe width of the secondary channel in MHz
Returns
the index of the requested secondary channel within the operating channel

Definition at line 457 of file wifi-phy-operating-channel.cc.

References GetPrimaryChannelIndex(), NS_LOG_FUNCTION, and NS_LOG_LOGIC.

Referenced by ns3::PhyEntity::GetSecondaryBand().

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

◆ GetWidth()

uint16_t ns3::WifiPhyOperatingChannel::GetWidth ( void  ) const

Return the width of the whole operating channel (in MHz).

Returns
the width of the whole operating channel (in MHz)

Definition at line 395 of file wifi-phy-operating-channel.cc.

References IsSet(), m_channelIt, and NS_ASSERT.

Referenced by MultiLinkSetupTest::CheckMlSetup(), GetAll20MHzChannelIndicesInPrimary(), GetAll20MHzChannelIndicesInSecondary(), ns3::WifiPhy::GetChannelWidth(), GetPrimaryChannelCenterFrequency(), GetPrimaryChannelIndex(), and SetPrimary20Index().

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

◆ Is80211p()

bool ns3::WifiPhyOperatingChannel::Is80211p ( void  ) const

Return whether the operating channel is an 802.11p channel.

Returns
whether the operating channel is an 802.11p channel

Definition at line 423 of file wifi-phy-operating-channel.cc.

References IsSet(), m_channelIt, NS_ASSERT, and ns3::WIFI_PHY_80211p_CHANNEL.

+ Here is the call graph for this function:

◆ IsDsss()

bool ns3::WifiPhyOperatingChannel::IsDsss ( void  ) const

Return whether the operating channel is a DSSS channel.

Returns
whether the operating channel is a DSSS channel

Definition at line 416 of file wifi-phy-operating-channel.cc.

References IsSet(), m_channelIt, NS_ASSERT, and ns3::WIFI_PHY_DSSS_CHANNEL.

+ Here is the call graph for this function:

◆ IsOfdm()

bool ns3::WifiPhyOperatingChannel::IsOfdm ( void  ) const

Return whether the operating channel is an OFDM channel.

Returns
whether the operating channel is an OFDM channel

Definition at line 409 of file wifi-phy-operating-channel.cc.

References IsSet(), m_channelIt, NS_ASSERT, and ns3::WIFI_PHY_OFDM_CHANNEL.

Referenced by ns3::ChannelAccessManager::DoGrantDcfAccess(), and ns3::ChannelAccessManager::InitLastBusyStructs().

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

◆ IsSet()

bool ns3::WifiPhyOperatingChannel::IsSet ( void  ) const

Return true if a valid channel has been set, false otherwise.

Returns
true if a valid channel has been set, false otherwise

Definition at line 285 of file wifi-phy-operating-channel.cc.

References m_channelIt, and m_frequencyChannels.

Referenced by ns3::WifiPhy::ConfigureStandard(), SetChannelFrequencyTest::DoRun(), GetFrequency(), GetNumber(), GetPhyBand(), GetWidth(), Is80211p(), IsDsss(), and IsOfdm().

+ Here is the caller graph for this function:

◆ Set()

void ns3::WifiPhyOperatingChannel::Set ( uint8_t  number,
uint16_t  frequency,
uint16_t  width,
WifiStandard  standard,
WifiPhyBand  band 
)

Set the channel according to the specified parameters if a unique frequency channel matches the specified criteria, or abort the simulation otherwise.

If the channel width is a multiple of 20 MHz, the primary 20 MHz channel is set to the 20 MHz subchannel with the lowest center frequency.

Parameters
numberthe channel number (use 0 to leave it unspecified)
frequencythe channel center frequency in MHz (use 0 to leave it unspecified)
widththe channel width in MHz (use 0 to leave it unspecified)
standardthe standard
bandthe PHY band

Definition at line 291 of file wifi-phy-operating-channel.cc.

References FindFirst(), m_channelIt, m_frequencyChannels, m_primary20Index, and NS_LOG_FUNCTION.

Referenced by ns3::WifiPhy::DoChannelSwitch(), and SetDefault().

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

◆ SetDefault()

void ns3::WifiPhyOperatingChannel::SetDefault ( uint16_t  width,
WifiStandard  standard,
WifiPhyBand  band 
)

Set the default channel of the given width and for the given standard and band.

If the channel width is a multiple of 20 MHz, the primary 20 MHz channel is set to the 20 MHz subchannel with the lowest center frequency.

Parameters
widththe channel width in MHz
standardthe standard
bandthe PHY band

Definition at line 313 of file wifi-phy-operating-channel.cc.

References GetDefaultChannelNumber(), NS_LOG_FUNCTION, and Set().

Referenced by Wifi20MHzChannelIndicesTest::DoRun().

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

◆ SetPrimary20Index()

void ns3::WifiPhyOperatingChannel::SetPrimary20Index ( uint8_t  index)

Set the index of the primary 20 MHz channel (0 indicates the 20 MHz subchannel with the lowest center frequency).

Parameters
indexthe index of the primary 20 MHz channel

Definition at line 467 of file wifi-phy-operating-channel.cc.

References GetWidth(), m_primary20Index, NS_ABORT_MSG_IF, and NS_LOG_FUNCTION.

Referenced by ns3::WifiPhy::DoChannelSwitch(), and Wifi20MHzChannelIndicesTest::RunOne().

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

Member Data Documentation

◆ m_channelIt

ConstIterator ns3::WifiPhyOperatingChannel::m_channelIt
private

const iterator pointing to the configured frequency channel

Definition at line 257 of file wifi-phy-operating-channel.h.

Referenced by GetFrequency(), GetNumber(), GetPhyBand(), GetPrimaryChannelNumber(), GetWidth(), Is80211p(), IsDsss(), IsOfdm(), IsSet(), and Set().

◆ m_frequencyChannels

const std::set< FrequencyChannelInfo > ns3::WifiPhyOperatingChannel::m_frequencyChannels
static

Available frequency channels.

Definition at line 63 of file wifi-phy-operating-channel.h.

Referenced by FindFirst(), GetDefaultChannelNumber(), ns3::ReducedNeighborReport::GetOperatingChannel(), IsSet(), and Set().

◆ m_primary20Index

uint8_t ns3::WifiPhyOperatingChannel::m_primary20Index
private

index of the primary20 channel (0 indicates the 20 MHz subchannel with the lowest center frequency)

Definition at line 258 of file wifi-phy-operating-channel.h.

Referenced by GetAll20MHzChannelIndicesInPrimary(), GetPrimaryChannelIndex(), Set(), and SetPrimary20Index().


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