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 parameters indexed by STA-ID More...
 
using UserInfoMapOrderedByRus = std::map< HeRu::RuSpec, std::set< uint16_t >, HeRu::RuSpecCompare >
 map of specific user info parameters ordered per increasing frequency RUs More...
 

Public Member Functions

 WifiTxVector ()
 
 WifiTxVector (const WifiTxVector &txVector)
 Copy constructor. More...
 
 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, bool triggerResponding=false)
 Create a TXVECTOR with the given parameters. More...
 
uint8_t GetBssColor () const
 Get the BSS color. More...
 
std::optional< Center26ToneRuIndicationGetCenter26ToneRuIndication () const
 Get CENTER_26_TONE_RU field This field is present if format is HE_MU and when channel width is set to 80 MHz or larger. More...
 
uint16_t GetChannelWidth () const
 
uint8_t GetEhtPpduType () const
 Get the EHT_PPDU_TYPE parameter. More...
 
uint16_t GetGuardInterval () const
 
HeMuUserInfo GetHeMuUserInfo (uint16_t staId) const
 Get the HE MU user-specific transmission information for the given STA-ID. More...
 
HeMuUserInfoMapGetHeMuUserInfoMap ()
 Get a reference to the map HE MU user-specific transmission information indexed by STA-ID. More...
 
const HeMuUserInfoMapGetHeMuUserInfoMap () const
 Get a const reference to the map HE MU user-specific transmission information indexed by STA-ID. More...
 
const std::vector< bool > & GetInactiveSubchannels () const
 Get the 20 MHz subchannels that are punctured. More...
 
uint16_t GetLength () 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 () const
 
WifiModulationClass GetModulationClass () const
 Get the modulation class specified by this TXVECTOR. More...
 
uint8_t GetNess () 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 () const
 
uint8_t GetNssTotal () const
 
uint8_t GetNTx () const
 
WifiPreamble GetPreambleType () const
 
HeRu::RuSpec GetRu (uint16_t staId) const
 Get the RU specification for the STA-ID. More...
 
const RuAllocationGetRuAllocation (uint8_t p20Index) const
 Get RU_ALLOCATION field. More...
 
WifiMode GetSigBMode () const
 Get MCS used for SIG-B. More...
 
uint8_t GetTxPowerLevel () const
 
UserInfoMapOrderedByRus GetUserInfoMapOrderedByRus (uint8_t p20Index) const
 Get the map of specific user info parameters ordered per increasing frequency RUs. More...
 
bool IsAggregation () const
 Checks whether the PSDU contains A-MPDU. More...
 
bool IsAllocated (uint16_t staId) const
 Check if STA ID is allocated. More...
 
bool IsDlMu () const
 
bool IsDlMuMimo () const
 Return true if this TX vector is used for a downlink multi-user transmission using MU-MIMO. More...
 
bool IsDlOfdma () const
 Return true if this TX vector is used for a downlink multi-user transmission using OFDMA. More...
 
bool IsLdpc () const
 Check if LDPC FEC coding is used or not. More...
 
bool IsMu () const
 
bool IsNonHtDuplicate () const
 Checks whether this TXVECTOR corresponds to a non-HT duplicate. More...
 
bool IsSigBCompression () const
 Indicate whether the Common field is present in the HE-SIG-B field. More...
 
bool IsStbc () const
 Check if STBC is used or not. More...
 
bool IsTriggerResponding () const
 Return true if the Trigger Responding parameter is set to true, false otherwise. More...
 
bool IsUlMu () const
 
bool IsValid (WifiPhyBand band=WIFI_PHY_BAND_UNSPECIFIED) 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 SetCenter26ToneRuIndication (Center26ToneRuIndication center26ToneRuIndication)
 Set CENTER_26_TONE_RU field. More...
 
void SetChannelWidth (uint16_t channelWidth)
 Sets the selected channelWidth (in MHz) More...
 
void SetEhtPpduType (uint8_t type)
 Set the EHT_PPDU_TYPE parameter. 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 SetInactiveSubchannels (const std::vector< bool > &inactiveSubchannels)
 Set the 20 MHz subchannels that are punctured. 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 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 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 SetRuAllocation (const RuAllocation &ruAlloc, uint8_t p20Index)
 Set RU_ALLOCATION field. More...
 
void SetSigBMode (const WifiMode &mode)
 Set the MCS used for SIG-B. More...
 
void SetStbc (bool stbc)
 Sets if STBC is being used. More...
 
void SetTriggerResponding (bool triggerResponding)
 Set the Trigger Responding parameter to the given value. More...
 
void SetTxPowerLevel (uint8_t powerlevel)
 Sets the selected transmission power level. More...
 

Private Member Functions

Center26ToneRuIndication DeriveCenter26ToneRuIndication () const
 Derive the CENTER_26_TONE_RU field from the TXVECTOR for which its CENTER_26_TONE_RU has not been set yet, based on the content of per-user information. More...
 
RuAllocation DeriveRuAllocation (uint8_t p20Index) const
 Derive the RU_ALLOCATION field from the TXVECTOR for which its RU_ALLOCATION field has not been set yet, based on the content of per-user information. More...
 
uint8_t GetNumStasInRu (const HeRu::RuSpec &ru) const
 Get the number of STAs in a given RU. More...
 

Private Attributes

bool m_aggregation
 Flag whether the PSDU contains A-MPDU. More...
 
uint8_t m_bssColor
 BSS color. More...
 
std::optional< Center26ToneRuIndicationm_center26ToneRuIndication
 CENTER_26_TONE_RU field when format is HE_MU and when channel width is set to 80 MHz or larger (Table 27-1 802.11ax-2021) More...
 
uint16_t m_channelWidth
 channel width in MHz More...
 
uint8_t m_ehtPpduType
 EHT_PPDU_TYPE per Table 36-1 IEEE 802.11be D2.3. More...
 
uint16_t m_guardInterval
 guard interval duration in nanoseconds More...
 
std::vector< bool > m_inactiveSubchannels
 Bitmap of inactive subchannels used for preamble puncturing. 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...
 
