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

HE PPDU (11ax)HePpdu stores a preamble, PHY headers and a map of PSDUs of a PPDU with HE header. More...

#include "he-ppdu.h"

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

Classes

class  HeSigHeader
 HE-SIG PHY header (HE-SIG-A1/A2/B) More...
 

Public Types

enum  TxPsdFlag { PSD_NON_HE_TB = 0, PSD_HE_TB_NON_OFDMA_PORTION, PSD_HE_TB_OFDMA_PORTION }
 The transmit power spectral density flag, namely used to correctly build PSD for HE TB PPDU non-OFDMA and OFDMA portions. More...
 

Public Member Functions

 HePpdu (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, Time ppduDuration, WifiPhyBand band, uint64_t uid)
 Create an SU HE PPDU, storing a PSDU. More...
 
 HePpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration, WifiPhyBand band, uint64_t uid, TxPsdFlag flag)
 Create an MU HE PPDU, storing a map of PSDUs. More...
 
virtual ~HePpdu ()
 Destructor for HePpdu. More...
 
bool CanBeReceived (uint16_t txCenterFreq, uint16_t p20MinFreq, uint16_t p20MaxFreq) const override
 Check whether the given PPDU can be received on the specified primary channel. More...
 
Ptr< WifiPpduCopy (void) 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 (void) const override
 Get the ID of the STA that transmitted the PPDU for UL MU, SU_STA_ID otherwise. More...
 
uint16_t GetTransmissionChannelWidth (void) const override
 Get the channel width over which the PPDU will effectively be transmitted. More...
 
Time GetTxDuration (void) const override
 Get the total transmission duration of the PPDU. More...
 
TxPsdFlag GetTxPsdFlag (void) const
 
WifiPpduType GetType (void) const override
 Return the PPDU type (. More...
 
void SetTxPsdFlag (TxPsdFlag flag)
 
- Public Member Functions inherited from ns3::OfdmPpdu
 OfdmPpdu (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, WifiPhyBand band, uint64_t uid, bool instantiateLSig=true)
 Create an OFDM PPDU. More...
 
virtual ~OfdmPpdu ()
 Destructor for OfdmPpdu. More...
 
Ptr< WifiPpduCopy (void) const override
 Copy this instance. More...
 
Time GetTxDuration (void) const override
 Get the total transmission duration of the PPDU. More...
 
- Public Member Functions inherited from ns3::WifiPpdu
 WifiPpdu (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, uint64_t uid=UINT64_MAX)
 Create a PPDU storing a PSDU. More...
 
 WifiPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, uint64_t uid)
 Create a PPDU storing a map of PSDUs. More...
 
virtual ~WifiPpdu ()
 Destructor for WifiPpdu. More...
 
WifiModulationClass GetModulation (void) const
 Get the modulation used for the PPDU. More...
 
WifiPreamble GetPreamble (void) const
 Get the preamble of the PPDU. More...
 
Ptr< const WifiPsduGetPsdu (void) const
 Get the payload of the PPDU. More...
 
WifiTxVector GetTxVector (void) const
 Get the TXVECTOR used to send the PPDU. More...
 
uint64_t GetUid (void) const
 Get the UID of the PPDU. More...
 
bool IsTruncatedTx (void) const
 
void Print (std::ostream &os) const
 Print the PPDU contents. More...
 
void SetTruncatedTx (void)
 Indicate that the PPDU's transmission was aborted due to transmitter switch off. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< WifiPpdu >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 

Protected Member Functions

bool IsDlMu (void) const
 Return true if the PPDU is a DL MU PPDU. More...
 
bool IsMu (void) const
 Return true if the PPDU is a MU PPDU. More...
 
bool IsUlMu (void) const
 Return true if the PPDU is an UL MU PPDU. More...
 
std::string PrintPayload (void) const override
 Print the payload of the PPDU. More...
 

Protected Attributes

WifiTxVector::HeMuUserInfoMap m_muUserInfos
 the HE MU specific per-user information (to be removed once HE-SIG-B headers are implemented) More...
 
- Protected Attributes inherited from ns3::OfdmPpdu
WifiPhyBand m_band
 the WifiPhyBand used to transmit that PPDU More...
 
uint16_t m_channelWidth
 the channel width used to transmit that PPDU in MHz More...
 
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...
 
WifiPreamble m_preamble
 the PHY preamble More...
 
WifiConstPsduMap m_psdus
 the PSDUs contained in this PPDU More...
 
uint64_t m_uid
 the unique ID of this PPDU More...
 

