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

This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters which are to be used for a transmission. More...

#include "wifi-tx-vector.h"

+ Collaboration diagram for ns3::WifiTxVector:

Public Types

typedef std::map< uint16_t, HeMuUserInfoHeMuUserInfoMap
 map of HE MU specific user info paramters indexed by STA-ID More...
 

Public Member Functions

 WifiTxVector ()
 
 WifiTxVector (WifiMode mode, uint8_t powerLevel, WifiPreamble preamble, uint16_t guardInterval, uint8_t nTx, uint8_t nss, uint8_t ness, uint16_t channelWidth, bool aggregation, bool stbc=false, bool ldpc=false, uint8_t bssColor=0, uint16_t length=0)
 Create a TXVECTOR with the given parameters. More...
 
 WifiTxVector (const WifiTxVector &txVector)
 Copy constructor. More...
 
 ~WifiTxVector ()
 
uint8_t GetBssColor (void) const
 Get the BSS color. More...
 
uint16_t GetChannelWidth (void) const
 
uint16_t GetGuardInterval (void) const
 
HeMuUserInfo GetHeMuUserInfo (uint16_t staId) const
 Get the HE MU user-specific transmission information for the given STA-ID. More...
 
const HeMuUserInfoMapGetHeMuUserInfoMap (void) const
 Get a const reference to the map HE MU user-specific transmission information indexed by STA-ID. More...
 
HeMuUserInfoMapGetHeMuUserInfoMap (void)
 Get a reference to the map HE MU user-specific transmission information indexed by STA-ID. More...
 
uint16_t GetLength (void) const
 Get the LENGTH field of the L-SIG. More...
 
WifiMode GetMode (uint16_t staId=SU_STA_ID) const
 If this TX vector is associated with an SU PPDU, return the selected payload transmission mode. More...
 
bool GetModeInitialized (void) const
 
WifiModulationClass GetModulationClass (void) const
 Get the modulation class specified by this TXVECTOR. More...
 
uint8_t GetNess (void) const
 
uint8_t GetNss (uint16_t staId=SU_STA_ID) const
 If this TX vector is associated with an SU PPDU, return the number of spatial streams. More...
 
uint8_t GetNssMax (void) const
 
uint8_t GetNTx (void) const
 
std::pair< std::size_t, std::size_t > GetNumRusPerHeSigBContentChannel (void) const
 Get the number of RUs per HE-SIG-B content channel. More...
 
WifiPreamble GetPreambleType (void) const
 
HeRu::RuSpec GetRu (uint16_t staId) const
 Get the RU specification for the STA-ID. More...
 
uint8_t GetTxPowerLevel (void) const
 
bool IsAggregation (void) const
 Checks whether the PSDU contains A-MPDU. More...
 
bool IsDlMu (void) const
 Return true if this TX vector is used for a downlink multi-user transmission. More...
 
bool IsLdpc (void) const
 Check if LDPC FEC coding is used or not. More...
 
bool IsMu (void) const
 Return true if this TX vector is used for a multi-user transmission. More...
 
bool IsStbc (void) const
 Check if STBC is used or not. More...
 
bool IsUlMu (void) const
 Return true if this TX vector is used for an uplink multi-user transmission. More...
 
bool IsValid (void) const
 The standard disallows certain combinations of WifiMode, number of spatial streams, and channel widths. More...
 
void SetAggregation (bool aggregation)
 Sets if PSDU contains A-MPDU. More...
 
void SetBssColor (uint8_t color)
 Set the BSS color. More...
 
void SetChannelWidth (uint16_t channelWidth)
 Sets the selected channelWidth (in MHz) More...
 
void SetGuardInterval (uint16_t guardInterval)
 Sets the guard interval duration (in nanoseconds) More...
 
void SetHeMuUserInfo (uint16_t staId, HeMuUserInfo userInfo)
 Set the HE MU user-specific transmission information for the given STA-ID. More...
 
void SetLdpc (bool ldpc)
 Sets if LDPC FEC coding is being used. More...
 
void SetLength (uint16_t length)
 Set the LENGTH field of the L-SIG. More...
 
void SetMode (WifiMode mode)
 Sets the selected payload transmission mode. More...
 
void SetMode (WifiMode mode, uint16_t staId)
 Sets the selected payload transmission mode for a given STA ID (for HE MU only) More...
 
void SetNess (uint8_t ness)
 Sets the Ness number. More...
 
void SetNss (uint8_t nss)
 Sets the number of Nss. More...
 
void SetNss (uint8_t nss, uint16_t staId)
 Sets the number of Nss for HE MU. More...
 
void SetNTx (uint8_t nTx)
 Sets the number of TX antennas. More...
 
void SetPreambleType (WifiPreamble preamble)
 Sets the preamble type. More...
 
void SetRu (HeRu::RuSpec ru, uint16_t staId)
 Set the RU specification for the STA-ID. More...
 
void SetStbc (bool stbc)
 Sets if STBC is being used. More...
 
void SetTxPowerLevel (uint8_t powerlevel)
 Sets the selected transmission power level. More...
 

Private Attributes

bool m_aggregation
 Flag whether the PSDU contains A-MPDU. More...
 
uint8_t m_bssColor
 BSS color. More...
 
uint16_t m_channelWidth
 channel width in MHz More...
 
uint16_t m_guardInterval
 guard interval duration in nanoseconds More...
 
bool m_ldpc
 LDPC FEC coding if true, BCC otherwise. More...
 
uint16_t m_length
 LENGTH field of the L-SIG. More...
 
WifiMode m_mode
 The DATARATE parameter in Table 15-4. More...
 