RuAllocation m_ruAllocation
 RU allocations that are going to be carried in SIG-B common field per Table 27-1 IEEE. More...
 
WifiMode m_sigBMcs
 MCS_SIG_B per Table 27-1 IEEE 802.11ax-2021. More...
 
bool m_stbc
 STBC used or not. More...
 
bool m_triggerResponding
 The Trigger Responding parameter. 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 110 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 parameters indexed by STA-ID

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

◆ UserInfoMapOrderedByRus

map of specific user info parameters ordered per increasing frequency RUs

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

Constructor & Destructor Documentation

◆ WifiTxVector() [1/3]

ns3::WifiTxVector::WifiTxVector ( )

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

◆ 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,
bool  triggerResponding = false 
)

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
triggerRespondingthe Trigger Responding parameter

Definition at line 58 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 94 of file wifi-tx-vector.cc.

References m_muUserInfos.

Member Function Documentation

◆ DeriveCenter26ToneRuIndication()

Center26ToneRuIndication ns3::WifiTxVector::DeriveCenter26ToneRuIndication ( ) const
private

Derive the CENTER_26_TONE_RU field from the TXVECTOR for which its CENTER_26_TONE_RU has not been set yet, based on the content of per-user information.

Returns
the CENTER_26_TONE_RU field

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

References ns3::CENTER_26_TONE_RU_HIGH_80_MHZ_ALLOCATED, ns3::CENTER_26_TONE_RU_LOW_80_MHZ_ALLOCATED, m_muUserInfos, and ns3::HeRu::RU_26_TONE.

Referenced by GetCenter26ToneRuIndication(), and SetCenter26ToneRuIndication().

+ Here is the caller graph for this function:

◆ DeriveRuAllocation()

RuAllocation ns3::WifiTxVector::DeriveRuAllocation ( uint8_t  p20Index) const
private

Derive the RU_ALLOCATION field from the TXVECTOR for which its RU_ALLOCATION field has not been set yet, based on the content of per-user information.

This is valid only for allocations of RUs of the same size per 20 MHz subchannel.

Parameters
p20Indexthe index of the primary20 channel
Returns
8 bit RU_ALLOCATION per 20 MHz

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

References ns3::HeRu::EMPTY_242_TONE_RU, ns3::HeRu::GetBandwidth(), ns3::HeRu::GetEqualizedRuAllocation(), ns3::HeRu::GetRusOfType(), GetUserInfoMapOrderedByRus(), m_channelWidth, NS_ABORT_IF, NS_ASSERT, NS_ASSERT_MSG, ns3::HeRu::RU_26_TONE, and ns3::HeRu::RU_2x996_TONE.

Referenced by GetRuAllocation(), and SetRuAllocation().

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

◆ GetBssColor()

uint8_t ns3::WifiTxVector::GetBssColor ( ) const

Get the BSS color.

Returns
the BSS color

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

References m_bssColor.

Referenced by ns3::WifiPhyHelper::GetRadiotapHeader(), ns3::HeFrameExchangeManager::IsIntraBssPpdu(), ns3::operator<<(), ns3::EhtPpdu::SetEhtPhyHeader(), and ns3::HePpdu::SetHeSigHeader().

+ Here is the caller graph for this function:

◆ GetCenter26ToneRuIndication()

std::optional< Center26ToneRuIndication > ns3::WifiTxVector::GetCenter26ToneRuIndication ( ) const

Get CENTER_26_TONE_RU field This field is present if format is HE_MU and when channel width is set to 80 MHz or larger.

Returns
the CENTER_26_TONE_RU field if present

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

References DeriveCenter26ToneRuIndication(), IsDlMu(), m_center26ToneRuIndication, and m_channelWidth.

Referenced by ns3::HePpdu::SetHeSigHeader().

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

◆ GetChannelWidth()

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

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

References m_channelWidth.

