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

HE PPDU (11ax) More...

#include "he-ppdu.h"

+ Inheritance diagram for ns3::HePpdu:
+ Collaboration diagram for ns3::HePpdu:

Classes

struct  HeMuSigHeader
 HE-SIG PHY header for HE MU PPDUs (HE-SIG-A1/A2/B) More...
 
struct  HeSigBUserSpecificField
 User Specific Fields in HE-SIG-Bs. More...
 
struct  HeSuSigHeader
 HE-SIG PHY header for HE SU PPDUs (HE-SIG-A1/A2) More...
 
struct  HeTbSigHeader
 HE-SIG PHY header for HE TB PPDUs (HE-SIG-A1/A2) More...
 

Public Types

using HeSigBContentChannels = std::vector< std::vector< HeSigBUserSpecificField > >
 HE SIG-B Content Channels. More...
 
using HeSigHeader = std::variant< std::monostate, HeSuSigHeader, HeTbSigHeader, HeMuSigHeader >
 type of the HE-SIG PHY header More...
 
enum  TxPsdFlag { PSD_NON_HE_PORTION , PSD_HE_PORTION }
 The transmit power spectral density flag, namely used to correctly build PSDs for pre-HE and HE portions. More...
 

Public Member Functions

 HePpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, const WifiPhyOperatingChannel &channel, Time ppduDuration, uint64_t uid, TxPsdFlag flag)
 Create an MU HE PPDU, storing a map of PSDUs. More...
 
 HePpdu (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, const WifiPhyOperatingChannel &channel, Time ppduDuration, uint64_t uid)
 Create an SU HE PPDU, storing a PSDU. More...
 
Ptr< WifiPpduCopy () const override
 Copy this instance. More...
 
Ptr< const WifiPsduGetPsdu (uint8_t bssColor, uint16_t staId=SU_STA_ID) const
 Get the payload of the PPDU. More...
 
uint16_t GetStaId () const override
 Get the ID of the STA that transmitted the PPDU for UL MU, SU_STA_ID otherwise. More...
 
uint16_t GetTxChannelWidth () const override
 Get the channel width over which the PPDU will effectively be transmitted. More...
 
Time GetTxDuration () const override
 Get the total transmission duration of the PPDU. More...
 
TxPsdFlag GetTxPsdFlag () const
 
WifiPpduType GetType () const override
 Return the PPDU type (. More...
 
void SetTxPsdFlag (TxPsdFlag flag) const
 
void UpdateTxVectorForUlMu (const std::optional< WifiTxVector > &trigVector) const
 Update the TXVECTOR for HE TB PPDUs, since the information to decode HE TB PPDUs is not available from the PHY headers but it requires information from the TRIGVECTOR of the AP expecting these HE TB PPDUs. More...
 
- Public Member Functions inherited from ns3::OfdmPpdu
 OfdmPpdu (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, const WifiPhyOperatingChannel &channel, uint64_t uid, bool instantiateLSig=true)
 Create an OFDM PPDU. More...
 
Ptr< WifiPpduCopy () const override
 Copy this instance. More...
 
Time GetTxDuration () const override
 Get the total transmission duration of the PPDU. More...
 
- Public Member Functions inherited from ns3::WifiPpdu
 WifiPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, const WifiPhyOperatingChannel &channel, uint64_t uid)
 Create a PPDU storing a map of PSDUs. More...
 
 WifiPpdu (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, const WifiPhyOperatingChannel &channel, uint64_t uid=UINT64_MAX)
 Create a PPDU storing a PSDU. More...
 
virtual ~WifiPpdu ()
 Destructor for WifiPpdu. More...
 
bool DoesOverlapChannel (uint16_t minFreq, uint16_t maxFreq) const
 Check whether the given PPDU overlaps a given channel. More...
 
WifiModulationClass GetModulation () const
 Get the modulation used for the PPDU. More...
 
WifiPreamble GetPreamble () const
 Get the preamble of the PPDU. More...
 
Ptr< const WifiPsduGetPsdu () const
 Get the payload of the PPDU. More...
 
uint16_t GetTxCenterFreq () const
 
const WifiTxVectorGetTxVector () const
 Get the TXVECTOR used to send the PPDU. More...
 
uint64_t GetUid () const
 Get the UID of the PPDU. More...
 
