WifiPpdu stores a preamble, a modulation class, PHY headers and a PSDU. More...
#include "wifi-ppdu.h"
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< WifiPpdu > | Copy () 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 WifiPsdu > | GetPsdu () 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 WifiTxVector & | GetTxVector () 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... | |
SimpleRefCount & | operator= (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 WifiPhyOperatingChannel & | m_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< 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) 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... | |
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.
ns3::WifiPpdu::WifiPpdu | ( | Ptr< const WifiPsdu > | psdu, |
const WifiTxVector & | txVector, | ||
const WifiPhyOperatingChannel & | channel, | ||
uint64_t | uid = UINT64_MAX |
||
) |
Create a PPDU storing a PSDU.
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 |
uid | the 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().
ns3::WifiPpdu::WifiPpdu | ( | const WifiConstPsduMap & | psdus, |
const WifiTxVector & | txVector, | ||
const WifiPhyOperatingChannel & | channel, | ||
uint64_t | uid | ||
) |
Create a PPDU storing a map of PSDUs.
psdus | the PHY payloads (PSDUs) |
txVector | the TXVECTOR that was used for this PPDU |
channel | the operating channel of the PHY used to transmit this PPDU |
uid | the unique ID of this PPDU |
Definition at line 53 of file wifi-ppdu.cc.
References third::channel, m_psdus, and NS_LOG_FUNCTION.
|
virtual |
Copy 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.
bool ns3::WifiPpdu::DoesOverlapChannel | ( | uint16_t | minFreq, |
uint16_t | maxFreq | ||
) | const |
Check whether the given PPDU overlaps a given channel.
minFreq | the minimum frequency (MHz) of the channel |
maxFreq | the maximum frequency (MHz) of the channel |
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.
|
privatevirtual |
Get the TXVECTOR used to send 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().
WifiModulationClass ns3::WifiPpdu::GetModulation | ( | ) | const |
Get the modulation used for the PPDU.
Definition at line 140 of file wifi-ppdu.cc.
References m_modulation.
WifiPreamble ns3::WifiPpdu::GetPreamble | ( | ) | const |
Get the preamble of the PPDU.
Definition at line 202 of file wifi-ppdu.cc.
References m_preamble.
Get the payload of the PPDU.
Definition at line 121 of file wifi-ppdu.cc.
References m_psdus.
Referenced by PrintPayload(), and ns3::VhtPpdu::SetTxVectorFromPhyHeaders().
|
virtual |
Get 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.
uint16_t ns3::WifiPpdu::GetTxCenterFreq | ( | ) | const |
Definition at line 152 of file wifi-ppdu.cc.
References m_txCenterFreq.
|
virtual |
Get the channel width over which the PPDU will effectively be transmitted.
Reimplemented in ns3::HePpdu.
Definition at line 146 of file wifi-ppdu.cc.
References m_txChannelWidth.
|
virtual |
Get the total 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.
const WifiTxVector & ns3::WifiPpdu::GetTxVector | ( | ) | const |
Get the TXVECTOR used to send 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().
|
virtual |
Return 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.
uint64_t ns3::WifiPpdu::GetUid | ( | ) | const |
Get the UID of the PPDU.
Definition at line 196 of file wifi-ppdu.cc.
References m_uid.
bool ns3::WifiPpdu::IsTruncatedTx | ( | ) | const |
Definition at line 127 of file wifi-ppdu.cc.
References m_truncatedTx.
void ns3::WifiPpdu::Print | ( | std::ostream & | os | ) | const |
Print the PPDU contents.
os | output 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().
|
protectedvirtual |
Print the payload of the PPDU.
Reimplemented in ns3::HePpdu.
Definition at line 236 of file wifi-ppdu.cc.
References GetPsdu().
Referenced by Print().
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().
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.
void ns3::WifiPpdu::UpdateTxVector | ( | const WifiTxVector & | updatedTxVector | ) | const |
Update the TXVECTOR based on some information known at the receiver.
updatedTxVector | the updated TXVECTOR. |
Definition at line 113 of file wifi-ppdu.cc.
References m_txVector, NS_LOG_FUNCTION, and ResetTxVector().
|
protected |
the modulation used for the transmission of this PPDU
Definition at line 203 of file wifi-ppdu.h.
Referenced by GetModulation(), and Print().
|
protected |
the operating channel of the PHY
Definition at line 210 of file wifi-ppdu.h.
Referenced by ns3::HtPpdu::GetTxDuration(), ns3::OfdmPpdu::GetTxDuration(), ns3::EhtPpdu::SetEhtPhyHeader(), ns3::HePpdu::SetHeSigHeader(), ns3::HtPpdu::SetLSigHeader(), ns3::HePpdu::SetLSigHeader(), ns3::HePpdu::SetTxVectorFromPhyHeaders(), and ns3::EhtPpdu::SetTxVectorFromPhyHeaders().
|
protected |
the PHY preamble
Definition at line 202 of file wifi-ppdu.h.
Referenced by ns3::HePpdu::DoGetTxVector(), ns3::HtPpdu::DoGetTxVector(), ns3::DsssPpdu::DoGetTxVector(), ns3::OfdmPpdu::DoGetTxVector(), ns3::VhtPpdu::DoGetTxVector(), GetPreamble(), ns3::EhtPpdu::GetType(), ns3::VhtPpdu::GetType(), ns3::EhtPpdu::IsDlMu(), ns3::EhtPpdu::IsUlMu(), Print(), ns3::EhtPpdu::SetEhtPhyHeader(), ns3::HePpdu::SetHeSigHeader(), ns3::EhtPpdu::SetTxVectorFromPhyHeaders(), and ns3::VhtPpdu::SetVhtSigHeader().
|
protected |
the PSDUs contained in this PPDU
Definition at line 204 of file wifi-ppdu.h.
Referenced by ns3::HePpdu::HePpdu(), WifiPpdu(), ~WifiPpdu(), GetPsdu(), ns3::EhtPpdu::GetType(), ns3::EhtPpdu::IsDlMu(), ns3::EhtPpdu::IsUlMu(), ns3::HePpdu::SetTxVectorFromPhyHeaders(), and ns3::EhtPpdu::SetTxVectorFromPhyHeaders().
|
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().
|
private |
the number of antennas used to transmit this PPDU
Definition at line 224 of file wifi-ppdu.h.
Referenced by GetTxVector().
|
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().
|
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().
|
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().
|
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().
|
protected |
the unique ID of this PPDU
Definition at line 206 of file wifi-ppdu.h.