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, uint16_t txCenterFreq, uint64_t uid)
 Create a PPDU storing a map of PSDUs. More...
 
 WifiPpdu (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, uint16_t txCenterFreq, uint64_t uid=UINT64_MAX)
 Create a PPDU storing a PSDU. More...
 
virtual ~WifiPpdu ()
 Destructor for WifiPpdu. More...
 
virtual bool CanBeReceived (uint16_t p20MinFreq, uint16_t p20MaxFreq) const
 Check whether the given PPDU can be received on the specified primary channel. More...
 
virtual Ptr< WifiPpduCopy (void) 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 (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...
 
virtual uint16_t GetStaId (void) const
 Get the ID of the STA that transmitted the PPDU for UL MU, SU_STA_ID otherwise. More...
 
virtual uint16_t GetTransmissionChannelWidth (void) const
 Get the channel width over which the PPDU will effectively be transmitted. More...
 
virtual Time GetTxDuration (void) const
 Get the total transmission duration of the PPDU. More...
 
WifiTxVector GetTxVector (void) const
 Get the TXVECTOR used to send the PPDU. More...
 
virtual WifiPpduType GetType (void) const
 Return the PPDU type (. 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

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

Protected Attributes

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...
 
uint16_t m_txCenterFreq
 the center frequency (MHz) used for the transmission of this PPDU More...
 
uint64_t m_uid
 the unique ID of this PPDU More...
 

Private Member Functions

virtual WifiTxVector DoGetTxVector (void) 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...
 
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 51 of file wifi-ppdu.h.

Constructor & Destructor Documentation

◆ WifiPpdu() [1/2]

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

Create a PPDU storing a PSDU.

Parameters
psduthe PHY payload (PSDU)
txVectorthe TXVECTOR that was used for this PPDU
txCenterFreqthe center frequency (MHz) that was used for this PPDU
uidthe unique ID of this PPDU

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

References m_psdus, NS_LOG_FUNCTION, and SU_STA_ID.

◆ WifiPpdu() [2/2]

ns3::WifiPpdu::WifiPpdu ( const WifiConstPsduMap psdus,
const WifiTxVector txVector,
uint16_t  txCenterFreq,
uint64_t  uid 
)

Create a PPDU storing a map of PSDUs.

Parameters
psdusthe PHY payloads (PSDUs)
txVectorthe TXVECTOR that was used for this PPDU
txCenterFreqthe center frequency (MHz) that was used for this PPDU
uidthe unique ID of this PPDU

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

References m_psdus, and NS_LOG_FUNCTION.

◆ ~WifiPpdu()

ns3::WifiPpdu::~WifiPpdu ( )
virtual

Destructor for WifiPpdu.

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

References m_psdus.

Member Function Documentation

◆ CanBeReceived()

bool ns3::WifiPpdu::CanBeReceived ( uint16_t  p20MinFreq,
uint16_t  p20MaxFreq 
) const
virtual

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

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

References DoesOverlapChannel(), NS_LOG_FUNCTION, and NS_LOG_INFO.

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

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

◆ Copy()

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

Copy this instance.

Returns
a Ptr to a copy of this instance.

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

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

References GetPsdu(), GetTxVector(), m_txCenterFreq, 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 112 of file wifi-ppdu.cc.

References ns3::WifiTxVector::GetChannelWidth(), GetTxVector(), m_txCenterFreq, and NS_LOG_FUNCTION.

Referenced by CanBeReceived().

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

◆ DoGetTxVector()

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

Get the TXVECTOR used to send the PPDU.

Returns
the TXVECTOR of the PPDU.

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

Definition at line 74 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 ( void  ) const

Get the modulation used for the PPDU.

Returns
the modulation used for the PPDU

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

References m_modulation.

◆ GetPreamble()

WifiPreamble ns3::WifiPpdu::GetPreamble ( void  ) const

Get the preamble of the PPDU.

Returns
the preamble of the PPDU

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

References m_preamble.

◆ GetPsdu()

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

Get the payload of the PPDU.

Returns
the PSDU

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

References m_psdus.

Referenced by Copy(), ns3::HtPpdu::Copy(), ns3::DsssPpdu::Copy(), ns3::ErpOfdmPpdu::Copy(), ns3::OfdmPpdu::Copy(), ns3::VhtPpdu::Copy(), ns3::VhtPpdu::DoGetTxVector(), and PrintPayload().

+ Here is the caller graph for this function:

◆ GetStaId()

uint16_t ns3::WifiPpdu::GetStaId ( void  ) 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 186 of file wifi-ppdu.cc.

References SU_STA_ID.

◆ GetTransmissionChannelWidth()

uint16_t ns3::WifiPpdu::GetTransmissionChannelWidth ( void  ) 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 106 of file wifi-ppdu.cc.

References ns3::WifiTxVector::GetChannelWidth(), and GetTxVector().

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

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

◆ GetTxDuration()

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

Get the total transmission duration of the PPDU.

Returns
the transmission duration of the PPDU

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

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

References ns3::MicroSeconds(), and NS_FATAL_ERROR.

+ Here is the call graph for this function:

◆ GetTxVector()

◆ GetType()

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

Return the PPDU type (.

See also
WifiPpduType)
Returns
the PPDU type

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

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

References ns3::WIFI_PPDU_TYPE_SU.

◆ GetUid()

uint64_t ns3::WifiPpdu::GetUid ( void  ) const

Get the UID of the PPDU.

Returns
the UID of the PPDU

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

References m_uid.

◆ IsTruncatedTx()

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

Definition at line 87 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 199 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 ( void  ) const
protectedvirtual

Print the payload of the PPDU.

Returns
information on the payload part of the PPDU

Reimplemented in ns3::HePpdu.

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

◆ SetTruncatedTx()

void ns3::WifiPpdu::SetTruncatedTx ( void  )

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

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

References m_truncatedTx, and NS_LOG_FUNCTION.

Member Data Documentation

◆ m_modulation

WifiModulationClass ns3::WifiPpdu::m_modulation
protected

the modulation used for the transmission of this PPDU

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

Referenced by GetModulation(), and Print().

◆ 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 199 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 201 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 188 of file wifi-ppdu.h.

Referenced by Copy(), ns3::HtPpdu::Copy(), ns3::DsssPpdu::Copy(), ns3::ErpOfdmPpdu::Copy(), ns3::OfdmPpdu::Copy(), ns3::VhtPpdu::Copy(), and DoesOverlapChannel().

◆ 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 200 of file wifi-ppdu.h.

Referenced by GetTxVector().

◆ m_uid

uint64_t ns3::WifiPpdu::m_uid
protected

the unique ID of this PPDU

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

Referenced by ns3::HtPpdu::Copy(), ns3::DsssPpdu::Copy(), ns3::ErpOfdmPpdu::Copy(), ns3::OfdmPpdu::Copy(), ns3::VhtPpdu::Copy(), GetUid(), and Print().


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