Referenced by ns3::CtrlTriggerHeader::CtrlTriggerHeader(), ns3::IdealWifiManager::AddSnrThreshold(), ns3::InterferenceHelper::CalculateChunkSuccessRate(), EmlsrDlTxopTest::CheckBlockAck(), EmlsrUlTxopTest::CheckRtsFrames(), ns3::YansErrorRateModel::DoGetChunkSuccessRate(), ns3::IdealWifiManager::DoGetDataTxVector(), WifiErrorRateModelsTestCaseMimo::DoRun(), ns3::FrameExchangeManager::ForwardMpduDown(), ns3::HtFrameExchangeManager::ForwardPsduDown(), ns3::HeFrameExchangeManager::ForwardPsduMapDown(), ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar(), ns3::PhyEntity::GetCenterFrequencyForChannelWidth(), ns3::HePhy::GetCenterFrequencyForNonHePart(), ns3::HtPhy::GetDataRateFromTxVector(), ns3::ErpOfdmPhy::GetDataRateFromTxVector(), ns3::OfdmPhy::GetDataRateFromTxVector(), ns3::VhtPhy::GetDataRateFromTxVector(), ns3::EhtPhy::GetDataRateFromTxVector(), ns3::HePhy::GetDataRateFromTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::OfdmPhy::GetHeaderDuration(), ns3::OfdmPhy::GetHeaderMode(), ns3::HePpdu::GetHeSigBContentChannels(), ns3::HePhy::GetNonOfdmaBand(), ns3::VhtPhy::GetNumberBccEncoders(), ns3::HtPhy::GetPhyRateFromTxVector(), ns3::ErpOfdmPhy::GetPhyRateFromTxVector(), ns3::OfdmPhy::GetPhyRateFromTxVector(), ns3::VhtPhy::GetPhyRateFromTxVector(), ns3::EhtPhy::GetPhyRateFromTxVector(), ns3::HePhy::GetPhyRateFromTxVector(), ns3::OfdmPhy::GetPreambleDuration(), ns3::WifiDefaultProtectionManager::GetPsduProtection(), ns3::WifiPhyHelper::GetRadiotapHeader(), ns3::HePhy::GetRuBandForRx(), ns3::HePhy::GetRuBandForTx(), ns3::PhyEntity::GetRxChannelWidth(), ns3::HePhy::GetSigBSize(), ns3::EhtPhy::GetSigBSize(), ns3::VhtPhy::IsAllowed(), ns3::operator<<(), ns3::WifiRemoteStationManager::ReportAmpduTxStatus(), ns3::WifiRemoteStationManager::ReportDataOk(), TestMultipleCtsResponsesFromMuRts::RxCtsSuccess(), TestNonHtDuplicatePhyReception::RxSuccess(), ns3::EhtPpdu::SetEhtPhyHeader(), ns3::HePpdu::SetHeMuUserInfos(), ns3::HePpdu::SetHeSigHeader(), ns3::HtPpdu::SetHtSigHeader(), ns3::VhtPpdu::SetVhtSigHeader(), Bug2843TestCase::StoreDistinctTuple(), PowerRateAdaptationTest::TestAparf(), PowerRateAdaptationTest::TestParf(), PowerRateAdaptationTest::TestRrpaa(), ns3::WifiDefaultProtectionManager::TryAddMpduToMuPpdu(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().

+ Here is the caller graph for this function:

◆ GetEhtPpduType()

uint8_t ns3::WifiTxVector::GetEhtPpduType ( ) const

Get the EHT_PPDU_TYPE parameter.

Returns
the EHT_PPDU_TYPE parameter

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

References m_ehtPpduType.

Referenced by ns3::EhtPpdu::GetEhtSigContentChannels(), ns3::EhtPhy::GetSigBSize(), ns3::operator<<(), and ns3::EhtPpdu::SetEhtPhyHeader().

+ 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 628 of file wifi-tx-vector.cc.

References IsMu(), m_muUserInfos, and NS_ABORT_MSG_IF.

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

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

◆ GetHeMuUserInfoMap() [1/2]

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

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 652 of file wifi-tx-vector.cc.

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

+ Here is the call graph for this function:

◆ GetHeMuUserInfoMap() [2/2]

◆ GetInactiveSubchannels()

const std::vector< bool > & ns3::WifiTxVector::GetInactiveSubchannels ( ) const

Get the 20 MHz subchannels that are punctured.

Returns
the bitmap indexed by the 20 MHz subchannels in ascending order, where each bit indicates whether the corresponding 20 MHz subchannel is punctured or not within the transmission bandwidth

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

References m_inactiveSubchannels.

Referenced by ns3::operator<<().

+ Here is the caller 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 386 of file wifi-tx-vector.cc.

References m_length.

Referenced by ns3::CtrlTriggerHeader::CtrlTriggerHeader(), ns3::HePhy::CalculateTxDuration(), 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 MU
Returns
the selected payload transmission mode

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

References ns3::EhtPhy::GetEhtMcs(), ns3::HePhy::GetHeMcs(), ns3::GetModulationClassForPreamble(), IsMu(), m_mode, m_modeInitialized, m_muUserInfos, m_preamble, NS_ABORT_MSG, NS_ABORT_MSG_IF, NS_ASSERT, NS_FATAL_ERROR, ns3::WIFI_MOD_CLASS_EHT, and ns3::WIFI_MOD_CLASS_HE.

Referenced by ns3::IdealWifiManager::AddSnrThreshold(), ns3::WifiRemoteStationManager::AdjustTxVectorForIcf(), ns3::InterferenceHelper::CalculatePayloadChunkSuccessRate(), ns3::ErrorRateModel::CalculateSnr(), EmlsrDlTxopTest::CheckInitialControlFrame(), IdealRateManagerMimoTest::CheckLastSelectedMode(), TxDurationTest::CheckMuTxDuration(), ns3::YansErrorRateModel::DoGetChunkSuccessRate(), ns3::MinstrelHtWifiManager::DoGetDataTxVector(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::HtPhy::GetDataRateFromTxVector(), ns3::DsssPhy::GetDataRateFromTxVector(), ns3::ErpOfdmPhy::GetDataRateFromTxVector(), ns3::OfdmPhy::GetDataRateFromTxVector(), ns3::VhtPhy::GetDataRateFromTxVector(), ns3::EhtPhy::GetDataRateFromTxVector(), ns3::HePhy::GetDataRateFromTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::EhtPpdu::GetEhtSigContentChannels(), ns3::DsssPhy::GetHeaderDuration(), ns3::DsssPhy::GetHeaderMode(), ns3::ErpOfdmPhy::GetHeaderMode(), ns3::HtPhy::GetNumberBccEncoders(), ns3::VhtPhy::GetNumberBccEncoders(), ns3::HtPhy::GetPayloadDuration(), ns3::DsssPhy::GetPayloadDuration(), ns3::OfdmPhy::GetPayloadDuration(), ns3::HtPhy::GetPhyRateFromTxVector(), ns3::ErpOfdmPhy::GetPhyRateFromTxVector(), ns3::OfdmPhy::GetPhyRateFromTxVector(), ns3::VhtPhy::GetPhyRateFromTxVector(), ns3::EhtPhy::GetPhyRateFromTxVector(), ns3::HePhy::GetPhyRateFromTxVector(), ns3::DsssPhy::GetPreambleDuration(), ns3::WifiPhyHelper::GetRadiotapHeader(), ns3::FrameExchangeManager::GetRtsDurationId(), ns3::EhtPhy::GetSigBMode(), ns3::VhtPhy::IsAllowed(), ns3::WifiRemoteStationManager::NeedCtsToSelf(), ns3::WifiPhyStateHelper::NotifyRxPsduSucceeded(), ns3::operator<<(), ns3::FrameExchangeManager::ReceivedNormalAck(), ns3::FrameExchangeManager::ReceiveMpdu(), ns3::HeFrameExchangeManager::ReceiveMpdu(), ns3::HtFrameExchangeManager::ReceiveMpdu(), ns3::QosFrameExchangeManager::ReceiveMpdu(), ns3::WifiRemoteStationManager::ReportRxOk(), ns3::DsssPpdu::SetDsssHeader(), ns3::HePpdu::SetHeSigHeader(), ns3::HtPpdu::SetHtSigHeader(), ns3::OfdmPpdu::SetLSigHeader(), ns3::VhtPpdu::SetVhtSigHeader(), Bug2843TestCase::StoreDistinctTuple(), ns3::WifiPhyStateHelper::SwitchToTx(), PowerRateAdaptationTest::TestAparf(), PowerRateAdaptationTest::TestParf(), PowerRateAdaptationTest::TestRrpaa(), ns3::RrMultiUserScheduler::TrySendingDlMuPpdu(), IdealRateManagerChannelWidthTest::TxCallback(), Issue169TestCase::TxCallback(), ns3::FrameExchangeManager::UpdateNav(), and ns3::HeFrameExchangeManager::UpdateNav().

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

◆ GetModeInitialized()

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

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

References m_modeInitialized.

Referenced by IsValid().

+ Here is the caller graph for this function:

◆ GetModulationClass()

WifiModulationClass ns3::WifiTxVector::GetModulationClass ( ) const

Get the modulation class specified by this TXVECTOR.

Returns
the Modulation Class specified by this TXVECTOR

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

References ns3::WifiMode::GetModulationClass(), ns3::GetModulationClassForPreamble(), IsMu(), m_mode, m_modeInitialized, m_muUserInfos, m_preamble, NS_ABORT_MSG_IF, and NS_ASSERT.

Referenced by ns3::WifiPhy::CalculatePhyPreambleAndHeaderDuration(), ns3::WifiPhy::CalculateTxDuration(), ns3::HePhy::CalculateTxDuration(), ns3::HePhy::ConvertHeTbPpduDurationToLSigLength(), ns3::HePhy::ConvertLSigLengthToHeTbPpduDuration(), ns3::HeFrameExchangeManager::ForwardPsduMapDown(), ns3::HePhy::GetCenterFrequencyForNonHePart(), ns3::MpduAggregator::GetNextAmpdu(), ns3::MsduAggregator::GetNextAmsdu(), ns3::HePhy::GetNonOfdmaBand(), ns3::WifiPhy::GetPayloadDuration(), ns3::VhtFrameExchangeManager::GetPsduSize(), ns3::WifiRemoteStationManager::GetRtsTxVector(), ns3::HePhy::GetSigBSize(), ns3::HePhy::GetSigMode(), ns3::WifiTxParameters::GetSize(), ns3::WifiTxParameters::GetSizeIfAddMpdu(), ns3::WifiTxParameters::GetSizeIfAggregateMsdu(), ns3::HePhy::GetTrainingDuration(), ns3::WifiPhy::GetWifiConstPsduMap(), ns3::VhtFrameExchangeManager::GetWifiPsdu(), IsNonHtDuplicate(), IsValid(), ns3::HtFrameExchangeManager::IsWithinLimitsIfAddMpdu(), ns3::HtFrameExchangeManager::IsWithinLimitsIfAggregateMsdu(), ns3::QosFrameExchangeManager::IsWithinSizeAndTimeLimits(), ns3::WifiRemoteStationManager::NeedRts(), ns3::WifiPhy::Send(), ns3::HeFrameExchangeManager::SendPsduMap(), and ns3::WifiDefaultProtectionManager::TryAddMpduToMuPpdu().

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

◆ GetNess()

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

Definition at line 254 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

◆ GetNssMax()

uint8_t ns3::WifiTxVector::GetNssMax ( ) const
Returns
the maximum number of Nss over all RUs of an HE MU (used for OFDMA)

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

References IsMu(), m_muUserInfos, and m_nss.

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

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

◆ GetNssTotal()

uint8_t ns3::WifiTxVector::GetNssTotal ( ) const
Returns
the total number of Nss for a given RU of an HE MU (used for full bandwidth MU-MIMO)

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

References IsMu(), m_muUserInfos, and m_nss.

Referenced by 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 ( ) const
Returns
the number of TX antennas

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

References m_nTx.

Referenced by ns3::operator<<().

+ Here is the caller graph for this function:

◆ GetNumStasInRu()

uint8_t ns3::WifiTxVector::GetNumStasInRu ( const HeRu::RuSpec ru) const
private

Get the number of STAs in a given RU.

Parameters
ruthe RU specification
Returns
the number of STAs in the RU

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

References m_muUserInfos.

Referenced by IsValid().

+ Here is the caller graph for this function:

◆ GetPreambleType()

◆ GetRu()

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

Get the RU specification for the STA-ID.

This is applicable only for MU.

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

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

References IsMu(), m_muUserInfos, and NS_ABORT_MSG_IF.

Referenced by ns3::HePhy::GetCenterFrequencyForNonHePart(), ns3::HePhy::GetChannelWidthAndBand(), ns3::EhtPhy::GetDataRateFromTxVector(), ns3::HePhy::GetDataRateFromTxVector(), ns3::HePhy::GetNonOfdmaBand(), ns3::EhtPhy::GetPhyRateFromTxVector(), ns3::HePhy::GetPhyRateFromTxVector(), ns3::HePhy::GetRuBandForRx(), ns3::HePhy::GetRuBandForTx(), and TestMultipleHeTbPreambles::RxHeTbPpdu().

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

◆ GetRuAllocation()

const RuAllocation & ns3::WifiTxVector::GetRuAllocation ( uint8_t  p20Index) const

Get RU_ALLOCATION field.

Returns
8 bit RU_ALLOCATION per 20 MHz
Parameters
p20Indexthe index of the primary20 channel

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

References DeriveRuAllocation(), ns3::IsDlMu(), m_preamble, and m_ruAllocation.

Referenced by ns3::HePpdu::GetHeSigBContentChannels(), ns3::HePhy::GetSigBSize(), ns3::EhtPhy::GetSigBSize(), ns3::EhtPpdu::SetEhtPhyHeader(), and ns3::HePpdu::SetHeSigHeader().

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

◆ GetSigBMode()

WifiMode ns3::WifiTxVector::GetSigBMode ( ) const

Get MCS used for SIG-B.

Returns
MCS for SIG-B

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

References m_sigBMcs.

Referenced by ns3::operator<<(), ns3::EhtPpdu::SetEhtPhyHeader(), and ns3::HePpdu::SetHeSigHeader().

+ Here is the caller graph for this function:

◆ GetTxPowerLevel()

uint8_t ns3::WifiTxVector::GetTxPowerLevel ( ) const
Returns
the transmission power level

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

References m_txPowerLevel.

Referenced by ns3::operator<<(), ns3::WifiPhy::Send(), ns3::WifiPhyStateHelper::SwitchToTx(), PowerRateAdaptationTest::TestAparf(), PowerRateAdaptationTest::TestParf(), and PowerRateAdaptationTest::TestRrpaa().

+ Here is the caller graph for this function:

◆ GetUserInfoMapOrderedByRus()

WifiTxVector::UserInfoMapOrderedByRus ns3::WifiTxVector::GetUserInfoMapOrderedByRus ( uint8_t  p20Index) const

Get the map of specific user info parameters ordered per increasing frequency RUs.

Parameters
p20Indexthe index of the primary20 channel
Returns
the map of specific user info parameters ordered per increasing frequency RUs

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

References m_channelWidth, and m_muUserInfos.

Referenced by DeriveRuAllocation(), and ns3::HePpdu::GetHeSigBContentChannels().

+ Here is the caller graph for this function:

◆ IsAggregation()

bool ns3::WifiTxVector::IsAggregation ( ) const

Checks whether the PSDU contains A-MPDU.

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

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

References m_aggregation.

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

+ Here is the caller graph for this function:

◆ IsAllocated()

bool ns3::WifiTxVector::IsAllocated ( uint16_t  staId) const

Check if STA ID is allocated.

Parameters
staIdSTA ID
Returns
true if allocated, false otherwise

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

References m_muUserInfos.

Referenced by ns3::HePpdu::SetHeMuUserInfos().

+ Here is the caller graph for this function:

◆ IsDlMu()

◆ IsDlMuMimo()

bool ns3::WifiTxVector::IsDlMuMimo ( ) const

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

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

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

References IsDlMu(), IsDlOfdma(), ns3::IsEht(), m_ehtPpduType, m_muUserInfos, and m_preamble.

Referenced by HeSigBDurationTest::BuildTxVector(), TestDlMuTxVector::DoRun(), IsSigBCompression(), ns3::WifiPhy::Send(), and TestDlMuMimoPhyTransmission::SendMuPpdu().

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

◆ IsDlOfdma()

bool ns3::WifiTxVector::IsDlOfdma ( ) const

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

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

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

References IsDlMu(), ns3::IsEht(), m_ehtPpduType, m_muUserInfos, and m_preamble.

Referenced by HeSigBDurationTest::BuildTxVector(), TestDlMuTxVector::DoRun(), IsDlMuMimo(), IsSigBCompression(), and TestDlMuMimoPhyTransmission::SendMuPpdu().

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

◆ IsLdpc()

bool ns3::WifiTxVector::IsLdpc ( ) const

Check if LDPC FEC coding is used or not.

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

Definition at line 272 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()

◆ IsNonHtDuplicate()

bool ns3::WifiTxVector::IsNonHtDuplicate ( ) const

Checks whether this TXVECTOR corresponds to a non-HT duplicate.

Returns
true if this TXVECTOR corresponds to a non-HT duplicate, false otherwise.

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

References GetModulationClass(), IsMu(), m_channelWidth, and ns3::WIFI_MOD_CLASS_HT.

+ Here is the call graph for this function:

◆ IsSigBCompression()

bool ns3::WifiTxVector::IsSigBCompression ( ) const

Indicate whether the Common field is present in the HE-SIG-B field.

Returns
true if the Common field is present in the HE-SIG-B, false otherwise

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

References IsDlMuMimo(), and IsDlOfdma().

Referenced by TestDlMuTxVector::DoRun(), ns3::HePpdu::GetHeSigBContentChannels(), ns3::HePhy::GetSigBSize(), ns3::EhtPhy::GetSigBSize(), and ns3::HePpdu::SetHeSigHeader().

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

◆ IsStbc()

bool ns3::WifiTxVector::IsStbc ( ) const

Check if STBC is used or not.

Returns
true if STBC is used, false otherwise

Definition at line 266 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:

◆ IsTriggerResponding()

bool ns3::WifiTxVector::IsTriggerResponding ( ) const

Return true if the Trigger Responding parameter is set to true, false otherwise.

Returns
true if the Trigger Responding parameter is set to true, false otherwise

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

References m_triggerResponding.

Referenced by ns3::HePhy::ObtainNextUid().

+ Here is the caller graph for this function:

◆ IsUlMu()

◆ IsValid()

bool ns3::WifiTxVector::IsValid ( WifiPhyBand  band = WIFI_PHY_BAND_UNSPECIFIED) 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. If a PHY band is specified, it is checked that the PHY band is appropriate for the modulation class of the TXVECTOR, in case the latter is OFDM or ERP-OFDM.

Parameters
bandthe PHY band
Returns
true if the WifiTxVector parameters are allowed by the standard

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

References GetModeInitialized(), GetModulationClass(), GetNumStasInRu(), ns3::WifiMode::GetUniqueName(), m_channelWidth, m_mode, m_muUserInfos, m_nss, NS_ABORT_MSG_IF, ns3::WIFI_MOD_CLASS_ERP_OFDM, ns3::WIFI_MOD_CLASS_OFDM, ns3::WIFI_PHY_BAND_2_4GHZ, and ns3::WIFI_PHY_BAND_UNSPECIFIED.

Referenced by ns3::IdealWifiManager::DoGetDataTxVector(), TestDlMuTxVector::DoRun(), ns3::MinstrelHtWifiManager::IsValidMcs(), ns3::operator<<(), and ns3::WifiPhy::Send().

+ 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 350 of file wifi-tx-vector.cc.

References m_aggregation.

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

+ Here is the caller graph for this function:

◆ SetBssColor()

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

◆ SetCenter26ToneRuIndication()

void ns3::WifiTxVector::SetCenter26ToneRuIndication ( Center26ToneRuIndication  center26ToneRuIndication)

Set CENTER_26_TONE_RU field.

Parameters
center26ToneRuIndicationthe CENTER_26_TONE_RU field

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

References DeriveCenter26ToneRuIndication(), IsDlMu(), m_center26ToneRuIndication, and NS_ASSERT.

Referenced by ns3::HePpdu::SetTxVectorFromPhyHeaders().

+ Here is the call graph for this function:
+ 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 312 of file wifi-tx-vector.cc.

References m_channelWidth.

Referenced by ns3::IdealWifiManager::BuildSnrThresholds(), HeSigBDurationTest::BuildTxVector(), TestDlMuTxVector::BuildTxVector(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckMuTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), TestMultiUserScheduler::ComputeWifiTxVector(), ns3::IdealWifiManager::DoGetDataTxVector(), ns3::IdealWifiManager::DoGetRtsTxVector(), ns3::DsssPpdu::DoGetTxVector(), PhyHeaderSectionsTest::DoRun(), WifiErrorRateModelsTestCaseMimo::DoRun(), TestMultipleCtsResponsesFromMuRts::FakePreviousMuRts(), ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WifiMode::GetDataRate(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::CtrlTriggerHeader::GetHeTbTxVector(), ns3::WifiMode::GetPhyRate(), ns3::WifiRemoteStationManager::GetRtsTxVector(), ns3::HeFrameExchangeManager::GetTrigVector(), ns3::RrMultiUserScheduler::GetTxVectorForUlMu(), ns3::WifiMode::IsAllowed(), ns3::MinstrelHtWifiManager::IsValidMcs(), InterferenceExperiment::SendA(), InterferenceExperiment::SendB(), ns3::OfdmPpdu::SetTxVectorFromLSigHeader(), ns3::ErpOfdmPpdu::SetTxVectorFromLSigHeader(), ns3::HePpdu::SetTxVectorFromPhyHeaders(), ns3::EhtPpdu::SetTxVectorFromPhyHeaders(), ns3::HtPpdu::SetTxVectorFromPhyHeaders(), ns3::VhtPpdu::SetTxVectorFromPhyHeaders(), NodeStatistics::SetupPhy(), ns3::WifiDefaultProtectionManager::TryAddMpduToMuPpdu(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().

+ Here is the caller graph for this function:

◆ SetEhtPpduType()

void ns3::WifiTxVector::SetEhtPpduType ( uint8_t  type)

Set the EHT_PPDU_TYPE parameter.

Parameters
typethe EHT_PPDU_TYPE parameter

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

References ns3::IsEht(), m_ehtPpduType, m_preamble, NS_ASSERT, and check-style-clang-format::type.

Referenced by TxDurationTest::CheckMuTxDuration(), TestMultiUserScheduler::ComputeWifiTxVector(), PhyHeaderSectionsTest::DoRun(), ns3::RrMultiUserScheduler::GetTxVectorForUlMu(), ns3::EhtPpdu::SetTxVectorFromPhyHeaders(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().

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

◆ SetGuardInterval()

void ns3::WifiTxVector::SetGuardInterval ( uint16_t  guardInterval)

Sets the guard interval duration (in nanoseconds)

Parameters
guardIntervalthe guard interval duration (in nanoseconds)

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

References m_guardInterval.

Referenced by ns3::IdealWifiManager::BuildSnrThresholds(), HeSigBDurationTest::BuildTxVector(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckMuTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), TestMultiUserScheduler::ComputeWifiTxVector(), ns3::IdealWifiManager::DoGetDataTxVector(), ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WifiMode::GetDataRate(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::CtrlTriggerHeader::GetHeTbTxVector(), ns3::WifiMode::GetPhyRate(), ns3::WifiRemoteStationManager::GetRtsTxVector(), ns3::HeFrameExchangeManager::GetTrigVector(), ns3::RrMultiUserScheduler::GetTxVectorForUlMu(), TestMultiUserScheduler::SelectTxFormat(), ns3::HePpdu::SetTxVectorFromPhyHeaders(), ns3::EhtPpdu::SetTxVectorFromPhyHeaders(), ns3::HtPpdu::SetTxVectorFromPhyHeaders(), ns3::VhtPpdu::SetTxVectorFromPhyHeaders(), ns3::RrMultiUserScheduler::TrySendingBasicTf(), ns3::RrMultiUserScheduler::TrySendingBsrpTf(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().

+ Here is the caller graph for this function:

◆ SetHeMuUserInfo()

◆ SetInactiveSubchannels()

void ns3::WifiTxVector::SetInactiveSubchannels ( const std::vector< bool > &  inactiveSubchannels)

Set the 20 MHz subchannels that are punctured.

Parameters
inactiveSubchannelsthe bitmap indexed by the 20 MHz subchannels in ascending order, where each bit indicates whether the corresponding 20 MHz subchannel is punctured or not within the transmission bandwidth

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

References m_channelWidth, m_inactiveSubchannels, m_preamble, NS_ABORT_MSG_IF, and ns3::WIFI_PREAMBLE_HE_SU.

Referenced by TestDlOfdmaPhyPuncturing::SendMuPpdu().

+ Here is the caller graph for this function:

◆ SetLdpc()

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

Sets if LDPC FEC coding is being used.

Parameters
ldpcenable or disable LDPC

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

References m_ldpc.

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

+ Here is the caller graph for this function:

◆ SetLength()

◆ SetMode() [1/2]

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

Sets the selected payload transmission mode.

Parameters
modethe payload WifiMode

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

References m_mode, and m_modeInitialized.

Referenced by ns3::WifiRemoteStationManager::AdjustTxVectorForIcf(), ns3::IdealWifiManager::BuildSnrThresholds(), ns3::dot11s::AirtimeLinkMetricCalculator::CalculateMetric(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), ns3::IdealWifiManager::DoGetDataTxVector(), ns3::IdealWifiManager::DoGetRtsTxVector(), PhyHeaderSectionsTest::DoRun(), WifiErrorRateModelsTestCaseMimo::DoRun(), TableBasedErrorRateTestCase::DoRun(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WifiMode::GetDataRate(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::HeFrameExchangeManager::GetMuRtsDurationId(), ns3::WifiMode::GetPhyRate(), ns3::WifiRemoteStationManager::GetRtsTxVector(), TestUlOfdmaPhyTransmission::GetTxVectorForHeTbPpdu(), TestUlMuMimoPhyTransmission::GetTxVectorForHeTbPpdu(), ns3::WifiMode::IsAllowed(), ns3::MinstrelHtWifiManager::IsValidMcs(), TestMultipleHeTbPreambles::RxHeTbPpdu(), PsrExperiment::Send(), CollisionExperiment::SendA(), InterferenceExperiment::SendA(), CollisionExperiment::SendB(), InterferenceExperiment::SendB(), TestPhyPaddingExclusion::SendHeTbPpdu(), TestUlOfdmaPpduUid::SendMuPpdu(), TestDlMuMimoPhyTransmission::SendMuPpdu(), TestDlOfdmaPhyTransmission::SendMuPpdu(), TestDlOfdmaPhyPuncturing::SendMuPpdu(), TestUlOfdmaPpduUid::SendTbPpdu(), TestUlMuMimoPhyTransmission::SetTrigVector(), TestPhyPaddingExclusion::SetTrigVector(), TestUlOfdmaPhyTransmission::SetTrigVector(), ns3::DsssPpdu::SetTxVectorFromDsssHeader(), ns3::OfdmPpdu::SetTxVectorFromLSigHeader(), ns3::ErpOfdmPpdu::SetTxVectorFromLSigHeader(), ns3::HePpdu::SetTxVectorFromPhyHeaders(), ns3::EhtPpdu::SetTxVectorFromPhyHeaders(), ns3::HtPpdu::SetTxVectorFromPhyHeaders(), ns3::VhtPpdu::SetTxVectorFromPhyHeaders(), ns3::MinstrelWifiManager::SetupPhy(), ns3::RraaWifiManager::SetupPhy(), ns3::RrpaaWifiManager::SetupPhy(), NodeStatistics::SetupPhy(), and ns3::WifiDefaultProtectionManager::TryAddMpduToMuPpdu().

+ 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 MU only)

Parameters
mode
staIdthe station ID for MU

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

References ns3::WifiMode::GetMcsValue(), 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]

void ns3::WifiTxVector::SetNss ( uint8_t  nss)

Sets the number of Nss.

Parameters
nssthe number of spatial streams

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

References m_nss.

Referenced by ns3::IdealWifiManager::BuildSnrThresholds(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), ns3::IdealWifiManager::DoGetDataTxVector(), ns3::IdealWifiManager::DoGetRtsTxVector(), PhyHeaderSectionsTest::DoRun(), WifiErrorRateModelsTestCaseMimo::DoRun(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WifiMode::GetDataRate(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::WifiMode::GetPhyRate(), ns3::WifiRemoteStationManager::GetRtsTxVector(), TestUlOfdmaPhyTransmission::GetTxVectorForHeTbPpdu(), TestUlMuMimoPhyTransmission::GetTxVectorForHeTbPpdu(), ns3::WifiMode::IsAllowed(), ns3::MinstrelHtWifiManager::IsValidMcs(), TestMultipleHeTbPreambles::RxHeTbPpdu(), TestPhyPaddingExclusion::SendHeTbPpdu(), TestUlOfdmaPpduUid::SendMuPpdu(), TestDlMuMimoPhyTransmission::SendMuPpdu(), TestDlOfdmaPhyTransmission::SendMuPpdu(), TestDlOfdmaPhyPuncturing::SendMuPpdu(), TestUlOfdmaPpduUid::SendTbPpdu(), TestUlMuMimoPhyTransmission::SetTrigVector(), TestPhyPaddingExclusion::SetTrigVector(), TestUlOfdmaPhyTransmission::SetTrigVector(), ns3::HePpdu::SetTxVectorFromPhyHeaders(), ns3::EhtPpdu::SetTxVectorFromPhyHeaders(), ns3::HtPpdu::SetTxVectorFromPhyHeaders(), and ns3::VhtPpdu::SetTxVectorFromPhyHeaders().

+ Here is the caller graph for this function:

◆ SetNss() [2/2]

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

Sets the number of Nss for MU.

Parameters
nssthe number of spatial streams
staIdthe station ID for MU

Definition at line 336 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 324 of file wifi-tx-vector.cc.

References m_nTx.

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

+ 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 306 of file wifi-tx-vector.cc.

References m_preamble.

Referenced by ns3::WifiRemoteStationManager::AdjustTxVectorForIcf(), HeSigBDurationTest::BuildTxVector(), TestDlMuTxVector::BuildTxVector(), ns3::dot11s::AirtimeLinkMetricCalculator::CalculateMetric(), ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), TxDurationTest::CheckMuTxDuration(), TxDurationTest::CheckPayloadDuration(), TxDurationTest::CheckTxDuration(), TestMultiUserScheduler::ComputeWifiTxVector(), ns3::HePpdu::DoGetTxVector(), ns3::HtPpdu::DoGetTxVector(), ns3::DsssPpdu::DoGetTxVector(), ns3::OfdmPpdu::DoGetTxVector(), ns3::VhtPpdu::DoGetTxVector(), PhyHeaderSectionsTest::DoRun(), ns3::WifiDefaultAckManager::GetAckInfoIfAggregatedMuBar(), ns3::WifiDefaultAckManager::GetAckInfoIfTfMuBar(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::CtrlTriggerHeader::GetHeTbTxVector(), ns3::WifiRemoteStationManager::GetRtsTxVector(), ns3::HeFrameExchangeManager::GetTrigVector(), ns3::RrMultiUserScheduler::GetTxVectorForUlMu(), TestMultiUserScheduler::SelectTxFormat(), PsrExperiment::Send(), CollisionExperiment::SendA(), InterferenceExperiment::SendA(), CollisionExperiment::SendB(), InterferenceExperiment::SendB(), ns3::MinstrelWifiManager::SetupPhy(), ns3::RraaWifiManager::SetupPhy(), ns3::RrpaaWifiManager::SetupPhy(), NodeStatistics::SetupPhy(), and ns3::RrMultiUserScheduler::TrySendingDlMuPpdu().

+ Here is the caller graph for this function:

◆ SetRu()

◆ SetRuAllocation()

void ns3::WifiTxVector::SetRuAllocation ( const RuAllocation ruAlloc,
uint8_t  p20Index 
)

Set RU_ALLOCATION field.

Parameters
ruAlloc8 bit RU_ALLOCATION per 20 MHz
p20Indexthe index of the primary20 channel

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

References DeriveRuAllocation(), ns3::IsDlMu(), m_muUserInfos, m_preamble, m_ruAllocation, and NS_ASSERT.

Referenced by TxDurationTest::CheckMuTxDuration(), TestMultiUserScheduler::ComputeWifiTxVector(), PhyHeaderSectionsTest::DoRun(), WifiPrimaryChannelsTest::SendDlMuPpdu(), TestUlOfdmaPpduUid::SendMuPpdu(), TestDlOfdmaPhyTransmission::SendMuPpdu(), TestDlOfdmaPhyPuncturing::SendMuPpdu(), ns3::HePpdu::SetTxVectorFromPhyHeaders(), and ns3::EhtPpdu::SetTxVectorFromPhyHeaders().

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

◆ SetSigBMode()

◆ SetStbc()

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

Sets if STBC is being used.

Parameters
stbcenable or disable STBC

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

References m_stbc.

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

+ Here is the caller graph for this function:

◆ SetTriggerResponding()

void ns3::WifiTxVector::SetTriggerResponding ( bool  triggerResponding)

Set the Trigger Responding parameter to the given value.

Parameters
triggerRespondingthe value for the Trigger Responding parameter

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

References m_triggerResponding.

Referenced by ns3::HeFrameExchangeManager::SendCtsAfterMuRts(), and TestMultipleCtsResponsesFromMuRts::TxNonHtDuplicateCts().

+ 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 573 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 576 of file wifi-tx-vector.h.

Referenced by GetBssColor(), and SetBssColor().

◆ m_center26ToneRuIndication

std::optional<Center26ToneRuIndication> ns3::WifiTxVector::m_center26ToneRuIndication
mutableprivate

CENTER_26_TONE_RU field when format is HE_MU and when channel width is set to 80 MHz or larger (Table 27-1 802.11ax-2021)

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

Referenced by GetCenter26ToneRuIndication(), and SetCenter26ToneRuIndication().

◆ m_channelWidth

uint16_t ns3::WifiTxVector::m_channelWidth
private

◆ m_ehtPpduType

uint8_t ns3::WifiTxVector::m_ehtPpduType
private

EHT_PPDU_TYPE per Table 36-1 IEEE 802.11be D2.3.

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

Referenced by GetEhtPpduType(), IsDlMu(), IsDlMuMimo(), IsDlOfdma(), and SetEhtPpduType().

◆ m_guardInterval

uint16_t ns3::WifiTxVector::m_guardInterval
private

guard interval duration in nanoseconds

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

Referenced by GetGuardInterval(), and SetGuardInterval().

◆ m_inactiveSubchannels

std::vector<bool> ns3::WifiTxVector::m_inactiveSubchannels
private

Bitmap of inactive subchannels used for preamble puncturing.

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

Referenced by GetInactiveSubchannels(), and SetInactiveSubchannels().

◆ m_ldpc

bool ns3::WifiTxVector::m_ldpc
private

LDPC FEC coding if true, BCC otherwise.

Definition at line 575 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 577 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 561 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 580 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 583 of file wifi-tx-vector.h.

Referenced by WifiTxVector(), DeriveCenter26ToneRuIndication(), GetHeMuUserInfo(), GetHeMuUserInfoMap(), GetMode(), GetModulationClass(), GetNss(), GetNssMax(), GetNssTotal(), GetNumStasInRu(), GetRu(), GetUserInfoMapOrderedByRus(), IsAllocated(), IsDlMuMimo(), IsDlOfdma(), IsValid(), SetHeMuUserInfo(), SetMode(), SetNss(), SetRu(), and SetRuAllocation().

◆ m_ness

uint8_t ns3::WifiTxVector::m_ness
private

number of spatial streams in beamforming

Definition at line 572 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 571 of file wifi-tx-vector.h.

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

◆ m_nTx

uint8_t ns3::WifiTxVector::m_nTx
private

number of TX antennas

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

Referenced by GetNTx(), and SetNTx().

◆ m_preamble

◆ m_ruAllocation

RuAllocation ns3::WifiTxVector::m_ruAllocation
mutableprivate

RU allocations that are going to be carried in SIG-B common field per Table 27-1 IEEE.

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

Referenced by GetHeMuUserInfoMap(), GetRuAllocation(), SetHeMuUserInfo(), SetRuAllocation(), and ns3::HePpdu::SetTxVectorFromPhyHeaders().

◆ m_sigBMcs

WifiMode ns3::WifiTxVector::m_sigBMcs
private

MCS_SIG_B per Table 27-1 IEEE 802.11ax-2021.

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

Referenced by GetSigBMode(), and SetSigBMode().

◆ m_stbc

bool ns3::WifiTxVector::m_stbc
private

STBC used or not.

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

Referenced by IsStbc(), and SetStbc().

◆ m_triggerResponding

bool ns3::WifiTxVector::m_triggerResponding
private

The Trigger Responding parameter.

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

Referenced by IsTriggerResponding(), and SetTriggerResponding().

◆ 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 564 of file wifi-tx-vector.h.

Referenced by GetTxPowerLevel(), and SetTxPowerLevel().


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