EHT PPDU (11be) More...
#include "eht-ppdu.h"
Public Member Functions | |
EhtPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, uint16_t txCenterFreq, Time ppduDuration, WifiPhyBand band, uint64_t uid, TxPsdFlag flag) | |
Create an EHT PPDU, storing a map of PSDUs. More... | |
Ptr< WifiPpdu > | Copy () const override |
Copy this instance. More... | |
WifiPpduType | GetType () const override |
Return the PPDU type (. More... | |
![]() | |
HePpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, uint16_t txCenterFreq, Time ppduDuration, WifiPhyBand band, uint64_t uid, TxPsdFlag flag) | |
Create an MU HE PPDU, storing a map of PSDUs. More... | |
HePpdu (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, uint16_t txCenterFreq, Time ppduDuration, WifiPhyBand band, uint64_t uid) | |
Create an SU HE PPDU, storing a PSDU. More... | |
Ptr< WifiPpdu > | Copy () const override |
Copy this instance. More... | |
Ptr< const WifiPsdu > | GetPsdu (uint8_t bssColor, uint16_t staId=SU_STA_ID) const |
Get the payload of the PPDU. More... | |
uint16_t | GetStaId () const override |
Get the ID of the STA that transmitted the PPDU for UL MU, SU_STA_ID otherwise. More... | |
uint16_t | GetTransmissionChannelWidth () const override |
Get the channel width over which the PPDU will effectively be transmitted. More... | |
Time | GetTxDuration () const override |
Get the total transmission duration of the PPDU. More... | |
TxPsdFlag | GetTxPsdFlag () const |
WifiPpduType | GetType () const override |
Return the PPDU type (. More... | |
bool | IsAllocated (uint16_t staId) const |
Check if STA ID is allocated. More... | |
bool | IsStaInContentChannel (uint16_t staId, size_t channelId) const |
Check if STA ID is in HE SIG-B Content Channel ID. More... | |
void | SetTxPsdFlag (TxPsdFlag flag) const |
void | UpdateTxVectorForUlMu (const std::optional< WifiTxVector > &trigVector) const |
Update the TXVECTOR for HE TB PPDUs, since the information to decode HE TB PPDUs is not available from the PHY headers but it requires information from the TRIGVECTOR of the AP expecting these HE TB PPDUs. More... | |
![]() | |
OfdmPpdu (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, uint16_t txCenterFreq, WifiPhyBand band, uint64_t uid, bool instantiateLSig=true) | |
Create an OFDM PPDU. More... | |
Ptr< WifiPpdu > | Copy () const override |
Copy this instance. More... | |
Time | GetTxDuration () const override |
Get the total transmission duration of the PPDU. More... | |
![]() | |
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... | |
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... | |
uint16_t | GetTxCenterFreq () const |
const WifiTxVector & | GetTxVector () const |
Get the TXVECTOR used to send the PPDU. 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... | |
![]() | |
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... | |
Private Member Functions | |
bool | IsDlMu () const override |
Return true if the PPDU is a DL MU PPDU. More... | |
bool | IsUlMu () const override |
Return true if the PPDU is an UL MU PPDU. More... | |
void | SetTxVectorFromPhyHeaders (WifiTxVector &txVector, const LSigHeader &lSig, const HeSigHeader &heSig) const override |
Fill in the TXVECTOR from PHY headers. More... | |
Private Attributes | |
uint8_t | m_ehtSuMcs {0} |
EHT-MCS for EHT SU transmissions. More... | |
uint8_t | m_ehtSuNStreams {1} |
Number of streams for EHT SU transmissions. More... | |
Additional Inherited Members | |
![]() | |
enum | TxPsdFlag { PSD_NON_HE_PORTION , PSD_HE_PORTION } |
The transmit power spectral density flag, namely used to correctly build PSDs for pre-HE and HE portions. More... | |
![]() | |
ContentChannelAllocation | m_contentChannelAlloc |
HE SIG-B Content Channel allocation (to be removed once HE-SIG-B headers are implemented) More... | |
WifiTxVector::HeMuUserInfoMap | m_muUserInfos |
HE MU specific per-user information (to be removed once HE-SIG-B headers are implemented) More... | |
RuAllocation | m_ruAllocation |
RU_ALLOCATION in SIG-B common field (to be removed once HE-SIG-B headers are implemented) More... | |
TxPsdFlag | m_txPsdFlag |
the transmit power spectral density flag More... | |
![]() | |
WifiPhyBand | m_band |
the WifiPhyBand used to transmit that PPDU More... | |
![]() | |
WifiModulationClass | m_modulation |
the modulation used for the transmission of this PPDU More... | |
Ptr< Packet > | m_phyHeaders |
the PHY headers contained in 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... | |
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... | |
ns3::EhtPpdu::EhtPpdu | ( | const WifiConstPsduMap & | psdus, |
const WifiTxVector & | txVector, | ||
uint16_t | txCenterFreq, | ||
Time | ppduDuration, | ||
WifiPhyBand | band, | ||
uint64_t | uid, | ||
TxPsdFlag | flag | ||
) |
Create an EHT PPDU, storing a map of PSDUs.
This PPDU can either be UL or DL.
psdus | the PHY payloads (PSDUs) |
txVector | the TXVECTOR that was used for this PPDU |
txCenterFreq | the center frequency (MHz) that was used for this PPDU |
ppduDuration | the transmission duration of this PPDU |
band | the WifiPhyBand used for the transmission of this PPDU |
uid | the unique ID of this PPDU or of the triggering PPDU if this is an EHT TB PPDU |
flag | the flag indicating the type of Tx PSD to build |
Definition at line 32 of file eht-ppdu.cc.
References ns3::WifiTxVector::GetContentChannelAllocation(), ns3::WifiMode::GetMcsValue(), ns3::WifiTxVector::GetMode(), ns3::WifiTxVector::GetNss(), ns3::WifiTxVector::GetRuAllocation(), ns3::WifiTxVector::IsDlMu(), ns3::IsDlMu(), ns3::HePpdu::m_contentChannelAlloc, m_ehtSuMcs, m_ehtSuNStreams, ns3::WifiPpdu::m_preamble, ns3::HePpdu::m_ruAllocation, and NS_LOG_FUNCTION.
Referenced by Copy().
Copy this instance.
Reimplemented from ns3::WifiPpdu.
Definition at line 117 of file eht-ppdu.cc.
References EhtPpdu().
|
overridevirtual |
Return the PPDU type (.
Reimplemented from ns3::WifiPpdu.
Definition at line 59 of file eht-ppdu.cc.
References ns3::HePpdu::m_muUserInfos, ns3::WifiPpdu::m_preamble, NS_ASSERT_MSG, ns3::WIFI_PPDU_TYPE_DL_MU, ns3::WIFI_PPDU_TYPE_SU, ns3::WIFI_PPDU_TYPE_UL_MU, ns3::WIFI_PREAMBLE_EHT_MU, and ns3::WIFI_PREAMBLE_EHT_TB.
|
overrideprivatevirtual |
Return true if the PPDU is a DL MU PPDU.
Reimplemented from ns3::HePpdu.
Definition at line 78 of file eht-ppdu.cc.
References ns3::HePpdu::m_muUserInfos, ns3::WifiPpdu::m_preamble, and ns3::WIFI_PREAMBLE_EHT_MU.
|
overrideprivatevirtual |
Return true if the PPDU is an UL MU PPDU.
Reimplemented from ns3::HePpdu.
Definition at line 84 of file eht-ppdu.cc.
References ns3::HePpdu::m_muUserInfos, ns3::WifiPpdu::m_preamble, and ns3::WIFI_PREAMBLE_EHT_TB.
|
overrideprivatevirtual |
Fill in the TXVECTOR from PHY headers.
txVector | the TXVECTOR to fill in |
lSig | the L-SIG header |
heSig | the HE-SIG header |
Reimplemented from ns3::HePpdu.
Definition at line 90 of file eht-ppdu.cc.
References ns3::HePpdu::HeSigHeader::GetBssColor(), ns3::HePpdu::HeSigHeader::GetChannelWidth(), ns3::EhtPhy::GetEhtMcs(), ns3::HePpdu::HeSigHeader::GetGuardInterval(), ns3::OfdmPpdu::LSigHeader::GetLength(), ns3::HePpdu::HeSigHeader::GetMcs(), ns3::VhtPhy::GetVhtMcs(), ns3::IsDlMu(), m_ehtSuMcs, m_ehtSuNStreams, ns3::HePpdu::m_muUserInfos, ns3::WifiPpdu::m_preamble, ns3::WifiPpdu::m_psdus, ns3::HePpdu::m_ruAllocation, ns3::WifiTxVector::SetAggregation(), ns3::WifiTxVector::SetBssColor(), ns3::WifiTxVector::SetChannelWidth(), ns3::WifiTxVector::SetEhtPpduType(), ns3::WifiTxVector::SetGuardInterval(), ns3::WifiTxVector::SetHeMuUserInfo(), ns3::WifiTxVector::SetLength(), ns3::WifiTxVector::SetMode(), ns3::WifiTxVector::SetNss(), ns3::WifiTxVector::SetRuAllocation(), and ns3::WifiTxVector::SetSigBMode().
|
private |
EHT-MCS for EHT SU transmissions.
Definition at line 74 of file eht-ppdu.h.
Referenced by EhtPpdu(), and SetTxVectorFromPhyHeaders().
|
private |
Number of streams for EHT SU transmissions.
Definition at line 75 of file eht-ppdu.h.
Referenced by EhtPpdu(), and SetTxVectorFromPhyHeaders().