bool m_modeInitialized
 Internal initialization flag. More...
 
HeMuUserInfoMap m_muUserInfos
 HE MU specific per-user information indexed by station ID (STA-ID) corresponding to the 11 LSBs of the AID of the recipient STA This list shall be used only for HE MU. More...
 
uint8_t m_ness
 number of spatial streams in beamforming More...
 
uint8_t m_nss
 number of spatial streams More...
 
uint8_t m_nTx
 number of TX antennas More...
 
WifiPreamble m_preamble
 preamble More...
 
bool m_stbc
 STBC used or not. More...
 
uint8_t m_txPowerLevel
 The TXPWR_LEVEL parameter in Table 15-4. More...
 

Detailed Description

This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters which are to be used for a transmission.

See IEEE 802.11-2016 16.2.5 "Transmit PHY", and also 8.3.4.1 "PHY SAP peer-to-peer service primitive parameters".

If this class is constructed with the constructor that takes no arguments, then the client must explicitly set the mode and transmit power level parameters before using them. Default member initializers are provided for the other parameters, to conform to a non-MIMO/long guard configuration, although these may also be explicitly set after object construction.

When used in a infrastructure context, WifiTxVector values should be drawn from WifiRemoteStationManager parameters since rate adaptation is responsible for picking the mode, number of streams, etc., but in the case in which there is no such manager (e.g. mesh), the client still needs to initialize at least the mode and transmit power level appropriately.

Note
the above reference is valid for the DSSS PHY only (clause 16). TXVECTOR is defined also for the other PHYs, however they don't include the TXPWRLVL explicitly in the TXVECTOR. This is somewhat strange, since all PHYs actually have a PMD_TXPWRLVL.request primitive. We decide to include the power level in WifiTxVector for all PHYs, since it serves better our purposes, and furthermore it seems close to the way real devices work (e.g., madwifi).

Definition at line 70 of file wifi-tx-vector.h.

Member Typedef Documentation

◆ HeMuUserInfoMap

typedef std::map<uint16_t , HeMuUserInfo > ns3::WifiTxVector::HeMuUserInfoMap

map of HE MU specific user info paramters indexed by STA-ID

Definition at line 74 of file wifi-tx-vector.h.

Constructor & Destructor Documentation

◆ WifiTxVector() [1/3]

ns3::WifiTxVector::WifiTxVector ( )

Definition at line 27 of file wifi-tx-vector.cc.

◆ ~WifiTxVector()

ns3::WifiTxVector::~WifiTxVector ( )

Definition at line 99 of file wifi-tx-vector.cc.

References m_muUserInfos.

◆ WifiTxVector() [2/3]

ns3::WifiTxVector::WifiTxVector ( WifiMode  mode,
uint8_t  powerLevel,
WifiPreamble  preamble,
uint16_t  guardInterval,
uint8_t  nTx,
uint8_t  nss,
uint8_t  ness,
uint16_t  channelWidth,
bool  aggregation,
bool  stbc = false,
bool  ldpc = false,
uint8_t  bssColor = 0,
uint16_t  length = 0 
)

Create a TXVECTOR with the given parameters.

Parameters
modeWifiMode
powerLeveltransmission power level
preamblepreamble type
guardIntervalthe guard interval duration in nanoseconds
nTxthe number of TX antennas
nssthe number of spatial STBC streams (NSS)
nessthe number of extension spatial streams (NESS)
channelWidththe channel width in MHz
aggregationenable or disable MPDU aggregation
stbcenable or disable STBC
ldpcenable or disable LDPC (BCC is used otherwise)
bssColorthe BSS color
lengththe LENGTH field of the L-SIG

Definition at line 43 of file wifi-tx-vector.cc.

◆ WifiTxVector() [3/3]

ns3::WifiTxVector::WifiTxVector ( const WifiTxVector txVector)

Copy constructor.

Parameters
txVectorthe TXVECTOR to copy

Definition at line 73 of file wifi-tx-vector.cc.

References m_muUserInfos.

Member Function Documentation

◆ GetBssColor()

uint8_t ns3::WifiTxVector::GetBssColor ( void  ) const

Get the BSS color.

Returns
the BSS color

Definition at line 315 of file wifi-tx-vector.cc.

References m_bssColor.

Referenced by ns3::WifiPhyHelper::GetRadiotapHeader(), ns3::operator<<(), and ns3::HePpdu::SetPhyHeaders().

+ Here is the caller graph for this function:

◆ GetChannelWidth()

uint16_t ns3::WifiTxVector::GetChannelWidth ( void  ) const
Returns
the channel width (in MHz)

Definition at line 153 of file wifi-tx-vector.cc.

References m_channelWidth.