bool IsTruncatedTx () const
 
void Print (std::ostream &os) const
 Print the PPDU contents. More...
 
void ResetTxVector () const
 Reset the TXVECTOR. More...
 
void SetTruncatedTx ()
 Indicate that the PPDU's transmission was aborted due to transmitter switch off. More...
 
void UpdateTxVector (const WifiTxVector &updatedTxVector) const
 Update the TXVECTOR based on some information known at the receiver. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< WifiPpdu >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o[[maybe_unused]])
 Copy constructor. More...
 
uint32_t GetReferenceCount () const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o[[maybe_unused]])
 Assignment operator. More...
 
void Ref () const
 Increment the reference count. More...
 
void Unref () const
 Decrement the reference count. More...
 

Static Public Member Functions

static HeSigBContentChannels GetHeSigBContentChannels (const WifiTxVector &txVector, uint8_t p20Index)
 Get the HE SIG-B content channels for a given PPDU IEEE 802.11ax-2021 27.3.11.8.2 HE-SIG-B content channels. More...
 
static std::pair< std::size_t, std::size_t > GetNumRusPerHeSigBContentChannel (uint16_t channelWidth, const RuAllocation &ruAllocation, bool sigBCompression, uint8_t numMuMimoUsers)
 Get the number of STAs per HE-SIG-B content channel. More...
 
static uint32_t GetSigBFieldSize (uint16_t channelWidth, const RuAllocation &ruAllocation, bool sigBCompression, std::size_t numMuMimoUsers)
 Get variable length HE SIG-B field size. More...
 

Protected Member Functions

void SetHeMuUserInfos (WifiTxVector &txVector, const RuAllocation &ruAllocation, const HeSigBContentChannels &contentChannels, bool sigBCompression, uint8_t numMuMimoUsers) const
 Reconstruct HeMuUserInfoMap from HE-SIG-B header. More...
 
virtual void SetTxVectorFromPhyHeaders (WifiTxVector &txVector) const
 Fill in the TXVECTOR from PHY headers. More...
 

Static Protected Member Functions

static uint8_t GetChannelWidthEncodingFromMhz (uint16_t channelWidth)
 Convert channel width expressed in MHz to bandwidth field encoding in HE-SIG-A. More...
 
static uint16_t GetChannelWidthMhzFromEncoding (uint8_t bandwidth)
 Convert channel width expressed in MHz from bandwidth field encoding in HE-SIG-A. More...
 
static uint8_t GetGuardIntervalAndNltfEncoding (uint16_t gi, uint8_t nltf)
 Convert guard interval (in ns) and NLTF to its encoding in HE-SIG-A. More...
 
static uint16_t GetGuardIntervalFromEncoding (uint8_t giAndNltfSize)
 Convert guard interval (in ns) from its encoding in HE-SIG-A. More...
 
static uint8_t GetMuMimoUsersEncoding (uint8_t nUsers)
 Convert number of MU-MIMO users to its encoding in HE-SIG-A. More...
 
static uint8_t GetMuMimoUsersFromEncoding (uint8_t encoding)
 Convert number of MU-MIMO users from its encoding in HE-SIG-A. More...
 
static uint8_t GetNssFromNstsEncoding (uint8_t nsts)
 Convert number of spatial streams from NSTS field encoding in HE-SIG-A. More...
 
static uint8_t GetNstsEncodingFromNss (uint8_t nss)
 Convert number of spatial streams to NSTS field encoding in HE-SIG-A. More...
 

Protected Attributes

TxPsdFlag m_txPsdFlag
 the transmit power spectral density flag More...
 
- Protected Attributes inherited from ns3::OfdmPpdu
LSigHeader m_lSig
 the L-SIG PHY header More...
 
- Protected Attributes inherited from ns3::WifiPpdu
WifiModulationClass m_modulation
 the modulation used for the transmission of this PPDU More...
 
const WifiPhyOperatingChannelm_operatingChannel
 the operating channel of the PHY More...
 
WifiPreamble m_preamble
 the PHY preamble More...
 
WifiConstPsduMap m_psdus
 the PSDUs contained in this PPDU More...
 
uint16_t m_txCenterFreq
 the center frequency (MHz) used for the transmission of this PPDU More...
 
