A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ns3::EhtPpdu Class Reference

EHT PPDU (11be) More...

#include "eht-ppdu.h"

+ Inheritance diagram for ns3::EhtPpdu:
+ Collaboration diagram for ns3::EhtPpdu:

Classes

struct  EhtMuPhyHeader
 PHY header for EHT MU PPDUs. More...
 
struct  EhtTbPhyHeader
 PHY header for EHT TB PPDUs. More...
 

Public Types

using EhtPhyHeader = std::variant< std::monostate, EhtTbPhyHeader, EhtMuPhyHeader >
 type of the EHT PHY header
 
- Public Types inherited from ns3::HePpdu
using HeSigBContentChannels = std::vector< std::vector< HeSigBUserSpecificField > >
 HE SIG-B Content Channels.
 
using HeSigHeader = std::variant< std::monostate, HeSuSigHeader, HeTbSigHeader, HeMuSigHeader >
 type of the HE-SIG PHY header
 
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

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

Static Public Member Functions

static HeSigBContentChannels GetEhtSigContentChannels (const WifiTxVector &txVector, uint8_t p20Index)
 Get the EHT-SIG content channels for a given PPDU IEEE 802.11be-D3.1 36.3.12.8.2 EHT-SIG content channels.
 
static uint32_t GetEhtSigFieldSize (uint16_t channelWidth, const std::vector< uint8_t > &ruAllocation, uint8_t ehtPpduType, bool compression, std::size_t numMuMimoUsers)
 Get variable length EHT-SIG field size.
 
static std::pair< std::size_t, std::size_t > GetNumRusPerEhtSigBContentChannel (uint16_t channelWidth, uint8_t ehtPpduType, const std::vector< uint8_t > &ruAllocation, bool compression, std::size_t numMuMimoUsers)
 Get the number of RUs per EHT-SIG-B content channel.
 
- Static Public Member Functions inherited from ns3::HePpdu
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.
 
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.
 
static uint32_t GetSigBFieldSize (uint16_t channelWidth, const RuAllocation &ruAllocation, bool sigBCompression, std::size_t numMuMimoUsers)
 Get variable length HE SIG-B field size.
 

Private Member Functions

bool IsDlMu () const override
 Return true if the PPDU is a DL MU PPDU.
 
bool IsUlMu () const override
 Return true if the PPDU is an UL MU PPDU.
 
void SetEhtPhyHeader (const WifiTxVector &txVector)
 Fill in the EHT PHY header.
 
void SetPhyHeaders (const WifiTxVector &txVector, Time ppduDuration)
 Fill in the PHY headers.
 
void SetTxVectorFromPhyHeaders (WifiTxVector &txVector) const override
 Fill in the TXVECTOR from PHY headers.
 

Private Attributes

EhtPhyHeader m_ehtPhyHeader
 the EHT PHY header
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::HePpdu
void SetHeMuUserInfos (WifiTxVector &txVector, const RuAllocation &ruAllocation, const HeSigBContentChannels &contentChannels, bool sigBCompression, uint8_t numMuMimoUsers) const
 Reconstruct HeMuUserInfoMap from HE-SIG-B header.
 
virtual void SetTxVectorFromPhyHeaders (WifiTxVector &txVector) const
 Fill in the TXVECTOR from PHY headers.
 
virtual std::string PrintPayload () const
 Print the payload of the PPDU.
 
- Static Protected Member Functions inherited from ns3::HePpdu
static uint8_t GetChannelWidthEncodingFromMhz (uint16_t channelWidth)
 Convert channel width expressed in MHz to bandwidth field encoding in HE-SIG-A.
 
static uint16_t GetChannelWidthMhzFromEncoding (uint8_t bandwidth)
 Convert channel width expressed in MHz from bandwidth field encoding in HE-SIG-A.
 
static uint8_t GetGuardIntervalAndNltfEncoding (uint16_t gi, uint8_t nltf)
 Convert guard interval (in ns) and NLTF to its encoding in HE-SIG-A.
 
