A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ns3::VhtPhy Class Reference

PHY entity for VHT (11ac) More...

#include "vht-phy.h"

+ Inheritance diagram for ns3::VhtPhy:
+ Collaboration diagram for ns3::VhtPhy:

Public Member Functions

 VhtPhy (bool buildModeList=true)
 Constructor for VHT PHY.
 
 ~VhtPhy () override
 Destructor for VHT PHY.
 
Ptr< WifiPpduBuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override
 Build amendment-specific PPDU.
 
dBm_u GetCcaThreshold (const Ptr< const WifiPpdu > ppdu, WifiChannelListType channelType) const override
 Return the CCA threshold 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 PpduFormatsGetPpduFormats () 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
 
- Public Member Functions inherited from ns3::HtPhy
 HtPhy (uint8_t maxNss=1, bool buildModeList=true)
 Constructor for HT PHY.
 
 ~HtPhy () override
 Destructor for HT PHY.
 
uint8_t GetBssMembershipSelector () 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
 
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.
 
- Public Member Functions inherited from ns3::OfdmPhy
 OfdmPhy (OfdmPhyVariant variant=OFDM_PHY_DEFAULT, bool buildModeList=true)
 Constructor for OFDM PHY.
 
 ~OfdmPhy () override
 Destructor for OFDM PHY.
 
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.
 
- Public Member Functions inherited from ns3::PhyEntity
virtual ~PhyEntity ()
 Destructor for PHY entity.
 
std::list< WifiMode >::const_iterator begin () const
 Return a const iterator to the first WifiMode.
 
Time CalculatePhyPreambleAndHeaderDuration (const WifiTxVector &txVector) const
 
virtual Time CalculateTxDuration (const WifiConstPsduMap &psduMap, const WifiTxVector &txVector, WifiPhyBand band) const
 
virtual void CancelAllEvents ()
 Cancel and clear all running events.
 
void CancelRunningEndPreambleDetectionEvents ()
 Cancel all end preamble detection events.
 
virtual bool CanStartRx (Ptr< const WifiPpdu > ppdu) 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 WifiPsduGetAddressedPsduInPpdu (Ptr< const WifiPpdu > ppdu) const
 Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU).
 
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.
 
WifiPpduField GetNextField (WifiPpduField currentField, WifiPreamble preamble) const
 Return the field following the provided one.
 
virtual uint8_t GetNumModes () const
 
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 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 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, dBm_u txPower, Ptr< SpectrumValue > txPowerSpectrum, const std::string &type)
 This function prepares most of the WifiSpectrumSignalParameters parameters and invokes SpectrumWifiPhy's Transmit method.
 
- Public Member Functions inherited from ns3::SimpleRefCount< PhyEntity >
 SimpleRefCount ()
 Default constructor.
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor.
 
uint32_t GetReferenceCount () const
 Get the reference count of the object.
 
SimpleRefCountoperator= (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 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, MHz_u channelWidth, Time 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, MHz_u channelWidth, Time 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, MHz_u channelWidth, uint8_t nss)
 Check whether the combination of <MCS, channel width, NSS> is allowed.
 
- 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.
 
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, MHz_u channelWidth, Time 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, MHz_u channelWidth, Time 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 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.
 
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, MHz_u 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, MHz_u 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, MHz_u 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

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.
 
- Protected Member Functions inherited from ns3::HtPhy
virtual Time GetSymbolDuration (const WifiTxVector &txVector) const
 