std::optional< WifiTxVectorm_txVector
 the TXVECTOR at TX PHY or the reconstructed TXVECTOR at RX PHY (or std::nullopt if TXVECTOR has not been reconstructed yet) More...
 
uint64_t m_uid
 the unique ID of this PPDU More...
 

Private Member Functions

WifiTxVector DoGetTxVector () const override
 Get the TXVECTOR used to send the PPDU. More...
 
virtual bool IsDlMu () const
 Return true if the PPDU is a DL MU PPDU. More...
 
virtual bool IsMu () const
 Return true if the PPDU is a MU PPDU. More...
 
virtual bool IsUlMu () const
 Return true if the PPDU is an UL MU PPDU. More...
 
std::string PrintPayload () const override
 Print the payload of the PPDU. More...
 
void SetHeSigHeader (const WifiTxVector &txVector)
 Fill in the HE-SIG header. More...
 
void SetLSigHeader (Time ppduDuration)
 Fill in the L-SIG header. More...
 
void SetPhyHeaders (const WifiTxVector &txVector, Time ppduDuration)
 Fill in the PHY headers. More...
 

Private Attributes

HeSigHeader m_heSig
 the HE-SIG PHY header More...
 

Detailed Description

HE PPDU (11ax)

HePpdu stores a preamble, PHY headers and a map of PSDUs of a PPDU with HE header

Definition at line 49 of file he-ppdu.h.

Member Typedef Documentation

◆ HeSigBContentChannels

using ns3::HePpdu::HeSigBContentChannels = std::vector<std::vector<HeSigBUserSpecificField> >

HE SIG-B Content Channels.

Definition at line 61 of file he-ppdu.h.

◆ HeSigHeader

using ns3::HePpdu::HeSigHeader = std::variant<std::monostate, HeSuSigHeader, HeTbSigHeader, HeMuSigHeader>

type of the HE-SIG PHY header

Definition at line 108 of file he-ppdu.h.

Member Enumeration Documentation

◆ TxPsdFlag

The transmit power spectral density flag, namely used to correctly build PSDs for pre-HE and HE portions.

Enumerator
PSD_NON_HE_PORTION 

Non-HE portion of an HE PPDU.

PSD_HE_PORTION 

HE portion of an HE PPDU.

Definition at line 114 of file he-ppdu.h.

Constructor & Destructor Documentation

◆ HePpdu() [1/2]

ns3::HePpdu::HePpdu ( Ptr< const WifiPsdu psdu,
const WifiTxVector txVector,
const WifiPhyOperatingChannel channel,
Time  ppduDuration,
uint64_t  uid 
)

Create an SU HE PPDU, storing a PSDU.

Parameters
psduthe PHY payload (PSDU)
txVectorthe TXVECTOR that was used for this PPDU
channelthe operating channel of the PHY used to transmit this PPDU
ppduDurationthe transmission duration of this PPDU
uidthe unique ID of this PPDU

Definition at line 76 of file he-ppdu.cc.

References third::channel, IsMu(), NS_ASSERT, NS_LOG_FUNCTION, and SetPhyHeaders().

+ Here is the call graph for this function:

◆ HePpdu() [2/2]

ns3::HePpdu::HePpdu ( const WifiConstPsduMap psdus,
const WifiTxVector txVector,
const WifiPhyOperatingChannel channel,
Time  ppduDuration,
uint64_t  uid,
TxPsdFlag  flag 
)

Create an MU HE PPDU, storing a map of PSDUs.

This PPDU can either be UL or DL.

Parameters
psdusthe PHY payloads (PSDUs)
txVectorthe TXVECTOR that was used for this PPDU
channelthe operating channel of the PHY used to transmit this PPDU
ppduDurationthe transmission duration of this PPDU
uidthe unique ID of this PPDU or of the triggering PPDU if this is an HE TB PPDU
flagthe flag indicating the type of Tx PSD to build

Definition at line 54 of file he-ppdu.cc.

References third::channel, ns3::WifiPpdu::m_psdus, NS_LOG_FUNCTION, and SetPhyHeaders().

+ Here is the call graph for this function:

Member Function Documentation

◆ Copy()

Ptr< WifiPpdu > ns3::HePpdu::Copy ( void  ) const
overridevirtual

Copy this instance.