static uint16_t GetGuardIntervalFromEncoding (uint8_t giAndNltfSize)
 Convert guard interval (in ns) from its encoding in HE-SIG-A.
 
static uint8_t GetMuMimoUsersEncoding (uint8_t nUsers)
 Convert number of MU-MIMO users to its encoding in HE-SIG-A.
 
static uint8_t GetMuMimoUsersFromEncoding (uint8_t encoding)
 Convert number of MU-MIMO users from its encoding in HE-SIG-A.
 
static uint8_t GetNssFromNstsEncoding (uint8_t nsts)
 Convert number of spatial streams from NSTS field encoding in HE-SIG-A.
 
static uint8_t GetNstsEncodingFromNss (uint8_t nss)
 Convert number of spatial streams to NSTS field encoding in HE-SIG-A.
 
- Protected Attributes inherited from ns3::HePpdu
TxPsdFlag m_txPsdFlag
 the transmit power spectral density flag
 
- Protected Attributes inherited from ns3::OfdmPpdu
LSigHeader m_lSig
 the L-SIG PHY header
 
- Protected Attributes inherited from ns3::WifiPpdu
WifiModulationClass m_modulation
 the modulation used for the transmission of this PPDU
 
const WifiPhyOperatingChannelm_operatingChannel
 the operating channel of the PHY
 
WifiPreamble m_preamble
 the PHY preamble
 
WifiConstPsduMap m_psdus
 the PSDUs contained in this PPDU
 
uint16_t m_txCenterFreq
 the center frequency (MHz) used for the transmission of this PPDU
 
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)
 
uint64_t m_uid
 the unique ID of this PPDU
 

Detailed Description

EHT PPDU (11be)

EhtPpdu is currently identical to HePpdu

Definition at line 42 of file eht-ppdu.h.

Member Typedef Documentation

◆ EhtPhyHeader

using ns3::EhtPpdu::EhtPhyHeader = std::variant<std::monostate, EhtTbPhyHeader, EhtMuPhyHeader>

type of the EHT PHY header

Definition at line 82 of file eht-ppdu.h.

Constructor & Destructor Documentation

◆ EhtPpdu()

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

Create an EHT 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 EHT TB PPDU
flagthe flag indicating the type of Tx PSD to build

Definition at line 35 of file eht-ppdu.cc.

References NS_LOG_FUNCTION, and SetPhyHeaders().

+ Here is the call graph for this function:

Member Function Documentation

◆ Copy()

Ptr< WifiPpdu > ns3::EhtPpdu::Copy ( ) const
overridevirtual

Copy this instance.

Returns
a Ptr to a copy of this instance.

Reimplemented from ns3::WifiPpdu.

Definition at line 245 of file eht-ppdu.cc.

◆ GetEhtSigContentChannels()

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

Get the EHT-SIG content channels for a given PPDU IEEE 802.11be-D3.1 36.3.12.8.2 EHT-SIG content channels.

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

Definition at line 191 of file eht-ppdu.cc.

References ns3::WifiTxVector::GetEhtPpduType(), ns3::HePpdu::GetHeSigBContentChannels(), ns3::WifiMode::GetMcsValue(), ns3::WifiTxVector::GetMode(), and ns3::WifiTxVector::GetNss().

Referenced by SetEhtPhyHeader().

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

◆ GetEhtSigFieldSize()

uint32_t ns3::EhtPpdu::GetEhtSigFieldSize ( uint16_t  channelWidth,
const std::vector< uint8_t > &  ruAllocation,
uint8_t  ehtPpduType,
bool  compression,
std::size_t  numMuMimoUsers 
)
static

Get variable length EHT-SIG field size.

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

Definition at line 203 of file eht-ppdu.cc.

References GetNumRusPerEhtSigBContentChannel().

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

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

◆ GetNumRusPerEhtSigBContentChannel()

