PHY entity for EHT (11be) More...
#include "eht-phy.h"
Public Member Functions | |
EhtPhy (bool buildModeList=true) | |
Constructor for EHT PHY. | |
~EhtPhy () override | |
Destructor for EHT PHY. | |
Ptr< WifiPpdu > | BuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override |
Build amendment-specific PPDU. | |
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. | |
const PpduFormats & | GetPpduFormats () const override |
Return the PPDU formats of the PHY. | |
WifiMode | GetSigBMode (const WifiTxVector &txVector) const override |
![]() | |
HePhy (bool buildModeList=true) | |
Constructor for HE PHY. | |
~HePhy () override | |
Destructor for HE PHY. | |
Ptr< WifiPpdu > | BuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override |
Build amendment-specific PPDU. | |
virtual Time | CalculateNonOfdmaDurationForHeMu (const WifiTxVector &txVector) const |
virtual Time | CalculateNonOfdmaDurationForHeTb (const WifiTxVector &txVector) const |
Time | CalculateTxDuration (WifiConstPsduMap psduMap, const WifiTxVector &txVector, WifiPhyBand band) const override |
void | CancelAllEvents () override |
Cancel and clear all running events. | |
bool | CanStartRx (Ptr< const WifiPpdu > ppdu, uint16_t txChannelWidth) const override |
Determine whether the PHY shall issue a PHY-RXSTART.indication primitive in response to a given PPDU. | |
Ptr< const WifiPsdu > | GetAddressedPsduInPpdu (Ptr< const WifiPpdu > ppdu) const override |
Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU). | |
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. | |
uint16_t | GetCenterFrequencyForNonOfdmaPart (const WifiTxVector &txVector, uint16_t staId) const |
Get the center frequency of the non-OFDMA part of the current TxVector for the given STA-ID. | |
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. | |
WifiSpectrumBandInfo | GetNonOfdmaBand (const WifiTxVector &txVector, uint16_t staId) const |
Get the band used to transmit the non-OFDMA part of an HE TB PPDU. | |
uint16_t | GetNonOfdmaWidth (HeRu::RuSpec ru) const |
Get the width in MHz of the non-OFDMA portion of an HE TB PPDU. | |
const PpduFormats & | GetPpduFormats () const override |
Return the PPDU formats of the PHY. | |
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. | |
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. | |
Ptr< const WifiPpdu > | GetRxPpduFromTxPpdu (Ptr< const WifiPpdu > ppdu) override |
The WifiPpdu from the TX PHY is received by each RX PHY attached to the same channel. | |
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. | |
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. | |
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,. | |
void | NotifyEndOfHeSigA (HeSigAParameters params) |
Fire a EndOfHeSigA callback (if connected) once HE-SIG-A field has been received. | |
void | SetEndOfHeSigACallback (EndOfHeSigACallback callback) |
Set a callback for a end of HE-SIG-A. | |
void | SetObssPdAlgorithm (const Ptr< ObssPdAlgorithm > algorithm) |
Sets the OBSS-PD algorithm. | |
void | SetTrigVector (const WifiTxVector &trigVector, Time validity) |
Set the TRIGVECTOR and the associated expiration time. | |
void | StartReceivePreamble (Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW, Time rxDuration) override |
Start receiving the PHY preamble of a PPDU (i.e. | |
void | StartTx (Ptr< const WifiPpdu > ppdu) override |
This function is called by SpectrumWifiPhy to send the PPDU while performing amendment-specific actions. | |
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. | |
![]() | |
VhtPhy (bool buildModeList=true) | |
Constructor for VHT PHY. | |
~VhtPhy () override | |
Destructor for VHT PHY. | |
Ptr< WifiPpdu > | BuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override |
Build amendment-specific PPDU. | |
double | GetCcaThreshold (const Ptr< const WifiPpdu > ppdu, WifiChannelListType channelType) const override |
Return the CCA threshold in dBm for a given channel type. | |
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. | |
Time | GetLSigDuration (WifiPreamble preamble) const override |
const PpduFormats & | GetPpduFormats () const override |
Return the PPDU formats of the PHY. | |
virtual Time | GetSigADuration (WifiPreamble preamble) const |
virtual WifiMode | GetSigAMode () const |
virtual Time | GetSigBDuration (const WifiTxVector &txVector) const |
virtual WifiMode | GetSigBMode (const WifiTxVector &txVector) const |
WifiMode | GetSigMode (WifiPpduField field, const WifiTxVector &txVector) const override |
Get the WifiMode for the SIG field specified by the PPDU field. | |
Time | GetTrainingDuration (const WifiTxVector &txVector, uint8_t nDataLtf, uint8_t nExtensionLtf=0) const override |
![]() | |
HtPhy (uint8_t maxNss=1, bool buildModeList=true) | |
Constructor for HT PHY. | |
~HtPhy () override | |
Destructor for HT PHY. | |
Ptr< WifiPpdu > | BuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override |
Build amendment-specific PPDU. | |
uint8_t | GetBssMembershipSelector () const |
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. | |
virtual Time | GetHtSigDuration () const |
virtual WifiMode | GetHtSigMode () const |
virtual Time | GetLSigDuration (WifiPreamble preamble) const |
uint8_t | GetMaxSupportedMcsIndexPerSs () const |
Set the maximum supported MCS index per spatial stream. | |
WifiMode | GetMcs (uint8_t index) const override |
Get the WifiMode corresponding to the given MCS index. | |
Time | GetPayloadDuration (uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, MpduType mpdutype, bool incFlag, uint32_t &totalAmpduSize, double &totalAmpduNumSymbols, uint16_t staId) const override |
const PpduFormats & | GetPpduFormats () const override |
Return the PPDU formats of the PHY. | |
WifiMode | GetSigMode (WifiPpduField field, const WifiTxVector &txVector) const override |
Get the WifiMode for the SIG field specified by the PPDU field. | |
virtual Time | GetTrainingDuration (const WifiTxVector &txVector, uint8_t nDataLtf, uint8_t nExtensionLtf=0) const |
bool | HandlesMcsModes () const override |
Check if the WifiModes handled by this PHY are MCSs. | |
bool | IsMcsSupported (uint8_t index) const override |
Check if the WifiMode corresponding to the given MCS index is supported. | |
void | SetMaxSupportedMcsIndexPerSs (uint8_t maxIndex) |
Set the maximum supported MCS index per spatial stream. | |
void | SetMaxSupportedNss (uint8_t maxNss) |
Configure the maximum number of spatial streams supported by this HT PHY. | |
![]() | |
OfdmPhy (OfdmPhyVariant variant=OFDM_PHY_DEFAULT, bool buildModeList=true) | |
Constructor for OFDM PHY. | |
~OfdmPhy () override | |
Destructor for OFDM PHY. | |
Ptr< WifiPpdu > | BuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override |
Build amendment-specific PPDU. | |
double | GetCcaThreshold (const Ptr< const WifiPpdu > ppdu, WifiChannelListType channelType) const override |
Return the CCA threshold in dBm for a given channel type. | |
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. | |
Time | GetPayloadDuration (uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, MpduType mpdutype, bool incFlag, uint32_t &totalAmpduSize, double &totalAmpduNumSymbols, uint16_t staId) const override |
const PpduFormats & | GetPpduFormats () const override |
Return the PPDU formats of the PHY. | |
WifiMode | GetSigMode (WifiPpduField field, const WifiTxVector &txVector) const override |
Get the WifiMode for the SIG field specified by the PPDU field. | |
![]() | |
virtual | ~PhyEntity () |
Destructor for PHY entity. | |
std::list< WifiMode >::const_iterator | begin () const |
Return a const iterator to the first WifiMode. | |
virtual Ptr< WifiPpdu > | BuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) |
Build amendment-specific PPDU. | |
Time | CalculatePhyPreambleAndHeaderDuration (const WifiTxVector &txVector) const |
virtual Time | CalculateTxDuration (WifiConstPsduMap psduMap, const WifiTxVector &txVector, WifiPhyBand band) const |
virtual void | CancelAllEvents () |
Cancel and clear all running events. | |
void | CancelRunningEndPreambleDetectionEvents (bool clear=false) |
Cancel and eventually clear all end preamble detection events. | |
virtual bool | CanStartRx (Ptr< const WifiPpdu > ppdu, uint16_t txChannelWidth) const |
Determine whether the PHY shall issue a PHY-RXSTART.indication primitive in response to a given PPDU. | |
std::list< WifiMode >::const_iterator | end () const |
Return a const iterator to past-the-last WifiMode. | |
void | EndReceiveField (WifiPpduField field, Ptr< Event > event) |
End receiving a given field. | |
void | EndReceivePayload (Ptr< Event > event) |
The last symbol of the PPDU has arrived. | |
virtual Ptr< const WifiPsdu > | GetAddressedPsduInPpdu (Ptr< const WifiPpdu > ppdu) const |
Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU). | |
virtual double | GetCcaThreshold (const Ptr< const WifiPpdu > ppdu, WifiChannelListType channelType) const |
Return the CCA threshold in dBm for a given channel type. | |
virtual Time | GetDuration (WifiPpduField field, const WifiTxVector &txVector) const |
Get the duration of the PPDU field (or group of fields) used by this entity for the given transmission parameters. | |
Time | GetDurationUpToField (WifiPpduField field, const WifiTxVector &txVector) const |
Get the duration of the PPDU up to (but excluding) the given field. | |
virtual Time | GetMaxDelayPpduSameUid (const WifiTxVector &txVector) |
Obtain the maximum time between two PPDUs with the same UID to consider they are identical and their power can be added construtively. | |
virtual uint32_t | GetMaxPsduSize () const =0 |
Get the maximum PSDU size in bytes. | |
virtual WifiMode | GetMcs (uint8_t index) const |
Get the WifiMode corresponding to the given MCS index. | |
WifiPpduField | GetNextField (WifiPpduField currentField, WifiPreamble preamble) const |
Return the field following the provided one. | |
virtual uint8_t | GetNumModes () const |
virtual Time | GetPayloadDuration (uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, MpduType mpdutype, bool incFlag, uint32_t &totalAmpduSize, double &totalAmpduNumSymbols, uint16_t staId) const =0 |
PhyHeaderSections | GetPhyHeaderSections (const WifiTxVector &txVector, Time ppduStart) const |
Return a map of PHY header chunk information per PPDU field. | |
Time | GetRemainingDurationAfterField (Ptr< const WifiPpdu > ppdu, WifiPpduField field) const |
Get the remaining duration of the PPDU after the end of the given field. | |
virtual Ptr< const WifiPpdu > | GetRxPpduFromTxPpdu (Ptr< const WifiPpdu > ppdu) |
The WifiPpdu from the TX PHY is received by each RX PHY attached to the same channel. | |
virtual WifiMode | GetSigMode (WifiPpduField field, const WifiTxVector &txVector) const |
Get the WifiMode for the SIG field specified by the PPDU field. | |
virtual uint16_t | GetStaId (const Ptr< const WifiPpdu > ppdu) const |
Return the STA ID that has been assigned to the station this PHY belongs to. | |
virtual WifiConstPsduMap | GetWifiConstPsduMap (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector) const |
Get a WifiConstPsduMap from a PSDU and the TXVECTOR to use to send the PSDU. | |
virtual bool | HandlesMcsModes () const |
Check if the WifiModes handled by this PHY are MCSs. | |
virtual bool | IsMcsSupported (uint8_t index) const |
Check if the WifiMode corresponding to the given MCS index is supported. | |
virtual bool | IsModeSupported (WifiMode mode) const |
Check if the WifiMode is supported. | |
bool | NoEndPreambleDetectionEvents () const |
virtual void | NotifyCcaBusy (const Ptr< const WifiPpdu > ppdu, Time duration, WifiChannelListType channelType) |
Notify PHY state helper to switch to CCA busy state,. | |
virtual uint64_t | ObtainNextUid (const WifiTxVector &txVector) |
Obtain the next UID for the PPDU to transmit. | |
void | ResetReceive (Ptr< Event > event) |
Reset PHY at the end of the PPDU under reception after it has failed the PHY header. | |
void | SetOwner (Ptr< WifiPhy > wifiPhy) |
Set the WifiPhy owning this PHY entity. | |
void | StartReceiveField (WifiPpduField field, Ptr< Event > event) |
Start receiving a given field. | |
virtual void | StartReceivePreamble (Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW, Time rxDuration) |
Start receiving the PHY preamble of a PPDU (i.e. | |
virtual void | StartTx (Ptr< const WifiPpdu > ppdu) |
This function is called by SpectrumWifiPhy to send the PPDU while performing amendment-specific actions. | |
virtual void | SwitchMaybeToCcaBusy (const Ptr< const WifiPpdu > ppdu) |
Check if PHY state should move to CCA busy state based on current state of interference tracker. | |
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. | |
![]() | |
SimpleRefCount () | |
Default constructor. | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. | |
void | Ref () const |
Increment the reference count. | |
void | Unref () const |
Decrement the reference count. | |
Static Public Member Functions | |
static WifiCodeRate | GetCodeRate (uint8_t mcsValue) |
Return the coding rate corresponding to the supplied EHT MCS index. | |
static uint16_t | GetConstellationSize (uint8_t mcsValue) |
Return the constellation size corresponding to the supplied EHT MCS index. | |
static uint64_t | GetDataRate (uint8_t mcsValue, uint16_t channelWidth, uint16_t guardInterval, uint8_t nss) |
Return the data rate corresponding to the supplied EHT MCS index, channel width, guard interval, and number of spatial streams. | |
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. | |
static WifiMode | GetEhtMcs (uint8_t index) |
Return the EHT MCS corresponding to the provided index. | |
static WifiMode | GetEhtMcs0 () |
Return MCS 0 from EHT MCS values. | |
static WifiMode | GetEhtMcs1 () |
Return MCS 1 from EHT MCS values. | |
static WifiMode | GetEhtMcs10 () |
Return MCS 10 from EHT MCS values. | |
static WifiMode | GetEhtMcs11 () |
Return MCS 11 from EHT MCS values. | |
static WifiMode | GetEhtMcs12 () |
Return MCS 12 from EHT MCS values. | |
static WifiMode | GetEhtMcs13 () |
Return MCS 13 from EHT MCS values. | |
static WifiMode | GetEhtMcs2 () |
Return MCS 2 from EHT MCS values. | |
static WifiMode | GetEhtMcs3 () |
Return MCS 3 from EHT MCS values. | |
static WifiMode | GetEhtMcs4 () |
Return MCS 4 from EHT MCS values. | |
static WifiMode | GetEhtMcs5 () |
Return MCS 5 from EHT MCS values. | |
static WifiMode | GetEhtMcs6 () |
Return MCS 6 from EHT MCS values. | |
static WifiMode | GetEhtMcs7 () |
Return MCS 7 from EHT MCS values. | |
static WifiMode | GetEhtMcs8 () |
Return MCS 8 from EHT MCS values. | |
static WifiMode | GetEhtMcs9 () |
Return MCS 9 from EHT MCS values. | |
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. | |
static uint64_t | GetPhyRate (uint8_t mcsValue, uint16_t channelWidth, uint16_t guardInterval, uint8_t nss) |
Return the PHY rate corresponding to the supplied EHT MCS index, channel width, guard interval, and number of spatial stream. | |
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. | |
static void | InitializeModes () |
Initialize all EHT modes. | |
![]() | |
static WifiSpectrumBandIndices | ConvertHeRuSubcarriers (uint16_t bandWidth, uint16_t guardBandwidth, uint32_t subcarrierSpacing, HeRu::SubcarrierRange subcarrierRange, uint8_t bandIndex=0) |
static std::pair< uint16_t, Time > | ConvertHeTbPpduDurationToLSigLength (Time ppduDuration, const WifiTxVector &txVector, WifiPhyBand band) |
Compute the L-SIG length value corresponding to the given HE TB PPDU duration. | |
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. | |
static WifiCodeRate | GetCodeRate (uint8_t mcsValue) |
Return the coding rate corresponding to the supplied HE MCS index. | |
static uint16_t | GetConstellationSize (uint8_t mcsValue) |
Return the constellation size corresponding to the supplied HE MCS index. | |
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. | |
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. | |
static WifiMode | GetHeMcs (uint8_t index) |
Return the HE MCS corresponding to the provided index. | |
static WifiMode | GetHeMcs0 () |
Return MCS 0 from HE MCS values. | |
static WifiMode | GetHeMcs1 () |
Return MCS 1 from HE MCS values. | |
static WifiMode | GetHeMcs10 () |
Return MCS 10 from HE MCS values. | |
static WifiMode | GetHeMcs11 () |
Return MCS 11 from HE MCS values. | |
static WifiMode | GetHeMcs2 () |
Return MCS 2 from HE MCS values. | |
static WifiMode | GetHeMcs3 () |
Return MCS 3 from HE MCS values. | |
static WifiMode | GetHeMcs4 () |
Return MCS 4 from HE MCS values. | |
static WifiMode | GetHeMcs5 () |
Return MCS 5 from HE MCS values. | |
static WifiMode | GetHeMcs6 () |
Return MCS 6 from HE MCS values. | |
static WifiMode | GetHeMcs7 () |
Return MCS 7 from HE MCS values. | |
static WifiMode | GetHeMcs8 () |
Return MCS 8 from HE MCS values. | |
static WifiMode | GetHeMcs9 () |
Return MCS 9 from HE MCS values. | |
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. | |
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. | |
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. | |
static RuBands | GetRuBands (Ptr< const WifiPhy > phy, uint16_t channelWidth, uint16_t guardBandwidth) |
Static function to compute the RU bands that belong to a given channel width. | |
static void | InitializeModes () |
Initialize all HE modes. | |
static bool | IsAllowed (const WifiTxVector &txVector) |
Check whether the combination in TXVECTOR is allowed. | |
![]() | |
static WifiCodeRate | GetCodeRate (uint8_t mcsValue) |
Return the coding rate corresponding to the supplied VHT MCS index. | |
static uint16_t | GetConstellationSize (uint8_t mcsValue) |
Return the constellation size corresponding to the supplied VHT MCS index. | |
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. | |
static uint64_t | GetDataRateFromTxVector (const WifiTxVector &txVector, uint16_t staId) |
Return the data rate corresponding to the supplied TXVECTOR. | |
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. | |
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. | |
static uint64_t | GetPhyRateFromTxVector (const WifiTxVector &txVector, uint16_t staId) |
Return the PHY rate corresponding to the supplied TXVECTOR. | |
static WifiMode | GetVhtMcs (uint8_t index) |
Return the VHT MCS corresponding to the provided index. | |
static WifiMode | GetVhtMcs0 () |
Return MCS 0 from VHT MCS values. | |
static WifiMode | GetVhtMcs1 () |
Return MCS 1 from VHT MCS values. | |
static WifiMode | GetVhtMcs2 () |
Return MCS 2 from VHT MCS values. | |
static WifiMode | GetVhtMcs3 () |
Return MCS 3 from VHT MCS values. | |
static WifiMode | GetVhtMcs4 () |
Return MCS 4 from VHT MCS values. | |
static WifiMode | GetVhtMcs5 () |
Return MCS 5 from VHT MCS values. | |
static WifiMode | GetVhtMcs6 () |
Return MCS 6 from VHT MCS values. | |
static WifiMode | GetVhtMcs7 () |
Return MCS 7 from VHT MCS values. | |
static WifiMode | GetVhtMcs8 () |
Return MCS 8 from VHT MCS values. | |
static WifiMode | GetVhtMcs9 () |
Return MCS 9 from VHT MCS values. | |
static void | InitializeModes () |
Initialize all VHT modes. | |
static bool | IsAllowed (const WifiTxVector &txVector) |
Check whether the combination in TXVECTOR is allowed. | |
static bool | IsCombinationAllowed (uint8_t mcsValue, uint16_t channelWidth, uint8_t nss) |
Check whether the combination of <MCS, channel width, NSS> is allowed. | |
![]() | |
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. | |
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. | |
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. | |
static uint64_t | GetDataRateFromTxVector (const WifiTxVector &txVector, uint16_t staId) |
Return the data rate corresponding to the supplied TXVECTOR. | |
static WifiCodeRate | GetHtCodeRate (uint8_t mcsValue) |
Return the coding rate corresponding to the supplied HT MCS index. | |
static uint16_t | GetHtConstellationSize (uint8_t mcsValue) |
Return the constellation size corresponding to the supplied HT MCS index. | |
static WifiMode | GetHtMcs (uint8_t index) |
Return the HT MCS corresponding to the provided index. | |
static WifiMode | GetHtMcs0 () |
Return MCS 0 from HT MCS values. | |
static WifiMode | GetHtMcs1 () |
Return MCS 1 from HT MCS values. | |
static WifiMode | GetHtMcs10 () |
Return MCS 10 from HT MCS values. | |
static WifiMode | GetHtMcs11 () |
Return MCS 11 from HT MCS values. | |
static WifiMode | GetHtMcs12 () |
Return MCS 12 from HT MCS values. | |
static WifiMode | GetHtMcs13 () |
Return MCS 13 from HT MCS values. | |
static WifiMode | GetHtMcs14 () |
Return MCS 14 from HT MCS values. | |
static WifiMode | GetHtMcs15 () |
Return MCS 15 from HT MCS values. | |
static WifiMode | GetHtMcs16 () |
Return MCS 16 from HT MCS values. | |
static WifiMode | GetHtMcs17 () |
Return MCS 17 from HT MCS values. | |
static WifiMode | GetHtMcs18 () |
Return MCS 18 from HT MCS values. | |
static WifiMode | GetHtMcs19 () |
Return MCS 19 from HT MCS values. | |
static WifiMode | GetHtMcs2 () |
Return MCS 2 from HT MCS values. | |
static WifiMode | GetHtMcs20 () |
Return MCS 20 from HT MCS values. | |
static WifiMode | GetHtMcs21 () |
Return MCS 21 from HT MCS values. | |
static WifiMode | GetHtMcs22 () |
Return MCS 22 from HT MCS values. | |
static WifiMode | GetHtMcs23 () |
Return MCS 23 from HT MCS values. | |
static WifiMode | GetHtMcs24 () |
Return MCS 24 from HT MCS values. | |
static WifiMode | GetHtMcs25 () |
Return MCS 25 from HT MCS values. | |
static WifiMode | GetHtMcs26 () |
Return MCS 26 from HT MCS values. | |
static WifiMode | GetHtMcs27 () |
Return MCS 27 from HT MCS values. | |
static WifiMode | GetHtMcs28 () |
Return MCS 28 from HT MCS values. | |
static WifiMode | GetHtMcs29 () |
Return MCS 29 from HT MCS values. | |
static WifiMode | GetHtMcs3 () |
Return MCS 3 from HT MCS values. | |
static WifiMode | GetHtMcs30 () |
Return MCS 30 from HT MCS values. | |
static WifiMode | GetHtMcs31 () |
Return MCS 31 from HT MCS values. | |
static WifiMode | GetHtMcs4 () |
Return MCS 4 from HT MCS values. | |
static WifiMode | GetHtMcs5 () |
Return MCS 5 from HT MCS values. | |
static WifiMode | GetHtMcs6 () |
Return MCS 6 from HT MCS values. | |
static WifiMode | GetHtMcs7 () |
Return MCS 7 from HT MCS values. | |
static WifiMode | GetHtMcs8 () |
Return MCS 8 from HT MCS values. | |
static WifiMode | GetHtMcs9 () |
Return MCS 9 from HT MCS values. | |
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. | |
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. | |
static uint64_t | GetPhyRateFromTxVector (const WifiTxVector &txVector, uint16_t staId) |
Return the PHY rate corresponding to the supplied TXVECTOR. | |
static void | InitializeModes () |
Initialize all HT modes. | |
static bool | IsAllowed (const WifiTxVector &txVector) |
Check whether the combination in TXVECTOR is allowed. | |
![]() | |
static WifiCodeRate | GetCodeRate (const std::string &name) |
Return the WifiCodeRate from the OFDM mode's unique name using ModulationLookupTable. | |
static uint16_t | GetConstellationSize (const std::string &name) |
Return the constellation size from the OFDM mode's unique name using ModulationLookupTable. | |
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. | |
static uint64_t | GetDataRateFromTxVector (const WifiTxVector &txVector, uint16_t staId) |
Return the data rate corresponding to the supplied TXVECTOR. | |
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). | |
static WifiMode | GetOfdmRate12Mbps () |
Return a WifiMode for OFDM at 12Mbps. | |
static WifiMode | GetOfdmRate12MbpsBW10MHz () |
Return a WifiMode for OFDM at 12 Mbps with 10 MHz channel spacing. | |
static WifiMode | GetOfdmRate12MbpsBW5MHz () |
Return a WifiMode for OFDM at 12 Mbps with 5 MHz channel spacing. | |
static WifiMode | GetOfdmRate13_5MbpsBW5MHz () |
Return a WifiMode for OFDM at 13.5 Mbps with 5 MHz channel spacing. | |
static WifiMode | GetOfdmRate18Mbps () |
Return a WifiMode for OFDM at 18 Mbps. | |
static WifiMode | GetOfdmRate18MbpsBW10MHz () |
Return a WifiMode for OFDM at 18 Mbps with 10 MHz channel spacing. | |
static WifiMode | GetOfdmRate1_5MbpsBW5MHz () |
Return a WifiMode for OFDM at 1.5 Mbps with 5 MHz channel spacing. | |
static WifiMode | GetOfdmRate24Mbps () |
Return a WifiMode for OFDM at 24 Mbps. | |
static WifiMode | GetOfdmRate24MbpsBW10MHz () |
Return a WifiMode for OFDM at 24 Mbps with 10 MHz channel spacing. | |
static WifiMode | GetOfdmRate27MbpsBW10MHz () |
Return a WifiMode for OFDM at 27 Mbps with 10 MHz channel spacing. | |
static WifiMode | GetOfdmRate2_25MbpsBW5MHz () |
Return a WifiMode for OFDM at 2.25 Mbps with 5 MHz channel spacing. | |
static WifiMode | GetOfdmRate36Mbps () |
Return a WifiMode for OFDM at 36 Mbps. | |
static WifiMode | GetOfdmRate3MbpsBW10MHz () |
Return a WifiMode for OFDM at 3 Mbps with 10 MHz channel spacing. | |
static WifiMode | GetOfdmRate3MbpsBW5MHz () |
Return a WifiMode for OFDM at 3 Mbps with 5 MHz channel spacing. | |
static WifiMode | GetOfdmRate48Mbps () |
Return a WifiMode for OFDM at 48 Mbps. | |
static WifiMode | GetOfdmRate4_5MbpsBW10MHz () |
Return a WifiMode for OFDM at 4.5 Mbps with 10 MHz channel spacing. | |
static WifiMode | GetOfdmRate4_5MbpsBW5MHz () |
Return a WifiMode for OFDM at 4.5 Mbps with 5 MHz channel spacing. | |
static WifiMode | GetOfdmRate54Mbps () |
Return a WifiMode for OFDM at 54 Mbps. | |
static WifiMode | GetOfdmRate6Mbps () |
Return a WifiMode for OFDM at 6 Mbps. | |
static WifiMode | GetOfdmRate6MbpsBW10MHz () |
Return a WifiMode for OFDM at 6 Mbps with 10 MHz channel spacing. | |
static WifiMode | GetOfdmRate6MbpsBW5MHz () |
Return a WifiMode for OFDM at 6 Mbps with 5 MHz channel spacing. | |
static WifiMode | GetOfdmRate9Mbps () |
Return a WifiMode for OFDM at 9 Mbps. | |
static WifiMode | GetOfdmRate9MbpsBW10MHz () |
Return a WifiMode for OFDM at 9 Mbps with 10 MHz channel spacing. | |
static WifiMode | GetOfdmRate9MbpsBW5MHz () |
Return a WifiMode for OFDM at 9 Mbps with 5 MHz channel spacing. | |
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. | |
static uint64_t | GetPhyRateFromTxVector (const WifiTxVector &txVector, uint16_t staId) |
Return the PHY rate corresponding to the supplied TXVECTOR. | |
static void | InitializeModes () |
Initialize all OFDM modes (for all variants). | |
static bool | IsAllowed (const WifiTxVector &txVector) |
Check whether the combination in TXVECTOR is allowed. | |
Protected Member Functions | |
void | BuildModeList () override |
Build mode list. | |
Time | CalculateNonOfdmaDurationForHeMu (const WifiTxVector &txVector) const override |
Time | CalculateNonOfdmaDurationForHeTb (const WifiTxVector &txVector) const override |
PhyFieldRxStatus | DoEndReceiveField (WifiPpduField field, Ptr< Event > event) override |
End receiving a given field, perform amendment-specific actions, and provide the status of the reception. | |
WifiPhyRxfailureReason | GetFailureReason (WifiPpduField field) const override |
Get the failure reason corresponding to the unsuccessful processing of a given PPDU field. | |
uint32_t | GetSigBSize (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. | |
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. | |
![]() | |
void | DoAbortCurrentReception (WifiPhyRxfailureReason reason) override |
Perform amendment-specific actions before aborting the current reception. | |
void | DoEndReceivePayload (Ptr< const WifiPpdu > ppdu) override |
Perform amendment-specific actions at the end of the reception of the payload. | |
Ptr< Event > | DoGetEvent (Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW) override |
Get the event corresponding to the incoming PPDU. | |
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. | |
Time | DoStartReceivePayload (Ptr< Event > event) override |
Start receiving the PSDU (i.e. | |
std::pair< uint16_t, WifiSpectrumBandInfo > | GetChannelWidthAndBand (const WifiTxVector &txVector, uint16_t staId) const override |
Get the channel width and band to use (will be overloaded by child classes). | |
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. | |
uint32_t | GetMaxPsduSize () const override |
Get the maximum PSDU size in bytes. | |
virtual uint32_t | GetSigBSize (const WifiTxVector &txVector) const |
Ptr< SpectrumValue > | GetTxPowerSpectralDensity (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. | |
bool | IsConfigSupported (Ptr< const WifiPpdu > ppdu) const override |
Checks if the signaled configuration (excluding bandwidth) is supported by the PHY. | |
uint64_t | ObtainNextUid (const WifiTxVector &txVector) override |
Obtain the next UID for the PPDU to transmit. | |
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. | |
virtual PhyFieldRxStatus | ProcessSigA (Ptr< Event > event, PhyFieldRxStatus status) |
Process SIG-A, perform amendment-specific actions, and provide an updated status of the reception. | |
virtual PhyFieldRxStatus | ProcessSigB (Ptr< Event > event, PhyFieldRxStatus status) |
Process SIG-B, perform amendment-specific actions, and provide an updated status of the reception. | |
void | RxPayloadFailed (Ptr< const WifiPsdu > psdu, double snr, const WifiTxVector &txVector) override |
Perform amendment-specific actions when the payload is unsuccessfuly received. | |
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. | |
void | StartReceiveOfdmaPayload (Ptr< Event > event) |
Start receiving the PSDU (i.e. | |
![]() | |
PhyFieldRxStatus | DoEndReceiveField (WifiPpduField field, Ptr< Event > event) override |
End receiving a given field, perform amendment-specific actions, and provide the status of the reception. | |
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. | |
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. | |
virtual WifiPhyRxfailureReason | GetFailureReason (WifiPpduField field) const |
Get the failure reason corresponding to the unsuccessful processing of a given PPDU field. | |
Time | GetHtSigDuration () const override |
WifiMode | GetHtSigMode () const override |
uint32_t | GetMaxPsduSize () const override |
Get the maximum PSDU size in bytes. | |
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. | |
virtual PhyFieldRxStatus | ProcessSig (Ptr< Event > event, PhyFieldRxStatus status, WifiPpduField field) |
Process SIG-A or SIG-B, perform amendment-specific actions, and provide an updated status of the reception. | |
![]() | |
virtual void | BuildModeList () |
Build mode list. | |
PhyFieldRxStatus | DoEndReceiveField (WifiPpduField field, Ptr< Event > event) override |
End receiving a given field, perform amendment-specific actions, and provide the status of the reception. | |
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. | |
uint32_t | GetMaxPsduSize () const override |
Get the maximum PSDU size in bytes. | |
virtual uint8_t | GetNumberBccEncoders (const WifiTxVector &txVector) const |
virtual Time | GetSymbolDuration (const WifiTxVector &txVector) const |
Ptr< SpectrumValue > | GetTxPowerSpectralDensity (double txPowerW, Ptr< const WifiPpdu > ppdu) const override |
bool | IsAllConfigSupported (WifiPpduField field, Ptr< const WifiPpdu > ppdu) const override |
Checks if the signaled configuration (including bandwidth) is supported by the PHY. | |
bool | IsConfigSupported (Ptr< const WifiPpdu > ppdu) const override |
Checks if the signaled configuration (excluding bandwidth) is supported by the PHY. | |
![]() | |
PhyFieldRxStatus | DoEndReceiveField (WifiPpduField field, Ptr< Event > event) override |
End receiving a given field, perform amendment-specific actions, and provide the status of the reception. | |
PhyFieldRxStatus | EndReceiveHeader (Ptr< Event > event) |
End receiving the header, perform OFDM-specific actions, and provide the status of the reception. | |
virtual Time | GetHeaderDuration (const WifiTxVector &txVector) const |
virtual WifiMode | GetHeaderMode (const WifiTxVector &txVector) const |
uint32_t | GetMaxPsduSize () const override |
Get the maximum PSDU size in bytes. | |
uint16_t | GetMeasurementChannelWidth (const Ptr< const WifiPpdu > ppdu) const override |
Return the channel width used to measure the RSSI. | |
uint8_t | GetNumberServiceBits () const |
virtual Time | GetPreambleDuration (const WifiTxVector &txVector) const |
Time | GetSignalExtension (WifiPhyBand band) const |
Ptr< SpectrumValue > | GetTxPowerSpectralDensity (double txPowerW, Ptr< const WifiPpdu > ppdu) const override |
virtual bool | IsAllConfigSupported (WifiPpduField field, Ptr< const WifiPpdu > ppdu) const |
Checks if the signaled configuration (including bandwidth) is supported by the PHY. | |
virtual bool | IsChannelWidthSupported (Ptr< const WifiPpdu > ppdu) const |
Checks if the PPDU's bandwidth is supported by the PHY. | |
![]() | |
void | AbortCurrentReception (WifiPhyRxfailureReason reason) |
Abort the current reception. | |
void | AddPreambleEvent (Ptr< Event > event) |
Add an entry to the map of current preamble events (stored in WifiPhy). | |
Ptr< Event > | CreateInterferenceEvent (Ptr< const WifiPpdu > ppdu, Time duration, RxPowerWattPerChannelBand &rxPower, bool isStartOfdmaRxing=false) |
Create an event using WifiPhy's InterferenceHelper class. | |
virtual void | DoAbortCurrentReception (WifiPhyRxfailureReason reason) |
Perform amendment-specific actions before aborting the current reception. | |
virtual PhyFieldRxStatus | DoEndReceiveField (WifiPpduField field, Ptr< Event > event) |
End receiving a given field, perform amendment-specific actions, and provide the status of the reception. | |
virtual void | DoEndReceivePayload (Ptr< const WifiPpdu > ppdu) |
Perform amendment-specific actions at the end of the reception of the payload. | |
virtual PhyFieldRxStatus | DoEndReceivePreamble (Ptr< Event > event) |
End receiving the preamble, perform amendment-specific actions, and provide the status of the reception. | |
virtual Ptr< Event > | DoGetEvent (Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW) |
Get the event corresponding to the incoming PPDU. | |
virtual void | DoResetReceive (Ptr< Event > event) |
Perform amendment-specific actions before resetting PHY at the end of the PPDU under reception after it has failed the PHY header. | |
virtual bool | DoStartReceiveField (WifiPpduField field, Ptr< Event > event) |
Start receiving a given field, perform amendment-specific actions, and signify if it is supported. | |
virtual Time | DoStartReceivePayload (Ptr< Event > event) |
Start receiving the PSDU (i.e. | |
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. | |
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. | |
void | EndPreambleDetectionPeriod (Ptr< Event > event) |
End the preamble detection period. | |
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. | |
virtual CcaIndication | GetCcaIndication (const Ptr< const WifiPpdu > ppdu) |
Get CCA end time and its corresponding channel list type when a new signal has been received by the PHY. | |
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. | |
virtual std::pair< uint16_t, WifiSpectrumBandInfo > | GetChannelWidthAndBand (const WifiTxVector &txVector, uint16_t staId) const |
Get the channel width and band to use (will be overloaded by child classes). | |
Ptr< const Event > | GetCurrentEvent () const |
Get the pointer to the current event (stored in WifiPhy). | |
const std::map< std::pair< uint64_t, WifiPreamble >, Ptr< Event > > & | GetCurrentPreambleEvents () const |
Get the map of current preamble events (stored in WifiPhy). | |
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. | |
uint16_t | GetGuardBandwidth (uint16_t currentChannelWidth) const |
virtual uint16_t | GetMeasurementChannelWidth (const Ptr< const WifiPpdu > ppdu) const =0 |
Return the channel width used to measure the RSSI. | |
SnrPer | GetPhyHeaderSnrPer (WifiPpduField field, Ptr< Event > event) const |
Obtain the SNR and PER of the PPDU field from the WifiPhy's InterferenceHelper class. | |
virtual const PpduFormats & | GetPpduFormats () const =0 |
Return the PPDU formats of the PHY. | |
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). | |
double | GetRandomValue () const |
Obtain a random value from the WifiPhy's generator. | |
std::pair< bool, SignalNoiseDbm > | GetReceptionStatus (Ptr< const WifiPsdu > psdu, Ptr< Event > event, uint16_t staId, Time relativeMpduStart, Time mpduDuration) |
Get the reception status for the provided MPDU and notify. | |
virtual uint16_t | GetRxChannelWidth (const WifiTxVector &txVector) const |
Return the channel width used in the reception spectrum model. | |
double | GetRxPowerWForPpdu (Ptr< Event > event) const |
Obtain the received power (W) for a given band. | |
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). | |
std::tuple< double, double, double > | GetTxMaskRejectionParams () const |
virtual Ptr< SpectrumValue > | GetTxPowerSpectralDensity (double txPowerW, Ptr< const WifiPpdu > ppdu) const =0 |
virtual bool | IsConfigSupported (Ptr< const WifiPpdu > ppdu) const |
Checks if the signaled configuration (excluding bandwidth) is supported by the PHY. | |
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. | |
void | NotifyPayloadBegin (const WifiTxVector &txVector, const Time &payloadDuration) |
Fire the trace indicating that the PHY is starting to receive the payload of a PPDU. | |
virtual void | RxPayloadFailed (Ptr< const WifiPsdu > psdu, double snr, const WifiTxVector &txVector) |
Perform amendment-specific actions when the payload is unsuccessfuly received. | |
virtual void | RxPayloadSucceeded (Ptr< const WifiPsdu > psdu, RxSignalInfo rxSignalInfo, const WifiTxVector &txVector, uint16_t staId, const std::vector< bool > &statusPerMpdu) |
Perform amendment-specific actions when the payload is successfully received. | |
void | ScheduleEndOfMpdus (Ptr< Event > event) |
Schedule end of MPDUs events. | |
void | StartPreambleDetectionPeriod (Ptr< Event > event) |
Start the preamble detection period. | |
void | StartReceivePayload (Ptr< Event > event) |
Start receiving the PSDU (i.e. | |
void | UpdateInterferenceEvent (Ptr< Event > event, const RxPowerWattPerChannelBand &rxPower) |
Update an event in WifiPhy's InterferenceHelper class. | |
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. | |
static WifiMode | CreateEhtMcs (uint8_t index) |
Create and return the EHT MCS corresponding to the provided index. | |
![]() | |
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. | |
static Time | GetSymbolDuration (Time guardInterval) |
static uint16_t | GetUsableSubcarriers (uint16_t channelWidth) |
![]() | |
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. | |
static uint16_t | GetUsableSubcarriers (uint16_t channelWidth) |
![]() | |
static uint64_t | CalculateDataRate (Time symbolDuration, uint16_t usableSubCarriers, uint16_t numberOfBitsPerSubcarrier, double codingRate, uint8_t nss) |
Calculates data rate from the supplied parameters. | |
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. | |
static uint64_t | CalculatePhyRate (WifiCodeRate codeRate, uint64_t dataRate) |
Return the PHY rate corresponding to the supplied code rate and data rate. | |
static double | GetCodeRatio (WifiCodeRate codeRate) |
Convert WifiCodeRate to a ratio, e.g., code ratio of WIFI_CODE_RATE_1_2 is 0.5. | |
static Time | GetSymbolDuration (Time guardInterval) |
static Time | GetSymbolDuration (uint16_t channelWidth) |
static uint16_t | GetUsableSubcarriers (uint16_t channelWidth) |
![]() | |
static uint64_t | CalculateDataRate (Time symbolDuration, uint16_t usableSubCarriers, uint16_t numberOfBitsPerSubcarrier, double codingRate) |
Calculates data rate from the supplied parameters. | |
static uint64_t | CalculateDataRate (WifiCodeRate codeRate, uint16_t constellationSize, uint16_t channelWidth) |
Calculates data rate from the supplied parameters. | |
static uint64_t | CalculatePhyRate (WifiCodeRate codeRate, uint64_t dataRate) |
Calculate the PHY rate in bps from code rate and data rate. | |
static double | GetCodeRatio (WifiCodeRate codeRate) |
Convert WifiCodeRate to a ratio, e.g., code ratio of WIFI_CODE_RATE_1_2 is 0.5. | |
static Time | GetSymbolDuration (uint16_t channelWidth) |
static uint16_t | GetUsableSubcarriers () |
Static Protected Attributes | |
static const PpduFormats | m_ehtPpduFormats |
EHT PPDU formats. | |
![]() | |
static uint64_t | m_globalPpduUid = 0 |
Global counter of the PPDU UID. | |
Additional Inherited Members | |
![]() | |
typedef Callback< void, HeSigAParameters > | EndOfHeSigACallback |
Callback upon end of HE-SIG-A. | |
using | RuBands = std::map< WifiSpectrumBandInfo, HeRu::RuSpec > |
Map a spectrum band associated with an RU to the RU specification. | |
![]() | |
typedef std::pair< std::pair< Time, Time >, WifiMode > | PhyHeaderChunkInfo |
A pair containing information on the PHY header chunk, namely the start and stop times of the chunk and the WifiMode used. | |
typedef std::map< WifiPpduField, PhyHeaderChunkInfo > | PhyHeaderSections |
A map of PhyHeaderChunkInfo elements per PPDU field. | |
enum | PhyRxFailureAction { DROP = 0 , ABORT , IGNORE } |
Action to perform in case of RX failure. More... | |
![]() | |
using | CcaIndication = std::optional< std::pair< Time, WifiChannelListType > > |
CCA end time and its corresponding channel list type (can be std::nullopt if IDLE) | |
typedef std::pair< WifiCodeRate, uint16_t > | CodeRateConstellationSizePair |
A pair to hold modulation information: code rate and constellation size. | |
typedef std::map< std::string, CodeRateConstellationSizePair > | ModulationLookupTable |
A modulation lookup table using unique name of modulation as key. | |
typedef std::map< WifiPreamble, std::vector< WifiPpduField > > | PpduFormats |
A map of PPDU field elements per preamble type. | |
typedef std::pair< uint64_t, uint16_t > | UidStaIdPair |
A pair of a UID and STA_ID. | |
![]() | |
std::map< uint16_t, EventId > | m_beginOfdmaPayloadRxEvents |
the beginning of the OFDMA payload reception events (indexed by STA-ID) | |
uint64_t | m_currentMuPpduUid |
UID of the HE MU or HE TB PPDU being received. | |
std::optional< WifiTxVector > | m_currentTxVector |
If the STA is an AP STA, this holds the TXVECTOR of the PPDU that has been sent. | |
EndOfHeSigACallback | m_endOfHeSigACallback |
end of HE-SIG-A callback | |
uint64_t | m_previouslyTxPpduUid |
UID of the previously sent PPDU, used by AP to recognize response HE TB PPDUs. | |
std::optional< WifiTxVector > | m_trigVector |
the TRIGVECTOR | |
std::optional< Time > | m_trigVectorExpirationTime |
expiration time of the TRIGVECTOR | |
![]() | |
uint8_t | m_bssMembershipSelector |
the BSS membership selector | |
uint8_t | m_maxMcsIndexPerSs |
the maximum MCS index per spatial stream as defined by the standard | |
uint8_t | m_maxSupportedMcsIndexPerSs |
the maximum supported MCS index per spatial stream | |
![]() | |
std::vector< EventId > | m_endOfMpduEvents |
the end of MPDU events (only used for A-MPDUs) | |
std::vector< EventId > | m_endPreambleDetectionEvents |
the end of preamble detection events | |
std::vector< EventId > | m_endRxPayloadEvents |
the end of receive events (only one unless UL MU reception) | |
std::list< WifiMode > | m_modeList |
the list of supported modes | |
std::map< UidStaIdPair, SignalNoiseDbm > | m_signalNoiseMap |
Map of the latest signal power and noise power in dBm (noise power includes the noise figure) | |
Ptr< WifiPhyStateHelper > | m_state |
Pointer to WifiPhyStateHelper of the WifiPhy (to make it reachable for child classes) | |
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. | |
Ptr< WifiPhy > | m_wifiPhy |
Pointer to the owning WifiPhy. | |
PHY entity for EHT (11be)
EHT PHY is based on HE PHY.
Refer to P802.11be/D1.5.
ns3::EhtPhy::EhtPhy | ( | bool | buildModeList = true | ) |
Constructor for EHT PHY.
buildModeList | flag used to add EHT modes to list (disabled by child classes to only add child classes' modes) |
Definition at line 56 of file eht-phy.cc.
References BuildModeList(), EHT_PHY, ns3::HtPhy::m_bssMembershipSelector, ns3::HtPhy::m_maxMcsIndexPerSs, ns3::HtPhy::m_maxSupportedMcsIndexPerSs, and NS_LOG_FUNCTION.
|
override |
|
overrideprotectedvirtual |
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 75 of file eht-phy.cc.
References CreateEhtMcs(), EHT_PHY, ns3::HtPhy::m_bssMembershipSelector, ns3::HtPhy::m_maxSupportedMcsIndexPerSs, ns3::PhyEntity::m_modeList, NS_ASSERT, NS_LOG_FUNCTION, and NS_LOG_LOGIC.
Referenced by EhtPhy().
|
overridevirtual |
Build amendment-specific PPDU.
psdus | the PHY payloads (PSDUs) |
txVector | the TXVECTOR that was used for the PPDU |
ppduDuration | the transmission duration of the PPDU |
Reimplemented from ns3::PhyEntity.
Definition at line 172 of file eht-phy.cc.
References ns3::WifiPhy::GetOperatingChannel(), ns3::PhyEntity::m_wifiPhy, NS_LOG_FUNCTION, ns3::HePhy::ObtainNextUid(), and ns3::HePpdu::PSD_NON_HE_PORTION.
|
staticprotected |
Return the rate (in bps) of the non-HT Reference Rate which corresponds to the supplied code rate and constellation size.
codeRate | the convolutional coding rate |
constellationSize | the size of modulation constellation |
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 391 of file eht-phy.cc.
References ns3::HePhy::CalculateNonHtReferenceRate(), NS_FATAL_ERROR, ns3::WIFI_CODE_RATE_3_4, and ns3::WIFI_CODE_RATE_5_6.
Referenced by GetNonHtReferenceRate().
|
overrideprotectedvirtual |
txVector | the transmission parameters used for the HE MU PPDU |
Reimplemented from ns3::HePhy.
Definition at line 156 of file eht-phy.cc.
References GetDuration(), ns3::WIFI_PPDU_FIELD_EHT_SIG, ns3::WIFI_PPDU_FIELD_NON_HT_HEADER, ns3::WIFI_PPDU_FIELD_PREAMBLE, and ns3::WIFI_PPDU_FIELD_U_SIG.
|
overrideprotectedvirtual |
txVector | the transmission parameters used for the HE TB PPDU |
Reimplemented from ns3::HePhy.
Definition at line 147 of file eht-phy.cc.
References GetDuration(), ns3::WIFI_PPDU_FIELD_NON_HT_HEADER, ns3::WIFI_PPDU_FIELD_PREAMBLE, and ns3::WIFI_PPDU_FIELD_U_SIG.
|
staticprotected |
Create and return the EHT MCS corresponding to the provided index.
This method binds all the callbacks used by WifiMode.
index | the index of the MCS |
Definition at line 291 of file eht-phy.cc.
References ns3::WifiModeFactory::CreateWifiMcs(), GetCodeRate(), GetConstellationSize(), GetDataRateFromTxVector(), GetNonHtReferenceRate(), GetPhyRateFromTxVector(), ns3::HePhy::IsAllowed(), ns3::MakeBoundCallback(), ns3::MakeCallback(), NS_ASSERT_MSG, and ns3::WIFI_MOD_CLASS_EHT.
Referenced by BuildModeList().
|
overrideprotectedvirtual |
End receiving a given field, perform amendment-specific actions, and provide the status of the reception.
field | the ending PPDU field |
event | the event holding incoming PPDU's information |
Reimplemented from ns3::PhyEntity.
Definition at line 184 of file eht-phy.cc.
References ns3::HtPhy::DoEndReceiveField(), ns3::VhtPhy::EndReceiveSig(), NS_LOG_FUNCTION, ns3::WIFI_PPDU_FIELD_EHT_SIG, and ns3::WIFI_PPDU_FIELD_U_SIG.
|
static |
Return the coding rate corresponding to the supplied EHT MCS index.
This function is used as a callback for WifiMode operation.
mcsValue | the MCS index |
Definition at line 307 of file eht-phy.cc.
References ns3::HePhy::GetCodeRate(), ns3::WIFI_CODE_RATE_3_4, and ns3::WIFI_CODE_RATE_5_6.
Referenced by CreateEhtMcs(), GetDataRate(), GetNonHtReferenceRate(), and GetPhyRate().
|
static |
Return the constellation size corresponding to the supplied EHT MCS index.
This function is used as a callback for WifiMode operation.
mcsValue | the MCS index |
Definition at line 321 of file eht-phy.cc.
References ns3::HePhy::GetConstellationSize().
Referenced by CreateEhtMcs(), GetDataRate(), and GetNonHtReferenceRate().
|
static |
Return the data rate corresponding to the supplied EHT MCS index, channel width, guard interval, and number of spatial streams.
mcsValue | the EHT MCS index |
channelWidth | the channel width in MHz |
guardInterval | the guard interval duration in nanoseconds |
nss | the number of spatial streams |
Definition at line 371 of file eht-phy.cc.
References ns3::HtPhy::CalculateDataRate(), GetCodeRate(), ns3::HtPhy::GetCodeRatio(), GetConstellationSize(), ns3::HePhy::GetSymbolDuration(), ns3::OfdmPhy::GetUsableSubcarriers(), ns3::NanoSeconds(), and NS_ASSERT.
Referenced by GetDataRateFromTxVector(), and GetPhyRate().
|
static |
Return the data rate corresponding to the supplied TXVECTOR for the STA-ID.
txVector | the TXVECTOR used for the transmission |
staId | the station ID for MU (unused if SU) |
Definition at line 357 of file eht-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 CreateEhtMcs().
|
overridevirtual |
Get the duration of the PPDU field (or group of fields) used by this entity for the given transmission parameters.
field | the PPDU field (or group of fields) |
txVector | the transmission parameters |
Reimplemented from ns3::PhyEntity.
Definition at line 115 of file eht-phy.cc.
References ns3::HtPhy::GetDuration(), ns3::WifiTxVector::GetPreambleType(), ns3::HePhy::GetSigADuration(), ns3::HePhy::GetSigBDuration(), ns3::NanoSeconds(), ns3::WIFI_PPDU_FIELD_EHT_SIG, ns3::WIFI_PPDU_FIELD_SIG_A, ns3::WIFI_PPDU_FIELD_SIG_B, and ns3::WIFI_PPDU_FIELD_U_SIG.
Referenced by CalculateNonOfdmaDurationForHeMu(), and CalculateNonOfdmaDurationForHeTb().
|
static |
Return the EHT MCS corresponding to the provided index.
index | the index of the MCS |
Definition at line 238 of file eht-phy.cc.
References CASE, and NS_ABORT_MSG.
Referenced by ns3::WifiTxVector::GetMode(), InitializeModes(), and ns3::EhtPpdu::SetTxVectorFromPhyHeaders().
|
static |
Return MCS 0 from EHT MCS values.
|
static |
Return MCS 1 from EHT MCS values.
|
static |
Return MCS 10 from EHT MCS values.
|
static |
Return MCS 11 from EHT MCS values.
|
static |
Return MCS 12 from EHT MCS values.
|
static |
Return MCS 13 from EHT MCS values.
|
static |
Return MCS 2 from EHT MCS values.
|
static |
Return MCS 3 from EHT MCS values.
|
static |
Return MCS 4 from EHT MCS values.
|
static |
Return MCS 5 from EHT MCS values.
|
static |
Return MCS 6 from EHT MCS values.
|
static |
Return MCS 7 from EHT MCS values.
|
static |
Return MCS 8 from EHT MCS values.
|
static |
Return MCS 9 from EHT MCS values.
Referenced by PhyHeaderSectionsTest::DoRun().
|
overrideprotectedvirtual |
Get the failure reason corresponding to the unsuccessful processing of a given PPDU field.
field | the PPDU field |
Reimplemented from ns3::VhtPhy.
Definition at line 215 of file eht-phy.cc.
References ns3::EHT_SIG_FAILURE, ns3::VhtPhy::GetFailureReason(), ns3::U_SIG_FAILURE, ns3::WIFI_PPDU_FIELD_EHT_SIG, and ns3::WIFI_PPDU_FIELD_U_SIG.
|
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.
mcsValue | the HE MCS index |
Definition at line 383 of file eht-phy.cc.
References CalculateNonHtReferenceRate(), GetCodeRate(), and GetConstellationSize().
Referenced by CreateEhtMcs().
|
static |
Return the PHY rate corresponding to the supplied EHT 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.
mcsValue | the EHT MCS index |
channelWidth | the considered channel width in MHz |
guardInterval | the considered guard interval duration in nanoseconds |
nss | the considered number of stream |
Definition at line 335 of file eht-phy.cc.
References ns3::HtPhy::CalculatePhyRate(), GetCodeRate(), and GetDataRate().
Referenced by GetPhyRateFromTxVector().
|
static |
Return the PHY rate corresponding to the supplied TXVECTOR for the STA-ID.
txVector | the TXVECTOR used for the transmission |
staId | the station ID for MU (unused if SU) |
Definition at line 343 of file eht-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 CreateEhtMcs().
|
overridevirtual |
Return the PPDU formats of the PHY.
Implements ns3::PhyEntity.
Definition at line 166 of file eht-phy.cc.
References m_ehtPpduFormats.
|
overridevirtual |
txVector | the transmission parameters |
Reimplemented from ns3::VhtPhy.
Definition at line 102 of file eht-phy.cc.
References ns3::WifiMode::GetMcsValue(), ns3::WifiTxVector::GetMode(), ns3::HePhy::GetSigBMode(), ns3::VhtPhy::GetVhtMcs(), and ns3::WifiTxVector::IsDlMu().
Referenced by GetSigMode().
|
overrideprotectedvirtual |
txVector | the transmission parameters |
Reimplemented from ns3::HePhy.
Definition at line 133 of file eht-phy.cc.
References ns3::WifiTxVector::GetChannelWidth(), ns3::WifiTxVector::GetEhtPpduType(), ns3::EhtPpdu::GetEhtSigFieldSize(), ns3::WifiPhy::GetOperatingChannel(), ns3::WifiTxVector::GetPreambleType(), ns3::WifiPhyOperatingChannel::GetPrimaryChannelIndex(), ns3::WifiTxVector::GetRuAllocation(), ns3::HePhy::GetSigBSize(), ns3::IsDlMu(), ns3::IsEht(), and ns3::PhyEntity::m_wifiPhy.
|
overrideprotectedvirtual |
Get the WifiMode for the SIG field specified by the PPDU field.
field | the PPDU field |
txVector | the transmission parameters |
Reimplemented from ns3::PhyEntity.
Definition at line 88 of file eht-phy.cc.
References ns3::HePhy::GetSigAMode(), GetSigBMode(), ns3::HePhy::GetSigMode(), ns3::WIFI_PPDU_FIELD_EHT_SIG, and ns3::WIFI_PPDU_FIELD_U_SIG.
|
static |
Initialize all EHT modes.
Definition at line 229 of file eht-phy.cc.
References GetEhtMcs().
Referenced by anonymous_namespace{eht-phy.cc}::ConstructorEht::ConstructorEht().
|
overrideprotectedvirtual |
Process SIG-A or SIG-B, perform amendment-specific actions, and provide an updated status of the reception.
event | the event holding incoming PPDU's information |
status | the status of the reception of the correctly received SIG-A or SIG-B after the configuration support check |
field | the current PPDU field to identify whether it is SIG-A or SIG-B |
Reimplemented from ns3::VhtPhy.
Definition at line 199 of file eht-phy.cc.
References NS_LOG_FUNCTION, ns3::HePhy::ProcessSig(), ns3::HePhy::ProcessSigA(), ns3::HePhy::ProcessSigB(), ns3::WIFI_PPDU_FIELD_EHT_SIG, and ns3::WIFI_PPDU_FIELD_U_SIG.
|
staticprotected |
EHT PPDU formats.
Definition at line 292 of file eht-phy.h.
Referenced by GetPpduFormats().