Returns
a Ptr to a copy of this instance.

Reimplemented from ns3::WifiPpdu.

Definition at line 336 of file he-ppdu.cc.

◆ DoGetTxVector()

WifiTxVector ns3::HePpdu::DoGetTxVector ( ) const
overrideprivatevirtual

Get the TXVECTOR used to send the PPDU.

Returns
the TXVECTOR of the PPDU.

Reimplemented from ns3::WifiPpdu.

Definition at line 167 of file he-ppdu.cc.

References ns3::WifiPpdu::m_preamble, ns3::WifiTxVector::SetPreambleType(), and SetTxVectorFromPhyHeaders().

+ Here is the call graph for this function:

◆ GetChannelWidthEncodingFromMhz()

uint8_t ns3::HePpdu::GetChannelWidthEncodingFromMhz ( uint16_t  channelWidth)
staticprotected

Convert channel width expressed in MHz to bandwidth field encoding in HE-SIG-A.

Parameters
channelWidththe channel width in MHz
Returns
the value used to encode the bandwidth field in HE-SIG-A

Definition at line 695 of file he-ppdu.cc.

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

+ Here is the caller graph for this function:

◆ GetChannelWidthMhzFromEncoding()

uint16_t ns3::HePpdu::GetChannelWidthMhzFromEncoding ( uint8_t  bandwidth)
staticprotected

Convert channel width expressed in MHz from bandwidth field encoding in HE-SIG-A.

Parameters
bandwidththe value of the bandwidth field in HE-SIG-A
Returns
the channel width in MHz

Definition at line 716 of file he-ppdu.cc.

Referenced by SetTxVectorFromPhyHeaders(), and ns3::EhtPpdu::SetTxVectorFromPhyHeaders().

+ Here is the caller graph for this function:

◆ GetGuardIntervalAndNltfEncoding()

uint8_t ns3::HePpdu::GetGuardIntervalAndNltfEncoding ( uint16_t  gi,
uint8_t  nltf 
)
staticprotected

Convert guard interval (in ns) and NLTF to its encoding in HE-SIG-A.

Parameters
githe guard interval in nanoseconds
nltfthe the number of long training symbols
Returns
the value used to encode the NSTS field in HE-SIG-A

Definition at line 737 of file he-ppdu.cc.

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

+ Here is the caller graph for this function:

◆ GetGuardIntervalFromEncoding()

uint16_t ns3::HePpdu::GetGuardIntervalFromEncoding ( uint8_t  giAndNltfSize)
staticprotected

Convert guard interval (in ns) from its encoding in HE-SIG-A.

Parameters
giAndNltfSizethe value used to encode the guard interval and NLTF field in HE-SIG-A
Returns
the guard interval in nanoseconds

Definition at line 758 of file he-ppdu.cc.

Referenced by SetTxVectorFromPhyHeaders(), and ns3::EhtPpdu::SetTxVectorFromPhyHeaders().

+ Here is the caller graph for this function:

◆ GetHeSigBContentChannels()

HePpdu::HeSigBContentChannels ns3::HePpdu::GetHeSigBContentChannels ( const WifiTxVector txVector,
uint8_t  p20Index 
)
static

Get the HE SIG-B content channels for a given PPDU IEEE 802.11ax-2021 27.3.11.8.2 HE-SIG-B content channels.

Parameters
txVectorthe TXVECTOR used for the PPDU
p20Indexthe index of the primary20 channel
Returns
HE-SIG-B content channels

Definition at line 554 of file he-ppdu.cc.

References ns3::WifiTxVector::GetChannelWidth(), ns3::WifiTxVector::GetHeMuUserInfo(), ns3::WifiTxVector::GetHeMuUserInfoMap(), ns3::WifiTxVector::GetRuAllocation(), ns3::WifiTxVector::GetUserInfoMapOrderedByRus(), ns3::WifiTxVector::IsSigBCompression(), ns3::NO_USER_STA_ID, and NS_ASSERT.

Referenced by ns3::EhtPpdu::GetEhtSigContentChannels(), and SetHeSigHeader().

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

◆ GetMuMimoUsersEncoding()

uint8_t ns3::HePpdu::GetMuMimoUsersEncoding ( uint8_t  nUsers)
staticprotected

Convert number of MU-MIMO users to its encoding in HE-SIG-A.