Private Member Functions

WifiTxVector DoGetTxVector (void) const override
 Get the TXVECTOR used to send the PPDU. More...
 
void SetPhyHeaders (const WifiTxVector &txVector, Time ppduDuration)
 Fill in the HE PHY headers. More...
 

Private Attributes

HeSigHeader m_heSig
 the HE-SIG PHY header More...
 
TxPsdFlag m_txPsdFlag
 the transmit power spectral density flag 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 44 of file he-ppdu.h.

Member Enumeration Documentation

◆ TxPsdFlag

The transmit power spectral density flag, namely used to correctly build PSD for HE TB PPDU non-OFDMA and OFDMA portions.

Enumerator
PSD_NON_HE_TB 

non-HE TB PPDU transmissions

PSD_HE_TB_NON_OFDMA_PORTION 

preamble of HE TB PPDU, which should only be sent on minimum subset of 20 MHz channels containing RU

PSD_HE_TB_OFDMA_PORTION 

OFDMA portion of HE TB PPDU, which should only be sent on RU.

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

Constructor & Destructor Documentation

◆ HePpdu() [1/2]

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

Create an SU HE PPDU, storing a PSDU.

Parameters
psduthe PHY payload (PSDU)
txVectorthe TXVECTOR that was used for this PPDU
ppduDurationthe transmission duration of this PPDU
bandthe WifiPhyBand used for the transmission of this PPDU
uidthe unique ID of this PPDU

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

References IsMu(), NS_ASSERT, NS_LOG_FUNCTION, PSD_NON_HE_TB, SetPhyHeaders(), and SetTxPsdFlag().

+ Here is the call graph for this function:

◆ HePpdu() [2/2]

