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

WifiPpdu stores a preamble, a modulation class, PHY headers and a PSDU. More...

#include "wifi-ppdu.h"

+ Inheritance diagram for ns3::WifiPpdu:
+ Collaboration diagram for ns3::WifiPpdu:

Public Member Functions

 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...
 
virtual Ptr< WifiPpduCopy () const
 Copy this instance. 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...
 
virtual uint16_t GetStaId () const
 Get the ID of the STA that transmitted the PPDU for UL MU, SU_STA_ID otherwise. More...
 
uint16_t GetTxCenterFreq () const
 
virtual uint16_t GetTxChannelWidth () const
 Get the channel width over which the PPDU will effectively be transmitted. More...
 
virtual Time GetTxDuration () const
 Get the total transmission duration of the PPDU. More...
 
const WifiTxVectorGetTxVector () const
 Get the TXVECTOR used to send the PPDU. More...
 
virtual WifiPpduType GetType () const
 Return the PPDU type (. 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...
 

Protected Member Functions

virtual std::string PrintPayload () const
 Print the payload of the PPDU. More...
 

Protected Attributes

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

virtual WifiTxVector DoGetTxVector () const
 Get the TXVECTOR used to send the PPDU. More...
 

Private Attributes

bool m_truncatedTx
 flag indicating whether the frame's transmission was aborted due to transmitter switch off More...
 
uint8_t m_txAntennas
 the number of antennas used to transmit this PPDU More...
 
uint16_t m_txChannelWidth
 The channel width (MHz) used for the transmission of this PPDU. More...
 
uint8_t m_txPowerLevel
 the transmission power level (used only for TX and initializing the returned WifiTxVector) More...
 

Detailed Description

WifiPpdu stores a preamble, a modulation class, PHY headers and a PSDU.

This class should be subclassed for each amendment.

Definition at line 56 of file wifi-ppdu.h.

Constructor & Destructor Documentation

◆ WifiPpdu() [1/2]

ns3::WifiPpdu::WifiPpdu ( Ptr< const WifiPsdu psdu,
const WifiTxVector txVector,
const WifiPhyOperatingChannel channel,
uint64_t  uid = UINT64_MAX 
)

Create a 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
uidthe unique ID of this PPDU

Definition at line 32 of file wifi-ppdu.cc.

References third::channel, m_psdus, NS_LOG_FUNCTION, and ns3::SU_STA_ID.

Referenced by Copy().

+ Here is the caller graph for this function:

◆ WifiPpdu() [2/2]

ns3::WifiPpdu::WifiPpdu ( const WifiConstPsduMap psdus,
const WifiTxVector txVector,
const WifiPhyOperatingChannel channel,
uint64_t  uid 
)

Create a PPDU storing a map of PSDUs.

Parameters
psdusthe PHY payloads (PSDUs)
txVectorthe TXVECTOR that was used for this PPDU
channelthe operating channel of the PHY used to transmit this PPDU
uidthe unique ID of this PPDU

Definition at line 53 of file wifi-ppdu.cc.

References third::channel, m_psdus, and NS_LOG_FUNCTION.

◆ ~WifiPpdu()

ns3::WifiPpdu::~WifiPpdu ( )
virtual

Destructor for WifiPpdu.

Definition at line 75 of file wifi-ppdu.cc.

References m_psdus.

Member Function Documentation

◆ Copy()

Ptr< WifiPpdu > ns3::WifiPpdu::Copy ( void  ) const
virtual

Copy this instance.

Returns
a Ptr to a copy of this instance.

Reimplemented in ns3::VhtPpdu, ns3::OfdmPpdu, ns3::ErpOfdmPpdu, ns3::DsssPpdu, ns3::HtPpdu, ns3::HePpdu, and ns3::EhtPpdu.

Definition at line 244 of file wifi-ppdu.cc.

References WifiPpdu(), and NS_FATAL_ERROR.

+ Here is the call graph for this function:

◆ DoesOverlapChannel()

bool ns3::WifiPpdu::DoesOverlapChannel ( uint16_t  minFreq,
uint16_t  maxFreq 
) const

Check whether the given PPDU overlaps a given channel.

Parameters
minFreqthe minimum frequency (MHz) of the channel
maxFreqthe maximum frequency (MHz) of the channel
Returns
true if this PPDU overlaps the channel, false otherwise

The PPDU does not overlap the channel in two cases.

First non-overlapping case:

                                   ┌─────────┐
                           PPDU    │ Nominal │
                                   │  Band   │
                                   └─────────┘
                              minTxFreq   maxTxFreq

  minFreq                       maxFreq
    ┌──────────────────────────────┐
    │           Channel            │
    └──────────────────────────────┘

Second non-overlapping case:

    ┌─────────┐

PPDU │ Nominal │ │ Band │ └─────────┘ minTxFreq maxTxFreq

         minFreq                       maxFreq
           ┌──────────────────────────────┐
           │           Channel            │
           └──────────────────────────────┘

Definition at line 158 of file wifi-ppdu.cc.

References m_txCenterFreq, m_txChannelWidth, and NS_LOG_FUNCTION.

◆ DoGetTxVector()

WifiTxVector ns3::WifiPpdu::DoGetTxVector ( ) const
privatevirtual

Get the TXVECTOR used to send the PPDU.

Returns
the TXVECTOR of the PPDU.

Reimplemented in ns3::VhtPpdu, ns3::OfdmPpdu, ns3::DsssPpdu, ns3::HtPpdu, and ns3::HePpdu.

Definition at line 98 of file wifi-ppdu.cc.

References NS_FATAL_ERROR.

Referenced by GetTxVector().

+ Here is the caller graph for this function:

◆ GetModulation()

WifiModulationClass ns3::WifiPpdu::GetModulation ( ) const

Get the modulation used for the PPDU.

Returns
the modulation used for the PPDU

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

References m_modulation.

◆ GetPreamble()

WifiPreamble ns3::WifiPpdu::GetPreamble ( ) const

Get the preamble of the PPDU.

Returns
the preamble of the PPDU

Definition at line 202 of file wifi-ppdu.cc.

References m_preamble.

◆ GetPsdu()

Ptr< const WifiPsdu > ns3::WifiPpdu::GetPsdu ( ) const

Get the payload of the PPDU.

Returns
the PSDU

Definition at line 121 of file wifi-ppdu.cc.

References m_psdus.

Referenced by PrintPayload(), and ns3::VhtPpdu::SetTxVectorFromPhyHeaders().

+ Here is the caller graph for this function:

◆ GetStaId()

uint16_t ns3::WifiPpdu::GetStaId ( ) const
virtual

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 in ns3::HePpdu.

Definition at line 214 of file wifi-ppdu.cc.

References ns3::SU_STA_ID.

◆ GetTxCenterFreq()

uint16_t ns3::WifiPpdu::GetTxCenterFreq ( ) const
Returns
the center frequency (MHz) used for the transmission of this PPDU

Definition at line 152 of file wifi-ppdu.cc.

References m_txCenterFreq.

◆ GetTxChannelWidth()

uint16_t ns3::WifiPpdu::GetTxChannelWidth ( ) const
virtual

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

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

Reimplemented in ns3::HePpdu.

Definition at line 146 of file wifi-ppdu.cc.

References m_txChannelWidth.

◆ GetTxDuration()

Time ns3::WifiPpdu::GetTxDuration ( ) const
virtual

Get the total transmission duration of the PPDU.

Returns
the transmission duration of the PPDU

Reimplemented in ns3::VhtPpdu, ns3::OfdmPpdu, ns3::DsssPpdu, ns3::HtPpdu, and ns3::HePpdu.

Definition at line 220 of file wifi-ppdu.cc.

References ns3::MicroSeconds(), and NS_FATAL_ERROR.

+ Here is the call graph for this function:

◆ GetTxVector()

const WifiTxVector & ns3::WifiPpdu::GetTxVector ( ) const

Get the TXVECTOR used to send the PPDU.

Returns
the TXVECTOR of the PPDU.

Definition at line 85 of file wifi-ppdu.cc.

References DoGetTxVector(), m_txAntennas, m_txChannelWidth, m_txPowerLevel, and m_txVector.

Referenced by ns3::HtPpdu::GetTxDuration(), ns3::DsssPpdu::GetTxDuration(), ns3::OfdmPpdu::GetTxDuration(), and ns3::VhtPpdu::GetTxDuration().

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

◆ GetType()

WifiPpduType ns3::WifiPpdu::GetType ( ) const
virtual

Return the PPDU type (.

See also
WifiPpduType)
Returns
the PPDU type

Reimplemented in ns3::VhtPpdu, ns3::HePpdu, and ns3::EhtPpdu.

Definition at line 208 of file wifi-ppdu.cc.

References ns3::WIFI_PPDU_TYPE_SU.

◆ GetUid()

uint64_t ns3::WifiPpdu::GetUid ( ) const

Get the UID of the PPDU.

Returns
the UID of the PPDU

Definition at line 196 of file wifi-ppdu.cc.

References m_uid.

◆ IsTruncatedTx()

bool ns3::WifiPpdu::IsTruncatedTx ( ) const
Returns
c\ true if the PPDU's transmission was aborted due to transmitter switch off

Definition at line 127 of file wifi-ppdu.cc.

References m_truncatedTx.

◆ Print()

void ns3::WifiPpdu::Print ( std::ostream &  os) const

Print the PPDU contents.

Parameters
osoutput stream in which the data should be printed.

Definition at line 228 of file wifi-ppdu.cc.

References m_modulation, m_preamble, m_truncatedTx, m_uid, and PrintPayload().

+ Here is the call graph for this function:

◆ PrintPayload()

std::string ns3::WifiPpdu::PrintPayload ( ) const
protectedvirtual

Print the payload of the PPDU.

Returns
information on the payload part of the PPDU

Reimplemented in ns3::HePpdu.

Definition at line 236 of file wifi-ppdu.cc.

References GetPsdu().

Referenced by Print().

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

◆ ResetTxVector()

void ns3::WifiPpdu::ResetTxVector ( ) const

Reset the TXVECTOR.

Definition at line 106 of file wifi-ppdu.cc.

References m_txVector, and NS_LOG_FUNCTION.

Referenced by UpdateTxVector().

+ Here is the caller graph for this function:

◆ SetTruncatedTx()

void ns3::WifiPpdu::SetTruncatedTx ( )

Indicate that the PPDU's transmission was aborted due to transmitter switch off.

Definition at line 133 of file wifi-ppdu.cc.

References m_truncatedTx, and NS_LOG_FUNCTION.

◆ UpdateTxVector()

void ns3::WifiPpdu::UpdateTxVector ( const WifiTxVector updatedTxVector) const

Update the TXVECTOR based on some information known at the receiver.

Parameters
updatedTxVectorthe updated TXVECTOR.

Definition at line 113 of file wifi-ppdu.cc.

References m_txVector, NS_LOG_FUNCTION, and ResetTxVector().

+ Here is the call graph for this function:

Member Data Documentation

◆ m_modulation

WifiModulationClass ns3::WifiPpdu::m_modulation
protected

the modulation used for the transmission of this PPDU

Definition at line 203 of file wifi-ppdu.h.

Referenced by GetModulation(), and Print().

◆ m_operatingChannel

◆ m_preamble

◆ m_psdus

◆ m_truncatedTx

bool ns3::WifiPpdu::m_truncatedTx
private

flag indicating whether the frame's transmission was aborted due to transmitter switch off

Definition at line 220 of file wifi-ppdu.h.

Referenced by IsTruncatedTx(), Print(), and SetTruncatedTx().

◆ m_txAntennas

uint8_t ns3::WifiPpdu::m_txAntennas
private

the number of antennas used to transmit this PPDU

Definition at line 224 of file wifi-ppdu.h.

Referenced by GetTxVector().

◆ m_txCenterFreq

uint16_t ns3::WifiPpdu::m_txCenterFreq
protected

the center frequency (MHz) used for the transmission of this PPDU

Definition at line 205 of file wifi-ppdu.h.

Referenced by DoesOverlapChannel(), and GetTxCenterFreq().

◆ m_txChannelWidth

uint16_t ns3::WifiPpdu::m_txChannelWidth
private

The channel width (MHz) used for the transmission of this PPDU.

This has to be stored since channel width can not always be obtained from the PHY headers, especially for non-HT PPDU, since we do not sense the spectrum to determine the occupied channel width for simplicity.

Definition at line 226 of file wifi-ppdu.h.

Referenced by DoesOverlapChannel(), GetTxChannelWidth(), and GetTxVector().

◆ m_txPowerLevel

uint8_t ns3::WifiPpdu::m_txPowerLevel
private

the transmission power level (used only for TX and initializing the returned WifiTxVector)

Definition at line 222 of file wifi-ppdu.h.

Referenced by GetTxVector().

◆ m_txVector

std::optional<WifiTxVector> ns3::WifiPpdu::m_txVector
mutableprotected

the TXVECTOR at TX PHY or the reconstructed TXVECTOR at RX PHY (or std::nullopt if TXVECTOR has not been reconstructed yet)

Definition at line 208 of file wifi-ppdu.h.

Referenced by GetTxVector(), ResetTxVector(), and UpdateTxVector().

◆ m_uid

uint64_t ns3::WifiPpdu::m_uid
protected

the unique ID of this PPDU

Definition at line 206 of file wifi-ppdu.h.

Referenced by GetUid(), and Print().


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