Parameters
nUsersthe number of MU-MIMO users
Returns
the number of MU-MIMO users to its encoding in HE-SIG-A

Definition at line 789 of file he-ppdu.cc.

References NS_ASSERT.

Referenced by SetHeSigHeader().

+ Here is the caller graph for this function:

◆ GetMuMimoUsersFromEncoding()

uint8_t ns3::HePpdu::GetMuMimoUsersFromEncoding ( uint8_t  encoding)
staticprotected

Convert number of MU-MIMO users from its encoding in HE-SIG-A.

Parameters
encodingthe number of MU-MIMO users encoded in HE-SIG-A
Returns
the number of MU-MIMO users from its encoding in HE-SIG-A

Definition at line 796 of file he-ppdu.cc.

References two-ray-to-three-gpp-ch-calibration::encoding.

Referenced by SetTxVectorFromPhyHeaders().

+ Here is the caller graph for this function:

◆ GetNssFromNstsEncoding()

uint8_t ns3::HePpdu::GetNssFromNstsEncoding ( uint8_t  nsts)
staticprotected

Convert number of spatial streams from NSTS field encoding in HE-SIG-A.

Parameters
nststhe value of the NSTS field in HE-SIG-A
Returns
the number of spatial streams

Definition at line 783 of file he-ppdu.cc.

Referenced by SetTxVectorFromPhyHeaders().

+ Here is the caller graph for this function:

◆ GetNstsEncodingFromNss()

uint8_t ns3::HePpdu::GetNstsEncodingFromNss ( uint8_t  nss)
staticprotected

Convert number of spatial streams to NSTS field encoding in HE-SIG-A.

Parameters
nssthe number of spatial streams
Returns
the value used to encode the NSTS field in HE-SIG-A

Definition at line 776 of file he-ppdu.cc.

References NS_ASSERT.

Referenced by SetHeSigHeader().

+ Here is the caller graph for this function:

◆ GetNumRusPerHeSigBContentChannel()

std::pair< std::size_t, std::size_t > ns3::HePpdu::GetNumRusPerHeSigBContentChannel ( uint16_t  channelWidth,
const RuAllocation ruAllocation,
bool  sigBCompression,
uint8_t  numMuMimoUsers 
)
static

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

This is applicable only for MU. See section 27.3.10.8.3 of IEEE 802.11ax draft 4.0.

Parameters
channelWidththe channel width occupied by the PPDU (in MHz)
ruAllocation8 bit RU_ALLOCATION per 20 MHz
sigBCompressionflag whether SIG-B compression is used by the PPDU
numMuMimoUsersthe number of MU-MIMO users addressed by the PPDU
Returns
a pair containing the number of RUs in each HE-SIG-B content channel (resp. 1 and 2)

Definition at line 486 of file he-ppdu.cc.

References NS_ASSERT_MSG.

Referenced by ns3::EhtPpdu::GetNumRusPerEhtSigBContentChannel().

+ Here is the caller graph for this function:

◆ GetPsdu()

Ptr< const WifiPsdu > ns3::HePpdu::GetPsdu ( uint8_t  bssColor,
uint16_t  staId = SU_STA_ID 
) const

Get the payload of the PPDU.

Parameters
bssColorthe BSS color of the PHY calling this function.
staIdthe STA-ID of the PHY calling this function.
Returns
the PSDU

Definition at line 374 of file he-ppdu.cc.

References ns3::IsMu(), ns3::IsUlMu(), NS_ASSERT, and ns3::SU_STA_ID.

+ Here is the call graph for this function:

◆ GetSigBFieldSize()

uint32_t ns3::HePpdu::GetSigBFieldSize ( uint16_t  channelWidth,
const RuAllocation ruAllocation,
bool  sigBCompression,
std::size_t  numMuMimoUsers 
)
static

Get variable length HE SIG-B field size.

Parameters
channelWidththe channel width occupied by the PPDU (in MHz)
ruAllocation8 bit RU_ALLOCATION per 20 MHz
sigBCompressionflag whether SIG-B compression is used by the PPDU
numMuMimoUsersthe number of MU-MIMO users addressed by the PPDU
Returns
field size in bytes

Definition at line 639 of file he-ppdu.cc.

References max.

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

