VHT PPDU (11ac) More...
#include "vht-ppdu.h"
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< WifiPpdu > | Copy () 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 ()=default |
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 WifiPsdu > | GetPsdu () 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_u > | GetTxCenterFreqs () const |
virtual MHz_u | GetTxChannelWidth () const |
Get the channel width over which the PPDU will effectively be transmitted. | |
const WifiTxVector & | GetTxVector () 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. | |
SimpleRefCount & | operator= (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 WifiPhyOperatingChannel & | m_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_u > | m_txCenterFreqs |
the center frequency per segment used for the transmission of this PPDU | |
std::optional< WifiTxVector > | m_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 | |
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.
ns3::VhtPpdu::VhtPpdu | ( | Ptr< const WifiPsdu > | psdu, |
const WifiTxVector & | txVector, | ||
const WifiPhyOperatingChannel & | channel, | ||
Time | ppduDuration, | ||
uint64_t | uid ) |
Create a VHT PPDU.
psdu | the PHY payload (PSDU) |
txVector | the TXVECTOR that was used for this PPDU |
channel | the operating channel of the PHY used to transmit this PPDU |
ppduDuration | the transmission duration of this PPDU |
uid | the unique ID of this PPDU |
Definition at line 25 of file vht-ppdu.cc.
References NS_LOG_FUNCTION, and SetPhyHeaders().
Referenced by Copy().
Copy this instance.
Reimplemented from ns3::OfdmPpdu.
Definition at line 123 of file vht-ppdu.cc.
References VhtPpdu().
|
overrideprivatevirtual |
Get the TXVECTOR used to send 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().
|
overridevirtual |
Get the total 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().
|
overridevirtual |
Return 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.
|
privatevirtual |
Fill in the L-SIG header.
lSig | the L-SIG header to fill in |
ppduDuration | the 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().
|
privatevirtual |
Fill in the PHY headers.
txVector | the TXVECTOR that was used for this PPDU |
ppduDuration | the 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().
|
private |
Fill in the TXVECTOR from PHY headers.
txVector | the TXVECTOR to fill in |
lSig | the L-SIG header |
vhtSig | the 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().
|
private |
Fill in the VHT-SIG header.
vhtSig | the VHT-SIG header to fill in |
txVector | the TXVECTOR that was used for this PPDU |
ppduDuration | the 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().
|
private |
the VHT-SIG PHY header
Definition at line 189 of file vht-ppdu.h.
Referenced by DoGetTxVector(), GetTxDuration(), and SetPhyHeaders().