std::pair< std::size_t, std::size_t > ns3::EhtPpdu::GetNumRusPerEhtSigBContentChannel ( uint16_t  channelWidth,
uint8_t  ehtPpduType,
const std::vector< uint8_t > &  ruAllocation,
bool  compression,
std::size_t  numMuMimoUsers 
)
static

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

This function will be used once EHT PHY headers are implemented.

Parameters
channelWidththe channel width occupied by the PPDU (in MHz)
ehtPpduTypethe EHT_PPDU_TYPE used by the PPDU
ruAllocation8 bit RU_ALLOCATION per 20 MHz
compressionflag whether compression mode 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 EHT-SIG-B content channel (resp. 1 and 2)

Definition at line 174 of file eht-ppdu.cc.

References ns3::HePpdu::GetNumRusPerHeSigBContentChannel().

Referenced by GetEhtSigFieldSize().

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

◆ GetType()

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

◆ IsDlMu()

bool ns3::EhtPpdu::IsDlMu ( ) const
overrideprivatevirtual

Return true if the PPDU is a DL MU PPDU.

Returns
true if the PPDU is a DL MU PPDU

Reimplemented from ns3::HePpdu.

Definition at line 109 of file eht-ppdu.cc.

References ns3::WifiPpdu::m_preamble, ns3::WifiPpdu::m_psdus, ns3::SU_STA_ID, and ns3::WIFI_PREAMBLE_EHT_MU.

◆ IsUlMu()

bool ns3::EhtPpdu::IsUlMu ( ) const
overrideprivatevirtual

Return true if the PPDU is an UL MU PPDU.

Returns
true if the PPDU is an UL MU PPDU

Reimplemented from ns3::HePpdu.

Definition at line 115 of file eht-ppdu.cc.

References ns3::WifiPpdu::m_preamble, ns3::WifiPpdu::m_psdus, ns3::SU_STA_ID, and ns3::WIFI_PREAMBLE_EHT_TB.

◆ SetEhtPhyHeader()

void ns3::EhtPpdu::SetEhtPhyHeader ( const WifiTxVector txVector)
private

Fill in the EHT PHY header.

Parameters
txVectorthe TXVECTOR that was used for this PPDU

Definition at line 55 of file eht-ppdu.cc.

References ns3::WifiTxVector::GetBssColor(), ns3::WifiTxVector::GetChannelWidth(), ns3::HePpdu::GetChannelWidthEncodingFromMhz(), ns3::WifiTxVector::GetEhtPpduType(), GetEhtSigContentChannels(), ns3::WifiTxVector::GetGuardInterval(), ns3::HePpdu::GetGuardIntervalAndNltfEncoding(), ns3::WifiMode::GetMcsValue(), ns3::WifiPhyOperatingChannel::GetPrimaryChannelIndex(), ns3::WifiTxVector::GetRuAllocation(), ns3::WifiTxVector::GetSigBMode(), ns3::IsDlMu(), ns3::WifiTxVector::IsMu(), ns3::IsUlMu(), ns3::EhtPpdu::EhtTbPhyHeader::m_bandwidth, ns3::EhtPpdu::EhtMuPhyHeader::m_bandwidth, m_ehtPhyHeader, ns3::WifiPpdu::m_operatingChannel, ns3::WifiPpdu::m_preamble, and NS_ASSERT.

Referenced by SetPhyHeaders().

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

◆ SetPhyHeaders()

void ns3::EhtPpdu::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 48 of file eht-ppdu.cc.

References NS_LOG_FUNCTION, and SetEhtPhyHeader().

Referenced by EhtPpdu().

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

◆ SetTxVectorFromPhyHeaders()

Member Data Documentation

◆ m_ehtPhyHeader

EhtPhyHeader ns3::EhtPpdu::m_ehtPhyHeader
private

the EHT PHY header

Definition at line 170 of file eht-ppdu.h.

Referenced by SetEhtPhyHeader(), and SetTxVectorFromPhyHeaders().


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