A Discrete-Event Network Simulator
API
ns3::HePhy Class Reference

PHY entity for HE (11ax) More...

#include "he-phy.h"

+ Inheritance diagram for ns3::HePhy:
+ Collaboration diagram for ns3::HePhy:

Public Types

typedef Callback< void, HeSigAParametersEndOfHeSigACallback
 Callback upon end of HE-SIG-A. More...
 
- Public Types inherited from ns3::PhyEntity
typedef std::pair< std::pair< Time, Time >, WifiModePhyHeaderChunkInfo
 A pair containing information on the PHY header chunk, namely the start and stop times of the chunk and the WifiMode used. More...
 
typedef std::map< WifiPpduField, PhyHeaderChunkInfoPhyHeaderSections
 A map of PhyHeaderChunkInfo elements per PPDU field. More...
 
enum  PhyRxFailureAction { DROP = 0 , ABORT , IGNORE }
 Action to perform in case of RX failure. More...
 

Public Member Functions

 HePhy (bool buildModeList=true)
 Constructor for HE PHY. More...
 
 ~HePhy () override
 Destructor for HE PHY. More...
 
Ptr< WifiPpduBuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override
 Build amendment-specific PPDU. More...
 
virtual Time CalculateNonHeDurationForHeMu (const WifiTxVector &txVector) const
 
virtual Time CalculateNonHeDurationForHeTb (const WifiTxVector &txVector) const
 
Time CalculateTxDuration (WifiConstPsduMap psduMap, const WifiTxVector &txVector, WifiPhyBand band) const override
 
void CancelAllEvents () override
 Cancel and clear all running events. More...
 
bool CanStartRx (Ptr< const WifiPpdu > ppdu) const override
 Determine whether the PHY shall issue a PHY-RXSTART.indication primitive in response to a given PPDU. More...
 
Ptr< const WifiPsduGetAddressedPsduInPpdu (Ptr< const WifiPpdu > ppdu) const override
 Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU). More...
 
uint8_t GetBssColor () const
 
double GetCcaThreshold (const Ptr< const WifiPpdu > ppdu, WifiChannelListType channelType) const override
 Return the CCA threshold in dBm for a given channel type. More...
 
uint16_t GetCenterFrequencyForNonHePart (const WifiTxVector &txVector, uint16_t staId) const
 Get the center frequency of the non-HE portion of the current TxVector for the given STA-ID. More...
 
uint64_t GetCurrentHeTbPpduUid () const
 
Time GetLSigDuration (WifiPreamble preamble) const override
 
uint16_t GetMeasurementChannelWidth (const Ptr< const WifiPpdu > ppdu) const override
 Return the channel width used to measure the RSSI. More...
 
WifiSpectrumBandInfo GetNonOfdmaBand (const WifiTxVector &txVector, uint16_t staId) const
 Get the band used to transmit the non-OFDMA part of an HE TB PPDU. More...
 
uint16_t GetNonOfdmaWidth (HeRu::RuSpec ru) const
 Get the width in MHz of the non-OFDMA portion of an HE TB PPDU. More...
 
Ptr< ObssPdAlgorithmGetObssPdAlgorithm () const
 Gets the OBSS-PD algorithm. More...
 
const PpduFormatsGetPpduFormats () const override
 Return the PPDU formats of the PHY. More...
 
WifiSpectrumBandInfo GetRuBandForRx (const WifiTxVector &txVector, uint16_t staId) const
 Get the band in the RX spectrum associated with the RU used by the PSDU transmitted to/by a given STA in a DL MU PPDU/HE TB PPDU. More...
 
WifiSpectrumBandInfo GetRuBandForTx (const WifiTxVector &txVector, uint16_t staId) const
 Get the band in the TX spectrum associated with the RU used by the PSDU transmitted to/by a given STA in a DL MU PPDU/HE TB PPDU. More...
 
Ptr< const WifiPpduGetRxPpduFromTxPpdu (Ptr< const WifiPpdu > ppdu) override
 The WifiPpdu from the TX PHY is received by each RX PHY attached to the same channel. More...
 
Time GetSigADuration (WifiPreamble preamble) const override
 
WifiMode GetSigAMode () const override
 
Time GetSigBDuration (const WifiTxVector &txVector) const override
 
WifiMode GetSigBMode (const WifiTxVector &txVector) const override
 
WifiMode GetSigMode (WifiPpduField field, const WifiTxVector &txVector) const override
 Get the WifiMode for the SIG field specified by the PPDU field. More...
 
uint16_t GetStaId (const Ptr< const WifiPpdu > ppdu) const override
 Return the STA ID that has been assigned to the station this PHY belongs to. More...
 
Time GetTrainingDuration (const WifiTxVector &txVector, uint8_t nDataLtf, uint8_t nExtensionLtf=0) const override
 
void NotifyCcaBusy (const Ptr< const WifiPpdu > ppdu, Time duration, WifiChannelListType channelType) override
 Notify PHY state helper to switch to CCA busy state,. More...
 
void NotifyEndOfHeSigA (HeSigAParameters params)
 Fire a EndOfHeSigA callback (if connected) once HE-SIG-A field has been received. More...
 
void SetEndOfHeSigACallback (EndOfHeSigACallback callback)
 Set a callback for a end of HE-SIG-A. More...
 
void SetObssPdAlgorithm (const Ptr< ObssPdAlgorithm > algorithm)
 Sets the OBSS-PD algorithm. More...
 
void SetTrigVector (const WifiTxVector &trigVector, Time validity)
 Set the TRIGVECTOR and the associated expiration time. More...
 
