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

VHT PPDU (11ac) More...

#include "vht-ppdu.h"

+ Inheritance diagram for ns3::VhtPpdu:
+ Collaboration diagram for ns3::VhtPpdu:

Classes

class  VhtSigHeader
 VHT PHY header (VHT-SIG-A1/A2/B). More...
 

Public Member Functions

 VhtPpdu (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, const WifiPhyOperatingChannel &channel, Time ppduDuration, uint64_t uid)
 Create a VHT PPDU.
 
Ptr< WifiPpduCopy () const override
 Copy this instance.
 
Time GetTxDuration () const override
 Get the total transmission duration of the PPDU.
 
WifiPpduType GetType () const override
 Return the PPDU type (.
 
- 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.
 
- 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.
 
bool DoesOverlapChannel (MHz_u minFreq, MHz_u 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.
 
std::vector< MHz_uGetTxCenterFreqs () const
 
virtual MHz_u GetTxChannelWidth () const
 Get the channel width over which the PPDU will effectively be transmitted.
 
const WifiTxVectorGetTxVector () const
 Get the TXVECTOR used to send the PPDU.
 
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.
 

Private Member Functions

WifiTxVector DoGetTxVector () const override
 Get the TXVECTOR used to send the PPDU.
 
virtual void SetLSigHeader (LSigHeader &lSig, Time ppduDuration) const
 Fill in the L-SIG header.
 
virtual void SetPhyHeaders (const WifiTxVector &txVector, Time ppduDuration)
 Fill in the PHY headers.
 
void SetTxVectorFromPhyHeaders (WifiTxVector &txVector, const LSigHeader &lSig, const VhtSigHeader &vhtSig) const
 Fill in the TXVECTOR from PHY headers.
 
void SetVhtSigHeader (VhtSigHeader &vhtSig, const WifiTxVector &txVector, Time ppduDuration) const
 Fill in the VHT-SIG header.
 

Private Attributes

VhtSigHeader m_vhtSig
 the VHT-SIG PHY header
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::WifiPpdu
virtual std::string PrintPayload () const
 Print the payload of the PPDU.
 
- 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
 
std::vector< MHz_um_txCenterFreqs
 the center frequency per segment 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

VHT PPDU (11ac)

VhtPpdu stores a preamble, PHY headers and a PSDU of a PPDU with VHT header

Definition at line 34 of file vht-ppdu.h.

Constructor & Destructor Documentation

◆ VhtPpdu()

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

Create a VHT PPDU.

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 25 of file vht-ppdu.cc.

References NS_LOG_FUNCTION, and SetPhyHeaders().

Referenced by Copy().

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

Member Function Documentation

◆ Copy()

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

Copy this instance.

Returns
a Ptr to a copy of this instance.

Reimplemented from ns3::OfdmPpdu.

Definition at line 123 of file vht-ppdu.cc.

References VhtPpdu().

+ Here is the call graph for this function:

◆ DoGetTxVector()

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

Get the TXVECTOR used to send the PPDU.

Returns
the TXVECTOR of the PPDU.

Reimplemented from ns3::OfdmPpdu.

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

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

+ Here is the call graph for this function:

◆ GetTxDuration()

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

Get the total transmission duration of the PPDU.

Returns
the transmission duration of the PPDU

Reimplemented from ns3::OfdmPpdu.

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

References ns3::WifiPhy::CalculatePhyPreambleAndHeaderDuration(), ns3::OfdmPpdu::LSigHeader::GetLength(), ns3::VhtPpdu::VhtSigHeader::GetShortGuardInterval(), ns3::VhtPpdu::VhtSigHeader::GetShortGuardIntervalDisambiguation(), ns3::WifiPpdu::GetTxVector(), ns3::OfdmPpdu::m_lSig, m_vhtSig, ns3::MicroSeconds(), and ns3::NanoSeconds().

+ Here is the call graph for this function:

◆ GetType()

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

Return the PPDU type (.

See also
WifiPpduType)
Returns
the PPDU type

Reimplemented from ns3::WifiPpdu.

Definition at line 129 of file vht-ppdu.cc.

References ns3::WifiPpdu::m_preamble, ns3::WIFI_PPDU_TYPE_DL_MU, ns3::WIFI_PPDU_TYPE_SU, and ns3::WIFI_PREAMBLE_VHT_MU.

◆ SetLSigHeader()

void ns3::VhtPpdu::SetLSigHeader ( LSigHeader & lSig,
Time ppduDuration ) const
privatevirtual

Fill in the L-SIG header.

Parameters
lSigthe L-SIG header to fill in
ppduDurationthe transmission duration of this PPDU

Definition at line 49 of file vht-ppdu.cc.

References ns3::Time::GetNanoSeconds(), and ns3::OfdmPpdu::LSigHeader::SetLength().

Referenced by SetPhyHeaders().

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

◆ SetPhyHeaders()

void ns3::VhtPpdu::SetPhyHeaders ( const WifiTxVector & txVector,
Time ppduDuration )
privatevirtual

Fill in the PHY headers.

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

Definition at line 41 of file vht-ppdu.cc.

References ns3::OfdmPpdu::m_lSig, m_vhtSig, NS_LOG_FUNCTION, SetLSigHeader(), and SetVhtSigHeader().

Referenced by VhtPpdu().

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

◆ SetTxVectorFromPhyHeaders()

void ns3::VhtPpdu::SetTxVectorFromPhyHeaders ( WifiTxVector & txVector,
const LSigHeader & lSig,
const VhtSigHeader & vhtSig ) const
private

Fill in the TXVECTOR from PHY headers.

Parameters
txVectorthe TXVECTOR to fill in
lSigthe L-SIG header
vhtSigthe VHT-SIG header

Definition at line 90 of file vht-ppdu.cc.

References ns3::VhtPpdu::VhtSigHeader::GetChannelWidth(), ns3::VhtPpdu::VhtSigHeader::GetNStreams(), ns3::WifiPpdu::GetPsdu(), ns3::VhtPpdu::VhtSigHeader::GetShortGuardInterval(), ns3::VhtPpdu::VhtSigHeader::GetSuMcs(), ns3::VhtPhy::GetVhtMcs(), ns3::WifiPsdu::IsAggregate(), ns3::NanoSeconds(), ns3::WifiTxVector::SetAggregation(), ns3::WifiTxVector::SetChannelWidth(), ns3::WifiTxVector::SetGuardInterval(), ns3::WifiTxVector::SetMode(), and ns3::WifiTxVector::SetNss().

Referenced by DoGetTxVector().

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

◆ SetVhtSigHeader()

void ns3::VhtPpdu::SetVhtSigHeader ( VhtSigHeader & vhtSig,
const WifiTxVector & txVector,
Time ppduDuration ) const
private

Fill in the VHT-SIG header.

Parameters
vhtSigthe VHT-SIG header to fill in
txVectorthe TXVECTOR that was used for this PPDU
ppduDurationthe transmission duration of this PPDU

Definition at line 59 of file vht-ppdu.cc.

References ns3::WifiPhy::CalculatePhyPreambleAndHeaderDuration(), ns3::WifiTxVector::GetChannelWidth(), ns3::WifiTxVector::GetGuardInterval(), ns3::WifiMode::GetMcsValue(), ns3::WifiTxVector::GetMode(), ns3::Time::GetNanoSeconds(), ns3::WifiTxVector::GetNss(), ns3::WifiPpdu::m_preamble, ns3::VhtPpdu::VhtSigHeader::SetChannelWidth(), ns3::VhtPpdu::VhtSigHeader::SetMuFlag(), ns3::VhtPpdu::VhtSigHeader::SetNStreams(), ns3::VhtPpdu::VhtSigHeader::SetShortGuardInterval(), ns3::VhtPpdu::VhtSigHeader::SetShortGuardIntervalDisambiguation(), ns3::VhtPpdu::VhtSigHeader::SetSuMcs(), and ns3::WIFI_PREAMBLE_VHT_MU.

Referenced by SetPhyHeaders().

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

Member Data Documentation

◆ m_vhtSig

VhtSigHeader ns3::VhtPpdu::m_vhtSig
private

the VHT-SIG PHY header

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

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


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