Ptr< SpectrumValueGetTxPowerSpectralDensity (Watt_u txPower, 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.
 
- 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.
 
virtual Time GetHeaderDuration (const WifiTxVector &txVector) const
 
virtual WifiMode GetHeaderMode (const WifiTxVector &txVector) const
 
MHz_u 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< SpectrumValueGetTxPowerSpectralDensity (Watt_u txPower, 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.
 
- Protected Member Functions inherited from ns3::PhyEntity
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< EventCreateInterferenceEvent (Ptr< const WifiPpdu > ppdu, Time duration, RxPowerWattPerChannelBand &rxPower, bool isStartHePortionRxing=false)
 Create an event using WifiPhy's InterferenceHelper class.
 
virtual void DoAbortCurrentReception (WifiPhyRxfailureReason reason)
 Perform amendment-specific actions before aborting the current 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< EventDoGetEvent (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< WifiMpdu > mpdu, 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 std::pair< MHz_u, WifiSpectrumBandInfoGetChannelWidthAndBand (const WifiTxVector &txVector, uint16_t staId) const
 Get the channel width and band to use (will be overloaded by child classes).
 
Ptr< const EventGetCurrentEvent () 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 (dBm_u threshold, const WifiSpectrumBandInfo &band)
 Return the delay until CCA busy is ended for a given sensitivity threshold and a given band.
 
MHz_u GetGuardBandwidth (MHz_u 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.
 
WifiSpectrumBandInfo GetPrimaryBand (MHz_u 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, SignalNoiseDbmGetReceptionStatus (Ptr< WifiMpdu > mpdu, Ptr< Event > event, uint16_t staId, Time relativeMpduStart, Time mpduDuration)
 Get the reception status for the provided MPDU and notify.
 
virtual MHz_u GetRxChannelWidth (const WifiTxVector &txVector) const
 Return the channel width used in the reception spectrum model.
 
Watt_u GetRxPowerForPpdu (Ptr< Event > event) const
 Obtain the received power for a given band.
 
WifiSpectrumBandInfo GetSecondaryBand (MHz_u 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< dBr_u, dBr_u, dBr_uGetTxMaskRejectionParams () const
 
virtual void HandleRxPpduWithSameContent (Ptr< Event > event, Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPower)
 Handle reception of a PPDU that carries the same content of another PPDU.
 
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.
 

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 uint16_t GetUsableSubcarriers (MHz_u 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.
 
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 uint16_t GetUsableSubcarriers (MHz_u 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.
 
static uint64_t CalculateDataRate (WifiCodeRate codeRate, uint16_t constellationSize, MHz_u 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 (MHz_u channelWidth)
 
static uint16_t GetUsableSubcarriers ()
 

Private Types

typedef std::map< std::tuple< MHz_u, uint8_t, uint8_t >, uint8_t > NesExceptionMap
 Typedef for storing exceptions in the number of BCC encoders for VHT MCSs.
 

Private Member Functions

void BuildModeList () override
 Build mode list.
 

Static Private Member Functions

static WifiMode CreateVhtMcs (uint8_t index)
 Return the VHT MCS corresponding to the provided index.
 

Static Private Attributes

static const NesExceptionMap m_exceptionsMap
 exception map for number of BCC encoders (extracted from VHT-MCS tables)
 
static const PpduFormats m_vhtPpduFormats
 VHT PPDU formats.
 

Additional Inherited Members

- 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.
 
typedef std::map< WifiPpduField, PhyHeaderChunkInfoPhyHeaderSections
 A map of PhyHeaderChunkInfo elements per PPDU field.
 
enum  PhyRxFailureAction { DROP = 0 , ABORT , IGNORE }
 Action to perform in case of RX failure. More...
 
- Protected Types inherited from ns3::PhyEntity
using CcaIndication
 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, CodeRateConstellationSizePairModulationLookupTable
 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.
 
- Protected Attributes inherited from ns3::HtPhy
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
 
- Protected Attributes inherited from ns3::PhyEntity
std::vector< EventIdm_endOfMacHdrEvents
 the end of MAC header events
 
std::vector< EventIdm_endOfMpduEvents
 the end of MPDU events (only used for A-MPDUs)
 
std::vector< EventIdm_endPreambleDetectionEvents
 the end of preamble detection events
 
std::vector< EventIdm_endRxPayloadEvents
 the end of receive events (only one unless UL MU reception)
 
std::list< WifiModem_modeList
 the list of supported modes
 
std::map< UidStaIdPair, SignalNoiseDbmm_signalNoiseMap
 Map of the latest signal power and noise power in dBm (noise power includes the noise figure)
 
Ptr< WifiPhyStateHelperm_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< WifiPhym_wifiPhy
 Pointer to the owning WifiPhy.
 
- Static Protected Attributes inherited from ns3::PhyEntity
static uint64_t m_globalPpduUid = 0
 Global counter of the PPDU UID.
 

Detailed Description

PHY entity for VHT (11ac)

VHT PHY is based on HT PHY.

Refer to IEEE 802.11-2016, clause 21.

Definition at line 37 of file vht-phy.h.

Member Typedef Documentation

◆ NesExceptionMap

typedef std::map< std::tuple<MHz_u , uint8_t , uint8_t >, uint8_t > ns3::VhtPhy::NesExceptionMap
private

Typedef for storing exceptions in the number of BCC encoders for VHT MCSs.

Definition at line 346 of file vht-phy.h.

Constructor & Destructor Documentation

◆ VhtPhy()

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

Constructor for VHT PHY.

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

Definition at line 89 of file vht-phy.cc.

References BuildModeList(), ns3::HtPhy::m_bssMembershipSelector, ns3::HtPhy::m_maxMcsIndexPerSs, ns3::HtPhy::m_maxSupportedMcsIndexPerSs, NS_LOG_FUNCTION, and VHT_PHY.

+ Here is the call graph for this function:

◆ ~VhtPhy()

ns3::VhtPhy::~VhtPhy ( )
override

Destructor for VHT PHY.

Definition at line 102 of file vht-phy.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

◆ BuildModeList()

void ns3::VhtPhy::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 108 of file vht-phy.cc.

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

Referenced by VhtPhy().

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

◆ BuildPpdu()

Ptr< WifiPpdu > ns3::VhtPhy::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::HtPhy.

Definition at line 240 of file vht-phy.cc.

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

+ Here is the call graph for this function:

◆ CalculateNonHtReferenceRate()

uint64_t ns3::VhtPhy::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 VHT MCS to its corresponding non-HT Reference Rate use the modulation and coding rate of the HT MCS and lookup in Table 10-7 of IEEE 802.11-2016.

Definition at line 486 of file vht-phy.cc.

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

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

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

◆ CreateVhtMcs()

WifiMode ns3::VhtPhy::CreateVhtMcs ( uint8_t index)
staticprivate

Return the VHT MCS corresponding to the provided index.

This method binds all the callbacks used by WifiMode.

Parameters
indexthe index of the MCS
Returns
a VHT MCS

Definition at line 379 of file vht-phy.cc.

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

Referenced by BuildModeList().

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

◆ DoEndReceiveField()

PhyEntity::PhyFieldRxStatus ns3::VhtPhy::DoEndReceiveField ( WifiPpduField field,
Ptr< Event > event )
overrideprotectedvirtual

End receiving a given field, perform amendment-specific actions, and provide the status of the reception.

Parameters
fieldthe ending PPDU field
eventthe event holding incoming PPDU's information
Returns
status of the reception of the PPDU field

Reimplemented from ns3::HtPhy.

Definition at line 251 of file vht-phy.cc.

References ns3::HtPhy::DoEndReceiveField(), EndReceiveSig(), NS_LOG_FUNCTION, ns3::WIFI_PPDU_FIELD_SIG_A, and ns3::WIFI_PPDU_FIELD_SIG_B.

+ Here is the call graph for this function:

◆ EndReceiveSig()

PhyEntity::PhyFieldRxStatus ns3::VhtPhy::EndReceiveSig ( Ptr< Event > event,
WifiPpduField field )
protected

End receiving the SIG-A or SIG-B, perform VHT-specific actions, and provide the status of the reception.

Child classes can perform amendment-specific actions by specializing

See also
ProcessSig.
Parameters
eventthe event holding incoming PPDU's information
fieldthe current PPDU field
Returns
status of the reception of the SIG-A of SIG-B

Definition at line 266 of file vht-phy.cc.

References ns3::PhyEntity::PhyFieldRxStatus::actionIfFailure, ns3::PhyEntity::DROP, GetFailureReason(), ns3::PhyEntity::GetPhyHeaderSnrPer(), ns3::PhyEntity::GetRandomValue(), IsAllConfigSupported(), ns3::PhyEntity::PhyFieldRxStatus::isSuccess, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::PhyEntity::SnrPer::per, ProcessSig(), ns3::RatioToDb(), ns3::PhyEntity::PhyFieldRxStatus::reason, ns3::PhyEntity::SnrPer::snr, ns3::UNSUPPORTED_SETTINGS, and ns3::WIFI_PPDU_FIELD_SIG_A.

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

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

◆ GetCcaIndication()

PhyEntity::CcaIndication ns3::VhtPhy::GetCcaIndication ( const Ptr< const WifiPpdu > ppdu)
overrideprotectedvirtual

Get CCA end time and its corresponding channel list type when a new signal has been received by the PHY.

Parameters
ppduthe incoming PPDU or nullptr for any signal
Returns
CCA end time and its corresponding channel list type when a new signal has been received by the PHY, or std::nullopt if all channel list types are IDLE.

Reimplemented from ns3::HtPhy.

Definition at line 577 of file vht-phy.cc.

References ns3::HtPhy::GetCcaIndication(), GetCcaThreshold(), ns3::WifiPhy::GetChannelWidth(), ns3::PhyEntity::GetDelayUntilCcaEnd(), ns3::WifiPhy::GetOperatingChannel(), ns3::PhyEntity::GetPrimaryBand(), ns3::WifiPhyOperatingChannel::GetPrimaryChannelCenterFrequency(), ns3::PhyEntity::GetSecondaryBand(), ns3::WifiPhyOperatingChannel::GetSecondaryChannelCenterFrequency(), ns3::PhyEntity::m_wifiPhy, ns3::secondaryChannels, and ns3::WIFI_CHANLIST_PRIMARY.

Referenced by ns3::HePhy::SwitchMaybeToCcaBusy().

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

◆ GetCcaThreshold()

dBm_u ns3::VhtPhy::GetCcaThreshold ( const Ptr< const WifiPpdu > ppdu,
WifiChannelListType channelType ) const
overridevirtual

Return the CCA threshold 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

Reimplemented from ns3::OfdmPhy.

Definition at line 537 of file vht-phy.cc.

References ns3::channelTypeToScalingFactor, ns3::WifiPhy::GetCcaEdThreshold(), ns3::WifiPhy::GetCcaSensitivityThreshold(), ns3::WifiPhy::GetDevice(), ns3::PhyEntity::m_wifiPhy, NS_ASSERT, NS_ASSERT_MSG, ns3::WIFI_CHANLIST_PRIMARY, ns3::WIFI_CHANLIST_SECONDARY, ns3::WIFI_CHANLIST_SECONDARY40, and ns3::WIFI_CHANLIST_SECONDARY80.

Referenced by GetCcaIndication(), and ns3::HePhy::GetCcaThreshold().

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

◆ GetCodeRate()

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

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

This function is reused by child classes and is used as a callback for WifiMode operation.

Parameters
mcsValuethe MCS index
Returns
the coding rate.

Definition at line 395 of file vht-phy.cc.

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

Referenced by CreateVhtMcs(), ns3::HePhy::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::VhtPhy::GetConstellationSize ( uint8_t mcsValue)
static

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

This function is reused by child classes and is used as a callback for WifiMode operation.

Parameters
mcsValuethe MCS index
Returns
the size of modulation constellation.

Definition at line 409 of file vht-phy.cc.

References ns3::HtPhy::GetConstellationSize().

Referenced by CreateVhtMcs(), ns3::HePhy::GetConstellationSize(), GetDataRate(), and GetNonHtReferenceRate().

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

◆ GetDataRate()

uint64_t ns3::VhtPhy::GetDataRate ( uint8_t mcsValue,
MHz_u channelWidth,
Time guardInterval,
uint8_t nss )
static

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

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

Definition at line 448 of file vht-phy.cc.

References ns3::HtPhy::CalculateDataRate(), GetCodeRate(), ns3::HtPhy::GetCodeRatio(), GetConstellationSize(), ns3::Time::GetNanoSeconds(), ns3::HtPhy::GetSymbolDuration(), ns3::OfdmPhy::GetUsableSubcarriers(), IsCombinationAllowed(), NS_ASSERT, and NS_ASSERT_MSG.

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::VhtPhy::GetDataRateFromTxVector ( const WifiTxVector & txVector,
uint16_t staId )
static

Return the data rate corresponding to the supplied TXVECTOR.

This function is mainly used as a callback for WifiMode operation.

Parameters
txVectorthe TXVECTOR used for the transmission
staIdthe station ID (only here to have a common signature for all callbacks)
Returns
the data bit rate in bps.

Definition at line 439 of file vht-phy.cc.

References ns3::WifiTxVector::GetChannelWidth(), GetDataRate(), ns3::WifiTxVector::GetGuardInterval(), ns3::WifiMode::GetMcsValue(), ns3::WifiTxVector::GetMode(), and ns3::WifiTxVector::GetNss().

Referenced by CreateVhtMcs().

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

◆ GetDuration()

Time ns3::VhtPhy::GetDuration ( WifiPpduField field,
const WifiTxVector & txVector ) const
overridevirtual

Get the duration of the PPDU field (or group of fields) used by this entity for the given transmission parameters.

Parameters
fieldthe PPDU field (or group of fields)
txVectorthe transmission parameters
Returns
the duration of the PPDU field

Reimplemented from ns3::HtPhy.

Definition at line 165 of file vht-phy.cc.

References ns3::HtPhy::GetDuration(), ns3::WifiTxVector::GetPreambleType(), GetSigADuration(), GetSigBDuration(), ns3::WIFI_PPDU_FIELD_SIG_A, and ns3::WIFI_PPDU_FIELD_SIG_B.

Referenced by ns3::HePhy::CalculateNonHeDurationForHeMu(), ns3::HePhy::CalculateNonHeDurationForHeTb(), ns3::HePhy::GetMaxDelayPpduSameUid(), and ns3::HePhy::StartReceivePreamble().

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

◆ GetFailureReason()

WifiPhyRxfailureReason ns3::VhtPhy::GetFailureReason ( WifiPpduField field) const
protectedvirtual

Get the failure reason corresponding to the unsuccessful processing of a given PPDU field.

Parameters
fieldthe PPDU field
Returns
the failure reason corresponding to the unsuccessful processing of the PPDU field

Reimplemented in ns3::EhtPhy.

Definition at line 291 of file vht-phy.cc.

References NS_ASSERT_MSG, ns3::SIG_A_FAILURE, ns3::SIG_B_FAILURE, ns3::UNKNOWN, ns3::WIFI_PPDU_FIELD_SIG_A, and ns3::WIFI_PPDU_FIELD_SIG_B.

Referenced by EndReceiveSig(), and ns3::EhtPhy::GetFailureReason().

+ Here is the caller graph for this function:

◆ GetHtSigDuration()

Time ns3::VhtPhy::GetHtSigDuration ( ) const
overrideprotectedvirtual
Returns
the duration of the HT-SIG field

Reimplemented from ns3::HtPhy.

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

References ns3::MicroSeconds().

+ Here is the call graph for this function:

◆ GetHtSigMode()

WifiMode ns3::VhtPhy::GetHtSigMode ( ) const
overrideprotectedvirtual
Returns
the WifiMode used for the HT-SIG field

Reimplemented from ns3::HtPhy.

Definition at line 143 of file vht-phy.cc.

References HT_PHY, ns3::HtPhy::m_bssMembershipSelector, NS_ASSERT, and NS_FATAL_ERROR.

◆ GetLSigDuration()

Time ns3::VhtPhy::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 179 of file vht-phy.cc.

References ns3::MicroSeconds().

+ Here is the call graph for this function:

◆ GetMaxPsduSize()

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

Get the maximum PSDU size in bytes.

Returns
the maximum PSDU size in bytes

Reimplemented from ns3::HtPhy.

Definition at line 531 of file vht-phy.cc.

◆ GetNonHtReferenceRate()

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

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

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

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

Definition at line 478 of file vht-phy.cc.

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

Referenced by CreateVhtMcs().

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

◆ GetNumberBccEncoders()

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

General rule: add an encoder when crossing maxRatePerCoder frontier

The value of 540 Mbps and 600 Mbps for normal GI and short GI (resp.) were obtained by observing the rates for which Nes was incremented in tables 21-30 to 21-61 of IEEE 802.11-2016. These values are the last values before changing encoders.

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 215 of file vht-phy.cc.

References ns3::WifiTxVector::GetChannelWidth(), ns3::WifiMode::GetDataRate(), ns3::WifiTxVector::GetGuardInterval(), ns3::WifiMode::GetMcsValue(), ns3::WifiTxVector::GetMode(), ns3::Time::GetNanoSeconds(), ns3::WifiTxVector::GetNss(), and m_exceptionsMap.

+ Here is the call graph for this function:

◆ GetPhyRate()

uint64_t ns3::VhtPhy::GetPhyRate ( uint8_t mcsValue,
MHz_u channelWidth,
Time guardInterval,
uint8_t nss )
static

Return the PHY rate corresponding to the supplied VHT 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 VHT MCS index
channelWidththe considered channel width
guardIntervalthe considered guard interval duration
nssthe considered number of stream
Returns
the physical bit rate of this signal in bps.

Definition at line 422 of file vht-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::VhtPhy::GetPhyRateFromTxVector ( const WifiTxVector & txVector,
uint16_t staId )
static

Return the PHY rate corresponding to the supplied TXVECTOR.

This function is mainly used as a callback for WifiMode operation.

Parameters
txVectorthe TXVECTOR used for the transmission
staIdthe station ID (only here to have a common signature for all callbacks)
Returns
the physical bit rate of this signal in bps.

Definition at line 430 of file vht-phy.cc.

References ns3::WifiTxVector::GetChannelWidth(), ns3::WifiTxVector::GetGuardInterval(), ns3::WifiMode::GetMcsValue(), ns3::WifiTxVector::GetMode(), ns3::WifiTxVector::GetNss(), and GetPhyRate().

Referenced by CreateVhtMcs().

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

◆ GetPpduFormats()

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

Return the PPDU formats of the PHY.

Returns
the PPDU formats of the PHY

Reimplemented from ns3::HtPhy.

Definition at line 121 of file vht-phy.cc.

References m_vhtPpduFormats.

◆ GetSigADuration()

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

Reimplemented in ns3::HePhy.

Definition at line 201 of file vht-phy.cc.

References ns3::MicroSeconds().

Referenced by GetDuration().

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

◆ GetSigAMode()

WifiMode ns3::VhtPhy::GetSigAMode ( ) const
virtual
Returns
the WifiMode used for the SIG-A field

Reimplemented in ns3::HePhy.

Definition at line 151 of file vht-phy.cc.

References ns3::HtPhy::GetLSigMode().

Referenced by GetSigMode().

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

◆ GetSigBDuration()

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

Reimplemented in ns3::HePhy.

Definition at line 207 of file vht-phy.cc.

References ns3::WifiTxVector::GetPreambleType(), ns3::MicroSeconds(), and ns3::WIFI_PREAMBLE_VHT_MU.

Referenced by GetDuration().

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

◆ GetSigBMode()

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

Reimplemented in ns3::EhtPhy, and ns3::HePhy.

Definition at line 157 of file vht-phy.cc.

References ns3::WifiTxVector::GetPreambleType(), GetVhtMcs0(), NS_ABORT_MSG_IF, and ns3::WIFI_PREAMBLE_VHT_MU.

Referenced by GetSigMode().

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

◆ GetSigMode()

WifiMode ns3::VhtPhy::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::HtPhy.

Definition at line 127 of file vht-phy.cc.

References GetSigAMode(), GetSigBMode(), ns3::HtPhy::GetSigMode(), ns3::WIFI_PPDU_FIELD_SIG_A, ns3::WIFI_PPDU_FIELD_SIG_B, and ns3::WIFI_PPDU_FIELD_TRAINING.

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

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

◆ GetTrainingDuration()

Time ns3::VhtPhy::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 vht-phy.cc.

References ns3::MicroSeconds(), and NS_ABORT_MSG_IF.

+ Here is the call graph for this function:

◆ GetUsableSubcarriers()

uint16_t ns3::VhtPhy::GetUsableSubcarriers ( MHz_u channelWidth)
staticprotected
Parameters
channelWidththe channel width
Returns
he number of usable subcarriers for data

Definition at line 464 of file vht-phy.cc.

References ns3::OfdmPhy::GetUsableSubcarriers().

+ Here is the call graph for this function:

◆ GetVhtMcs()

WifiMode ns3::VhtPhy::GetVhtMcs ( uint8_t index)
static

Return the VHT MCS corresponding to the provided index.

Parameters
indexthe index of the MCS
Returns
an VHT MCS

Definition at line 334 of file vht-phy.cc.

References CASE, and NS_ABORT_MSG.

Referenced by ns3::EhtPhy::GetSigBMode(), InitializeModes(), ns3::EhtPpdu::SetTxVectorFromPhyHeaders(), ns3::HePpdu::SetTxVectorFromPhyHeaders(), and ns3::VhtPpdu::SetTxVectorFromPhyHeaders().

+ Here is the caller graph for this function:

◆ GetVhtMcs0()

static WifiMode ns3::VhtPhy::GetVhtMcs0 ( )
static

Return MCS 0 from VHT MCS values.

Returns
MCS 0 from VHT MCS values

Referenced by WifiErrorRateModelsTestSuite::WifiErrorRateModelsTestSuite(), TxDurationTest::CheckMuTxDuration(), WifiPhyCcaThresholdsTest::CreateDummyVhtPpdu(), PhyHeaderSectionsTest::DoRun(), TxDurationTest::DoRun(), ns3::HePhy::GetSigAMode(), ns3::HePhy::GetSigBMode(), and GetSigBMode().

+ Here is the caller graph for this function:

◆ GetVhtMcs1()

static WifiMode ns3::VhtPhy::GetVhtMcs1 ( )
static

Return MCS 1 from VHT MCS values.

Returns
MCS 1 from VHT MCS values

Referenced by TxDurationTestSuite::TxDurationTestSuite(), IdealRateManagerChannelWidthTest::DoRun(), and ns3::HePhy::GetSigBMode().

+ Here is the caller graph for this function:

◆ GetVhtMcs2()

static WifiMode ns3::VhtPhy::GetVhtMcs2 ( )
static

Return MCS 2 from VHT MCS values.

Returns
MCS 2 from VHT MCS values

Referenced by IdealRateManagerChannelWidthTest::DoRun(), IdealRateManagerMimoTest::DoRun(), and ns3::HePhy::GetSigBMode().

+ Here is the caller graph for this function:

◆ GetVhtMcs3()

static WifiMode ns3::VhtPhy::GetVhtMcs3 ( )
static

Return MCS 3 from VHT MCS values.

Returns
MCS 3 from VHT MCS values

Referenced by TxDurationTestSuite::TxDurationTestSuite(), IdealRateManagerChannelWidthTest::DoRun(), IdealRateManagerMimoTest::DoRun(), and ns3::HePhy::GetSigBMode().

+ Here is the caller graph for this function:

◆ GetVhtMcs4()

static WifiMode ns3::VhtPhy::GetVhtMcs4 ( )
static

Return MCS 4 from VHT MCS values.

Returns
MCS 4 from VHT MCS values

Referenced by TxDurationTestSuite::TxDurationTestSuite(), and ns3::HePhy::GetSigBMode().

+ Here is the caller graph for this function:

◆ GetVhtMcs5()

static WifiMode ns3::VhtPhy::GetVhtMcs5 ( )
static

Return MCS 5 from VHT MCS values.

Returns
MCS 5 from VHT MCS values

Referenced by TxDurationTestSuite::TxDurationTestSuite(), ns3::HePhy::GetSigBMode(), WifiPrimaryChannelsTest::SendDlMuPpdu(), TestDlMuMimoPhyTransmission::SendMuPpdu(), TestDlOfdmaPhyPuncturing::SendMuPpdu(), TestDlOfdmaPhyTransmission::SendMuPpdu(), and TestUlOfdmaPpduUid::SendMuPpdu().

+ Here is the caller graph for this function:

◆ GetVhtMcs6()

static WifiMode ns3::VhtPhy::GetVhtMcs6 ( )
static

Return MCS 6 from VHT MCS values.

Returns
MCS 6 from VHT MCS values

◆ GetVhtMcs7()

static WifiMode ns3::VhtPhy::GetVhtMcs7 ( )
static

Return MCS 7 from VHT MCS values.

Returns
MCS 7 from VHT MCS values

Referenced by PhyHeaderSectionsTest::DoRun().

+ Here is the caller graph for this function:

◆ GetVhtMcs8()

static WifiMode ns3::VhtPhy::GetVhtMcs8 ( )
static

Return MCS 8 from VHT MCS values.

Returns
MCS 8 from VHT MCS values

Referenced by WifiErrorRateModelsTestSuite::WifiErrorRateModelsTestSuite(), and TxDurationTest::DoRun().

+ Here is the caller graph for this function:

◆ GetVhtMcs9()

static WifiMode ns3::VhtPhy::GetVhtMcs9 ( )
static

Return MCS 9 from VHT MCS values.

Returns
MCS 9 from VHT MCS values

Referenced by TxDurationTest::DoRun().

+ Here is the caller graph for this function:

◆ InitializeModes()

void ns3::VhtPhy::InitializeModes ( )
static

Initialize all VHT modes.

Definition at line 325 of file vht-phy.cc.

References GetVhtMcs().

Referenced by anonymous_namespace{vht-phy.cc}::ConstructorVht::ConstructorVht().

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

◆ IsAllConfigSupported()

bool ns3::VhtPhy::IsAllConfigSupported ( WifiPpduField field,
Ptr< const WifiPpdu > ppdu ) const
overrideprotectedvirtual

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

Parameters
fieldthe current PPDU field (SIG used for checking config)
ppduthe received PPDU
Returns
true if supported, false otherwise

Reimplemented from ns3::HtPhy.

Definition at line 315 of file vht-phy.cc.

References ns3::HtPhy::IsAllConfigSupported(), ns3::OfdmPhy::IsChannelWidthSupported(), ns3::WIFI_PPDU_FIELD_SIG_A, and ns3::WIFI_PPDU_TYPE_DL_MU.

Referenced by EndReceiveSig().

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

◆ IsAllowed()

bool ns3::VhtPhy::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 509 of file vht-phy.cc.

References ns3::WifiTxVector::GetChannelWidth(), ns3::WifiMode::GetMcsValue(), ns3::WifiTxVector::GetMode(), ns3::WifiTxVector::GetNss(), and IsCombinationAllowed().

Referenced by CreateVhtMcs().

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

◆ IsCombinationAllowed()

bool ns3::VhtPhy::IsCombinationAllowed ( uint8_t mcsValue,
MHz_u channelWidth,
uint8_t nss )
static

Check whether the combination of <MCS, channel width, NSS> is allowed.

This function is used as a callback for WifiMode operation.

Parameters
mcsValuethe considered MCS index
channelWidththe considered channel width
nssthe considered number of streams
Returns
true if this <MCS, channel width, NSS> combination is allowed, false otherwise.

Definition at line 517 of file vht-phy.cc.

Referenced by GetDataRate(), and IsAllowed().

+ Here is the caller graph for this function:

◆ ProcessSig()

PhyEntity::PhyFieldRxStatus ns3::VhtPhy::ProcessSig ( Ptr< Event > event,
PhyFieldRxStatus status,
WifiPpduField field )
protectedvirtual

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 in ns3::EhtPhy, and ns3::HePhy.

Definition at line 306 of file vht-phy.cc.

References NS_ASSERT, NS_LOG_FUNCTION, and ns3::WIFI_PREAMBLE_VHT_SU.

Referenced by EndReceiveSig().

+ Here is the caller graph for this function:

Member Data Documentation

◆ m_exceptionsMap

const VhtPhy::NesExceptionMap ns3::VhtPhy::m_exceptionsMap
staticprivate
Initial value:
{
{ std::make_tuple ( 80, 7, 2), 3 },
{ std::make_tuple ( 80, 7, 7), 6 },
{ std::make_tuple ( 80, 7, 8), 6 },
{ std::make_tuple ( 80, 8, 7), 6 },
{ std::make_tuple (160, 4, 7), 6 },
{ std::make_tuple (160, 5, 8), 8 },
{ std::make_tuple (160, 6, 7), 8 },
{ std::make_tuple (160, 7, 3), 4 },
{ std::make_tuple (160, 7, 4), 6 },
{ std::make_tuple (160, 7, 5), 7 },
{ std::make_tuple (160, 7, 7), 9 },
{ std::make_tuple (160, 7, 8), 12 },
{ std::make_tuple (160, 7, 9), 12 },
}

exception map for number of BCC encoders (extracted from VHT-MCS tables)

Definition at line 347 of file vht-phy.h.

Referenced by GetNumberBccEncoders().

◆ m_vhtPpduFormats

const PhyEntity::PpduFormats ns3::VhtPhy::m_vhtPpduFormats
staticprivate
Initial value:
{
}
@ WIFI_PREAMBLE_VHT_MU
@ WIFI_PREAMBLE_VHT_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.

VHT PPDU formats.

Definition at line 349 of file vht-phy.h.

Referenced by GetPpduFormats().


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