void StartReceivePreamble (Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW, Time rxDuration) override
 Start receiving the PHY preamble of a PPDU (i.e. More...
 
void StartTx (Ptr< const WifiPpdu > ppdu) override
 This function is called by SpectrumWifiPhy to send the PPDU while performing amendment-specific actions. More...
 
void SwitchMaybeToCcaBusy (const Ptr< const WifiPpdu > ppdu) override
 Check if PHY state should move to CCA busy state based on current state of interference tracker. More...
 
- Public Member Functions inherited from ns3::VhtPhy
 VhtPhy (bool buildModeList=true)
 Constructor for VHT PHY. More...
 
 ~VhtPhy () override
 Destructor for VHT PHY. More...
 
Ptr< WifiPpduBuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override
 Build amendment-specific PPDU. More...
 
double GetCcaThreshold (const Ptr< const WifiPpdu > ppdu, WifiChannelListType channelType) const override
 Return the CCA threshold in dBm for a given channel type. More...
 
Time GetDuration (WifiPpduField field, const WifiTxVector &txVector) const override
 Get the duration of the PPDU field (or group of fields) used by this entity for the given transmission parameters. More...
 
Time GetLSigDuration (WifiPreamble preamble) const override
 
const PpduFormatsGetPpduFormats () const override
 Return the PPDU formats of the PHY. More...
 
WifiMode GetSigMode (WifiPpduField field, const WifiTxVector &txVector) const override
 Get the WifiMode for the SIG field specified by the PPDU field. More...
 
Time GetTrainingDuration (const WifiTxVector &txVector, uint8_t nDataLtf, uint8_t nExtensionLtf=0) const override
 
- Public Member Functions inherited from ns3::HtPhy
 HtPhy (uint8_t maxNss=1, bool buildModeList=true)
 Constructor for HT PHY. More...
 
 ~HtPhy () override
 Destructor for HT PHY. More...
 
uint8_t GetBssMembershipSelector () const
 
uint8_t GetMaxSupportedMcsIndexPerSs () const
 Set the maximum supported MCS index per spatial stream. More...
 
WifiMode GetMcs (uint8_t index) const override
 Get the WifiMode corresponding to the given MCS index. More...
 
Time GetPayloadDuration (uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, MpduType mpdutype, bool incFlag, uint32_t &totalAmpduSize, double &totalAmpduNumSymbols, uint16_t staId) const override
 
bool HandlesMcsModes () const override
 Check if the WifiModes handled by this PHY are MCSs. More...
 
bool IsMcsSupported (uint8_t index) const override
 Check if the WifiMode corresponding to the given MCS index is supported. More...
 
void SetMaxSupportedMcsIndexPerSs (uint8_t maxIndex)
 Set the maximum supported MCS index per spatial stream. More...
 
void SetMaxSupportedNss (uint8_t maxNss)
 Configure the maximum number of spatial streams supported by this HT PHY. More...
 
- Public Member Functions inherited from ns3::OfdmPhy
 OfdmPhy (OfdmPhyVariant variant=OFDM_PHY_DEFAULT, bool buildModeList=true)
 Constructor for OFDM PHY. More...
 
 ~OfdmPhy () override
 Destructor for OFDM PHY. More...
 
Time GetPayloadDuration (uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, MpduType mpdutype, bool incFlag, uint32_t &totalAmpduSize, double &totalAmpduNumSymbols, uint16_t staId) const override
 
Ptr< const WifiPpduGetRxPpduFromTxPpdu (Ptr< const WifiPpdu > ppdu) override
 The WifiPpdu from the TX PHY is received by each RX PHY attached to the same channel. More...
 
- Public Member Functions inherited from ns3::PhyEntity
virtual ~PhyEntity ()
 Destructor for PHY entity. More...
 
std::list< WifiMode >::const_iterator begin () const
 Return a const iterator to the first WifiMode. More...
 
Time CalculatePhyPreambleAndHeaderDuration (const WifiTxVector &txVector) const
 
void CancelRunningEndPreambleDetectionEvents ()
 Cancel all end preamble detection events. More...
 
std::list< WifiMode >::const_iterator end () const
 Return a const iterator to past-the-last WifiMode. More...
 
void EndReceiveField (WifiPpduField field, Ptr< Event > event)
 End receiving a given field. More...
 
void EndReceivePayload (Ptr< Event > event)
 The last symbol of the PPDU has arrived. More...
 
Time GetDurationUpToField (WifiPpduField field, const WifiTxVector &txVector) const
 Get the duration of the PPDU up to (but excluding) the given field. More...
 
WifiPpduField GetNextField (WifiPpduField currentField, WifiPreamble preamble) const
 Return the field following the provided one. More...
 
virtual uint8_t GetNumModes () const
 
PhyHeaderSections GetPhyHeaderSections (const WifiTxVector &txVector, Time ppduStart) const
 Return a map of PHY header chunk information per PPDU field. More...
 
Time GetRemainingDurationAfterField (Ptr< const WifiPpdu > ppdu, WifiPpduField field) const
 Get the remaining duration of the PPDU after the end of the given field. More...
 
virtual bool IsModeSupported (WifiMode mode) const
 Check if the WifiMode is supported. More...
 
bool NoEndPreambleDetectionEvents () const
 
void ResetReceive (Ptr< Event > event)
 Reset PHY at the end of the PPDU under reception after it has failed the PHY header. More...
 
void SetOwner (Ptr< WifiPhy > wifiPhy)
 Set the WifiPhy owning this PHY entity. More...
 
void StartReceiveField (WifiPpduField field, Ptr< Event > event)
 Start receiving a given field. More...
 
void Transmit (Time txDuration, Ptr< const WifiPpdu > ppdu, double txPowerDbm, Ptr< SpectrumValue > txPowerSpectrum, const std::string &type)
 This function prepares most of the WifiSpectrumSignalParameters parameters and invokes SpectrumWifiPhy's Transmit method. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< PhyEntity >
 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...
 
SimpleRefCountoperator= (const SimpleRefCount &o[[maybe_unused]])
 Assignment operator. More...
 
void Ref () const
 Increment the reference count. More...
 
void Unref () const
 Decrement the reference count. More...
 

Static Public Member Functions

static WifiSpectrumBandIndices ConvertHeRuSubcarriers (uint16_t bandWidth, uint16_t guardBandwidth, uint32_t subcarrierSpacing, HeRu::SubcarrierRange subcarrierRange, uint8_t bandIndex=0)
 
static std::pair< uint16_t, TimeConvertHeTbPpduDurationToLSigLength (Time ppduDuration, const WifiTxVector &txVector, WifiPhyBand band)
 Compute the L-SIG length value corresponding to the given HE TB PPDU duration. More...
 
static Time ConvertLSigLengthToHeTbPpduDuration (uint16_t length, const WifiTxVector &txVector, WifiPhyBand band)
 
static WifiMode CreateHeMcs (uint8_t index)
 Create and return the HE MCS corresponding to the provided index. More...
 
static WifiCodeRate GetCodeRate (uint8_t mcsValue)
 Return the coding rate corresponding to the supplied HE MCS index. More...
 
static uint16_t GetConstellationSize (uint8_t mcsValue)
 Return the constellation size corresponding to the supplied HE MCS index. More...
 
static uint64_t GetDataRate (uint8_t mcsValue, uint16_t channelWidth, uint16_t guardInterval, uint8_t nss)
 Return the data rate corresponding to the supplied HE MCS index, channel width, guard interval, and number of spatial streams. More...
 
static uint64_t GetDataRateFromTxVector (const WifiTxVector &txVector, uint16_t staId=SU_STA_ID)
 Return the data rate corresponding to the supplied TXVECTOR for the STA-ID. More...
 
static WifiMode GetHeMcs (uint8_t index)
 Return the HE MCS corresponding to the provided index. More...
 
static WifiMode GetHeMcs0 ()
 Return MCS 0 from HE MCS values. More...
 
static WifiMode GetHeMcs1 ()
 Return MCS 1 from HE MCS values. More...
 
static WifiMode GetHeMcs10 ()
 Return MCS 10 from HE MCS values. More...
 
static WifiMode GetHeMcs11 ()
 Return MCS 11 from HE MCS values. More...
 
static WifiMode GetHeMcs2 ()
 Return MCS 2 from HE MCS values. More...
 
static WifiMode GetHeMcs3 ()
 Return MCS 3 from HE MCS values. More...
 
static WifiMode GetHeMcs4 ()
 Return MCS 4 from HE MCS values. More...
 
static WifiMode GetHeMcs5 ()
 Return MCS 5 from HE MCS values. More...
 
static WifiMode GetHeMcs6 ()
 Return MCS 6 from HE MCS values. More...
 
static WifiMode GetHeMcs7 ()
 Return MCS 7 from HE MCS values. More...
 
static WifiMode GetHeMcs8 ()
 Return MCS 8 from HE MCS values. More...
 
static WifiMode GetHeMcs9 ()
 Return MCS 9 from HE MCS values. More...
 
static uint64_t GetNonHtReferenceRate (uint8_t mcsValue)
 Calculate the rate in bps of the non-HT Reference Rate corresponding to the supplied HE MCS index. More...
 
static uint64_t GetPhyRate (uint8_t mcsValue, uint16_t channelWidth, uint16_t guardInterval, uint8_t nss)
 Return the PHY rate corresponding to the supplied HE MCS index, channel width, guard interval, and number of spatial stream. More...
 
static uint64_t GetPhyRateFromTxVector (const WifiTxVector &txVector, uint16_t staId=SU_STA_ID)
 Return the PHY rate corresponding to the supplied TXVECTOR for the STA-ID. More...
 
static void InitializeModes ()
 Initialize all HE modes. More...
 
static bool IsAllowed (const WifiTxVector &txVector)
 Check whether the combination in TXVECTOR is allowed. More...
 
- Static Public Member Functions inherited from ns3::VhtPhy
static WifiCodeRate GetCodeRate (uint8_t mcsValue)
 Return the coding rate corresponding to the supplied VHT MCS index. More...
 
static uint16_t GetConstellationSize (uint8_t mcsValue)
 Return the constellation size corresponding to the supplied VHT MCS index. More...
 
static uint64_t GetDataRate (uint8_t mcsValue, uint16_t channelWidth, uint16_t guardInterval, uint8_t nss)
 Return the data rate corresponding to the supplied VHT MCS index, channel width, guard interval, and number of spatial streams. More...
 
static uint64_t GetDataRateFromTxVector (const WifiTxVector &txVector, uint16_t staId)
 Return the data rate corresponding to the supplied TXVECTOR. More...
 
static uint64_t GetNonHtReferenceRate (uint8_t mcsValue)
 Calculate the rate in bps of the non-HT Reference Rate corresponding to the supplied VHT MCS index. More...
 
static uint64_t GetPhyRate (uint8_t mcsValue, uint16_t channelWidth, uint16_t guardInterval, uint8_t nss)
 Return the PHY rate corresponding to the supplied VHT MCS index, channel width, guard interval, and number of spatial stream. More...
 
static uint64_t GetPhyRateFromTxVector (const WifiTxVector &txVector, uint16_t staId)
 Return the PHY rate corresponding to the supplied TXVECTOR. More...
 
static WifiMode GetVhtMcs (uint8_t index)
 Return the VHT MCS corresponding to the provided index. More...
 
static WifiMode GetVhtMcs0 ()
 Return MCS 0 from VHT MCS values. More...
 
static WifiMode GetVhtMcs1 ()
 Return MCS 1 from VHT MCS values. More...
 
static WifiMode GetVhtMcs2 ()
 Return MCS 2 from VHT MCS values. More...
 
static WifiMode GetVhtMcs3 ()
 Return MCS 3 from VHT MCS values. More...
 
static WifiMode GetVhtMcs4 ()
 Return MCS 4 from VHT MCS values. More...
 
static WifiMode GetVhtMcs5 ()
 Return MCS 5 from VHT MCS values. More...
 
static WifiMode GetVhtMcs6 ()
 Return MCS 6 from VHT MCS values. More...
 
static WifiMode GetVhtMcs7 ()
 Return MCS 7 from VHT MCS values. More...
 
static WifiMode GetVhtMcs8 ()
 Return MCS 8 from VHT MCS values. More...
 
static WifiMode GetVhtMcs9 ()
 Return MCS 9 from VHT MCS values. More...
 
static void InitializeModes ()
 Initialize all VHT modes. More...
 
static bool IsAllowed (const WifiTxVector &txVector)
 Check whether the combination in TXVECTOR is allowed. More...
 
static bool IsCombinationAllowed (uint8_t mcsValue, uint16_t channelWidth, uint8_t nss)
 Check whether the combination of <MCS, channel width, NSS> is allowed. More...
 
- Static Public Member Functions inherited from ns3::HtPhy
static WifiCodeRate GetCodeRate (uint8_t mcsValue)
 Return the coding rate corresponding to the supplied HT MCS index between 0 and 7, since HT MCS index > 8 is used for higher NSS. More...
 
static uint16_t GetConstellationSize (uint8_t mcsValue)
 Return the constellation size corresponding to the supplied HT MCS index between 0 and 7, since HT MCS index > 8 is used for higher NSS. More...
 
static uint64_t GetDataRate (uint8_t mcsValue, uint16_t channelWidth, uint16_t guardInterval, uint8_t nss)
 Return the data rate corresponding to the supplied HT MCS index, channel width, guard interval, and number of spatial streams. More...
 
static uint64_t GetDataRateFromTxVector (const WifiTxVector &txVector, uint16_t staId)
 Return the data rate corresponding to the supplied TXVECTOR. More...
 
static WifiCodeRate GetHtCodeRate (uint8_t mcsValue)
 Return the coding rate corresponding to the supplied HT MCS index. More...
 
static uint16_t GetHtConstellationSize (uint8_t mcsValue)
 Return the constellation size corresponding to the supplied HT MCS index. More...
 
static WifiMode GetHtMcs (uint8_t index)
 Return the HT MCS corresponding to the provided index. More...
 
static WifiMode GetHtMcs0 ()
 Return MCS 0 from HT MCS values. More...
 
static WifiMode GetHtMcs1 ()
 Return MCS 1 from HT MCS values. More...
 
static WifiMode GetHtMcs10 ()
 Return MCS 10 from HT MCS values. More...
 
static WifiMode GetHtMcs11 ()
 Return MCS 11 from HT MCS values. More...
 
static WifiMode GetHtMcs12 ()
 Return MCS 12 from HT MCS values. More...
 
static WifiMode GetHtMcs13 ()
 Return MCS 13 from HT MCS values. More...
 
static WifiMode GetHtMcs14 ()
 Return MCS 14 from HT MCS values. More...
 
static WifiMode GetHtMcs15 ()
 Return MCS 15 from HT MCS values. More...
 
static WifiMode GetHtMcs16 ()
 Return MCS 16 from HT MCS values. More...
 
static WifiMode GetHtMcs17 ()
 Return MCS 17 from HT MCS values. More...
 
static WifiMode GetHtMcs18 ()
 Return MCS 18 from HT MCS values. More...
 
static WifiMode GetHtMcs19 ()
 Return MCS 19 from HT MCS values. More...
 
static WifiMode GetHtMcs2 ()
 Return MCS 2 from HT MCS values. More...
 
static WifiMode GetHtMcs20 ()
 Return MCS 20 from HT MCS values. More...
 
static WifiMode GetHtMcs21 ()
 Return MCS 21 from HT MCS values. More...
 
static WifiMode GetHtMcs22 ()
 Return MCS 22 from HT MCS values. More...
 
static WifiMode GetHtMcs23 ()
 Return MCS 23 from HT MCS values. More...
 
static WifiMode GetHtMcs24 ()
 Return MCS 24 from HT MCS values. More...
 
static WifiMode GetHtMcs25 ()
 Return MCS 25 from HT MCS values. More...
 
static WifiMode GetHtMcs26 ()
 Return MCS 26 from HT MCS values. More...
 
static WifiMode GetHtMcs27 ()
 Return MCS 27 from HT MCS values. More...
 
static WifiMode GetHtMcs28 ()
 Return MCS 28 from HT MCS values. More...
 
static WifiMode GetHtMcs29 ()
 Return MCS 29 from HT MCS values. More...
 
static WifiMode GetHtMcs3 ()
 Return MCS 3 from HT MCS values. More...
 
static WifiMode GetHtMcs30 ()
 Return MCS 30 from HT MCS values. More...
 
static WifiMode GetHtMcs31 ()
 Return MCS 31 from HT MCS values. More...
 
static WifiMode GetHtMcs4 ()
 Return MCS 4 from HT MCS values. More...
 
static WifiMode GetHtMcs5 ()
 Return MCS 5 from HT MCS values. More...
 
static WifiMode GetHtMcs6 ()
 Return MCS 6 from HT MCS values. More...
 
static WifiMode GetHtMcs7 ()
 Return MCS 7 from HT MCS values. More...
 
static WifiMode GetHtMcs8 ()
 Return MCS 8 from HT MCS values. More...
 
static WifiMode GetHtMcs9 ()
 Return MCS 9 from HT MCS values. More...
 
static WifiMode GetLSigMode ()
 
static uint64_t GetNonHtReferenceRate (uint8_t mcsValue)
 Calculate the rate in bps of the non-HT Reference Rate corresponding to the supplied HT MCS index. More...
 
static uint64_t GetPhyRate (uint8_t mcsValue, uint16_t channelWidth, uint16_t guardInterval, uint8_t nss)
 Return the PHY rate corresponding to the supplied HT MCS index, channel width, guard interval, and number of spatial stream. More...
 
static uint64_t GetPhyRateFromTxVector (const WifiTxVector &txVector, uint16_t staId)
 Return the PHY rate corresponding to the supplied TXVECTOR. More...
 
static void InitializeModes ()
 Initialize all HT modes. More...
 
static bool IsAllowed (const WifiTxVector &txVector)
 Check whether the combination in TXVECTOR is allowed. More...
 
- Static Public Member Functions inherited from ns3::OfdmPhy
static WifiCodeRate GetCodeRate (const std::string &name)
 Return the WifiCodeRate from the OFDM mode's unique name using ModulationLookupTable. More...
 
static uint16_t GetConstellationSize (const std::string &name)
 Return the constellation size from the OFDM mode's unique name using ModulationLookupTable. More...
 
static uint64_t GetDataRate (const std::string &name, uint16_t channelWidth)
 Return the data rate from the OFDM mode's unique name and the supplied parameters. More...
 
static uint64_t GetDataRateFromTxVector (const WifiTxVector &txVector, uint16_t staId)
 Return the data rate corresponding to the supplied TXVECTOR. More...
 
static WifiMode GetOfdmRate (uint64_t rate, uint16_t bw=20)
 Return a WifiMode for OFDM corresponding to the provided rate and the channel bandwidth (20, 10, or 5 MHz). More...
 
static WifiMode GetOfdmRate12Mbps ()
 Return a WifiMode for OFDM at 12Mbps. More...
 
static WifiMode GetOfdmRate12MbpsBW10MHz ()
 Return a WifiMode for OFDM at 12 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate12MbpsBW5MHz ()
 Return a WifiMode for OFDM at 12 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate13_5MbpsBW5MHz ()
 Return a WifiMode for OFDM at 13.5 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate18Mbps ()
 Return a WifiMode for OFDM at 18 Mbps. More...
 
static WifiMode GetOfdmRate18MbpsBW10MHz ()
 Return a WifiMode for OFDM at 18 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate1_5MbpsBW5MHz ()
 Return a WifiMode for OFDM at 1.5 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate24Mbps ()
 Return a WifiMode for OFDM at 24 Mbps. More...
 
static WifiMode GetOfdmRate24MbpsBW10MHz ()
 Return a WifiMode for OFDM at 24 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate27MbpsBW10MHz ()
 Return a WifiMode for OFDM at 27 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate2_25MbpsBW5MHz ()
 Return a WifiMode for OFDM at 2.25 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate36Mbps ()
 Return a WifiMode for OFDM at 36 Mbps. More...
 
static WifiMode GetOfdmRate3MbpsBW10MHz ()
 Return a WifiMode for OFDM at 3 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate3MbpsBW5MHz ()
 Return a WifiMode for OFDM at 3 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate48Mbps ()
 Return a WifiMode for OFDM at 48 Mbps. More...
 
static WifiMode GetOfdmRate4_5MbpsBW10MHz ()
 Return a WifiMode for OFDM at 4.5 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate4_5MbpsBW5MHz ()
 Return a WifiMode for OFDM at 4.5 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate54Mbps ()
 Return a WifiMode for OFDM at 54 Mbps. More...
 
static WifiMode GetOfdmRate6Mbps ()
 Return a WifiMode for OFDM at 6 Mbps. More...
 
static WifiMode GetOfdmRate6MbpsBW10MHz ()
 Return a WifiMode for OFDM at 6 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate6MbpsBW5MHz ()
 Return a WifiMode for OFDM at 6 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate9Mbps ()
 Return a WifiMode for OFDM at 9 Mbps. More...
 
static WifiMode GetOfdmRate9MbpsBW10MHz ()
 Return a WifiMode for OFDM at 9 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate9MbpsBW5MHz ()
 Return a WifiMode for OFDM at 9 Mbps with 5 MHz channel spacing. More...
 
static uint64_t GetPhyRate (const std::string &name, uint16_t channelWidth)
 Return the PHY rate from the OFDM mode's unique name and the supplied parameters. More...
 
static uint64_t GetPhyRateFromTxVector (const WifiTxVector &txVector, uint16_t staId)
 Return the PHY rate corresponding to the supplied TXVECTOR. More...
 
static void InitializeModes ()
 Initialize all OFDM modes (for all variants). More...
 
static bool IsAllowed (const WifiTxVector &txVector)
 Check whether the combination in TXVECTOR is allowed. More...
 

Protected Member Functions

void DoAbortCurrentReception (WifiPhyRxfailureReason reason) override
 Perform amendment-specific actions before aborting the current reception. More...
 
void DoEndReceivePayload (Ptr< const WifiPpdu > ppdu) override
 Perform amendment-specific actions at the end of the reception of the payload. More...
 
Ptr< EventDoGetEvent (Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW) override
 Get the event corresponding to the incoming PPDU. More...
 
void DoResetReceive (Ptr< Event > event) override
 Perform amendment-specific actions before resetting PHY at the end of the PPDU under reception after it has failed the PHY header. More...
 
Time DoStartReceivePayload (Ptr< Event > event) override
 Start receiving the PSDU (i.e. More...
 
std::pair< uint16_t, WifiSpectrumBandInfoGetChannelWidthAndBand (const WifiTxVector &txVector, uint16_t staId) const override
 Get the channel width and band to use (will be overloaded by child classes). More...
 
Time GetMaxDelayPpduSameUid (const WifiTxVector &txVector) override
 Obtain the maximum time between two PPDUs with the same UID to consider they are identical and their power can be added construtively. More...
 
uint32_t GetMaxPsduSize () const override
 Get the maximum PSDU size in bytes. More...
 
virtual uint32_t GetSigBSize (const WifiTxVector &txVector) const
 
Ptr< SpectrumValueGetTxPowerSpectralDensity (double txPowerW, Ptr< const WifiPpdu > ppdu) const override
 
WifiConstPsduMap GetWifiConstPsduMap (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector) const override
 Get a WifiConstPsduMap from a PSDU and the TXVECTOR to use to send the PSDU. More...
 
void HandleRxPpduWithSameContent (Ptr< Event > event, Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPower) override
 Handle reception of a PPDU that carries the same content of another PPDU. More...
 
bool IsConfigSupported (Ptr< const WifiPpdu > ppdu) const override
 Checks if the signaled configuration (excluding bandwidth) is supported by the PHY. More...
 
uint64_t ObtainNextUid (const WifiTxVector &txVector) override
 Obtain the next UID for the PPDU to transmit. More...
 
PhyFieldRxStatus ProcessSig (Ptr< Event > event, PhyFieldRxStatus status, WifiPpduField field) override
 Process SIG-A or SIG-B, perform amendment-specific actions, and provide an updated status of the reception. More...
 
virtual PhyFieldRxStatus ProcessSigA (Ptr< Event > event, PhyFieldRxStatus status)
 Process SIG-A, perform amendment-specific actions, and provide an updated status of the reception. More...
 
virtual PhyFieldRxStatus ProcessSigB (Ptr< Event > event, PhyFieldRxStatus status)
 Process SIG-B, perform amendment-specific actions, and provide an updated status of the reception. More...
 
void RxPayloadFailed (Ptr< const WifiPsdu > psdu, double snr, const WifiTxVector &txVector) override
 Perform amendment-specific actions when the payload is unsuccessfuly received. More...
 
void RxPayloadSucceeded (Ptr< const WifiPsdu > psdu, RxSignalInfo rxSignalInfo, const WifiTxVector &txVector, uint16_t staId, const std::vector< bool > &statusPerMpdu) override
 Perform amendment-specific actions when the payload is successfully received. More...
 
void StartReceiveMuPayload (Ptr< Event > event)
 Start receiving the PSDU (i.e. More...
 
- Protected Member Functions inherited from ns3::VhtPhy
PhyFieldRxStatus DoEndReceiveField (WifiPpduField field, Ptr< Event > event) override
 End receiving a given field, perform amendment-specific actions, and provide the status of the reception. More...
 
PhyFieldRxStatus EndReceiveSig (Ptr< Event > event, WifiPpduField field)
 End receiving the SIG-A or SIG-B, perform VHT-specific actions, and provide the status of the reception. More...
 
CcaIndication GetCcaIndication (const Ptr< const WifiPpdu > ppdu) override
 Get CCA end time and its corresponding channel list type when a new signal has been received by the PHY. More...
 
virtual WifiPhyRxfailureReason GetFailureReason (WifiPpduField field) const
 Get the failure reason corresponding to the unsuccessful processing of a given PPDU field. More...
 
Time GetHtSigDuration () const override
 
WifiMode GetHtSigMode () const override
 
uint32_t GetMaxPsduSize () const override
 Get the maximum PSDU size in bytes. More...
 
uint8_t GetNumberBccEncoders (const WifiTxVector &txVector) const override
 
bool IsAllConfigSupported (WifiPpduField field, Ptr< const WifiPpdu > ppdu) const override
 Checks if the signaled configuration (including bandwidth) is supported by the PHY. More...
 
- Protected Member Functions inherited from ns3::HtPhy
Ptr< SpectrumValueGetTxPowerSpectralDensity (double txPowerW, Ptr< const WifiPpdu > ppdu) const override
 
bool IsConfigSupported (Ptr< const WifiPpdu > ppdu) const override
 Checks if the signaled configuration (excluding bandwidth) is supported by the PHY. More...
 
- Protected Member Functions inherited from ns3::OfdmPhy
PhyFieldRxStatus EndReceiveHeader (Ptr< Event > event)
 End receiving the header, perform OFDM-specific actions, and provide the status of the reception. More...
 
virtual Time GetHeaderDuration (const WifiTxVector &txVector) const
 
virtual WifiMode GetHeaderMode (const WifiTxVector &txVector) const
 
uint16_t GetMeasurementChannelWidth (const Ptr< const WifiPpdu > ppdu) const override
 Return the channel width used to measure the RSSI. More...
 
uint8_t GetNumberServiceBits () const
 
virtual Time GetPreambleDuration (const WifiTxVector &txVector) const
 
Time GetSignalExtension (WifiPhyBand band) const
 
Ptr< SpectrumValueGetTxPowerSpectralDensity (double txPowerW, Ptr< const WifiPpdu > ppdu) const override
 
virtual bool IsChannelWidthSupported (Ptr< const WifiPpdu > ppdu) const
 Checks if the PPDU's bandwidth is supported by the PHY. More...
 
- Protected Member Functions inherited from ns3::PhyEntity
void AbortCurrentReception (WifiPhyRxfailureReason reason)
 Abort the current reception. More...
 
void AddPreambleEvent (Ptr< Event > event)
 Add an entry to the map of current preamble events (stored in WifiPhy). More...
 
Ptr< EventCreateInterferenceEvent (Ptr< const WifiPpdu > ppdu, Time duration, RxPowerWattPerChannelBand &rxPower, bool isStartHePortionRxing=false)
 Create an event using WifiPhy's InterferenceHelper class. More...
 
virtual PhyFieldRxStatus DoEndReceivePreamble (Ptr< Event > event)
 End receiving the preamble, perform amendment-specific actions, and provide the status of the reception. More...
 
virtual bool DoStartReceiveField (WifiPpduField field, Ptr< Event > event)
 Start receiving a given field, perform amendment-specific actions, and signify if it is supported. More...
 
void DropPreambleEvent (Ptr< const WifiPpdu > ppdu, WifiPhyRxfailureReason reason, Time endRx)
 Drop the PPDU and the corresponding preamble detection event, but keep CCA busy state after the completion of the currently processed event. More...
 
void EndOfMpdu (Ptr< Event > event, Ptr< const WifiPsdu > psdu, size_t mpduIndex, Time relativeStart, Time mpduDuration)
 The last symbol of an MPDU in an A-MPDU has arrived. More...
 
void EndPreambleDetectionPeriod (Ptr< Event > event)
 End the preamble detection period. More...
 
void ErasePreambleEvent (Ptr< const WifiPpdu > ppdu, Time rxDuration)
 Erase the event corresponding to the PPDU from the list of preamble events, but consider it as noise after the completion of the current event. More...
 
uint16_t GetCenterFrequencyForChannelWidth (const WifiTxVector &txVector) const
 Get the center frequency of the channel corresponding the current TxVector rather than that of the supported channel width. More...
 
Ptr< const EventGetCurrentEvent () const
 Get the pointer to the current event (stored in WifiPhy). More...
 
const std::map< std::pair< uint64_t, WifiPreamble >, Ptr< Event > > & GetCurrentPreambleEvents () const
 Get the map of current preamble events (stored in WifiPhy). More...
 
Time GetDelayUntilCcaEnd (double thresholdDbm, const WifiSpectrumBandInfo &band)
 Return the delay until CCA busy is ended for a given sensitivity threshold (in dBm) and a given band. More...
 
uint16_t GetGuardBandwidth (uint16_t currentChannelWidth) const
 
SnrPer GetPhyHeaderSnrPer (WifiPpduField field, Ptr< Event > event) const
 Obtain the SNR and PER of the PPDU field from the WifiPhy's InterferenceHelper class. More...
 
WifiSpectrumBandInfo GetPrimaryBand (uint16_t bandWidth) const
 If the operating channel width is a multiple of 20 MHz, return the info corresponding to the primary channel of the given bandwidth (which must be a multiple of 20 MHz and not exceed the operating channel width). More...
 
double GetRandomValue () const
 Obtain a random value from the WifiPhy's generator. More...
 
std::pair< bool, SignalNoiseDbmGetReceptionStatus (Ptr< const WifiPsdu > psdu, Ptr< Event > event, uint16_t staId, Time relativeMpduStart, Time mpduDuration)
 Get the reception status for the provided MPDU and notify. More...
 
virtual uint16_t GetRxChannelWidth (const WifiTxVector &txVector) const
 Return the channel width used in the reception spectrum model. More...
 
double GetRxPowerWForPpdu (Ptr< Event > event) const
 Obtain the received power (W) for a given band. More...
 
WifiSpectrumBandInfo GetSecondaryBand (uint16_t bandWidth) const
 If the channel bonding is used, return the info corresponding to the secondary channel of the given bandwidth (which must be a multiple of 20 MHz and not exceed the operating channel width). More...
 
std::tuple< double, double, double > GetTxMaskRejectionParams () const
 
void NotifyInterferenceRxEndAndClear (bool reset)
 Notify WifiPhy's InterferenceHelper of the end of the reception, clear maps and end of MPDU event, and eventually reset WifiPhy. More...
 
void NotifyPayloadBegin (const WifiTxVector &txVector, const Time &payloadDuration)
 Fire the trace indicating that the PHY is starting to receive the payload of a PPDU. More...
 
void ScheduleEndOfMpdus (Ptr< Event > event)
 Schedule end of MPDUs events. More...
 
void StartPreambleDetectionPeriod (Ptr< Event > event)
 Start the preamble detection period. More...
 
void StartReceivePayload (Ptr< Event > event)
 Start receiving the PSDU (i.e. More...
 

Static Protected Member Functions

static uint64_t CalculateNonHtReferenceRate (WifiCodeRate codeRate, uint16_t constellationSize)
 Return the rate (in bps) of the non-HT Reference Rate which corresponds to the supplied code rate and constellation size. More...
 
static Time GetSymbolDuration (Time guardInterval)
 
static uint16_t GetUsableSubcarriers (uint16_t channelWidth)
 
- Static Protected Member Functions inherited from ns3::VhtPhy
static uint64_t CalculateNonHtReferenceRate (WifiCodeRate codeRate, uint16_t constellationSize)
 Return the rate (in bps) of the non-HT Reference Rate which corresponds to the supplied code rate and constellation size. More...
 
static uint16_t GetUsableSubcarriers (uint16_t channelWidth)
 
- Static Protected Member Functions inherited from ns3::HtPhy
static uint64_t CalculateDataRate (Time symbolDuration, uint16_t usableSubCarriers, uint16_t numberOfBitsPerSubcarrier, double codingRate, uint8_t nss)
 Calculates data rate from the supplied parameters. More...
 
static uint64_t CalculateNonHtReferenceRate (WifiCodeRate codeRate, uint16_t constellationSize)
 Return the rate (in bps) of the non-HT Reference Rate which corresponds to the supplied code rate and constellation size. More...
 
static uint64_t CalculatePhyRate (WifiCodeRate codeRate, uint64_t dataRate)
 Return the PHY rate corresponding to the supplied code rate and data rate. More...
 
static double GetCodeRatio (WifiCodeRate codeRate)
 Convert WifiCodeRate to a ratio, e.g., code ratio of WIFI_CODE_RATE_1_2 is 0.5. More...
 
static Time GetSymbolDuration (Time guardInterval)
 
static Time GetSymbolDuration (uint16_t channelWidth)
 
static uint16_t GetUsableSubcarriers (uint16_t channelWidth)
 
- Static Protected Member Functions inherited from ns3::OfdmPhy
static uint64_t CalculateDataRate (Time symbolDuration, uint16_t usableSubCarriers, uint16_t numberOfBitsPerSubcarrier, double codingRate)
 Calculates data rate from the supplied parameters. More...
 
static uint64_t CalculateDataRate (WifiCodeRate codeRate, uint16_t constellationSize, uint16_t channelWidth)
 Calculates data rate from the supplied parameters. More...
 
static uint64_t CalculatePhyRate (WifiCodeRate codeRate, uint64_t dataRate)
 Calculate the PHY rate in bps from code rate and data rate. More...
 
static double GetCodeRatio (WifiCodeRate codeRate)
 Convert WifiCodeRate to a ratio, e.g., code ratio of WIFI_CODE_RATE_1_2 is 0.5. More...
 
static Time GetSymbolDuration (uint16_t channelWidth)
 
static uint16_t GetUsableSubcarriers ()
 

Protected Attributes

std::map< uint16_t, EventIdm_beginMuPayloadRxEvents
 the beginning of the MU payload reception events (indexed by STA-ID) More...
 
uint64_t m_currentMuPpduUid
 UID of the HE MU or HE TB PPDU being received. More...
 
std::optional< WifiTxVectorm_currentTxVector
 If the STA is an AP STA, this holds the TXVECTOR of the PPDU that has been sent. More...
 
EndOfHeSigACallback m_endOfHeSigACallback
 end of HE-SIG-A callback More...
 
uint64_t m_previouslyTxPpduUid
 UID of the previously sent PPDU, used by AP to recognize response HE TB PPDUs. More...
 
std::optional< WifiTxVectorm_trigVector
 the TRIGVECTOR More...
 
std::optional< Timem_trigVectorExpirationTime
 expiration time of the TRIGVECTOR More...
 
- Protected Attributes inherited from ns3::HtPhy
uint8_t m_bssMembershipSelector
 the BSS membership selector More...
 
uint8_t m_maxMcsIndexPerSs
 the maximum MCS index per spatial stream as defined by the standard More...
 
uint8_t m_maxSupportedMcsIndexPerSs
 the maximum supported MCS index per spatial stream More...
 
- Protected Attributes inherited from ns3::PhyEntity
std::vector< EventIdm_endOfMpduEvents
 the end of MPDU events (only used for A-MPDUs) More...
 
std::vector< EventIdm_endPreambleDetectionEvents
 the end of preamble detection events More...
 
std::vector< EventIdm_endRxPayloadEvents
 the end of receive events (only one unless UL MU reception) More...
 
std::list< WifiModem_modeList
 the list of supported modes More...
 
std::map< UidStaIdPair, SignalNoiseDbmm_signalNoiseMap
 Map of the latest signal power and noise power in dBm (noise power includes the noise figure) More...
 
Ptr< WifiPhyStateHelperm_state
 Pointer to WifiPhyStateHelper of the WifiPhy (to make it reachable for child classes) More...
 
std::map< UidStaIdPair, std::vector< bool > > m_statusPerMpduMap
 Map of the current reception status per MPDU that is filled in as long as MPDUs are being processed by the PHY in case of an A-MPDU. More...
 
Ptr< WifiPhym_wifiPhy
 Pointer to the owning WifiPhy. More...
 

Private Member Functions

void BuildModeList () override
 Build mode list. More...
 
uint8_t GetNumberBccEncoders (const WifiTxVector &txVector) const override
 
std::vector< TimeGetPer20MHzDurations (const Ptr< const WifiPpdu > ppdu)
 Compute the per-20 MHz CCA durations vector that indicates for how long each 20 MHz subchannel (corresponding to the index of the element in the vector) is busy and where a zero duration indicates that the subchannel is idle. More...
 
Time GetSymbolDuration (const WifiTxVector &txVector) const override
 
Ptr< SpectrumValueGetTxPowerSpectralDensity (double txPowerW, Ptr< const WifiPpdu > ppdu, HePpdu::TxPsdFlag flag) const
 This is a helper function to create the TX PSD of the non-HE and HE portions. More...
 
void NotifyCcaBusy (Time duration, WifiChannelListType channelType, const std::vector< Time > &per20MHzDurations)
 Notify PHY state helper to switch to CCA busy state,. More...
 
void StartTxHePortion (Ptr< const WifiPpdu > ppdu, double txPowerDbm, Ptr< SpectrumValue > txPowerSpectrum, Time hePortionDuration)
 Start the transmission of the HE portion of the MU PPDU. More...
 

Static Private Member Functions

static Time GetValidPpduDuration (Time ppduDuration, const WifiTxVector &txVector, WifiPhyBand band)
 Given a PPDU duration value, the TXVECTOR used to transmit the PPDU and the PHY band, compute a valid PPDU duration considering the number and duration of symbols, the preamble duration and the guard interval. More...
 

Private Attributes

std::vector< Timem_lastPer20MHzDurations
 Hold the last per-20 MHz CCA durations vector. More...
 
Ptr< ObssPdAlgorithmm_obssPdAlgorithm
 OBSS-PD algorithm. More...
 
std::size_t m_rxHeTbPpdus
 Number of successfully received HE TB PPDUS. More...
 

Static Private Attributes

static const PpduFormats m_hePpduFormats
 HE PPDU formats. More...
 

Additional Inherited Members

- Protected Types inherited from ns3::PhyEntity
using CcaIndication = std::optional< std::pair< Time, WifiChannelListType > >
 CCA end time and its corresponding channel list type (can be std::nullopt if IDLE) More...
 
typedef std::pair< WifiCodeRate, uint16_t > CodeRateConstellationSizePair
 A pair to hold modulation information: code rate and constellation size. More...
 
typedef std::map< std::string, CodeRateConstellationSizePairModulationLookupTable
 A modulation lookup table using unique name of modulation as key. More...
 
typedef std::map< WifiPreamble, std::vector< WifiPpduField > > PpduFormats
 A map of PPDU field elements per preamble type. More...
 
typedef std::pair< uint64_t, uint16_t > UidStaIdPair
 A pair of a UID and STA_ID. More...
 
- Static Protected Attributes inherited from ns3::PhyEntity
static uint64_t m_globalPpduUid = 0
 Global counter of the PPDU UID. More...
 

Detailed Description

PHY entity for HE (11ax)

HE PHY is based on VHT PHY.

Refer to P802.11ax/D4.0, clause 27.

Definition at line 67 of file he-phy.h.

Member Typedef Documentation

◆ EndOfHeSigACallback

Callback upon end of HE-SIG-A.

arg1: Parameters of HE-SIG-A

Definition at line 75 of file he-phy.h.

Constructor & Destructor Documentation

◆ HePhy()

ns3::HePhy::HePhy ( bool  buildModeList = true)

Constructor for HE PHY.

Parameters
buildModeListflag used to add HE modes to list (disabled by child classes to only add child classes' modes)

Definition at line 78 of file he-phy.cc.

References BuildModeList(), HE_PHY, ns3::HtPhy::m_bssMembershipSelector, m_currentMuPpduUid, ns3::HtPhy::m_maxMcsIndexPerSs, ns3::HtPhy::m_maxSupportedMcsIndexPerSs, m_previouslyTxPpduUid, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ ~HePhy()

ns3::HePhy::~HePhy ( )
override

Destructor for HE PHY.

Definition at line 98 of file he-phy.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

◆ BuildModeList()

void ns3::HePhy::BuildModeList ( )
overrideprivatevirtual

Build mode list.

Should be redone whenever the maximum MCS index per spatial stream ,or any other important parameter having an impact on the MCS index (e.g. number of spatial streams for HT), changes.

Reimplemented from ns3::HtPhy.

Definition at line 104 of file he-phy.cc.

References CreateHeMcs(), HE_PHY, ns3::HtPhy::m_bssMembershipSelector, ns3::HtPhy::m_maxSupportedMcsIndexPerSs, ns3::PhyEntity::m_modeList, NS_ASSERT, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

Referenced by HePhy().

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

◆ BuildPpdu()

Ptr< WifiPpdu > ns3::HePhy::BuildPpdu ( const WifiConstPsduMap psdus,
const WifiTxVector txVector,
Time  ppduDuration 
)
overridevirtual

Build amendment-specific PPDU.

Parameters
psdusthe PHY payloads (PSDUs)
txVectorthe TXVECTOR that was used for the PPDU
ppduDurationthe transmission duration of the PPDU
Returns
the amendment-specific WifiPpdu

Reimplemented from ns3::PhyEntity.

Definition at line 350 of file he-phy.cc.

References ns3::WifiPhy::GetOperatingChannel(), ns3::PhyEntity::m_wifiPhy, NS_LOG_FUNCTION, ObtainNextUid(), and ns3::HePpdu::PSD_NON_HE_PORTION.

+ Here is the call graph for this function:

◆ CalculateNonHeDurationForHeMu()

Time ns3::HePhy::CalculateNonHeDurationForHeMu ( const WifiTxVector txVector) const
virtual
Parameters
txVectorthe transmission parameters used for the HE MU PPDU
Returns
the duration of the non-HE portion of the HE MU PPDU.

Reimplemented in ns3::EhtPhy.

Definition at line 311 of file he-phy.cc.

References ns3::VhtPhy::GetDuration(), ns3::WIFI_PPDU_FIELD_NON_HT_HEADER, ns3::WIFI_PPDU_FIELD_PREAMBLE, ns3::WIFI_PPDU_FIELD_SIG_A, and ns3::WIFI_PPDU_FIELD_SIG_B.

Referenced by DoGetEvent(), and StartTx().

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

◆ CalculateNonHeDurationForHeTb()

Time ns3::HePhy::CalculateNonHeDurationForHeTb ( const WifiTxVector txVector) const
virtual
Parameters
txVectorthe transmission parameters used for the HE TB PPDU
Returns
the duration of the non-HE portion of the HE TB PPDU.

Reimplemented in ns3::EhtPhy.

Definition at line 302 of file he-phy.cc.

References ns3::VhtPhy::GetDuration(), ns3::WIFI_PPDU_FIELD_NON_HT_HEADER, ns3::WIFI_PPDU_FIELD_PREAMBLE, and ns3::WIFI_PPDU_FIELD_SIG_A.

Referenced by DoGetEvent(), and StartTx().

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

◆ CalculateNonHtReferenceRate()

uint64_t ns3::HePhy::CalculateNonHtReferenceRate ( WifiCodeRate  codeRate,
uint16_t  constellationSize 
)
staticprotected

Return the rate (in bps) of the non-HT Reference Rate which corresponds to the supplied code rate and constellation size.

Parameters
codeRatethe convolutional coding rate
constellationSizethe size of modulation constellation
Returns
the rate in bps.

To convert an HE MCS to its corresponding non-HT Reference Rate use the modulation and coding rate of the HT MCS and lookup in Table 10-10 of IEEE P802.11ax/D6.0.

Definition at line 1725 of file he-phy.cc.

References ns3::VhtPhy::CalculateNonHtReferenceRate(), NS_FATAL_ERROR, ns3::WIFI_CODE_RATE_3_4, and ns3::WIFI_CODE_RATE_5_6.

Referenced by ns3::EhtPhy::CalculateNonHtReferenceRate(), and GetNonHtReferenceRate().

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

◆ CalculateTxDuration()

Time ns3::HePhy::CalculateTxDuration ( WifiConstPsduMap  psduMap,
const WifiTxVector txVector,
WifiPhyBand  band 
) const
overridevirtual
Parameters
psduMapthe PSDU(s) to transmit indexed by STA-ID
txVectorthe TXVECTOR used for the transmission of the PPDU
bandthe frequency band being used
Returns
the total amount of time this PHY will stay busy for the transmission of the PPDU

Reimplemented from ns3::PhyEntity.

Definition at line 1504 of file he-phy.cc.

References ns3::WifiPhy::CalculateTxDuration(), ConvertLSigLengthToHeTbPpduDuration(), ns3::WifiTxVector::GetHeMuUserInfoMap(), ns3::WifiTxVector::GetLength(), ns3::WifiTxVector::GetModulationClass(), ns3::WifiTxVector::IsDlMu(), ns3::Time::IsStrictlyPositive(), ns3::WifiTxVector::IsUlMu(), NS_ABORT_MSG_IF, NS_ASSERT, ns3::Seconds(), and ns3::WIFI_MOD_CLASS_HE.

+ Here is the call graph for this function:

◆ CancelAllEvents()

void ns3::HePhy::CancelAllEvents ( )
overridevirtual

Cancel and clear all running events.

Reimplemented from ns3::PhyEntity.

Definition at line 412 of file he-phy.cc.

References ns3::PhyEntity::CancelAllEvents(), m_beginMuPayloadRxEvents, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ CanStartRx()

bool ns3::HePhy::CanStartRx ( Ptr< const WifiPpdu ppdu) const
overridevirtual

Determine whether the PHY shall issue a PHY-RXSTART.indication primitive in response to a given PPDU.

Parameters
ppduthe PPDU
Returns
true if the PHY shall issue a PHY-RXSTART.indication primitive in response to a PPDU, false otherwise

Reimplemented from ns3::PhyEntity.

Definition at line 1774 of file he-phy.cc.

References ns3::AP, ns3::PhyEntity::CanStartRx(), ns3::WifiPhy::GetDevice(), ns3::WifiNetDevice::GetMac(), ns3::PhyEntity::m_wifiPhy, and third::mac.

+ Here is the call graph for this function:

◆ ConvertHeRuSubcarriers()

WifiSpectrumBandIndices ns3::HePhy::ConvertHeRuSubcarriers ( uint16_t  bandWidth,
uint16_t  guardBandwidth,
uint32_t  subcarrierSpacing,
HeRu::SubcarrierRange  subcarrierRange,
uint8_t  bandIndex = 0 
)
static
Parameters
bandWidththe width (MHz) of the band used for the OFDMA transmission. Must be a multiple of 20 MHz
guardBandwidthwidth of the guard band (MHz)
subcarrierSpacingthe subcarrier spacing (MHz)
subcarrierRangethe subcarrier range of the HE RU
bandIndexthe index (starting at 0) of the band within the operating channel
Returns
the converted subcarriers

This is a helper function to convert HE RU subcarriers, which are relative to the center frequency subcarrier, to the indexes used by the Spectrum model.

Definition at line 1819 of file he-phy.cc.

References NS_FATAL_ERROR.

Referenced by ns3::SpectrumWifiPhy::GetHeRuBands(), GetNonOfdmaBand(), GetRuBandForRx(), and GetRuBandForTx().

+ Here is the caller graph for this function:

◆ ConvertHeTbPpduDurationToLSigLength()

std::pair< uint16_t, Time > ns3::HePhy::ConvertHeTbPpduDurationToLSigLength ( Time  ppduDuration,
const WifiTxVector txVector,
WifiPhyBand  band 
)
static

Compute the L-SIG length value corresponding to the given HE TB PPDU duration.

If the latter is not a feasible duration (considering the selected guard interval), a proper duration is computed and returned along with the L-SIG length value.

Parameters
ppduDurationthe duration of the HE TB PPDU
txVectorthe TXVECTOR used for the transmission of this HE TB PPDU
bandthe frequency band being used
Returns
the L-SIG length value and the adjusted HE TB PPDU duration.

Definition at line 269 of file he-phy.cc.

References ns3::WifiTxVector::GetModulationClass(), ns3::Time::GetNanoSeconds(), GetValidPpduDuration(), ns3::WifiTxVector::IsUlMu(), two-ray-to-three-gpp-ch-calibration::m, NS_ABORT_IF, ns3::WIFI_MOD_CLASS_HE, and ns3::WIFI_PHY_BAND_2_4GHZ.

Referenced by ns3::RrMultiUserScheduler::TrySendingBasicTf(), and ns3::RrMultiUserScheduler::TrySendingBsrpTf().

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

◆ ConvertLSigLengthToHeTbPpduDuration()

Time ns3::HePhy::ConvertLSigLengthToHeTbPpduDuration ( uint16_t  length,
const WifiTxVector txVector,
WifiPhyBand  band 
)
static
Parameters
lengththe L-SIG length value
txVectorthe TXVECTOR used for the transmission of this HE TB PPDU
bandthe frequency band being used
Returns
the duration of the HE TB PPDU corresponding to that L-SIG length value.

Definition at line 288 of file he-phy.cc.

References ns3::WifiTxVector::GetModulationClass(), GetValidPpduDuration(), ns3::WifiTxVector::IsUlMu(), two-ray-to-three-gpp-ch-calibration::m, ns3::MicroSeconds(), NS_ABORT_IF, ns3::WIFI_MOD_CLASS_HE, and ns3::WIFI_PHY_BAND_2_4GHZ.

Referenced by CalculateTxDuration(), DoStartReceivePayload(), and ns3::HeFrameExchangeManager::SendPsduMapWithProtection().

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

◆ CreateHeMcs()

WifiMode ns3::HePhy::CreateHeMcs ( uint8_t  index)
static

Create and return the HE MCS corresponding to the provided index.

This method binds all the callbacks used by WifiMode.

Parameters
indexthe index of the MCS
Returns
an HE MCS

Definition at line 1597 of file he-phy.cc.

References ns3::WifiModeFactory::CreateWifiMcs(), GetCodeRate(), GetConstellationSize(), GetDataRateFromTxVector(), GetNonHtReferenceRate(), GetPhyRateFromTxVector(), IsAllowed(), ns3::MakeBoundCallback(), ns3::MakeCallback(), NS_ASSERT_MSG, nlohmann::to_string(), and ns3::WIFI_MOD_CLASS_HE.

Referenced by BuildModeList().

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

◆ DoAbortCurrentReception()

void ns3::HePhy::DoAbortCurrentReception ( WifiPhyRxfailureReason  reason)
overrideprotectedvirtual

Perform amendment-specific actions before aborting the current reception.

Parameters
reasonthe reason the reception is aborted

Reimplemented from ns3::PhyEntity.

Definition at line 424 of file he-phy.cc.

References ns3::PhyEntity::DoAbortCurrentReception(), ns3::PhyEntity::m_endOfMpduEvents, NS_LOG_FUNCTION, and ns3::OBSS_PD_CCA_RESET.

+ Here is the call graph for this function:

◆ DoEndReceivePayload()

void ns3::HePhy::DoEndReceivePayload ( Ptr< const WifiPpdu ppdu)
overrideprotectedvirtual

Perform amendment-specific actions at the end of the reception of the payload.

Parameters
ppduthe incoming PPDU

Reimplemented from ns3::PhyEntity.

Definition at line 887 of file he-phy.cc.

References ns3::PhyEntity::DoEndReceivePayload(), ns3::WifiPhy::GetLastRxEndTime(), m_currentMuPpduUid, ns3::PhyEntity::m_endRxPayloadEvents, m_rxHeTbPpdus, ns3::PhyEntity::m_state, ns3::PhyEntity::m_wifiPhy, ns3::PhyEntity::NotifyInterferenceRxEndAndClear(), ns3::Simulator::Now(), NS_ASSERT, NS_LOG_FUNCTION, and ns3::WIFI_PPDU_TYPE_UL_MU.

+ Here is the call graph for this function:

◆ DoGetEvent()

Ptr< Event > ns3::HePhy::DoGetEvent ( Ptr< const WifiPpdu ppdu,
RxPowerWattPerChannelBand rxPowersW 
)
overrideprotectedvirtual

Get the event corresponding to the incoming PPDU.

We store all incoming preamble events, perform amendment-specific actions, and a decision is made at the end of the preamble detection window.

Parameters
ppduthe incoming PPDU
rxPowersWthe receive power in W per band
Returns
the event holding the incoming PPDU's information

Reimplemented from ns3::PhyEntity.

Definition at line 457 of file he-phy.cc.

References ns3::PhyEntity::AddPreambleEvent(), CalculateNonHeDurationForHeMu(), CalculateNonHeDurationForHeTb(), ns3::PhyEntity::CreateInterferenceEvent(), ns3::PhyEntity::DoGetEvent(), ns3::PhyEntity::GetCurrentPreambleEvents(), HandleRxPpduWithSameContent(), m_previouslyTxPpduUid, NS_LOG_DEBUG, ns3::WIFI_PPDU_TYPE_DL_MU, and ns3::WIFI_PPDU_TYPE_UL_MU.

+ Here is the call graph for this function:

◆ DoResetReceive()

void ns3::HePhy::DoResetReceive ( Ptr< Event event)
overrideprotectedvirtual

Perform amendment-specific actions before resetting PHY at the end of the PPDU under reception after it has failed the PHY header.

Parameters
eventthe event holding incoming PPDU's information

Reimplemented from ns3::PhyEntity.

Definition at line 442 of file he-phy.cc.

References m_beginMuPayloadRxEvents, ns3::Simulator::Now(), NS_ASSERT, NS_LOG_FUNCTION, and ns3::WIFI_PPDU_TYPE_UL_MU.

+ Here is the call graph for this function:

◆ DoStartReceivePayload()

Time ns3::HePhy::DoStartReceivePayload ( Ptr< Event event)
overrideprotectedvirtual

◆ GetAddressedPsduInPpdu()

Ptr< const WifiPsdu > ns3::HePhy::GetAddressedPsduInPpdu ( Ptr< const WifiPpdu ppdu) const
overridevirtual

Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU).

Parameters
ppduthe PPDU to extract the PSDU from
Returns
the PSDU addressed to that PHY

Reimplemented from ns3::PhyEntity.

Definition at line 545 of file he-phy.cc.

References ns3::PhyEntity::GetAddressedPsduInPpdu(), GetBssColor(), GetStaId(), NS_ASSERT, ns3::WIFI_PPDU_TYPE_DL_MU, and ns3::WIFI_PPDU_TYPE_UL_MU.

Referenced by HandleRxPpduWithSameContent(), ProcessSigA(), ProcessSigB(), and StartReceiveMuPayload().

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

◆ GetBssColor()

uint8_t ns3::HePhy::GetBssColor ( ) const
Returns
the BSS color of this PHY.

Definition at line 557 of file he-phy.cc.

References ns3::WifiPhy::GetDevice(), ns3::WifiNetDevice::GetHeConfiguration(), and ns3::PhyEntity::m_wifiPhy.

Referenced by GetAddressedPsduInPpdu(), and ProcessSigA().

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

◆ GetCcaThreshold()

double ns3::HePhy::GetCcaThreshold ( const Ptr< const WifiPpdu ppdu,
WifiChannelListType  channelType 
) const
overridevirtual

Return the CCA threshold in dBm for a given channel type.

If the channel type is not provided, the default CCA threshold is returned.

Parameters
ppduthe PPDU that is being received
channelTypethe channel type
Returns
the CCA threshold in dBm

Reimplemented from ns3::PhyEntity.

Definition at line 1096 of file he-phy.cc.

References ns3::VhtPhy::GetCcaThreshold(), ns3::ObssPdAlgorithm::GetObssPdLevel(), m_obssPdAlgorithm, max, and ns3::WIFI_CHANLIST_PRIMARY.

+ Here is the call graph for this function:

◆ GetCenterFrequencyForNonHePart()

uint16_t ns3::HePhy::GetCenterFrequencyForNonHePart ( const WifiTxVector txVector,
uint16_t  staId 
) const

Get the center frequency of the non-HE portion of the current TxVector for the given STA-ID.

Note this method is only to be used for UL MU.

Parameters
txVectorthe TXVECTOR that has the RU allocation
staIdthe STA-ID of the station taking part of the UL MU
Returns
the center frequency in MHz corresponding to the non-HE portion of the HE TB PPDU

Definition at line 1412 of file he-phy.cc.

References ns3::HeRu::FindOverlappingRu(), ns3::PhyEntity::GetCenterFrequencyForChannelWidth(), ns3::WifiTxVector::GetChannelWidth(), ns3::WifiTxVector::GetModulationClass(), GetNonOfdmaWidth(), ns3::WifiPhy::GetOperatingChannel(), ns3::HeRu::RuSpec::GetPhyIndex(), ns3::WifiPhyOperatingChannel::GetPrimaryChannelIndex(), ns3::WifiTxVector::GetRu(), ns3::HeRu::GetRuType(), ns3::WifiTxVector::IsUlMu(), ns3::PhyEntity::m_wifiPhy, NS_ASSERT, NS_LOG_FUNCTION, and ns3::WIFI_MOD_CLASS_HE.

Referenced by GetTxPowerSpectralDensity().

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

◆ GetChannelWidthAndBand()

std::pair< uint16_t, WifiSpectrumBandInfo > ns3::HePhy::GetChannelWidthAndBand ( const WifiTxVector txVector,
uint16_t  staId 
) const
overrideprotectedvirtual

Get the channel width and band to use (will be overloaded by child classes).

Parameters
txVectorthe transmission parameters
staIdthe station ID of the PSDU
Returns
a pair of channel width (MHz) and band

Reimplemented from ns3::PhyEntity.

Definition at line 972 of file he-phy.cc.

References ns3::HeRu::GetBandwidth(), ns3::PhyEntity::GetChannelWidthAndBand(), ns3::WifiTxVector::GetRu(), GetRuBandForRx(), ns3::HeRu::RuSpec::GetRuType(), and ns3::WifiTxVector::IsMu().

+ Here is the call graph for this function:

◆ GetCodeRate()

WifiCodeRate ns3::HePhy::GetCodeRate ( uint8_t  mcsValue)
static

Return the coding rate corresponding to the supplied HE MCS index.

This function is used as a callback for WifiMode operation.

Parameters
mcsValuethe MCS index
Returns
the coding rate.

Definition at line 1613 of file he-phy.cc.

References ns3::VhtPhy::GetCodeRate(), ns3::WIFI_CODE_RATE_3_4, and ns3::WIFI_CODE_RATE_5_6.

Referenced by CreateHeMcs(), ns3::EhtPhy::GetCodeRate(), GetDataRate(), GetNonHtReferenceRate(), and GetPhyRate().

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

◆ GetConstellationSize()

uint16_t ns3::HePhy::GetConstellationSize ( uint8_t  mcsValue)
static

Return the constellation size corresponding to the supplied HE MCS index.

This function is used as a callback for WifiMode operation.

Parameters
mcsValuethe MCS index
Returns
the size of modulation constellation.

Definition at line 1627 of file he-phy.cc.

References ns3::VhtPhy::GetConstellationSize().

Referenced by CreateHeMcs(), ns3::EhtPhy::GetConstellationSize(), GetDataRate(), and GetNonHtReferenceRate().

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

◆ GetCurrentHeTbPpduUid()

uint64_t ns3::HePhy::GetCurrentHeTbPpduUid ( ) const
Returns
the UID of the HE TB PPDU being received

Definition at line 1072 of file he-phy.cc.

References m_currentMuPpduUid.

◆ GetDataRate()

uint64_t ns3::HePhy::GetDataRate ( uint8_t  mcsValue,
uint16_t  channelWidth,
uint16_t  guardInterval,
uint8_t  nss 
)
static

Return the data rate corresponding to the supplied HE MCS index, channel width, guard interval, and number of spatial streams.

Parameters
mcsValuethe MCS index
channelWidththe channel width in MHz
guardIntervalthe guard interval duration in nanoseconds
nssthe number of spatial streams
Returns
the data bit rate in bps.

Definition at line 1676 of file he-phy.cc.

References ns3::HtPhy::CalculateDataRate(), GetCodeRate(), ns3::HtPhy::GetCodeRatio(), GetConstellationSize(), GetSymbolDuration(), ns3::OfdmPhy::GetUsableSubcarriers(), ns3::NanoSeconds(), and NS_ASSERT.

Referenced by GetDataRateFromTxVector(), and GetPhyRate().

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

◆ GetDataRateFromTxVector()

uint64_t ns3::HePhy::GetDataRateFromTxVector ( const WifiTxVector txVector,
uint16_t  staId = SU_STA_ID 
)
static

Return the data rate corresponding to the supplied TXVECTOR for the STA-ID.

Parameters
txVectorthe TXVECTOR used for the transmission
staIdthe station ID for MU (unused if SU)
Returns
the data bit rate in bps.

Definition at line 1662 of file he-phy.cc.

References ns3::HeRu::GetBandwidth(), ns3::WifiTxVector::GetChannelWidth(), GetDataRate(), ns3::WifiTxVector::GetGuardInterval(), ns3::WifiMode::GetMcsValue(), ns3::WifiTxVector::GetMode(), ns3::WifiTxVector::GetNss(), ns3::WifiTxVector::GetRu(), ns3::HeRu::RuSpec::GetRuType(), and ns3::WifiTxVector::IsMu().

Referenced by CreateHeMcs().

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

◆ GetHeMcs()

WifiMode ns3::HePhy::GetHeMcs ( uint8_t  index)
static

Return the HE MCS corresponding to the provided index.

Parameters
indexthe index of the MCS
Returns
an HE MCS

Definition at line 1548 of file he-phy.cc.

References CASE, and NS_ABORT_MSG.

Referenced by ns3::WifiTxVector::GetMode(), InitializeModes(), and ns3::HePpdu::SetTxVectorFromPhyHeaders().

+ Here is the caller graph for this function:

◆ GetHeMcs0()

static WifiMode ns3::HePhy::GetHeMcs0 ( )
static

Return MCS 0 from HE MCS values.

Returns
MCS 0 from HE MCS values

◆ GetHeMcs1()

static WifiMode ns3::HePhy::GetHeMcs1 ( )
static

Return MCS 1 from HE MCS values.

Returns
MCS 1 from HE MCS values

◆ GetHeMcs10()

static WifiMode ns3::HePhy::GetHeMcs10 ( )
static

Return MCS 10 from HE MCS values.

Returns
MCS 10 from HE MCS values

◆ GetHeMcs11()

static WifiMode ns3::HePhy::GetHeMcs11 ( )
static

Return MCS 11 from HE MCS values.

Returns
MCS 11 from HE MCS values

◆ GetHeMcs2()

static WifiMode ns3::HePhy::GetHeMcs2 ( )
static

Return MCS 2 from HE MCS values.

Returns
MCS 2 from HE MCS values

◆ GetHeMcs3()

static WifiMode ns3::HePhy::GetHeMcs3 ( )
static

Return MCS 3 from HE MCS values.

Returns
MCS 3 from HE MCS values

◆ GetHeMcs4()

static WifiMode ns3::HePhy::GetHeMcs4 ( )
static

Return MCS 4 from HE MCS values.

Returns
MCS 4 from HE MCS values

◆ GetHeMcs5()

static WifiMode ns3::HePhy::GetHeMcs5 ( )
static

Return MCS 5 from HE MCS values.

Returns
MCS 5 from HE MCS values

◆ GetHeMcs6()

static WifiMode ns3::HePhy::GetHeMcs6 ( )
static

Return MCS 6 from HE MCS values.

Returns
MCS 6 from HE MCS values

◆ GetHeMcs7()

static WifiMode ns3::HePhy::GetHeMcs7 ( )
static

Return MCS 7 from HE MCS values.

Returns
MCS 7 from HE MCS values

◆ GetHeMcs8()

static WifiMode ns3::HePhy::GetHeMcs8 ( )
static

Return MCS 8 from HE MCS values.

Returns
MCS 8 from HE MCS values

◆ GetHeMcs9()

static WifiMode ns3::HePhy::GetHeMcs9 ( )
static

Return MCS 9 from HE MCS values.

Returns
MCS 9 from HE MCS values

◆ GetLSigDuration()

Time ns3::HePhy::GetLSigDuration ( WifiPreamble  preamble) const
overridevirtual
Parameters
preamblethe type of preamble
Returns
the duration of the L-SIG (non-HT header) field
See also
WIFI_PPDU_FIELD_NON_HT_HEADER

Reimplemented from ns3::HtPhy.

Definition at line 185 of file he-phy.cc.

References ns3::MicroSeconds().

+ Here is the call graph for this function:

◆ GetMaxDelayPpduSameUid()

Time ns3::HePhy::GetMaxDelayPpduSameUid ( const WifiTxVector txVector)
overrideprotectedvirtual

Obtain the maximum time between two PPDUs with the same UID to consider they are identical and their power can be added construtively.

Parameters
txVectorthe TXVECTOR used for the transmission of the PPDUs
Returns
the maximum time between two PPDUs with the same UID to decode them

Reimplemented from ns3::PhyEntity.

Definition at line 1292 of file he-phy.cc.

References ns3::WifiPhy::GetDevice(), ns3::VhtPhy::GetDuration(), ns3::WifiNetDevice::GetHeConfiguration(), ns3::PhyEntity::m_wifiPhy, ns3::Min(), NS_ASSERT, and ns3::WIFI_PPDU_FIELD_TRAINING.

+ Here is the call graph for this function:

◆ GetMaxPsduSize()

uint32_t ns3::HePhy::GetMaxPsduSize ( ) const
overrideprotectedvirtual

Get the maximum PSDU size in bytes.

Returns
the maximum PSDU size in bytes

Implements ns3::PhyEntity.

Definition at line 1768 of file he-phy.cc.

◆ GetMeasurementChannelWidth()

uint16_t ns3::HePhy::GetMeasurementChannelWidth ( const Ptr< const WifiPpdu ppdu) const
overridevirtual

Return the channel width used to measure the RSSI.

Parameters
ppduthe PPDU that is being received
Returns
the channel width (in MHz) used for RSSI measurement

The PHY shall not issue a PHY-RXSTART.indication primitive in response to a PPDU that does not overlap the primary channel unless the PHY at an AP receives the HE TB PPDU solicited by the AP. For the HE TB PPDU solicited by the AP, the PHY shall issue a PHY-RXSTART.indication primitive for a PPDU received in the primary or at the secondary 20 MHz channel, the secondary 40 MHz channel, or the secondary 80 MHz channel.

Implements ns3::PhyEntity.

Definition at line 1078 of file he-phy.cc.

References ns3::OfdmPhy::GetMeasurementChannelWidth(), and m_previouslyTxPpduUid.

+ Here is the call graph for this function:

◆ GetNonHtReferenceRate()

uint64_t ns3::HePhy::GetNonHtReferenceRate ( uint8_t  mcsValue)
static

Calculate the rate in bps of the non-HT Reference Rate corresponding to the supplied HE MCS index.

This function calls CalculateNonHtReferenceRate and is used as a callback for WifiMode operation.

Parameters
mcsValuethe HE MCS index
Returns
the rate in bps of the non-HT Reference Rate.

Definition at line 1717 of file he-phy.cc.

References CalculateNonHtReferenceRate(), GetCodeRate(), and GetConstellationSize().

Referenced by CreateHeMcs().

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

◆ GetNonOfdmaBand()

WifiSpectrumBandInfo ns3::HePhy::GetNonOfdmaBand ( const WifiTxVector txVector,
uint16_t  staId 
) const

◆ GetNonOfdmaWidth()

uint16_t ns3::HePhy::GetNonOfdmaWidth ( HeRu::RuSpec  ru) const

Get the width in MHz of the non-OFDMA portion of an HE TB PPDU.

Parameters
ruthe RU in which the HE TB PPDU is sent
Returns
the width in MHz of the non-OFDMA portion of an HE TB PPDU

Definition at line 1060 of file he-phy.cc.

References ns3::HeRu::GetBandwidth(), ns3::HeRu::RuSpec::GetIndex(), ns3::HeRu::RuSpec::GetRuType(), and ns3::HeRu::RU_26_TONE.

Referenced by GetCenterFrequencyForNonHePart(), and GetNonOfdmaBand().

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

◆ GetNumberBccEncoders()

uint8_t ns3::HePhy::GetNumberBccEncoders ( const WifiTxVector txVector) const
overrideprivatevirtual
Parameters
txVectorthe transmission parameters
Returns
the number of BCC encoders used for data encoding

Add an encoder when crossing maxRatePerCoder frontier.

The value of 320 Mbps and 350 Mbps for normal GI and short GI (resp.) were obtained by observing the rates for which Nes was incremented in tables 19-27 to 19-41 of IEEE 802.11-2016.

Reimplemented from ns3::HtPhy.

Definition at line 321 of file he-phy.cc.

◆ GetObssPdAlgorithm()

Ptr< ObssPdAlgorithm > ns3::HePhy::GetObssPdAlgorithm ( ) const

Gets the OBSS-PD algorithm.

Returns
the OBSS-PD algorithm

Definition at line 707 of file he-phy.cc.

References m_obssPdAlgorithm.

◆ GetPer20MHzDurations()

std::vector< Time > ns3::HePhy::GetPer20MHzDurations ( const Ptr< const WifiPpdu ppdu)
private

Compute the per-20 MHz CCA durations vector that indicates for how long each 20 MHz subchannel (corresponding to the index of the element in the vector) is busy and where a zero duration indicates that the subchannel is idle.

The vector is non-empty if the operational channel width is larger than 20 MHz.

Parameters
ppduthe incoming PPDU or nullptr for any signal
Returns
the per-20 MHz CCA durations vector

27.3.20.6.5 Per 20 MHz CCA sensitivity: If the operating channel width is greater than 20 MHz and the PHY issues a PHY-CCA.indication primitive, the PHY shall set the per20bitmap to indicate the busy/idle status of each 20 MHz subchannel.

A signal is present on the 20 MHz subchannel at or above a threshold of –62 dBm at the receiver's antenna(s). The PHY shall indicate that the 20 MHz subchannel is busy a period aCCATime after the signal starts and shall continue to indicate the 20 MHz subchannel is busy while the threshold continues to be exceeded.

A 20 MHz non-HT, HT_MF, HT_GF, VHT, or HE PPDU at or above max(–72 dBm, OBSS_ PDlevel) at the receiver's antenna(s) is present on the 20 MHz subchannel. The PHY shall indicate that the 20 MHz subchannel is busy with > 90% probability within a period aCCAMidTime.

The 20 MHz subchannel is in a channel on which a 40 MHz non-HT duplicate, HT_MF, HT_GF, VHT or HE PPDU at or above max(–72 dBm, OBSS_PDlevel + 3 dB) at the receiver's antenna(s) is present. The PHY shall indicate that the 20 MHz subchannel is busy with > 90% probability within a period aCCAMidTime.

The 20 MHz subchannel is in a channel on which an 80 MHz non-HT duplicate, VHT or HE PPDU at or above max(–69 dBm, OBSS_PDlevel + 6 dB) at the receiver's antenna(s) is present. The PHY shall indicate that the 20 MHz subchannel is busy with > 90% probability within a period aCCAMidTime.

Definition at line 1174 of file he-phy.cc.

References ns3::WifiPhyOperatingChannel::GetAll20MHzChannelIndicesInPrimary(), ns3::WifiPhy::GetBand(), ns3::WifiPhy::GetChannelWidth(), ns3::PhyEntity::GetDelayUntilCcaEnd(), ns3::WifiPhy::GetFrequency(), ns3::ObssPdAlgorithm::GetObssPdLevel(), ns3::WifiPhy::GetOperatingChannel(), m_obssPdAlgorithm, ns3::PhyEntity::m_wifiPhy, max, NS_ASSERT_MSG, and NS_LOG_FUNCTION.

Referenced by NotifyCcaBusy(), and SwitchMaybeToCcaBusy().

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

◆ GetPhyRate()

uint64_t ns3::HePhy::GetPhyRate ( uint8_t  mcsValue,
uint16_t  channelWidth,
uint16_t  guardInterval,
uint8_t  nss 
)
static

Return the PHY rate corresponding to the supplied HE MCS index, channel width, guard interval, and number of spatial stream.

This function calls HtPhy::CalculatePhyRate and is mainly used as a callback for WifiMode operation.

Parameters
mcsValuethe HE MCS index
channelWidththe considered channel width in MHz
guardIntervalthe considered guard interval duration in nanoseconds
nssthe considered number of stream
Returns
the physical bit rate of this signal in bps.

Definition at line 1640 of file he-phy.cc.

References ns3::HtPhy::CalculatePhyRate(), GetCodeRate(), and GetDataRate().

Referenced by GetPhyRateFromTxVector().

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

◆ GetPhyRateFromTxVector()

uint64_t ns3::HePhy::GetPhyRateFromTxVector ( const WifiTxVector txVector,
uint16_t  staId = SU_STA_ID 
)
static

Return the PHY rate corresponding to the supplied TXVECTOR for the STA-ID.

Parameters
txVectorthe TXVECTOR used for the transmission
staIdthe station ID for MU (unused if SU)
Returns
the physical bit rate of this signal in bps.

Definition at line 1648 of file he-phy.cc.

References ns3::HeRu::GetBandwidth(), ns3::WifiTxVector::GetChannelWidth(), ns3::WifiTxVector::GetGuardInterval(), ns3::WifiMode::GetMcsValue(), ns3::WifiTxVector::GetMode(), ns3::WifiTxVector::GetNss(), GetPhyRate(), ns3::WifiTxVector::GetRu(), ns3::HeRu::RuSpec::GetRuType(), and ns3::WifiTxVector::IsMu().

Referenced by CreateHeMcs().

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

◆ GetPpduFormats()

const PhyEntity::PpduFormats & ns3::HePhy::GetPpduFormats ( ) const
overridevirtual

Return the PPDU formats of the PHY.

Returns
the PPDU formats of the PHY

Implements ns3::PhyEntity.

Definition at line 179 of file he-phy.cc.

References m_hePpduFormats.

◆ GetRuBandForRx()

WifiSpectrumBandInfo ns3::HePhy::GetRuBandForRx ( const WifiTxVector txVector,
uint16_t  staId 
) const

Get the band in the RX spectrum associated with the RU used by the PSDU transmitted to/by a given STA in a DL MU PPDU/HE TB PPDU.

Parameters
txVectorthe TXVECTOR used for the transmission
staIdthe STA-ID of the station
Returns
the RU band in the RX spectrum

Definition at line 1008 of file he-phy.cc.

References ConvertHeRuSubcarriers(), ns3::WifiPhy::ConvertIndicesToFrequencies(), two-ray-to-three-gpp-ch-calibration::frequencies, ns3::WifiPhy::GetChannelWidth(), ns3::WifiTxVector::GetChannelWidth(), ns3::PhyEntity::GetGuardBandwidth(), ns3::WifiPhy::GetOperatingChannel(), ns3::HeRu::RuSpec::GetPhyIndex(), ns3::WifiPhyOperatingChannel::GetPrimaryChannelIndex(), ns3::WifiTxVector::GetRu(), ns3::HeRu::RuSpec::GetRuType(), ns3::HeRu::GetSubcarrierGroup(), ns3::WifiPhy::GetSubcarrierSpacing(), ns3::WifiTxVector::IsMu(), ns3::PhyEntity::m_wifiPhy, and NS_ASSERT.

Referenced by GetChannelWidthAndBand().

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

◆ GetRuBandForTx()

WifiSpectrumBandInfo ns3::HePhy::GetRuBandForTx ( const WifiTxVector txVector,
uint16_t  staId 
) const

Get the band in the TX spectrum associated with the RU used by the PSDU transmitted to/by a given STA in a DL MU PPDU/HE TB PPDU.

Parameters
txVectorthe TXVECTOR used for the transmission
staIdthe STA-ID of the station
Returns
the RU band in the TX spectrum

Definition at line 986 of file he-phy.cc.

References ConvertHeRuSubcarriers(), ns3::WifiPhy::ConvertIndicesToFrequencies(), two-ray-to-three-gpp-ch-calibration::frequencies, ns3::WifiTxVector::GetChannelWidth(), ns3::PhyEntity::GetGuardBandwidth(), ns3::WifiPhy::GetOperatingChannel(), ns3::HeRu::RuSpec::GetPhyIndex(), ns3::WifiPhyOperatingChannel::GetPrimaryChannelIndex(), ns3::WifiTxVector::GetRu(), ns3::HeRu::RuSpec::GetRuType(), ns3::HeRu::GetSubcarrierGroup(), ns3::WifiPhy::GetSubcarrierSpacing(), ns3::WifiTxVector::IsMu(), ns3::PhyEntity::m_wifiPhy, and NS_ASSERT.

Referenced by GetTxPowerSpectralDensity().

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

◆ GetRxPpduFromTxPpdu()

Ptr< const WifiPpdu > ns3::HePhy::GetRxPpduFromTxPpdu ( Ptr< const WifiPpdu ppdu)
overridevirtual

The WifiPpdu from the TX PHY is received by each RX PHY attached to the same channel.

By default and for performance reasons, all RX PHYs will work on the same WifiPpdu instance from TX instead of a copy of it. Child classes can change that behavior and do a copy and/or change the content of the parameters stored in WifiPpdu.

Parameters
ppduthe WifiPpdu transmitted by the TX PHY
Returns
the WifiPpdu to be used by the RX PHY

Reimplemented from ns3::PhyEntity.

Definition at line 1793 of file he-phy.cc.

References ns3::OfdmPhy::GetRxPpduFromTxPpdu(), m_trigVector, m_trigVectorExpirationTime, ns3::Simulator::Now(), NS_ASSERT, and ns3::WIFI_PPDU_TYPE_UL_MU.

+ Here is the call graph for this function:

◆ GetSigADuration()

Time ns3::HePhy::GetSigADuration ( WifiPreamble  preamble) const
overridevirtual
Parameters
preamblethe type of preamble
Returns
the duration of the SIG-A field

Reimplemented from ns3::VhtPhy.

Definition at line 212 of file he-phy.cc.

References ns3::MicroSeconds(), and ns3::WIFI_PREAMBLE_HE_ER_SU.

Referenced by ns3::EhtPhy::GetDuration().

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

◆ GetSigAMode()

WifiMode ns3::HePhy::GetSigAMode ( ) const
overridevirtual
Returns
the WifiMode used for the SIG-A field

Reimplemented from ns3::VhtPhy.

Definition at line 140 of file he-phy.cc.

References ns3::VhtPhy::GetVhtMcs0().

Referenced by ns3::EhtPhy::GetSigMode(), and GetSigMode().

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

◆ GetSigBDuration()

Time ns3::HePhy::GetSigBDuration ( const WifiTxVector txVector) const
overridevirtual
Parameters
txVectorthe transmission parameters
Returns
the duration of the SIG-B field

Reimplemented from ns3::VhtPhy.

Definition at line 236 of file he-phy.cc.

References ns3::FemtoSeconds(), ns3::WifiMode::GetDataRate(), GetSigBMode(), GetSigBSize(), and ns3::MicroSeconds().

Referenced by ns3::EhtPhy::GetDuration().

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

◆ GetSigBMode()

WifiMode ns3::HePhy::GetSigBMode ( const WifiTxVector txVector) const
overridevirtual
Parameters
txVectorthe transmission parameters
Returns
the WifiMode used for the SIG-B field

Get smallest HE MCS index among station's allocations and use the VHT version of the index. This enables to have 800 ns GI, 52 data tones, and 312.5 kHz spacing while ensuring that MCS will be decoded by all stations.

Reimplemented from ns3::VhtPhy.

Definition at line 146 of file he-phy.cc.

References ns3::WifiTxVector::GetHeMuUserInfoMap(), ns3::WifiTxVector::GetPreambleType(), ns3::VhtPhy::GetVhtMcs0(), ns3::VhtPhy::GetVhtMcs1(), ns3::VhtPhy::GetVhtMcs2(), ns3::VhtPhy::GetVhtMcs3(), ns3::VhtPhy::GetVhtMcs4(), ns3::VhtPhy::GetVhtMcs5(), ns3::IsDlMu(), min, and NS_ABORT_MSG_IF.

Referenced by GetSigBDuration(), ns3::EhtPhy::GetSigBMode(), and GetSigMode().

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

◆ GetSigBSize()

uint32_t ns3::HePhy::GetSigBSize ( const WifiTxVector txVector) const
protectedvirtual

◆ GetSigMode()

WifiMode ns3::HePhy::GetSigMode ( WifiPpduField  field,
const WifiTxVector txVector 
) const
overridevirtual

Get the WifiMode for the SIG field specified by the PPDU field.

Parameters
fieldthe PPDU field
txVectorthe transmission parameters
Returns
the WifiMode used for the SIG field

Reimplemented from ns3::PhyEntity.

Definition at line 117 of file he-phy.cc.

References ns3::WifiTxVector::GetModulationClass(), GetSigAMode(), GetSigBMode(), ns3::VhtPhy::GetSigMode(), ns3::WifiTxVector::IsDlMu(), NS_ASSERT, ns3::WIFI_MOD_CLASS_HE, and ns3::WIFI_PPDU_FIELD_TRAINING.

Referenced by ns3::EhtPhy::GetSigMode().

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

◆ GetStaId()

uint16_t ns3::HePhy::GetStaId ( const Ptr< const WifiPpdu ppdu) const
overridevirtual

Return the STA ID that has been assigned to the station this PHY belongs to.

This is typically called for MU PPDUs, in order to pick the correct PSDU.

Parameters
ppduthe PPDU for which the STA ID is requested
Returns
the STA ID

Reimplemented from ns3::PhyEntity.

Reimplemented in OfdmaTestHePhy, and MuMimoTestHePhy.

Definition at line 572 of file he-phy.cc.

References ns3::WifiPhy::GetDevice(), ns3::WifiNetDevice::GetMac(), ns3::PhyEntity::GetStaId(), ns3::PhyEntity::m_wifiPhy, third::mac, ns3::WIFI_PPDU_TYPE_DL_MU, and ns3::WIFI_PPDU_TYPE_UL_MU.

Referenced by DoStartReceivePayload(), GetAddressedPsduInPpdu(), GetTxPowerSpectralDensity(), IsConfigSupported(), StartReceiveMuPayload(), and StartReceivePreamble().

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

◆ GetSymbolDuration() [1/2]

Time ns3::HePhy::GetSymbolDuration ( const WifiTxVector txVector) const
overrideprivatevirtual
Parameters
txVectorthe transmission parameters
Returns
the symbol duration (including GI)

Reimplemented from ns3::HtPhy.

Definition at line 327 of file he-phy.cc.

References ns3::WifiTxVector::GetGuardInterval(), GetSymbolDuration(), ns3::NanoSeconds(), and NS_ASSERT.

+ Here is the call graph for this function:

◆ GetSymbolDuration() [2/2]

Time ns3::HePhy::GetSymbolDuration ( Time  guardInterval)
staticprotected
Parameters
guardIntervalthe guard interval duration
Returns
the symbol duration

Definition at line 1711 of file he-phy.cc.

References ns3::NanoSeconds().

Referenced by ns3::EhtPhy::GetDataRate(), GetDataRate(), and GetSymbolDuration().

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

◆ GetTrainingDuration()

Time ns3::HePhy::GetTrainingDuration ( const WifiTxVector txVector,
uint8_t  nDataLtf,
uint8_t  nExtensionLtf = 0 
) const
overridevirtual
Parameters
txVectorthe transmission parameters
nDataLtfthe number of data LTF fields (excluding those in preamble)
nExtensionLtfthe number of extension LTF fields
Returns
the duration of the training field
See also
WIFI_PPDU_FIELD_TRAINING

Reimplemented from ns3::HtPhy.

Definition at line 191 of file he-phy.cc.

References ns3::WifiTxVector::GetModulationClass(), ns3::WifiTxVector::IsUlMu(), ns3::MicroSeconds(), NS_ABORT_MSG_IF, NS_ASSERT, and ns3::WIFI_MOD_CLASS_HE.

+ Here is the call graph for this function:

◆ GetTxPowerSpectralDensity() [1/2]

Ptr< SpectrumValue > ns3::HePhy::GetTxPowerSpectralDensity ( double  txPowerW,
Ptr< const WifiPpdu ppdu 
) const
overrideprotectedvirtual
Parameters
txPowerWpower in W to spread across the bands
ppduthe PPDU that will be transmitted
Returns
Pointer to SpectrumValue

This is a helper function to create the right TX PSD corresponding to the amendment of this PHY.

Implements ns3::PhyEntity.

Definition at line 1311 of file he-phy.cc.

References NS_ASSERT.

Referenced by StartTx().

+ Here is the caller graph for this function:

◆ GetTxPowerSpectralDensity() [2/2]

◆ GetUsableSubcarriers()

uint16_t ns3::HePhy::GetUsableSubcarriers ( uint16_t  channelWidth)
staticprotected
Parameters
channelWidththe channel width in MHz
Returns
the number of usable subcarriers for data

Definition at line 1688 of file he-phy.cc.

◆ GetValidPpduDuration()

Time ns3::HePhy::GetValidPpduDuration ( Time  ppduDuration,
const WifiTxVector txVector,
WifiPhyBand  band 
)
staticprivate

Given a PPDU duration value, the TXVECTOR used to transmit the PPDU and the PHY band, compute a valid PPDU duration considering the number and duration of symbols, the preamble duration and the guard interval.

Parameters
ppduDurationthe given PPDU duration
txVectorthe given TXVECTOR
bandthe PHY band
Returns
a valid PPDU duration

Definition at line 256 of file he-phy.cc.

References ns3::WifiPhy::CalculatePhyPreambleAndHeaderDuration(), ns3::WifiTxVector::GetGuardInterval(), ns3::Time::GetNanoSeconds(), ns3::MicroSeconds(), ns3::NanoSeconds(), and ns3::WIFI_PHY_BAND_2_4GHZ.

Referenced by ConvertHeTbPpduDurationToLSigLength(), and ConvertLSigLengthToHeTbPpduDuration().

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

◆ GetWifiConstPsduMap()

WifiConstPsduMap ns3::HePhy::GetWifiConstPsduMap ( Ptr< const WifiPsdu psdu,
const WifiTxVector txVector 
) const
overrideprotectedvirtual

Get a WifiConstPsduMap from a PSDU and the TXVECTOR to use to send the PSDU.

The STA-ID value is properly determined based on whether the given PSDU has to be transmitted as a DL or UL frame.

Parameters
psduthe given PSDU
txVectorthe TXVECTOR to use to send the PSDU
Returns
a WifiConstPsduMap built from the given PSDU and the given TXVECTOR

Reimplemented from ns3::PhyEntity.

Definition at line 1754 of file he-phy.cc.

References ns3::WifiTxVector::GetHeMuUserInfoMap(), ns3::WifiTxVector::GetPreambleType(), ns3::IsUlMu(), NS_ASSERT, and ns3::SU_STA_ID.

+ Here is the call graph for this function:

◆ HandleRxPpduWithSameContent()

void ns3::HePhy::HandleRxPpduWithSameContent ( Ptr< Event event,
Ptr< const WifiPpdu ppdu,
RxPowerWattPerChannelBand rxPower 
)
overrideprotectedvirtual

Handle reception of a PPDU that carries the same content of another PPDU.

This is typically called upon reception of preambles of HE MU PPDUs or reception of non-HT duplicate control frames that carries the exact same content sent from different STAs. If the delay between the PPDU and the first PPDU carrying the same content is small enough, PPDU can be decoded and its power is added constructively, and the TXVECTOR is updated accordingly. Otherwise, a new interference event is created and PPDU is dropped by the PHY.

Parameters
eventthe event of the ongoing reception
ppduthe newly received PPDU (UL MU or non-HT duplicate)
rxPowerthe received power (W) per band of the newly received PPDU

Reimplemented from ns3::PhyEntity.

Definition at line 523 of file he-phy.cc.

References GetAddressedPsduInPpdu(), ns3::PhyEntity::GetCurrentEvent(), ns3::PhyEntity::HandleRxPpduWithSameContent(), m_previouslyTxPpduUid, ns3::PhyEntity::m_wifiPhy, ns3::WifiPhy::NotifyRxDrop(), NS_LOG_DEBUG, ns3::RXING, and ns3::WIFI_PPDU_TYPE_UL_MU.

Referenced by DoGetEvent().

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

◆ InitializeModes()

void ns3::HePhy::InitializeModes ( )
static

Initialize all HE modes.

Definition at line 1539 of file he-phy.cc.

References GetHeMcs().

Referenced by anonymous_namespace{he-phy.cc}::ConstructorHe::ConstructorHe().

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

◆ IsAllowed()

bool ns3::HePhy::IsAllowed ( const WifiTxVector txVector)
static

Check whether the combination in TXVECTOR is allowed.

This function is used as a callback for WifiMode operation.

Parameters
txVectorthe TXVECTOR
Returns
true if this combination is allowed, false otherwise.

Definition at line 1748 of file he-phy.cc.

Referenced by ns3::EhtPhy::CreateEhtMcs(), and CreateHeMcs().

+ Here is the caller graph for this function:

◆ IsConfigSupported()

bool ns3::HePhy::IsConfigSupported ( Ptr< const WifiPpdu ppdu) const
overrideprotectedvirtual

Checks if the signaled configuration (excluding bandwidth) is supported by the PHY.

Parameters
ppduthe received PPDU
Returns
true if supported, false otherwise

Reimplemented from ns3::PhyEntity.

Definition at line 750 of file he-phy.cc.

References ns3::WifiPhy::GetMaxSupportedRxSpatialStreams(), GetStaId(), ns3::PhyEntity::IsModeSupported(), ns3::PhyEntity::m_wifiPhy, NS_ASSERT, NS_LOG_DEBUG, ns3::WIFI_MOD_CLASS_HE, and ns3::WIFI_PPDU_TYPE_UL_MU.

+ Here is the call graph for this function:

◆ NotifyCcaBusy() [1/2]

void ns3::HePhy::NotifyCcaBusy ( const Ptr< const WifiPpdu ppdu,
Time  duration,
WifiChannelListType  channelType 
)
overridevirtual

Notify PHY state helper to switch to CCA busy state,.

Parameters
ppduthe incoming PPDU or nullptr for any signal
durationthe duration of the CCA state
channelTypethe channel type for which the CCA busy state is reported.

Reimplemented from ns3::PhyEntity.

Definition at line 1155 of file he-phy.cc.

References ns3::Time::As(), GetPer20MHzDurations(), NS_LOG_DEBUG, NS_LOG_FUNCTION, and ns3::Time::S.

Referenced by SwitchMaybeToCcaBusy().

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

◆ NotifyCcaBusy() [2/2]

void ns3::HePhy::NotifyCcaBusy ( Time  duration,
WifiChannelListType  channelType,
const std::vector< Time > &  per20MHzDurations 
)
private

Notify PHY state helper to switch to CCA busy state,.

Parameters
durationthe duration of the CCA state
channelTypethe channel type for which the CCA busy state is reported.
per20MHzDurationsthe per-20 MHz CCA durations vector

Definition at line 1164 of file he-phy.cc.

References m_lastPer20MHzDurations, ns3::PhyEntity::m_state, and NS_LOG_FUNCTION.

◆ NotifyEndOfHeSigA()

void ns3::HePhy::NotifyEndOfHeSigA ( HeSigAParameters  params)

Fire a EndOfHeSigA callback (if connected) once HE-SIG-A field has been received.

This method is scheduled immediately after end of HE-SIG-A, once field processing is finished.

Parameters
paramsthe HE-SIG-A parameters

Definition at line 719 of file he-phy.cc.

References ns3::Callback< R, UArgs >::IsNull(), m_endOfHeSigACallback, and two-ray-to-three-gpp-ch-calibration::params.

Referenced by ProcessSigA().

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

◆ ObtainNextUid()

uint64_t ns3::HePhy::ObtainNextUid ( const WifiTxVector txVector)
overrideprotectedvirtual

Obtain the next UID for the PPDU to transmit.

Note that the global UID counter could be incremented.

Parameters
txVectorthe transmission parameters
Returns
the UID to use for the PPDU to transmit

Reimplemented from ns3::PhyEntity.

Definition at line 1272 of file he-phy.cc.

References ns3::WifiPhy::GetPreviouslyRxPpduUid(), ns3::WifiTxVector::IsTriggerResponding(), ns3::WifiTxVector::IsUlMu(), ns3::PhyEntity::m_globalPpduUid, m_previouslyTxPpduUid, ns3::PhyEntity::m_wifiPhy, NS_ASSERT, and NS_LOG_FUNCTION.

Referenced by ns3::EhtPhy::BuildPpdu(), and BuildPpdu().

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

◆ ProcessSig()

PhyEntity::PhyFieldRxStatus ns3::HePhy::ProcessSig ( Ptr< Event event,
PhyFieldRxStatus  status,
WifiPpduField  field 
)
overrideprotectedvirtual

Process SIG-A or SIG-B, perform amendment-specific actions, and provide an updated status of the reception.

Parameters
eventthe event holding incoming PPDU's information
statusthe status of the reception of the correctly received SIG-A or SIG-B after the configuration support check
fieldthe current PPDU field to identify whether it is SIG-A or SIG-B
Returns
the updated status of the reception of the SIG-A or SIG-B

Reimplemented from ns3::VhtPhy.

Definition at line 590 of file he-phy.cc.

References NS_ASSERT, NS_ASSERT_MSG, NS_LOG_FUNCTION, ProcessSigA(), ProcessSigB(), ns3::WIFI_PPDU_FIELD_SIG_A, ns3::WIFI_PPDU_FIELD_SIG_B, and ns3::WIFI_PREAMBLE_HE_SU.

Referenced by ns3::EhtPhy::ProcessSig().

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

◆ ProcessSigA()

PhyEntity::PhyFieldRxStatus ns3::HePhy::ProcessSigA ( Ptr< Event event,
PhyFieldRxStatus  status 
)
protectedvirtual

Process SIG-A, perform amendment-specific actions, and provide an updated status of the reception.

Parameters
eventthe event holding incoming PPDU's information
statusthe status of the reception of the correctly received SIG-A after the configuration support check
Returns
the updated status of the reception of the SIG-A

Definition at line 607 of file he-phy.cc.

References ns3::PhyEntity::DROP, ns3::FILTERED, GetAddressedPsduInPpdu(), GetBssColor(), ns3::PhyEntity::GetRxPowerWForPpdu(), ns3::PhyEntity::PhyFieldRxStatus::isSuccess, m_currentMuPpduUid, m_trigVector, m_trigVectorExpirationTime, NotifyEndOfHeSigA(), ns3::Simulator::Now(), NS_ABORT_IF, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, two-ray-to-three-gpp-ch-calibration::params, ns3::WIFI_MOD_CLASS_HE, ns3::WIFI_PPDU_TYPE_DL_MU, and ns3::WIFI_PPDU_TYPE_UL_MU.

Referenced by ns3::EhtPhy::ProcessSig(), and ProcessSig().

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

◆ ProcessSigB()

PhyEntity::PhyFieldRxStatus ns3::HePhy::ProcessSigB ( Ptr< Event event,
PhyFieldRxStatus  status 
)
protectedvirtual

Process SIG-B, perform amendment-specific actions, and provide an updated status of the reception.

Parameters
eventthe event holding incoming PPDU's information
statusthe status of the reception of the correctly received SIG-A after the configuration support check
Returns
the updated status of the reception of the SIG-B

Definition at line 728 of file he-phy.cc.

References ns3::PhyEntity::DROP, ns3::FILTERED, GetAddressedPsduInPpdu(), ns3::IsDlMu(), ns3::PhyEntity::PhyFieldRxStatus::isSuccess, m_currentMuPpduUid, NS_ASSERT, NS_LOG_DEBUG, and NS_LOG_FUNCTION.

Referenced by ns3::EhtPhy::ProcessSig(), and ProcessSig().

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

◆ RxPayloadFailed()

void ns3::HePhy::RxPayloadFailed ( Ptr< const WifiPsdu psdu,
double  snr,
const WifiTxVector txVector 
)
overrideprotectedvirtual

Perform amendment-specific actions when the payload is unsuccessfuly received.

Parameters
psduthe PSDU that we failed to received
snrthe SNR of the received PSDU in linear scale
txVectorTXVECTOR of the PSDU

Reimplemented from ns3::PhyEntity.

Definition at line 877 of file he-phy.cc.

References ns3::WifiTxVector::IsUlMu(), ns3::PhyEntity::m_state, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ RxPayloadSucceeded()

void ns3::HePhy::RxPayloadSucceeded ( Ptr< const WifiPsdu psdu,
RxSignalInfo  rxSignalInfo,
const WifiTxVector txVector,
uint16_t  staId,
const std::vector< bool > &  statusPerMpdu 
)
overrideprotectedvirtual

Perform amendment-specific actions when the payload is successfully received.

Parameters
psduthe successfully received PSDU
rxSignalInfothe info on the received signal (
See also
RxSignalInfo)
Parameters
txVectorTXVECTOR of the PSDU
staIdthe station ID of the PSDU (only used for MU)
statusPerMpdureception status per MPDU

Reimplemented from ns3::PhyEntity.

Definition at line 859 of file he-phy.cc.

References ns3::WifiTxVector::GetPreambleType(), ns3::IsUlMu(), m_rxHeTbPpdus, ns3::PhyEntity::m_state, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ SetEndOfHeSigACallback()

void ns3::HePhy::SetEndOfHeSigACallback ( EndOfHeSigACallback  callback)

Set a callback for a end of HE-SIG-A.

Parameters
callbackthe EndOfHeSigACallback to set

Definition at line 713 of file he-phy.cc.

References m_endOfHeSigACallback.

◆ SetObssPdAlgorithm()

void ns3::HePhy::SetObssPdAlgorithm ( const Ptr< ObssPdAlgorithm algorithm)

Sets the OBSS-PD algorithm.

Parameters
algorithmthe OBSS-PD algorithm

Definition at line 701 of file he-phy.cc.

References m_obssPdAlgorithm.

◆ SetTrigVector()

void ns3::HePhy::SetTrigVector ( const WifiTxVector trigVector,
Time  validity 
)

Set the TRIGVECTOR and the associated expiration time.

A TRIGVECTOR shall expire when the TX timer associated with the transmission of the Trigger Frame expires.

Parameters
trigVectorthe TRIGVECTOR
validitythe amount of time (from now) until expiration of the TRIGVECTOR

Definition at line 335 of file he-phy.cc.

References ns3::AP, ns3::WifiPhy::GetDevice(), ns3::WifiTxVector::GetGuardInterval(), ns3::WifiNetDevice::GetMac(), m_trigVector, m_trigVectorExpirationTime, ns3::PhyEntity::m_wifiPhy, third::mac, ns3::Simulator::Now(), NS_ASSERT_MSG, NS_LOG_FUNCTION, and ns3::Time::US.

+ Here is the call graph for this function:

◆ StartReceiveMuPayload()

void ns3::HePhy::StartReceiveMuPayload ( Ptr< Event event)
protected

Start receiving the PSDU (i.e.

the first symbol of the PSDU has arrived) of an MU transmission. This function is called upon the RX event corresponding to the HE portion of the MU PPDU.

Parameters
eventthe event holding incoming HE portion of the PPDU's information

m_beginMuPayloadRxEvents should still be running only for APs, since canceled in StartReceivePayload for STAs. This is because SpectrumWifiPhy does not have access to the device type and thus blindly schedules things, letting the parent WifiPhy class take into account device type.

Definition at line 931 of file he-phy.cc.

References ns3::PhyEntity::CalculatePhyPreambleAndHeaderDuration(), ns3::PhyEntity::EndReceivePayload(), GetAddressedPsduInPpdu(), ns3::PhyEntity::GetCurrentEvent(), GetStaId(), ns3::LOG_FUNCTION, m_beginMuPayloadRxEvents, ns3::PhyEntity::m_endRxPayloadEvents, m_rxHeTbPpdus, ns3::PhyEntity::m_signalNoiseMap, ns3::PhyEntity::m_statusPerMpduMap, ns3::PhyEntity::NotifyPayloadBegin(), NS_ASSERT, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), and ns3::PhyEntity::ScheduleEndOfMpdus().

Referenced by StartReceivePreamble().

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

◆ StartReceivePreamble()

void ns3::HePhy::StartReceivePreamble ( Ptr< const WifiPpdu ppdu,
RxPowerWattPerChannelBand rxPowersW,
Time  rxDuration 
)
overridevirtual

Start receiving the PHY preamble of a PPDU (i.e.

the first bit of the preamble has arrived).

This method triggers the start of the preamble detection period (

See also
StartPreambleDetectionPeriod) if the PHY can process the PPDU.
Parameters
ppduthe arriving PPDU
rxPowersWthe receive power in W per band
rxDurationthe duration of the PPDU

Reimplemented from ns3::PhyEntity.

Definition at line 362 of file he-phy.cc.

References ns3::PhyEntity::CreateInterferenceEvent(), ns3::PhyEntity::ErasePreambleEvent(), ns3::PhyEntity::GetCurrentEvent(), ns3::VhtPhy::GetDuration(), GetStaId(), m_beginMuPayloadRxEvents, m_currentMuPpduUid, ns3::Time::NS, NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::HePpdu::PSD_HE_PORTION, ns3::Simulator::Schedule(), StartReceiveMuPayload(), ns3::PhyEntity::StartReceivePreamble(), ns3::WIFI_MOD_CLASS_HE, and ns3::WIFI_PPDU_FIELD_TRAINING.

+ Here is the call graph for this function:

◆ StartTx()

◆ StartTxHePortion()

void ns3::HePhy::StartTxHePortion ( Ptr< const WifiPpdu ppdu,
double  txPowerDbm,
Ptr< SpectrumValue txPowerSpectrum,
Time  hePortionDuration 
)
private

Start the transmission of the HE portion of the MU PPDU.

Parameters
ppduthe PPDU
txPowerDbmthe total TX power in dBm
txPowerSpectrumthe TX PSD
hePortionDurationthe duration of the HE portion

Definition at line 1491 of file he-phy.cc.

References NS_ASSERT, NS_LOG_FUNCTION, ns3::HePpdu::PSD_HE_PORTION, and ns3::PhyEntity::Transmit().

Referenced by StartTx().

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

◆ SwitchMaybeToCcaBusy()

void ns3::HePhy::SwitchMaybeToCcaBusy ( const Ptr< const WifiPpdu ppdu)
overridevirtual

Check if PHY state should move to CCA busy state based on current state of interference tracker.

Parameters
ppduthe incoming PPDU or nullptr for any signal

Reimplemented from ns3::PhyEntity.

Definition at line 1126 of file he-phy.cc.

References ns3::VhtPhy::GetCcaIndication(), GetPer20MHzDurations(), m_lastPer20MHzDurations, NotifyCcaBusy(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Time::S, ns3::Seconds(), and ns3::WIFI_CHANLIST_PRIMARY.

+ Here is the call graph for this function:

Member Data Documentation

◆ m_beginMuPayloadRxEvents

std::map<uint16_t , EventId> ns3::HePhy::m_beginMuPayloadRxEvents
protected

the beginning of the MU payload reception events (indexed by STA-ID)

Definition at line 561 of file he-phy.h.

Referenced by CancelAllEvents(), DoResetReceive(), DoStartReceivePayload(), StartReceiveMuPayload(), and StartReceivePreamble().

◆ m_currentMuPpduUid

uint64_t ns3::HePhy::m_currentMuPpduUid
protected

UID of the HE MU or HE TB PPDU being received.

Definition at line 558 of file he-phy.h.

Referenced by HePhy(), DoEndReceivePayload(), GetCurrentHeTbPpduUid(), ProcessSigA(), ProcessSigB(), and StartReceivePreamble().

◆ m_currentTxVector

std::optional<WifiTxVector> ns3::HePhy::m_currentTxVector
protected

If the STA is an AP STA, this holds the TXVECTOR of the PPDU that has been sent.

Definition at line 567 of file he-phy.h.

Referenced by MuRtsCtsHePhy::SetMuRtsTxVector(), and StartTx().

◆ m_endOfHeSigACallback

EndOfHeSigACallback ns3::HePhy::m_endOfHeSigACallback
protected

end of HE-SIG-A callback

Definition at line 564 of file he-phy.h.

Referenced by NotifyEndOfHeSigA(), and SetEndOfHeSigACallback().

◆ m_hePpduFormats

const PhyEntity::PpduFormats ns3::HePhy::m_hePpduFormats
staticprivate
Initial value:
{
}
@ WIFI_PREAMBLE_HE_ER_SU
@ WIFI_PREAMBLE_HE_TB
@ WIFI_PREAMBLE_HE_MU
@ WIFI_PREAMBLE_HE_SU
@ WIFI_PPDU_FIELD_SIG_B
SIG-B field.
@ WIFI_PPDU_FIELD_TRAINING
STF + LTF fields (excluding those in preamble for HT-GF)
@ WIFI_PPDU_FIELD_NON_HT_HEADER
PHY header field for DSSS or ERP, short PHY header field for HR/DSSS or ERP, field not present for HT...
@ WIFI_PPDU_FIELD_PREAMBLE
SYNC + SFD fields for DSSS or ERP, shortSYNC + shortSFD fields for HR/DSSS or ERP,...
@ WIFI_PPDU_FIELD_DATA
data field
@ WIFI_PPDU_FIELD_SIG_A
SIG-A field.

HE PPDU formats.

Definition at line 637 of file he-phy.h.

Referenced by GetPpduFormats().

◆ m_lastPer20MHzDurations

std::vector<Time> ns3::HePhy::m_lastPer20MHzDurations
private

Hold the last per-20 MHz CCA durations vector.

Definition at line 641 of file he-phy.h.

Referenced by NotifyCcaBusy(), and SwitchMaybeToCcaBusy().

◆ m_obssPdAlgorithm

Ptr<ObssPdAlgorithm> ns3::HePhy::m_obssPdAlgorithm
private

OBSS-PD algorithm.

Definition at line 640 of file he-phy.h.

Referenced by GetCcaThreshold(), GetObssPdAlgorithm(), GetPer20MHzDurations(), and SetObssPdAlgorithm().

◆ m_previouslyTxPpduUid

uint64_t ns3::HePhy::m_previouslyTxPpduUid
protected

UID of the previously sent PPDU, used by AP to recognize response HE TB PPDUs.

Definition at line 556 of file he-phy.h.

Referenced by HePhy(), DoGetEvent(), GetMeasurementChannelWidth(), HandleRxPpduWithSameContent(), ObtainNextUid(), and MuRtsCtsHePhy::SetPreviousTxPpduUid().

◆ m_rxHeTbPpdus

std::size_t ns3::HePhy::m_rxHeTbPpdus
private

Number of successfully received HE TB PPDUS.

Definition at line 639 of file he-phy.h.

Referenced by DoEndReceivePayload(), RxPayloadSucceeded(), and StartReceiveMuPayload().

◆ m_trigVector

std::optional<WifiTxVector> ns3::HePhy::m_trigVector
protected

the TRIGVECTOR

Definition at line 565 of file he-phy.h.

Referenced by GetRxPpduFromTxPpdu(), ProcessSigA(), and SetTrigVector().

◆ m_trigVectorExpirationTime

std::optional<Time> ns3::HePhy::m_trigVectorExpirationTime
protected

expiration time of the TRIGVECTOR

Definition at line 566 of file he-phy.h.

Referenced by GetRxPpduFromTxPpdu(), ProcessSigA(), and SetTrigVector().


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