Referenced by ns3::IdealWifiManager::AddSnrThreshold(), ns3::RrMultiUserScheduler::AssignRuIndices(), ns3::InterferenceHelper::CalculateChunkSuccessRate(), ns3::WifiPpdu::CanBeReceived(), ns3::CtrlTriggerHeader::CtrlTriggerHeader(), ns3::YansErrorRateModel::DoGetChunkSuccessRate(), ns3::IdealWifiManager::DoGetDataTxVector(), WifiErrorRateModelsTestCaseMimo::DoRun(), ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar(), ns3::PhyEntity::GetCenterFrequencyForChannelWidth(), ns3::HePhy::GetCenterFrequencyForNonOfdmaPart(), ns3::ErpOfdmPhy::GetDataRateFromTxVector(), ns3::VhtPhy::GetDataRateFromTxVector(), ns3::OfdmPhy::GetDataRateFromTxVector(), ns3::HePhy::GetDataRateFromTxVector(), ns3::HtPhy::GetDataRateFromTxVector(), ns3::WaveFrameExchangeManager::GetDataTxVector(), ns3::OfdmPhy::GetHeaderDuration(), ns3::OfdmPhy::GetHeaderMode(), ns3::HePhy::GetNonOfdmaBand(), ns3::VhtPhy::GetNumberBccEncoders(), ns3::ErpOfdmPhy::GetPhyRateFromTxVector(), ns3::VhtPhy::GetPhyRateFromTxVector(), ns3::OfdmPhy::GetPhyRateFromTxVector(), ns3::HePhy::GetPhyRateFromTxVector(), ns3::HtPhy::GetPhyRateFromTxVector(), ns3::OfdmPhy::GetPreambleDuration(), ns3::WifiPhyHelper::GetRadiotapHeader(), ns3::HePhy::GetRuBandForRx(), ns3::HePhy::GetRuBandForTx(), ns3::PhyEntity::GetRxChannelWidth(), ns3::HePhy::GetSigBDuration(), ns3::IdealWifiManager::GetSnrThreshold(), ns3::WifiPpdu::GetTransmissionChannelWidth(), ns3::DsssPhy::GetTxPowerSpectralDensity(), ns3::OfdmPhy::GetTxPowerSpectralDensity(), ns3::HePhy::GetTxPowerSpectralDensity(), ns3::HtPhy::GetTxPowerSpectralDensity(), ns3::operator<<(), ns3::WifiRemoteStationManager::ReportAmpduTxStatus(), ns3::WifiRemoteStationManager::ReportDataOk(), ns3::WifiPhy::Send(), Bug2843TestCase::StoreDistinctTuple(), PowerRateAdaptationTest::TestAparf(), PowerRateAdaptationTest::TestParf(), and PowerRateAdaptationTest::TestRrpaa().

+ Here is the caller graph for this function:

◆ GetGuardInterval()

◆ GetHeMuUserInfo()

HeMuUserInfo ns3::WifiTxVector::GetHeMuUserInfo ( uint16_t  staId) const

Get the HE MU user-specific transmission information for the given STA-ID.

This is applicable only for HE MU.

Parameters
staIdthe station ID
Returns
the HE MU user-specific transmission information for the given STA-ID

Definition at line 403 of file wifi-tx-vector.cc.

References IsMu(), m_muUserInfos, and NS_ABORT_MSG_IF.

Referenced by ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar(), and ns3::WifiPhyHelper::GetRadiotapHeader().

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

◆ GetHeMuUserInfoMap() [1/2]

const WifiTxVector::HeMuUserInfoMap & ns3::WifiTxVector::GetHeMuUserInfoMap ( void  ) const

Get a const reference to the map HE MU user-specific transmission information indexed by STA-ID.

This is applicable only for HE MU.

Returns
a const reference to the map of HE MU user-specific information indexed by STA-ID

Definition at line 420 of file wifi-tx-vector.cc.

References IsMu(), m_muUserInfos, and NS_ABORT_MSG_IF.

Referenced by ns3::RrMultiUserScheduler::AssignRuIndices(), ns3::HePhy::CalculateTxDuration(), ns3::CtrlTriggerHeader::CtrlTriggerHeader(), ns3::HeFrameExchangeManager::EndReceiveAmpdu(), ns3::HePhy::GetSigBMode(), ns3::HePhy::GetWifiConstPsduMap(), ns3::HePpdu::HePpdu(), ns3::HePhy::IsConfigSupported(), ns3::operator<<(), ns3::HeFrameExchangeManager::PrepareMuBar(), ns3::HeFrameExchangeManager::ReceiveMpdu(), WifiPrimaryChannelsTest::ReceiveUl(), and ns3::WifiPhy::Send().

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

◆ GetHeMuUserInfoMap() [2/2]

WifiTxVector::HeMuUserInfoMap & ns3::WifiTxVector::GetHeMuUserInfoMap ( void  )

Get a reference to the map HE MU user-specific transmission information indexed by STA-ID.

This is applicable only for HE MU.

Returns
a reference to the map of HE MU user-specific information indexed by STA-ID

Definition at line 427 of file wifi-tx-vector.cc.

References IsMu(), m_muUserInfos, and NS_ABORT_MSG_IF.

+ Here is the call graph for this function:

◆ GetLength()

uint16_t ns3::WifiTxVector::GetLength ( void  ) const

Get the LENGTH field of the L-SIG.

Returns
the LENGTH field of the L-SIG

Definition at line 327 of file wifi-tx-vector.cc.

References m_length.

Referenced by ns3::HePhy::CalculateTxDuration(), ns3::CtrlTriggerHeader::CtrlTriggerHeader(), and ns3::operator<<().

+ Here is the caller graph for this function:

◆ GetMode()

WifiMode ns3::WifiTxVector::GetMode ( uint16_t  staId = SU_STA_ID) const

If this TX vector is associated with an SU PPDU, return the selected payload transmission mode.

If this TX vector is associated with an MU PPDU, return the transmission mode (MCS) selected for the transmission to the station identified by the given STA-ID.

Parameters
staIdthe station ID for HE MU
Returns
the selected payload transmission mode

Definition at line 111 of file wifi-tx-vector.cc.

References IsMu(), m_mode, m_modeInitialized, m_muUserInfos, NS_ABORT_MSG_IF, NS_ASSERT, and NS_FATAL_ERROR.

