HE PPDU (11ax) More...
#include "he-ppdu.h"
Inheritance diagram for ns3::HePpdu:
Collaboration diagram for ns3::HePpdu:Classes | |
| class | HeSigHeader |
| HE-SIG PHY header (HE-SIG-A1/A2/B) More... | |
Public Types | |
| 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... | |
Public Member Functions | |
| HePpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, uint16_t txCenterFreq, Time ppduDuration, WifiPhyBand band, uint64_t uid, TxPsdFlag flag, uint8_t p20Index) | |
| 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... | |
| ~HePpdu () override | |
| Destructor for HePpdu. More... | |
| bool | CanBeReceived (uint16_t p20MinFreq, uint16_t p20MaxFreq) const override |
| Check whether the given PPDU can be received on the specified primary channel. 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) |
Public Member Functions inherited from ns3::OfdmPpdu | |
| OfdmPpdu (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, uint16_t txCenterFreq, WifiPhyBand band, uint64_t uid, bool instantiateLSig=true) | |
| Create an OFDM PPDU. More... | |
| ~OfdmPpdu () override | |
| Destructor for OfdmPpdu. More... | |
| Ptr< WifiPpdu > | Copy () const override |
| Copy this instance. More... | |
| Time | GetTxDuration () const override |
| Get the total transmission duration of the PPDU. More... | |
Public Member Functions inherited from ns3::WifiPpdu | |
| 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< 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... | |
| virtual uint16_t | GetTransmissionChannelWidth () 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... | |
| 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 | SetTruncatedTx () |
| 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 () const |
| Get the reference count of the object. More... | |
| SimpleRefCount & | operator= (const SimpleRefCount &o) |
| Assignment operator. More... | |
| void | Ref () const |
| Increment the reference count. More... | |
| void | Unref () const |
| Decrement the reference count. More... | |
Protected Member Functions | |
| WifiTxVector | DoGetTxVector () const override |
| Get the TXVECTOR used to send the PPDU. More... | |
| virtual bool | IsDlMu () const |
| Return true if the PPDU is a DL MU PPDU. More... | |
| virtual bool | IsMu () const |
| Return true if the PPDU is a MU PPDU. More... | |
| virtual bool | IsUlMu () const |
| Return true if the PPDU is an UL MU PPDU. More... | |
| std::string | PrintPayload () const override |
| Print the payload of the PPDU. More... | |
| virtual void | SetPhyHeaders (const WifiTxVector &txVector, Time ppduDuration) |
| Fill in the HE PHY headers. More... | |
| virtual std::string | PrintPayload () const |
| Print the payload of the PPDU. More... | |
Protected Attributes | |
| ContentChannelAllocation | m_contentChannelAlloc |
| HE SIG-B Content Channel allocation (to be removed once HE-SIG-B headers are implemented) More... | |
| HeSigHeader | m_heSig |
| the HE-SIG PHY header 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... | |
Protected Attributes inherited from ns3::OfdmPpdu | |
| WifiPhyBand | m_band |
| the WifiPhyBand used to transmit that PPDU More... | |
| uint16_t | m_channelWidth |
| the channel width used to transmit that PPDU in MHz More... | |
| LSigHeader | m_lSig |
| the L-SIG PHY header More... | |
Protected Attributes inherited from ns3::WifiPpdu | |
| 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... | |
HE PPDU (11ax)
HePpdu stores a preamble, PHY headers and a map of PSDUs of a PPDU with HE header
| ns3::HePpdu::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.
| psdu | the PHY payload (PSDU) |
| 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 |
Definition at line 89 of file he-ppdu.cc.
References IsMu(), NS_ASSERT, NS_LOG_FUNCTION, PSD_NON_HE_PORTION, SetPhyHeaders(), and SetTxPsdFlag().
Here is the call graph for this function:| ns3::HePpdu::HePpdu | ( | const WifiConstPsduMap & | psdus, |
| const WifiTxVector & | txVector, | ||
| uint16_t | txCenterFreq, | ||
| Time | ppduDuration, | ||
| WifiPhyBand | band, | ||
| uint64_t | uid, | ||
| TxPsdFlag | flag, | ||
| uint8_t | p20Index | ||
| ) |
Create an MU HE 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 HE TB PPDU |
| flag | the flag indicating the type of Tx PSD to build |
| p20Index | the index of the primary 20 MHz channel |
Definition at line 51 of file he-ppdu.cc.
References ns3::WifiTxVector::GetChannelWidth(), ns3::WifiTxVector::GetContentChannelAllocation(), ns3::WifiTxVector::GetHeMuUserInfoMap(), ns3::WifiTxVector::GetRuAllocation(), ns3::WifiTxVector::IsMu(), m_contentChannelAlloc, m_muUserInfos, ns3::WifiPpdu::m_psdus, m_ruAllocation, NS_ABORT_MSG_IF, NS_LOG_FUNCTION, SetPhyHeaders(), and SetTxPsdFlag().
Here is the call graph for this function:
|
override |
Destructor for HePpdu.
Definition at line 108 of file he-ppdu.cc.
|
overridevirtual |
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.
| p20MinFreq | the minimum frequency (MHz) of the primary channel |
| p20MaxFreq | the maximum frequency (MHz) of the primary channel |
Reimplemented from ns3::WifiPpdu.
Definition at line 288 of file he-ppdu.cc.
References ns3::WifiPpdu::CanBeReceived(), IsUlMu(), and NS_LOG_FUNCTION.
Here is the call graph for this function:Copy this instance.
Reimplemented from ns3::WifiPpdu.
Definition at line 194 of file he-ppdu.cc.
References ns3::Copy().
Here is the call graph for this function:
|
overrideprotectedvirtual |
Get the TXVECTOR used to send the PPDU.
Reimplemented from ns3::WifiPpdu.
Definition at line 145 of file he-ppdu.cc.
References ns3::HePpdu::HeSigHeader::GetBssColor(), ns3::HePpdu::HeSigHeader::GetChannelWidth(), ns3::HePpdu::HeSigHeader::GetGuardInterval(), ns3::HePhy::GetHeMcs(), ns3::OfdmPpdu::LSigHeader::GetLength(), ns3::HePpdu::HeSigHeader::GetMcs(), ns3::HePpdu::HeSigHeader::GetNStreams(), ns3::VhtPhy::GetVhtMcs(), ns3::WifiTxVector::IsDlMu(), m_heSig, ns3::OfdmPpdu::m_lSig, m_muUserInfos, ns3::WifiPpdu::m_preamble, ns3::WifiPpdu::m_psdus, m_ruAllocation, ns3::WifiTxVector::SetAggregation(), ns3::WifiTxVector::SetBssColor(), ns3::WifiTxVector::SetChannelWidth(), ns3::WifiTxVector::SetGuardInterval(), ns3::WifiTxVector::SetHeMuUserInfo(), ns3::WifiTxVector::SetLength(), ns3::WifiTxVector::SetMode(), ns3::WifiTxVector::SetNss(), ns3::WifiTxVector::SetPreambleType(), ns3::WifiTxVector::SetRuAllocation(), and ns3::WifiTxVector::SetSigBMode().
Here is the call graph for this function:Get the payload of the PPDU.
| bssColor | the BSS color of the PHY calling this function. |
| staId | the STA-ID of the PHY calling this function. |
Definition at line 232 of file he-ppdu.cc.
References ns3::HePpdu::HeSigHeader::GetBssColor(), IsMu(), IsUlMu(), m_heSig, ns3::WifiPpdu::m_psdus, NS_ASSERT, and SU_STA_ID.
Here is the call graph for this function:
|
overridevirtual |
Get the ID of the STA that transmitted the PPDU for UL MU, SU_STA_ID otherwise.
Reimplemented from ns3::WifiPpdu.
Definition at line 262 of file he-ppdu.cc.
References IsUlMu(), ns3::WifiPpdu::m_psdus, and NS_ASSERT.
Referenced by GetTransmissionChannelWidth().
Here is the call graph for this function:
Here is the caller graph for this function:
|
overridevirtual |
Get the channel width over which the PPDU will effectively be transmitted.
Reimplemented from ns3::WifiPpdu.
Definition at line 269 of file he-ppdu.cc.
References ns3::HeRu::GetBandwidth(), ns3::WifiTxVector::GetPreambleType(), ns3::WifiTxVector::GetRu(), GetStaId(), ns3::WifiPpdu::GetTransmissionChannelWidth(), GetTxPsdFlag(), ns3::WifiPpdu::GetTxVector(), NS_LOG_INFO, PSD_NON_HE_PORTION, SU_STA_ID, and ns3::WIFI_PREAMBLE_HE_TB.
Here is the call graph for this function:
|
overridevirtual |
Get the total transmission duration of the PPDU.
Reimplemented from ns3::WifiPpdu.
Definition at line 169 of file he-ppdu.cc.
References ns3::WifiPhy::CalculatePhyPreambleAndHeaderDuration(), ns3::WifiTxVector::GetGuardInterval(), ns3::OfdmPpdu::LSigHeader::GetLength(), ns3::Time::GetNanoSeconds(), ns3::WifiPpdu::GetTxVector(), IsDlMu(), ns3::OfdmPpdu::m_band, ns3::OfdmPpdu::m_lSig, ns3::MicroSeconds(), ns3::NanoSeconds(), NS_ASSERT, ns3::Seconds(), and ns3::WIFI_PHY_BAND_2_4GHZ.
Here is the call graph for this function:| HePpdu::TxPsdFlag ns3::HePpdu::GetTxPsdFlag | ( | ) | const |
Definition at line 300 of file he-ppdu.cc.
References m_txPsdFlag.
Referenced by GetTransmissionChannelWidth().
Here is the caller graph for this function:
|
overridevirtual |
Return the PPDU type (.
Reimplemented from ns3::WifiPpdu.
Definition at line 200 of file he-ppdu.cc.
References ns3::WifiPpdu::m_preamble, ns3::WIFI_PPDU_TYPE_DL_MU, ns3::WIFI_PPDU_TYPE_SU, ns3::WIFI_PPDU_TYPE_UL_MU, ns3::WIFI_PREAMBLE_HE_MU, and ns3::WIFI_PREAMBLE_HE_TB.
| bool ns3::HePpdu::IsAllocated | ( | uint16_t | staId | ) | const |
Check if STA ID is allocated.
| staId | STA ID |
Definition at line 313 of file he-ppdu.cc.
References m_muUserInfos.
|
protectedvirtual |
Return true if the PPDU is a DL MU PPDU.
Reimplemented in ns3::EhtPpdu.
Definition at line 220 of file he-ppdu.cc.
References ns3::WifiPpdu::m_preamble, and ns3::WIFI_PREAMBLE_HE_MU.
Referenced by GetTxDuration(), IsMu(), and SetPhyHeaders().
Here is the caller graph for this function:
|
protectedvirtual |
Return true if the PPDU is a MU PPDU.
Definition at line 214 of file he-ppdu.cc.
References IsDlMu(), and IsUlMu().
Referenced by HePpdu(), GetPsdu(), and PrintPayload().
Here is the call graph for this function:
Here is the caller graph for this function:| bool ns3::HePpdu::IsStaInContentChannel | ( | uint16_t | staId, |
| size_t | channelId | ||
| ) | const |
Check if STA ID is in HE SIG-B Content Channel ID.
| staId | STA ID |
| channelId | Content Channel ID |
Definition at line 319 of file he-ppdu.cc.
References m_contentChannelAlloc, and NS_ASSERT_MSG.
|
protectedvirtual |
Return true if the PPDU is an UL MU PPDU.
Reimplemented in ns3::EhtPpdu.
Definition at line 226 of file he-ppdu.cc.
References ns3::WifiPpdu::m_preamble, and ns3::WIFI_PREAMBLE_HE_TB.
Referenced by CanBeReceived(), GetPsdu(), GetStaId(), and IsMu().
Here is the caller graph for this function:
|
overrideprotectedvirtual |
Print the payload of the PPDU.
Reimplemented from ns3::WifiPpdu.
Definition at line 328 of file he-ppdu.cc.
References IsMu(), ns3::WifiPpdu::m_psdus, m_txPsdFlag, and SU_STA_ID.
Here is the call graph for this function:
|
protectedvirtual |
Fill in the HE PHY headers.
| txVector | the TXVECTOR that was used for this PPDU |
| ppduDuration | the transmission duration of this PPDU |
Definition at line 113 of file he-ppdu.cc.
References ns3::WifiTxVector::GetBssColor(), ns3::WifiTxVector::GetGuardInterval(), ns3::WifiMode::GetMcsValue(), ns3::WifiTxVector::GetMode(), ns3::Time::GetNanoSeconds(), ns3::WifiTxVector::GetNss(), ns3::WifiTxVector::GetSigBMode(), IsDlMu(), ns3::WifiTxVector::IsDlMu(), ns3::WifiTxVector::IsUlMu(), ns3::OfdmPpdu::m_band, ns3::OfdmPpdu::m_channelWidth, m_heSig, ns3::OfdmPpdu::m_lSig, NS_LOG_FUNCTION, ns3::HePpdu::HeSigHeader::SetBssColor(), ns3::HePpdu::HeSigHeader::SetChannelWidth(), ns3::HePpdu::HeSigHeader::SetGuardIntervalAndLtfSize(), ns3::OfdmPpdu::LSigHeader::SetLength(), ns3::HePpdu::HeSigHeader::SetMcs(), ns3::HePpdu::HeSigHeader::SetMuFlag(), ns3::HePpdu::HeSigHeader::SetNStreams(), and ns3::WIFI_PHY_BAND_2_4GHZ.
Referenced by HePpdu().
Here is the call graph for this function:
Here is the caller graph for this function:| void ns3::HePpdu::SetTxPsdFlag | ( | TxPsdFlag | flag | ) |
| flag | the transmit PSD flag set for this PPDU |
Definition at line 306 of file he-ppdu.cc.
References m_txPsdFlag, and NS_LOG_FUNCTION.
Referenced by HePpdu().
Here is the caller graph for this function:
|
protected |
HE SIG-B Content Channel allocation (to be removed once HE-SIG-B headers are implemented)
Definition at line 284 of file he-ppdu.h.
Referenced by HePpdu(), and IsStaInContentChannel().
|
protected |
the HE-SIG PHY header
Definition at line 278 of file he-ppdu.h.
Referenced by ns3::EhtPpdu::DoGetTxVector(), DoGetTxVector(), GetPsdu(), and SetPhyHeaders().
|
protected |
HE MU specific per-user information (to be removed once HE-SIG-B headers are implemented)
Definition at line 281 of file he-ppdu.h.
Referenced by HePpdu(), ns3::EhtPpdu::DoGetTxVector(), DoGetTxVector(), ns3::EhtPpdu::GetType(), IsAllocated(), ns3::EhtPpdu::IsDlMu(), and ns3::EhtPpdu::IsUlMu().
|
protected |
RU_ALLOCATION in SIG-B common field (to be removed once HE-SIG-B headers are implemented)
Definition at line 286 of file he-ppdu.h.
Referenced by HePpdu(), and DoGetTxVector().
|
protected |
the transmit power spectral density flag
Definition at line 279 of file he-ppdu.h.
Referenced by GetTxPsdFlag(), PrintPayload(), and SetTxPsdFlag().