+ Here is the caller graph for this function:

◆ GetStaId()

uint16_t ns3::HePpdu::GetStaId ( ) const
overridevirtual

Get the ID of the STA that transmitted the PPDU for UL MU, SU_STA_ID otherwise.

Returns
the ID of the STA that transmitted the PPDU for UL MU, SU_STA_ID otherwise

Reimplemented from ns3::WifiPpdu.

Definition at line 411 of file he-ppdu.cc.

References ns3::IsUlMu(), and NS_ASSERT.

+ Here is the call graph for this function:

◆ GetTxChannelWidth()

uint16_t ns3::HePpdu::GetTxChannelWidth ( ) const
overridevirtual

Get the channel width over which the PPDU will effectively be transmitted.

Returns
the effective channel width (in MHz) used for the tranmsission

Reimplemented from ns3::WifiPpdu.

Definition at line 418 of file he-ppdu.cc.

References NS_LOG_INFO, and ns3::SU_STA_ID.

◆ GetTxDuration()

Time ns3::HePpdu::GetTxDuration ( ) const
overridevirtual

Get the total transmission duration of the PPDU.

Returns
the transmission duration of the PPDU

Reimplemented from ns3::WifiPpdu.

Definition at line 314 of file he-ppdu.cc.

References ns3::IsDlMu(), two-ray-to-three-gpp-ch-calibration::m, ns3::MicroSeconds(), ns3::NanoSeconds(), NS_ASSERT, ns3::Seconds(), and ns3::WIFI_PHY_BAND_2_4GHZ.

+ Here is the call graph for this function:

◆ GetTxPsdFlag()

HePpdu::TxPsdFlag ns3::HePpdu::GetTxPsdFlag ( ) const
Returns
the transmit PSD flag set for this PPDU
See also
TxPsdFlag

Definition at line 437 of file he-ppdu.cc.

◆ GetType()

WifiPpduType ns3::HePpdu::GetType ( ) const
overridevirtual

Return the PPDU type (.

See also
WifiPpduType)
Returns
the PPDU type

Reimplemented from ns3::WifiPpdu.

Definition at line 342 of file he-ppdu.cc.

References ns3::WIFI_PPDU_TYPE_DL_MU, ns3::WIFI_PPDU_TYPE_SU, ns3::WIFI_PPDU_TYPE_UL_MU, ns3::WIFI_PREAMBLE_HE_MU, and ns3::WIFI_PREAMBLE_HE_TB.

◆ IsDlMu()

bool ns3::HePpdu::IsDlMu ( ) const
privatevirtual

Return true if the PPDU is a DL MU PPDU.

Returns
true if the PPDU is a DL MU PPDU

Reimplemented in ns3::EhtPpdu.

Definition at line 362 of file he-ppdu.cc.

References ns3::WIFI_PREAMBLE_HE_MU.

Referenced by SetLSigHeader(), and SetTxVectorFromPhyHeaders().

+ Here is the caller graph for this function:

◆ IsMu()

bool ns3::HePpdu::IsMu ( ) const
privatevirtual

Return true if the PPDU is a MU PPDU.

Returns
true if the PPDU is a MU PPDU

Definition at line 356 of file he-ppdu.cc.

References ns3::IsDlMu(), and ns3::IsUlMu().

Referenced by HePpdu(), and SetTxVectorFromPhyHeaders().

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

◆ IsUlMu()

bool ns3::HePpdu::IsUlMu ( ) const
privatevirtual

Return true if the PPDU is an UL MU PPDU.

Returns
true if the PPDU is an UL MU PPDU

Reimplemented in ns3::EhtPpdu.

Definition at line 368 of file he-ppdu.cc.

References ns3::WIFI_PREAMBLE_HE_TB.

Referenced by SetTxVectorFromPhyHeaders().

+ Here is the caller graph for this function:

◆ PrintPayload()

std::string ns3::HePpdu::PrintPayload ( ) const
overrideprivatevirtual

Print the payload of the PPDU.

Returns
information on the payload part of the PPDU

Reimplemented from ns3::WifiPpdu.

Definition at line 679 of file he-ppdu.cc.

References ns3::IsMu(), and ns3::SU_STA_ID.

+ Here is the call graph for this function:

◆ SetHeMuUserInfos()