Referenced by ns3::IdealWifiManager::AddSnrThreshold(), ns3::InterferenceHelper::CalculatePayloadChunkSuccessRate(), ns3::ErrorRateModel::CalculateSnr(), TxDurationTest::CheckHeMuTxDuration(), IdealRateManagerMimoTest::CheckLastSelectedMode(), ns3::YansErrorRateModel::DoGetChunkSuccessRate(), ns3::MinstrelHtWifiManager::DoGetDataTxVector(), ns3::DsssPpdu::DsssPpdu(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::DsssPhy::GetDataRateFromTxVector(), ns3::ErpOfdmPhy::GetDataRateFromTxVector(), ns3::VhtPhy::GetDataRateFromTxVector(), ns3::OfdmPhy::GetDataRateFromTxVector(), ns3::HePhy::GetDataRateFromTxVector(), ns3::HtPhy::GetDataRateFromTxVector(), ns3::WaveFrameExchangeManager::GetDataTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::DsssPhy::GetHeaderDuration(), ns3::DsssPhy::GetHeaderMode(), ns3::ErpOfdmPhy::GetHeaderMode(), ns3::VhtPhy::GetNumberBccEncoders(), ns3::HtPhy::GetNumberBccEncoders(), ns3::DsssPhy::GetPayloadDuration(), ns3::HtPhy::GetPayloadDuration(), ns3::OfdmPhy::GetPayloadDuration(), ns3::ErpOfdmPhy::GetPhyRateFromTxVector(), ns3::VhtPhy::GetPhyRateFromTxVector(), ns3::OfdmPhy::GetPhyRateFromTxVector(), ns3::HePhy::GetPhyRateFromTxVector(), ns3::HtPhy::GetPhyRateFromTxVector(), ns3::DsssPhy::GetPreambleDuration(), ns3::WifiDefaultProtectionManager::GetPsduProtection(), ns3::WifiPhyHelper::GetRadiotapHeader(), ns3::FrameExchangeManager::GetRtsDurationId(), ns3::IdealWifiManager::GetSnrThreshold(), ns3::HtPpdu::HtPpdu(), ns3::HePhy::IsConfigSupported(), ns3::HtPhy::IsConfigSupported(), ns3::WifiRemoteStationManager::NeedCtsToSelf(), ns3::WifiRemoteStationManager::NeedRts(), ns3::OfdmPpdu::OfdmPpdu(), ns3::operator<<(), ns3::FrameExchangeManager::ReceivedNormalAck(), ns3::QosFrameExchangeManager::ReceiveMpdu(), ns3::HtFrameExchangeManager::ReceiveMpdu(), ns3::FrameExchangeManager::ReceiveMpdu(), ns3::WifiRemoteStationManager::ReportRxOk(), ns3::HePpdu::SetPhyHeaders(), Bug2843TestCase::StoreDistinctTuple(), ns3::WifiPhyStateHelper::SwitchFromRxEndOk(), ns3::WifiPhyStateHelper::SwitchToTx(), PowerRateAdaptationTest::TestAparf(), PowerRateAdaptationTest::TestParf(), PowerRateAdaptationTest::TestRrpaa(), ns3::RrMultiUserScheduler::TrySendingBasicTf(), ns3::RrMultiUserScheduler::TrySendingDlMuPpdu(), Issue169TestCase::TxCallback(), IdealRateManagerChannelWidthTest::TxCallback(), and ns3::VhtPpdu::VhtPpdu().

+ Here is the call graph for this function:

◆ GetModeInitialized()

bool ns3::WifiTxVector::GetModeInitialized ( void  ) const
Returns
whether mode has been initialized

Definition at line 105 of file wifi-tx-vector.cc.

References m_modeInitialized.

Referenced by IsValid().

+ Here is the caller graph for this function:

◆ GetModulationClass()

◆ GetNess()

uint8_t ns3::WifiTxVector::GetNess ( void  ) const
Returns
the number of extended spatial streams

Definition at line 201 of file wifi-tx-vector.cc.

References m_ness.

Referenced by ns3::HtPhy::GetDuration(), ns3::WifiPhyHelper::GetRadiotapHeader(), and ns3::operator<<().

+ Here is the caller graph for this function:

◆ GetNss()

uint8_t ns3::WifiTxVector::GetNss ( uint16_t  staId = SU_STA_ID) const

If this TX vector is associated with an SU PPDU, return the number of spatial streams.

If this TX vector is associated with an MU PPDU, return the number of spatial streams for the transmission to the station identified by the given STA-ID.

Parameters
staIdthe station ID for HE MU
Returns
the number of spatial streams

Definition at line 171 of file wifi-tx-vector.cc.

References IsMu(), m_muUserInfos, m_nss, NS_ABORT_MSG_IF, and NS_ASSERT.

Referenced by ns3::InterferenceHelper::CalculatePayloadChunkSuccessRate(), TxDurationTest::CheckHeMuTxDuration(), IdealRateManagerMimoTest::CheckLastSelectedNss(), ns3::IdealWifiManager::DoGetDataTxVector(), WifiErrorRateModelsTestCaseMimo::DoRun(), ns3::PhyEntity::EndOfMpdu(), ns3::PhyEntity::EndReceivePayload(), ns3::ErpOfdmPhy::GetDataRateFromTxVector(), ns3::VhtPhy::GetDataRateFromTxVector(), ns3::OfdmPhy::GetDataRateFromTxVector(), ns3::HePhy::GetDataRateFromTxVector(), ns3::HtPhy::GetDataRateFromTxVector(), ns3::VhtPhy::GetNumberBccEncoders(), ns3::ErpOfdmPhy::GetPhyRateFromTxVector(), ns3::VhtPhy::GetPhyRateFromTxVector(), ns3::OfdmPhy::GetPhyRateFromTxVector(), ns3::HePhy::GetPhyRateFromTxVector(), ns3::HtPhy::GetPhyRateFromTxVector(), ns3::WifiPhyHelper::GetRadiotapHeader(), ns3::IdealWifiManager::GetSnrThreshold(), ns3::HtPhy::IsConfigSupported(), ns3::operator<<(), ns3::WifiRemoteStationManager::ReportAmpduTxStatus(), ns3::WifiRemoteStationManager::ReportDataOk(), ns3::HePpdu::SetPhyHeaders(), ns3::RrMultiUserScheduler::TrySendingBasicTf(), ns3::RrMultiUserScheduler::TrySendingDlMuPpdu(), and ns3::VhtPpdu::VhtPpdu().

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

◆ GetNssMax()

uint8_t ns3::WifiTxVector::GetNssMax ( void  ) const
Returns
the maximum number of Nss (namely if HE MU)

Definition at line 183 of file wifi-tx-vector.cc.

References IsMu(), m_muUserInfos, and m_nss.

Referenced by ns3::HtPhy::GetDuration(), ns3::WifiPhy::GetTxPowerForTransmission(), ns3::HePhy::IsConfigSupported(), and ns3::WifiPhy::Send().

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

◆ GetNTx()

uint8_t ns3::WifiTxVector::GetNTx ( void  ) const
Returns
the number of TX antennas

Definition at line 165 of file wifi-tx-vector.cc.

References m_nTx.

Referenced by ns3::operator<<().

+ Here is the caller graph for this function:

◆ GetNumRusPerHeSigBContentChannel()

std::pair< std::size_t, std::size_t > ns3::WifiTxVector::GetNumRusPerHeSigBContentChannel ( void  ) const

Get the number of RUs per HE-SIG-B content channel.

This is applicable only for HE MU. MU-MIMO (i.e. multiple stations per RU) is not supported yet. See section 27.3.10.8.3 of IEEE 802.11ax draft 4.0.

Returns
a pair containing the number of RUs in each HE-SIG-B content channel (resp. 1 and 2)

Definition at line 434 of file wifi-tx-vector.cc.

References ns3::HeRu::DoesOverlap(), ns3::HeRu::RuSpec::IsPhyIndexSet(), m_channelWidth, m_muUserInfos, m_preamble, NS_ABORT_MSG, NS_ABORT_MSG_IF, ns3::HeRu::RuSpec::SetPhyIndex(), and ns3::WIFI_PREAMBLE_HE_MU.

Referenced by HeSigBDurationTest::DoRun(), and ns3::HePhy::GetSigBDuration().

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

◆ GetPreambleType()

WifiPreamble ns3::WifiTxVector::GetPreambleType ( void  ) const

◆ GetRu()

HeRu::RuSpec ns3::WifiTxVector::GetRu ( uint16_t  staId) const

Get the RU specification for the STA-ID.

This is applicable only for HE MU.

Parameters
staIdthe station ID
Returns
the RU specification for the STA-ID

Definition at line 387 of file wifi-tx-vector.cc.

References IsMu(), m_muUserInfos, and NS_ABORT_MSG_IF.

Referenced by ns3::HePhy::GetCenterFrequencyForNonOfdmaPart(), ns3::HePhy::GetChannelWidthAndBand(), ns3::HePhy::GetDataRateFromTxVector(), ns3::HePhy::GetNonOfdmaBand(), ns3::HePhy::GetPhyRateFromTxVector(), ns3::HePhy::GetRuBandForRx(), ns3::HePhy::GetRuBandForTx(), ns3::HePpdu::GetTransmissionChannelWidth(), and ns3::HePhy::GetTxPowerSpectralDensity().

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

◆ GetTxPowerLevel()

uint8_t ns3::WifiTxVector::GetTxPowerLevel ( void  ) const

◆ IsAggregation()

bool ns3::WifiTxVector::IsAggregation ( void  ) const

Checks whether the PSDU contains A-MPDU.

Returns
true if this PSDU has A-MPDU aggregation, false otherwise.

Definition at line 207 of file wifi-tx-vector.cc.

References m_aggregation.

Referenced by ns3::WifiPhyHelper::GetRadiotapHeader(), ns3::HtPpdu::HtPpdu(), ns3::WifiPhy::NotifyMonitorSniffRx(), ns3::WifiPhy::NotifyMonitorSniffTx(), ns3::operator<<(), and TracePacketReception().

+ Here is the caller graph for this function:

◆ IsDlMu()

bool ns3::WifiTxVector::IsDlMu ( void  ) const

Return true if this TX vector is used for a downlink multi-user transmission.

Returns
true if this TX vector is used for a downlink multi-user transmission

Definition at line 375 of file wifi-tx-vector.cc.

References m_preamble, ns3::WIFI_PREAMBLE_HE_MU, and ns3::WIFI_PREAMBLE_VHT_MU.

Referenced by ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfBarBaSequence(), ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar(), ns3::HeFrameExchangeManager::GetTxDuration(), and ns3::WifiDefaultAckManager::TryAddMpdu().

+ Here is the caller graph for this function:

◆ IsLdpc()

bool ns3::WifiTxVector::IsLdpc ( void  ) const

Check if LDPC FEC coding is used or not.

Returns
true if LDPC is used, false if BCC is used

Definition at line 219 of file wifi-tx-vector.cc.

References m_ldpc.

Referenced by ns3::TableBasedErrorRateModel::DoGetChunkSuccessRate(), and ns3::operator<<().

+ Here is the caller graph for this function:

◆ IsMu()

◆ IsStbc()

bool ns3::WifiTxVector::IsStbc ( void  ) const

Check if STBC is used or not.

Returns
true if STBC is used, false otherwise

Definition at line 213 of file wifi-tx-vector.cc.

References m_stbc.

Referenced by ns3::HtPhy::GetPayloadDuration(), ns3::WifiPhyHelper::GetRadiotapHeader(), and ns3::operator<<().

+ Here is the caller graph for this function:

◆ IsUlMu()

bool ns3::WifiTxVector::IsUlMu ( void  ) const

Return true if this TX vector is used for an uplink multi-user transmission.

Returns
true if this TX vector is used for an uplink multi-user transmission

Definition at line 381 of file wifi-tx-vector.cc.

References m_preamble, and ns3::WIFI_PREAMBLE_HE_TB.

Referenced by ns3::HeFrameExchangeManager::EndReceiveAmpdu(), ns3::HeFrameExchangeManager::GetTxDuration(), ns3::HePhy::GetWifiConstPsduMap(), ns3::HeFrameExchangeManager::ReceiveMpdu(), WifiPrimaryChannelsTest::ReceiveUl(), and ns3::WifiDefaultAckManager::TryAddMpdu().

+ Here is the caller graph for this function:

◆ IsValid()

bool ns3::WifiTxVector::IsValid ( void  ) const

The standard disallows certain combinations of WifiMode, number of spatial streams, and channel widths.

This method can be used to check whether this WifiTxVector contains an invalid combination.

Returns
true if the WifiTxVector parameters are allowed by the standard

Definition at line 333 of file wifi-tx-vector.cc.

References GetModeInitialized(), ns3::WifiMode::GetUniqueName(), m_channelWidth, m_mode, and m_nss.

Referenced by ns3::IdealWifiManager::DoGetDataTxVector(), ns3::MinstrelHtWifiManager::IsValidMcs(), and ns3::operator<<().

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

◆ SetAggregation()

void ns3::WifiTxVector::SetAggregation ( bool  aggregation)

Sets if PSDU contains A-MPDU.

Parameters
aggregationwhether the PSDU contains A-MPDU or not.

Definition at line 291 of file wifi-tx-vector.cc.

References m_aggregation.

Referenced by ns3::HtPpdu::DoGetTxVector(), ns3::VhtPpdu::DoGetTxVector(), ns3::HePpdu::DoGetTxVector(), ns3::HtFrameExchangeManager::ForwardPsduDown(), and ns3::HeFrameExchangeManager::ForwardPsduMapDown().

+ Here is the caller graph for this function:

◆ SetBssColor()

void ns3::WifiTxVector::SetBssColor ( uint8_t  color)

Set the BSS color.

Parameters
colorthe BSS color

Definition at line 309 of file wifi-tx-vector.cc.

References m_bssColor.

Referenced by ns3::RrMultiUserScheduler::ComputeDlMuInfo(), ns3::HePpdu::DoGetTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().

+ Here is the caller graph for this function:

◆ SetChannelWidth()

void ns3::WifiTxVector::SetChannelWidth ( uint16_t  channelWidth)

Sets the selected channelWidth (in MHz)

Parameters
channelWidththe channel width (in MHz)

Definition at line 253 of file wifi-tx-vector.cc.

References m_channelWidth.

Referenced by ns3::IdealWifiManager::BuildSnrThresholds(), HeSigBDurationTest::BuildTxVector(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckHeMuTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), ns3::RrMultiUserScheduler::ComputeDlMuInfo(), TestMultiUserScheduler::ComputeWifiTxVector(), ns3::IdealWifiManager::DoGetDataTxVector(), ns3::IdealWifiManager::DoGetRtsTxVector(), ns3::ErpOfdmPpdu::DoGetTxVector(), ns3::DsssPpdu::DoGetTxVector(), ns3::OfdmPpdu::DoGetTxVector(), ns3::HtPpdu::DoGetTxVector(), ns3::VhtPpdu::DoGetTxVector(), ns3::HePpdu::DoGetTxVector(), WifiErrorRateModelsTestCaseMimo::DoRun(), PhyHeaderSectionsTest::DoRun(), ns3::VsaManager::DoSendVsa(), ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WaveFrameExchangeManager::GetDataTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::CtrlTriggerHeader::GetHeTbTxVector(), ns3::WifiRemoteStationManager::GetRtsTxVector(), ns3::MinstrelHtWifiManager::IsValidMcs(), ns3::WaveNetDevice::SendX(), NodeStatistics::SetupPhy(), ns3::RrMultiUserScheduler::TrySendingBasicTf(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().

+ Here is the caller graph for this function:

◆ SetGuardInterval()

◆ SetHeMuUserInfo()

◆ SetLdpc()

void ns3::WifiTxVector::SetLdpc ( bool  ldpc)

Sets if LDPC FEC coding is being used.

Parameters
ldpcenable or disable LDPC

Definition at line 303 of file wifi-tx-vector.cc.

References m_ldpc.

Referenced by ns3::WifiRemoteStationManager::GetDataTxVector().

+ Here is the caller graph for this function:

◆ SetLength()

void ns3::WifiTxVector::SetLength ( uint16_t  length)

Set the LENGTH field of the L-SIG.

Parameters
lengththe LENGTH field of the L-SIG

Definition at line 321 of file wifi-tx-vector.cc.

References m_length.

Referenced by WifiPrimaryChannelsTest::DoSendHeTbPpdu(), ns3::CtrlTriggerHeader::GetHeTbTxVector(), TestUlOfdmaPhyTransmission::SendHeTbPpdu(), TestPhyPaddingExclusion::SendHeTbPpdu(), ns3::HeFrameExchangeManager::SendPsduMap(), and TestUlOfdmaPpduUid::SendTbPpdu().

+ Here is the caller graph for this function:

◆ SetMode() [1/2]

void ns3::WifiTxVector::SetMode ( WifiMode  mode)

Sets the selected payload transmission mode.

Parameters
modethe payload WifiMode

Definition at line 225 of file wifi-tx-vector.cc.

References m_mode, and m_modeInitialized.

Referenced by ns3::IdealWifiManager::BuildSnrThresholds(), ns3::dot11s::AirtimeLinkMetricCalculator::CalculateMetric(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), ns3::IdealWifiManager::DoGetDataTxVector(), ns3::IdealWifiManager::DoGetRtsTxVector(), ns3::ErpOfdmPpdu::DoGetTxVector(), ns3::DsssPpdu::DoGetTxVector(), ns3::OfdmPpdu::DoGetTxVector(), ns3::HtPpdu::DoGetTxVector(), ns3::VhtPpdu::DoGetTxVector(), ns3::HePpdu::DoGetTxVector(), WifiErrorRateModelsTestCaseMimo::DoRun(), PhyHeaderSectionsTest::DoRun(), TableBasedErrorRateTestCase::DoRun(), ns3::VsaManager::DoSendVsa(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WaveFrameExchangeManager::GetDataTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::WifiRemoteStationManager::GetRtsTxVector(), TestUlOfdmaPhyTransmission::GetTxVectorForHeTbPpdu(), ns3::MinstrelHtWifiManager::IsValidMcs(), TestMultipleHeTbPreambles::RxHeTbPpdu(), PsrExperiment::Send(), ns3::WaveNetDevice::Send(), CollisionExperiment::SendA(), CollisionExperiment::SendB(), TestPhyPaddingExclusion::SendHeTbPpdu(), TestDlOfdmaPhyTransmission::SendMuPpdu(), TestUlOfdmaPpduUid::SendMuPpdu(), TestUlOfdmaPpduUid::SendTbPpdu(), ns3::WaveNetDevice::SendX(), ns3::RraaWifiManager::SetupPhy(), ns3::RrpaaWifiManager::SetupPhy(), NodeStatistics::SetupPhy(), and ns3::MinstrelWifiManager::SetupPhy().

+ Here is the caller graph for this function:

◆ SetMode() [2/2]

void ns3::WifiTxVector::SetMode ( WifiMode  mode,
uint16_t  staId 
)

Sets the selected payload transmission mode for a given STA ID (for HE MU only)

Parameters
mode
staIdthe station ID for HE MU

Definition at line 232 of file wifi-tx-vector.cc.

References IsMu(), m_modeInitialized, m_muUserInfos, and NS_ABORT_MSG_IF.

+ Here is the call graph for this function:

◆ SetNess()

void ns3::WifiTxVector::SetNess ( uint8_t  ness)

◆ SetNss() [1/2]

◆ SetNss() [2/2]

void ns3::WifiTxVector::SetNss ( uint8_t  nss,
uint16_t  staId 
)

Sets the number of Nss for HE MU.

Parameters
nssthe number of spatial streams
staIdthe station ID for HE MU

Definition at line 277 of file wifi-tx-vector.cc.

References IsMu(), m_muUserInfos, and NS_ABORT_MSG_IF.

+ Here is the call graph for this function:

◆ SetNTx()

void ns3::WifiTxVector::SetNTx ( uint8_t  nTx)

Sets the number of TX antennas.

Parameters
nTxthe number of TX antennas

Definition at line 265 of file wifi-tx-vector.cc.

References m_nTx.

Referenced by WifiErrorRateModelsTestCaseMimo::DoRun(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::WifiRemoteStationManager::GetRtsTxVector(), and ns3::WifiPpdu::GetTxVector().

+ Here is the caller graph for this function:

◆ SetPreambleType()

void ns3::WifiTxVector::SetPreambleType ( WifiPreamble  preamble)

Sets the preamble type.

Parameters
preamblethe preamble type

Definition at line 247 of file wifi-tx-vector.cc.

References m_preamble.

Referenced by HeSigBDurationTest::BuildTxVector(), ns3::dot11s::AirtimeLinkMetricCalculator::CalculateMetric(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckHeMuTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), ns3::RrMultiUserScheduler::ComputeDlMuInfo(), TestMultiUserScheduler::ComputeWifiTxVector(), ns3::ErpOfdmPpdu::DoGetTxVector(), ns3::DsssPpdu::DoGetTxVector(), ns3::OfdmPpdu::DoGetTxVector(), ns3::HtPpdu::DoGetTxVector(), ns3::VhtPpdu::DoGetTxVector(), ns3::HePpdu::DoGetTxVector(), PhyHeaderSectionsTest::DoRun(), ns3::VsaManager::DoSendVsa(), ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WaveFrameExchangeManager::GetDataTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::CtrlTriggerHeader::GetHeTbTxVector(), ns3::WifiRemoteStationManager::GetRtsTxVector(), PsrExperiment::Send(), ns3::WaveNetDevice::Send(), CollisionExperiment::SendA(), CollisionExperiment::SendB(), ns3::WaveNetDevice::SendX(), ns3::RraaWifiManager::SetupPhy(), ns3::RrpaaWifiManager::SetupPhy(), NodeStatistics::SetupPhy(), ns3::MinstrelWifiManager::SetupPhy(), ns3::RrMultiUserScheduler::TrySendingBasicTf(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().

+ Here is the caller graph for this function:

◆ SetRu()

void ns3::WifiTxVector::SetRu ( HeRu::RuSpec  ru,
uint16_t  staId 
)

Set the RU specification for the STA-ID.

This is applicable only for HE MU.

Parameters
ruthe RU specification
staIdthe station ID

Definition at line 395 of file wifi-tx-vector.cc.

References IsMu(), m_muUserInfos, and NS_ABORT_MSG_IF.

Referenced by ns3::RrMultiUserScheduler::AssignRuIndices(), TestUlOfdmaPhyTransmission::GetTxVectorForHeTbPpdu(), TestMultipleHeTbPreambles::RxHeTbPpdu(), TestPhyPaddingExclusion::SendHeTbPpdu(), TestDlOfdmaPhyTransmission::SendMuPpdu(), TestUlOfdmaPpduUid::SendMuPpdu(), and TestUlOfdmaPpduUid::SendTbPpdu().

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

◆ SetStbc()

void ns3::WifiTxVector::SetStbc ( bool  stbc)

Sets if STBC is being used.

Parameters
stbcenable or disable STBC

Definition at line 297 of file wifi-tx-vector.cc.

References m_stbc.

Referenced by HeSigBDurationTest::BuildTxVector(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckHeMuTxDuration(), TxDurationTest::CheckPayloadDuration(), and TxDurationTest::CheckTxDuration().

+ Here is the caller graph for this function:

◆ SetTxPowerLevel()

Member Data Documentation

◆ m_aggregation

bool ns3::WifiTxVector::m_aggregation
private

Flag whether the PSDU contains A-MPDU.

Definition at line 390 of file wifi-tx-vector.h.

Referenced by IsAggregation(), and SetAggregation().

◆ m_bssColor

uint8_t ns3::WifiTxVector::m_bssColor
private

BSS color.

Definition at line 393 of file wifi-tx-vector.h.

Referenced by GetBssColor(), and SetBssColor().

◆ m_channelWidth

uint16_t ns3::WifiTxVector::m_channelWidth
private

channel width in MHz

Definition at line 385 of file wifi-tx-vector.h.

Referenced by GetChannelWidth(), GetNumRusPerHeSigBContentChannel(), IsValid(), and SetChannelWidth().

◆ m_guardInterval

uint16_t ns3::WifiTxVector::m_guardInterval
private

guard interval duration in nanoseconds

Definition at line 386 of file wifi-tx-vector.h.

Referenced by GetGuardInterval(), and SetGuardInterval().

◆ m_ldpc

bool ns3::WifiTxVector::m_ldpc
private

LDPC FEC coding if true, BCC otherwise.

Definition at line 392 of file wifi-tx-vector.h.

Referenced by IsLdpc(), and SetLdpc().

◆ m_length

uint16_t ns3::WifiTxVector::m_length
private

LENGTH field of the L-SIG.

Definition at line 394 of file wifi-tx-vector.h.

Referenced by GetLength(), and SetLength().

◆ m_mode

WifiMode ns3::WifiTxVector::m_mode
private

The DATARATE parameter in Table 15-4.

It is the value that will be passed to PMD_RATE.request

Definition at line 378 of file wifi-tx-vector.h.

Referenced by GetMode(), GetModulationClass(), IsValid(), and SetMode().

◆ m_modeInitialized

bool ns3::WifiTxVector::m_modeInitialized
private

Internal initialization flag.

Definition at line 396 of file wifi-tx-vector.h.

Referenced by GetMode(), GetModeInitialized(), GetModulationClass(), SetHeMuUserInfo(), and SetMode().

◆ m_muUserInfos

HeMuUserInfoMap ns3::WifiTxVector::m_muUserInfos
private

HE MU specific per-user information indexed by station ID (STA-ID) corresponding to the 11 LSBs of the AID of the recipient STA This list shall be used only for HE MU.

Definition at line 399 of file wifi-tx-vector.h.

Referenced by GetHeMuUserInfo(), GetHeMuUserInfoMap(), GetMode(), GetModulationClass(), GetNss(), GetNssMax(), GetNumRusPerHeSigBContentChannel(), GetRu(), SetHeMuUserInfo(), SetMode(), SetNss(), SetRu(), WifiTxVector(), and ~WifiTxVector().

◆ m_ness

uint8_t ns3::WifiTxVector::m_ness
private

number of spatial streams in beamforming

Definition at line 389 of file wifi-tx-vector.h.

Referenced by GetNess(), and SetNess().

◆ m_nss

uint8_t ns3::WifiTxVector::m_nss
private

number of spatial streams

Definition at line 388 of file wifi-tx-vector.h.

Referenced by GetNss(), GetNssMax(), IsValid(), and SetNss().

◆ m_nTx

uint8_t ns3::WifiTxVector::m_nTx
private

number of TX antennas

Definition at line 387 of file wifi-tx-vector.h.

Referenced by GetNTx(), and SetNTx().

◆ m_preamble

WifiPreamble ns3::WifiTxVector::m_preamble
private

◆ m_stbc

bool ns3::WifiTxVector::m_stbc
private

STBC used or not.

Definition at line 391 of file wifi-tx-vector.h.

Referenced by IsStbc(), and SetStbc().

◆ m_txPowerLevel

uint8_t ns3::WifiTxVector::m_txPowerLevel
private

The TXPWR_LEVEL parameter in Table 15-4.

It is the value that will be passed to PMD_TXPWRLVL.request

Definition at line 381 of file wifi-tx-vector.h.

Referenced by GetTxPowerLevel(), and SetTxPowerLevel().


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