ns3::HePpdu::HePpdu ( const WifiConstPsduMap psdus,
const WifiTxVector txVector,
Time  ppduDuration,
WifiPhyBand  band,
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
ppduDurationthe transmission duration of this PPDU
bandthe WifiPhyBand used for the transmission 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 50 of file he-ppdu.cc.

References ns3::WifiTxVector::GetHeMuUserInfoMap(), IsMu(), m_muUserInfos, ns3::WifiPpdu::m_psdus, NS_LOG_FUNCTION, SetPhyHeaders(), and SetTxPsdFlag().

+ Here is the call graph for this function:

◆ ~HePpdu()

ns3::HePpdu::~HePpdu ( )
virtual

Destructor for HePpdu.

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

Member Function Documentation

◆ CanBeReceived()

bool ns3::HePpdu::CanBeReceived ( uint16_t  txCenterFreq,
uint16_t  p20MinFreq,
uint16_t  p20MaxFreq 
) const
overridevirtual

Check whether the given PPDU can be received on the specified primary channel.

Normally, a PPDU can be received if it is transmitted over a channel that overlaps the primary20 channel of a PHY entity.

Parameters
ppduthe given PPDU
txCenterFreqthe center frequency (MHz) of the channel over which the PPDU is transmitted
p20MinFreqthe minimum frequency (MHz) of the primary channel
p20MaxFreqthe maximum frequency (MHz) of the primary channel
Returns
true if this PPDU can be received, false otherwise

Reimplemented from ns3::WifiPpdu.

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

References ns3::WifiPpdu::CanBeReceived(), ns3::WifiPpdu::GetTxVector(), IsUlMu(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ 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 160 of file he-ppdu.cc.

References GetTxDuration(), ns3::WifiPpdu::GetTxVector(), ns3::OfdmPpdu::m_band, ns3::WifiPpdu::m_psdus, m_txPsdFlag, and ns3::WifiPpdu::m_uid.

Referenced by TestMultipleHeTbPreambles::RxHeTbPpdu().

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

◆ DoGetTxVector()

◆ 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 198 of file he-ppdu.cc.

References ns3::HePpdu::HeSigHeader::GetBssColor(), IsMu(), IsUlMu(), m_heSig, ns3::WifiPpdu::m_psdus, NS_ASSERT, and SU_STA_ID.

+ Here is the call graph for this function:

◆ GetStaId()

uint16_t ns3::HePpdu::GetStaId ( void  ) 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 228 of file he-ppdu.cc.

References IsUlMu(), ns3::WifiPpdu::m_psdus, and NS_ASSERT.

Referenced by GetTransmissionChannelWidth().

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

◆ GetTransmissionChannelWidth()

uint16_t ns3::HePpdu::GetTransmissionChannelWidth ( void  ) const
overridevirtual

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

Parameters
ppduthe PPDU to send
Returns
the effective channel width (in MHz) used for the tranmsission

Reimplemented from ns3::WifiPpdu.

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

References ns3::HeRu::GetBandwidth(), ns3::WifiTxVector::GetPreambleType(), ns3::WifiTxVector::GetRu(), ns3::HeRu::RuSpec::GetRuType(), GetStaId(), ns3::WifiPpdu::GetTransmissionChannelWidth(), GetTxPsdFlag(), ns3::WifiPpdu::GetTxVector(), NS_ASSERT, NS_LOG_INFO, PSD_HE_TB_NON_OFDMA_PORTION, PSD_NON_HE_TB, SU_STA_ID, and ns3::WIFI_PREAMBLE_HE_TB.

+ Here is the call graph for this function:

◆ GetTxDuration()

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

Get the total transmission duration of the PPDU.

Returns
the transmission duration of the PPDU

Reimplemented from ns3::WifiPpdu.

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

References ns3::WifiPhy::CalculatePhyPreambleAndHeaderDuration(), ns3::WifiTxVector::GetGuardInterval(), ns3::OfdmPpdu::LSigHeader::GetLength(), ns3::Time::GetNanoSeconds(), ns3::WifiPpdu::GetTxVector(), IsDlMu(), ns3::OfdmPpdu::m_band, ns3::OfdmPpdu::m_lSig, ns3::MicroSeconds(), ns3::NanoSeconds(), ns3::Seconds(), and ns3::WIFI_PHY_BAND_2_4GHZ.

Referenced by Copy().

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

◆ GetTxPsdFlag()

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

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

References m_txPsdFlag.

Referenced by GetTransmissionChannelWidth().

+ Here is the caller graph for this function:

◆ GetType()

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

Return the PPDU type (.

See also
WifiPpduType)
Returns
the PPDU type

Reimplemented from ns3::WifiPpdu.

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

References ns3::WifiPpdu::m_preamble, 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 ( void  ) const
protected

Return true if the PPDU is a DL MU PPDU.

Returns
true if the PPDU is a DL MU PPDU

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

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

Referenced by GetTxDuration(), IsMu(), and SetPhyHeaders().

+ Here is the caller graph for this function:

◆ IsMu()

bool ns3::HePpdu::IsMu ( void  ) const
protected

Return true if the PPDU is a MU PPDU.

Returns
true if the PPDU is a MU PPDU

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

References IsDlMu(), and IsUlMu().

Referenced by GetPsdu(), HePpdu(), and PrintPayload().

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

◆ IsUlMu()

bool ns3::HePpdu::IsUlMu ( void  ) const
protected

Return true if the PPDU is an UL MU PPDU.

Returns
true if the PPDU is an UL MU PPDU

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

References ns3::WifiPpdu::m_preamble, and ns3::WIFI_PREAMBLE_HE_TB.

Referenced by CanBeReceived(), GetPsdu(), GetStaId(), IsMu(), SetPhyHeaders(), and SetTxPsdFlag().

+ Here is the caller graph for this function:

◆ PrintPayload()

std::string ns3::HePpdu::PrintPayload ( void  ) const
overrideprotectedvirtual

Print the payload of the PPDU.

Returns
information on the payload part of the PPDU

Reimplemented from ns3::WifiPpdu.

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

References IsMu(), ns3::WifiPpdu::m_psdus, m_txPsdFlag, and SU_STA_ID.

+ Here is the call graph for this function:

◆ SetPhyHeaders()

◆ SetTxPsdFlag()

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

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

References IsUlMu(), m_txPsdFlag, NS_ASSERT, NS_LOG_FUNCTION, and PSD_NON_HE_TB.

Referenced by HePpdu(), and TestMultipleHeTbPreambles::RxHeTbPpdu().

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

Member Data Documentation

◆ m_heSig

HeSigHeader ns3::HePpdu::m_heSig
private

the HE-SIG PHY header

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

Referenced by DoGetTxVector(), GetPsdu(), and SetPhyHeaders().

◆ m_muUserInfos

WifiTxVector::HeMuUserInfoMap ns3::HePpdu::m_muUserInfos
protected

the HE MU specific per-user information (to be removed once HE-SIG-B headers are implemented)

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

Referenced by DoGetTxVector(), and HePpdu().

◆ m_txPsdFlag

TxPsdFlag ns3::HePpdu::m_txPsdFlag
private

the transmit power spectral density flag

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

Referenced by Copy(), GetTxPsdFlag(), PrintPayload(), and SetTxPsdFlag().


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