void ns3::HePpdu::SetHeMuUserInfos ( WifiTxVector txVector,
const RuAllocation ruAllocation,
const HeSigBContentChannels contentChannels,
bool  sigBCompression,
uint8_t  numMuMimoUsers 
) const
protected

Reconstruct HeMuUserInfoMap from HE-SIG-B header.

Parameters
txVectorthe TXVECTOR to set its HeMuUserInfoMap
ruAllocationthe RU_ALLOCATION per 20 MHz
contentChannelsthe HE-SIG-B content channels
sigBCompressionflag whether SIG-B compression is used by the PPDU
numMuMimoUsersthe number of MU-MIMO users addressed by the PPDU

Definition at line 225 of file he-ppdu.cc.

References ns3::HeRu::GetBandwidth(), ns3::WifiTxVector::GetChannelWidth(), ns3::HeRu::GetRusOfType(), ns3::HeRu::GetRuSpecs(), ns3::WifiTxVector::IsAllocated(), max, ns3::NO_USER_STA_ID, NS_ASSERT, ns3::HeRu::RU_2x996_TONE, ns3::HeRu::RU_996_TONE, and ns3::WifiTxVector::SetHeMuUserInfo().

Referenced by SetTxVectorFromPhyHeaders(), and ns3::EhtPpdu::SetTxVectorFromPhyHeaders().

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

◆ SetHeSigHeader()

◆ SetLSigHeader()

void ns3::HePpdu::SetLSigHeader ( Time  ppduDuration)
private

Fill in the L-SIG header.

Parameters
ppduDurationthe transmission duration of this PPDU

Definition at line 102 of file he-ppdu.cc.

References ns3::Time::GetNanoSeconds(), ns3::WifiPhyOperatingChannel::GetPhyBand(), IsDlMu(), ns3::WifiPhyOperatingChannel::IsSet(), two-ray-to-three-gpp-ch-calibration::m, ns3::OfdmPpdu::m_lSig, ns3::WifiPpdu::m_operatingChannel, NS_ASSERT, ns3::OfdmPpdu::LSigHeader::SetLength(), and ns3::WIFI_PHY_BAND_2_4GHZ.

Referenced by SetPhyHeaders().

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

◆ SetPhyHeaders()

void ns3::HePpdu::SetPhyHeaders ( const WifiTxVector txVector,
Time  ppduDuration 
)
private

Fill in the PHY headers.

Parameters
txVectorthe TXVECTOR that was used for this PPDU
ppduDurationthe transmission duration of this PPDU

Definition at line 94 of file he-ppdu.cc.

References NS_LOG_FUNCTION, SetHeSigHeader(), and SetLSigHeader().

Referenced by HePpdu().

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

◆ SetTxPsdFlag()

void ns3::HePpdu::SetTxPsdFlag ( TxPsdFlag  flag) const
Parameters
flagthe transmit PSD flag set for this PPDU
See also
TxPsdFlag

Definition at line 443 of file he-ppdu.cc.

References NS_LOG_FUNCTION.

◆ SetTxVectorFromPhyHeaders()

◆ UpdateTxVectorForUlMu()

void ns3::HePpdu::UpdateTxVectorForUlMu ( const std::optional< WifiTxVector > &  trigVector) const

Update the TXVECTOR for HE TB PPDUs, since the information to decode HE TB PPDUs is not available from the PHY headers but it requires information from the TRIGVECTOR of the AP expecting these HE TB PPDUs.

Parameters
trigVectorthe TRIGVECTOR or std::nullopt if no TRIGVECTOR is available at the caller

Definition at line 450 of file he-ppdu.cc.

References NS_ASSERT, NS_LOG_FUNCTION, ns3::WIFI_MOD_CLASS_HE, and ns3::WIFI_PPDU_TYPE_UL_MU.

Member Data Documentation

◆ m_heSig

HeSigHeader ns3::HePpdu::m_heSig
private

the HE-SIG PHY header

Definition at line 366 of file he-ppdu.h.

Referenced by SetHeSigHeader(), and SetTxVectorFromPhyHeaders().

◆ m_txPsdFlag

TxPsdFlag ns3::HePpdu::m_txPsdFlag
mutableprotected

the transmit power spectral density flag

Definition at line 320 of file he-ppdu.h.


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