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

PHY entity for OFDM (11a) More...

#include "ofdm-phy.h"

+ Inheritance diagram for ns3::OfdmPhy:
+ Collaboration diagram for ns3::OfdmPhy:

Public Member Functions

 OfdmPhy (OfdmPhyVariant variant=OFDM_PHY_DEFAULT, bool buildModeList=true)
 Constructor for OFDM PHY. More...
 
virtual ~OfdmPhy ()
 Destructor for OFDM PHY. More...
 
Ptr< WifiPpduBuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override
 Build amendment-specific PPDU. More...
 
double GetCcaThreshold (const Ptr< const WifiPpdu > ppdu, WifiChannelListType channelType) const override
 Return the CCA threshold in dBm for a given channel type. More...
 
Time GetDuration (WifiPpduField field, const WifiTxVector &txVector) const override
 Get the duration of the PPDU field (or group of fields) used by this entity for the given transmission parameters. More...
 
Time GetPayloadDuration (uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, MpduType mpdutype, bool incFlag, uint32_t &totalAmpduSize, double &totalAmpduNumSymbols, uint16_t staId) const override
 
const PpduFormatsGetPpduFormats (void) const override
 Return the PPDU formats of the PHY. More...
 
WifiMode GetSigMode (WifiPpduField field, const WifiTxVector &txVector) const override
 Get the WifiMode for the SIG field specified by the PPDU field. More...
 
- Public Member Functions inherited from ns3::PhyEntity
virtual ~PhyEntity ()
 Destructor for PHY entity. More...
 
std::list< WifiMode >::const_iterator begin (void) const
 Return a const iterator to the first WifiMode. More...
 
virtual Ptr< WifiPpduBuildPpdu (const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration)
 Build amendment-specific PPDU. More...
 
Time CalculatePhyPreambleAndHeaderDuration (const WifiTxVector &txVector) const
 
virtual Time CalculateTxDuration (WifiConstPsduMap psduMap, const WifiTxVector &txVector, WifiPhyBand band) const
 
virtual void CancelAllEvents (void)
 Cancel and clear all running events. More...
 
void CancelRunningEndPreambleDetectionEvents (bool clear=false)
 Cancel and eventually clear all end preamble detection events. More...
 
std::list< WifiMode >::const_iterator end (void) const
 Return a const iterator to past-the-last WifiMode. More...
 
void EndReceiveField (WifiPpduField field, Ptr< Event > event)
 End receiving a given field. More...
 
void EndReceivePayload (Ptr< Event > event)
 The last symbol of the PPDU has arrived. More...
 
virtual Ptr< const WifiPsduGetAddressedPsduInPpdu (Ptr< const WifiPpdu > ppdu) const
 Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU). More...
 
virtual double GetCcaThreshold (const Ptr< const WifiPpdu > ppdu, WifiChannelListType channelType) const
 Return the CCA threshold in dBm for a given channel type. More...
 
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. More...
 
Time GetDurationUpToField (WifiPpduField field, const WifiTxVector &txVector) const
 Get the duration of the PPDU up to (but excluding) the given field. More...
 
virtual uint32_t GetMaxPsduSize (void) const =0
 Get the maximum PSDU size in bytes. More...
 
virtual WifiMode GetMcs (uint8_t index) const
 Get the WifiMode corresponding to the given MCS index. More...
 
WifiPpduField GetNextField (WifiPpduField currentField, WifiPreamble preamble) const
 Return the field following the provided one. More...
 
virtual uint8_t GetNumModes (void) 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. More...
 
Time GetRemainingDurationAfterField (Ptr< const WifiPpdu > ppdu, WifiPpduField field) const
 Get the remaining duration of the PPDU after the end of the given field. More...
 
virtual WifiMode GetSigMode (WifiPpduField field, const WifiTxVector &txVector) const
 Get the WifiMode for the SIG field specified by the PPDU field. More...
 
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. More...
 
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. More...
 
virtual bool HandlesMcsModes (void) const
 Check if the WifiModes handled by this PHY are MCSs. More...
 
virtual bool IsMcsSupported (uint8_t index) const
 Check if the WifiMode corresponding to the given MCS index is supported. More...
 
virtual bool IsModeSupported (WifiMode mode) const
 Check if the WifiMode is supported. More...
 
bool NoEndPreambleDetectionEvents (void) const
 
virtual void NotifyCcaBusy (const Ptr< const WifiPpdu > ppdu, Time duration, WifiChannelListType channelType)
 Notify PHY state helper to switch to CCA busy state,. More...
 
void ResetReceive (Ptr< Event > event)
 Reset PHY at the end of the PPDU under reception after it has failed the PHY header. More...
 
void SetOwner (Ptr< WifiPhy > wifiPhy)
 Set the WifiPhy owning this PHY entity. More...
 
void StartReceiveField (WifiPpduField field, Ptr< Event > event)
 Start receiving a given field. More...
 
virtual void StartReceivePreamble (Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW, Time rxDuration)
 Start receiving the PHY preamble of a PPDU (i.e. More...
 
virtual void StartTx (Ptr< const WifiPpdu > ppdu, const WifiTxVector &txVector)
 This function is called by SpectrumWifiPhy to send the PPDU while performing amendment-specific actions. More...
 
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. More...
 
void Transmit (Time txDuration, Ptr< const WifiPpdu > ppdu, const WifiTxVector &txVector, std::string type)
 This function prepares most of the WifiSpectrumSignalParameters parameters and invokes SpectrumWifiPhy's Transmit method. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< PhyEntity >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 

Static Public Member Functions

static WifiCodeRate GetCodeRate (const std::string &name)
 Return the WifiCodeRate from the OFDM mode's unique name using ModulationLookupTable. More...
 
static uint16_t GetConstellationSize (const std::string &name)
 Return the constellation size from the OFDM mode's unique name using ModulationLookupTable. More...
 
static uint64_t GetDataRate (const std::string &name, uint16_t channelWidth)
 Return the data rate from the OFDM mode's unique name and the supplied parameters. More...
 
static uint64_t GetDataRateFromTxVector (const WifiTxVector &txVector, uint16_t staId)
 Return the data rate corresponding to the supplied TXVECTOR. More...
 
static WifiMode GetOfdmRate (uint64_t rate, uint16_t bw=20)
 Return a WifiMode for OFDM corresponding to the provided rate and the channel bandwidth (20, 10, or 5 MHz). More...
 
static WifiMode GetOfdmRate12Mbps (void)
 Return a WifiMode for OFDM at 12Mbps. More...
 
static WifiMode GetOfdmRate12MbpsBW10MHz (void)
 Return a WifiMode for OFDM at 12 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate12MbpsBW5MHz (void)
 Return a WifiMode for OFDM at 12 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate13_5MbpsBW5MHz (void)
 Return a WifiMode for OFDM at 13.5 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate18Mbps (void)
 Return a WifiMode for OFDM at 18 Mbps. More...
 
static WifiMode GetOfdmRate18MbpsBW10MHz (void)
 Return a WifiMode for OFDM at 18 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate1_5MbpsBW5MHz (void)
 Return a WifiMode for OFDM at 1.5 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate24Mbps (void)
 Return a WifiMode for OFDM at 24 Mbps. More...
 
static WifiMode GetOfdmRate24MbpsBW10MHz (void)
 Return a WifiMode for OFDM at 24 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate27MbpsBW10MHz (void)
 Return a WifiMode for OFDM at 27 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate2_25MbpsBW5MHz (void)
 Return a WifiMode for OFDM at 2.25 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate36Mbps (void)
 Return a WifiMode for OFDM at 36 Mbps. More...
 
static WifiMode GetOfdmRate3MbpsBW10MHz (void)
 Return a WifiMode for OFDM at 3 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate3MbpsBW5MHz (void)
 Return a WifiMode for OFDM at 3 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate48Mbps (void)
 Return a WifiMode for OFDM at 48 Mbps. More...
 
static WifiMode GetOfdmRate4_5MbpsBW10MHz (void)
 Return a WifiMode for OFDM at 4.5 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate4_5MbpsBW5MHz (void)
 Return a WifiMode for OFDM at 4.5 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate54Mbps (void)
 Return a WifiMode for OFDM at 54 Mbps. More...
 
static WifiMode GetOfdmRate6Mbps (void)
 Return a WifiMode for OFDM at 6 Mbps. More...
 
static WifiMode GetOfdmRate6MbpsBW10MHz (void)
 Return a WifiMode for OFDM at 6 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate6MbpsBW5MHz (void)
 Return a WifiMode for OFDM at 6 Mbps with 5 MHz channel spacing. More...
 
static WifiMode GetOfdmRate9Mbps (void)
 Return a WifiMode for OFDM at 9 Mbps. More...
 
static WifiMode GetOfdmRate9MbpsBW10MHz (void)
 Return a WifiMode for OFDM at 9 Mbps with 10 MHz channel spacing. More...
 
static WifiMode GetOfdmRate9MbpsBW5MHz (void)
 Return a WifiMode for OFDM at 9 Mbps with 5 MHz channel spacing. More...
 
static uint64_t GetPhyRate (const std::string &name, uint16_t channelWidth)
 Return the PHY rate from the OFDM mode's unique name and the supplied parameters. More...
 
static uint64_t GetPhyRateFromTxVector (const WifiTxVector &txVector, uint16_t staId)
 Return the PHY rate corresponding to the supplied TXVECTOR. More...
 
static void InitializeModes (void)
 Initialize all OFDM modes (for all variants). More...
 
static bool IsAllowed (const WifiTxVector &txVector)
 Check whether the combination in TXVECTOR is allowed. More...
 

Protected Member Functions

PhyFieldRxStatus DoEndReceiveField (WifiPpduField field, Ptr< Event > event) override
 End receiving a given field, perform amendment-specific actions, and provide the status of the reception. More...
 
PhyFieldRxStatus EndReceiveHeader (Ptr< Event > event)
 End receiving the header, perform OFDM-specific actions, and provide the status of the reception. More...
 
virtual Time GetHeaderDuration (const WifiTxVector &txVector) const
 
virtual WifiMode GetHeaderMode (const WifiTxVector &txVector) const
 
uint32_t GetMaxPsduSize (void) const override
 Get the maximum PSDU size in bytes. More...
 
uint16_t GetMeasurementChannelWidth (const Ptr< const WifiPpdu > ppdu) const override
 Return the channel width used to measure the RSSI. More...
 
uint8_t GetNumberServiceBits (void) const
 
virtual Time GetPreambleDuration (const WifiTxVector &txVector) const
 
Time GetSignalExtension (WifiPhyBand band) const
 
Ptr< SpectrumValueGetTxPowerSpectralDensity (double txPowerW, Ptr< const WifiPpdu > ppdu, const WifiTxVector &txVector) const override
 
virtual bool IsAllConfigSupported (WifiPpduField field, Ptr< const WifiPpdu > ppdu) const
 Checks if the signaled configuration (including bandwidth) is supported by the PHY. More...
 
virtual bool IsChannelWidthSupported (Ptr< const WifiPpdu > ppdu) const
 Checks if the PPDU's bandwidth is supported by the PHY. More...
 
- Protected Member Functions inherited from ns3::PhyEntity
void AbortCurrentReception (WifiPhyRxfailureReason reason)
 Abort the current reception. More...
 
void AddPreambleEvent (Ptr< Event > event)
 Add an entry to the map of current preamble events (stored in WifiPhy). More...
 
Ptr< EventCreateInterferenceEvent (Ptr< const WifiPpdu > ppdu, const WifiTxVector &txVector, Time duration, RxPowerWattPerChannelBand &rxPower, bool isStartOfdmaRxing=false)
 Create an event using WifiPhy's InterferenceHelper class. More...
 
virtual void DoAbortCurrentReception (WifiPhyRxfailureReason reason)
 Perform amendment-specific actions before aborting the current reception. More...
 
virtual PhyFieldRxStatus DoEndReceiveField (WifiPpduField field, Ptr< Event > event)
 End receiving a given field, perform amendment-specific actions, and provide the status of the reception. More...
 
virtual void DoEndReceivePayload (Ptr< const WifiPpdu > ppdu)
 Perform amendment-specific actions at the end of the reception of the payload. More...
 
virtual PhyFieldRxStatus DoEndReceivePreamble (Ptr< Event > event)
 End receiving the preamble, perform amendment-specific actions, and provide the status of the reception. More...
 
virtual Ptr< EventDoGetEvent (Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW)
 Get the event corresponding to the incoming PPDU. More...
 
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. More...
 
virtual bool DoStartReceiveField (WifiPpduField field, Ptr< Event > event)
 Start receiving a given field, perform amendment-specific actions, and signify if it is supported. More...
 
virtual Time DoStartReceivePayload (Ptr< Event > event)
 Start receiving the PSDU (i.e. More...
 
void DropPreambleEvent (Ptr< const WifiPpdu > ppdu, WifiPhyRxfailureReason reason, Time endRx)
 Drop the PPDU and the corresponding preamble detection event, but keep CCA busy state after the completion of the currently processed event. More...
 
void EndOfMpdu (Ptr< Event > event, Ptr< const WifiPsdu > psdu, size_t mpduIndex, Time relativeStart, Time mpduDuration)
 The last symbol of an MPDU in an A-MPDU has arrived. More...
 
void EndPreambleDetectionPeriod (Ptr< Event > event)
 End the preamble detection period. More...
 
void ErasePreambleEvent (Ptr< const WifiPpdu > ppdu, Time rxDuration)
 Erase the event corresponding to the PPDU from the list of preamble events, but consider it as noise after the completion of the current event. More...
 
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. More...
 
uint16_t GetCenterFrequencyForChannelWidth (const WifiTxVector &txVector) const
 Get the center frequency of the channel corresponding the current TxVector rather than that of the supported channel width. More...
 
virtual std::pair< uint16_t, WifiSpectrumBandGetChannelWidthAndBand (const WifiTxVector &txVector, uint16_t staId) const
 Get the channel width and band to use (will be overloaded by child classes). More...
 
Ptr< const EventGetCurrentEvent (void) const
 Get the pointer to the current event (stored in WifiPhy). More...
 
const std::map< std::pair< uint64_t, WifiPreamble >, Ptr< Event > > & GetCurrentPreambleEvents (void) const
 Get the map of current preamble events (stored in WifiPhy). More...
 
Time GetDelayUntilCcaEnd (double thresholdDbm, WifiSpectrumBand band)
 Return the delay until CCA busy is ended for a given sensitivity threshold (in dBm) and a given band. More...
 
uint16_t GetGuardBandwidth (uint16_t currentChannelWidth) const
 
virtual uint16_t GetMeasurementChannelWidth (const Ptr< const WifiPpdu > ppdu) const =0
 Return the channel width used to measure the RSSI. More...
 
SnrPer GetPhyHeaderSnrPer (WifiPpduField field, Ptr< Event > event) const
 Obtain the SNR and PER of the PPDU field from the WifiPhy's InterferenceHelper class. More...
 
virtual const PpduFormatsGetPpduFormats (void) const =0
 Return the PPDU formats of the PHY. More...
 
WifiSpectrumBand GetPrimaryBand (uint16_t bandWidth) const
 If the operating channel width is a multiple of 20 MHz, return the start band index and the stop band index for the primary channel of the given bandwidth (which must be a multiple of 20 MHz and not exceed the operating channel width). More...
 
double GetRandomValue (void) const
 Obtain a random value from the WifiPhy's generator. More...
 
std::pair< bool, SignalNoiseDbmGetReceptionStatus (Ptr< const WifiPsdu > psdu, Ptr< Event > event, uint16_t staId, Time relativeMpduStart, Time mpduDuration)
 Get the reception status for the provided MPDU and notify. More...
 
virtual uint16_t GetRxChannelWidth (const WifiTxVector &txVector) const
 Return the channel width used in the reception spectrum model. More...
 
double GetRxPowerWForPpdu (Ptr< Event > event) const
 Obtain the received power (W) for a given band. More...
 
WifiSpectrumBand GetSecondaryBand (uint16_t bandWidth) const
 If the channel bonding is used, return the start band index and the stop band index for the secondary channel of the given bandwidth (which must be a multiple of 20 MHz and not exceed the operating channel width). More...
 
std::tuple< double, double, doubleGetTxMaskRejectionParams (void) const
 
virtual Ptr< SpectrumValueGetTxPowerSpectralDensity (double txPowerW, Ptr< const WifiPpdu > ppdu, const WifiTxVector &txVector) const =0
 
virtual bool IsConfigSupported (Ptr< const WifiPpdu > ppdu) const
 Checks if the signaled configuration (excluding bandwidth) is supported by the PHY. More...
 
void NotifyInterferenceRxEndAndClear (bool reset)
 Notify WifiPhy's InterferenceHelper of the end of the reception, clear maps and end of MPDU event, and eventually reset WifiPhy. More...
 
void NotifyPayloadBegin (const WifiTxVector &txVector, const Time &payloadDuration)
 Fire the trace indicating that the PHY is starting to receive the payload of a PPDU. More...
 
virtual uint64_t ObtainNextUid (const WifiTxVector &txVector)
 Obtain the next UID for the PPDU to transmit. More...
 
virtual void RxPayloadFailed (Ptr< const WifiPsdu > psdu, double snr, const WifiTxVector &txVector)
 Perform amendment-specific actions when the payload is unsuccessfully received. More...
 
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. More...
 
void ScheduleEndOfMpdus (Ptr< Event > event)
 Schedule end of MPDUs events. More...
 
void StartPreambleDetectionPeriod (Ptr< Event > event)
 Start the preamble detection period. More...
 
void StartReceivePayload (Ptr< Event > event)
 Start receiving the PSDU (i.e. More...
 
void UpdateInterferenceEvent (Ptr< Event > event, const RxPowerWattPerChannelBand &rxPower)
 Update an event in WifiPhy's InterferenceHelper class. More...
 

Static Protected Member Functions

static uint64_t CalculateDataRate (Time symbolDuration, uint16_t usableSubCarriers, uint16_t numberOfBitsPerSubcarrier, double codingRate)
 Calculates data rate from the supplied parameters. More...
 
static uint64_t CalculateDataRate (WifiCodeRate codeRate, uint16_t constellationSize, uint16_t channelWidth)
 Calculates data rate from the supplied parameters. More...
 
static uint64_t CalculatePhyRate (WifiCodeRate codeRate, uint64_t dataRate)
 Calculate the PHY rate in bps from code rate and data rate. More...
 
static double GetCodeRatio (WifiCodeRate codeRate)
 Convert WifiCodeRate to a ratio, e.g., code ratio of WIFI_CODE_RATE_1_2 is 0.5. More...
 
static Time GetSymbolDuration (uint16_t channelWidth)
 
static uint16_t GetUsableSubcarriers (void)
 

Static Private Member Functions

static WifiMode CreateOfdmMode (std::string uniqueName, bool isMandatory)
 Create an OFDM mode from a unique name, the unique name must already be contained inside ModulationLookupTable. More...
 

Static Private Attributes

static const ModulationLookupTable m_ofdmModulationLookupTable
 lookup table to retrieve code rate and constellation size corresponding to a unique name of modulation More...
 
static const PpduFormats m_ofdmPpduFormats
 OFDM PPDU formats. More...
 

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. More...
 
typedef std::map< WifiPpduField, PhyHeaderChunkInfoPhyHeaderSections
 A map of PhyHeaderChunkInfo elements per PPDU field. More...
 
enum  PhyRxFailureAction { DROP = 0 , ABORT , IGNORE }
 Action to perform in case of RX failure. More...
 
- Protected Types inherited from ns3::PhyEntity
using CcaIndication = std::optional< std::pair< Time, WifiChannelListType > >
 CCA end time and its corresponding channel list type (can be std::nullopt if IDLE) More...
 
typedef std::pair< WifiCodeRate, uint16_t > CodeRateConstellationSizePair
 A pair to hold modulation information: code rate and constellation size. More...
 
typedef std::map< std::string, CodeRateConstellationSizePairModulationLookupTable
 A modulation lookup table using unique name of modulation as key. More...
 
typedef std::map< WifiPreamble, std::vector< WifiPpduField > > PpduFormats
 A map of PPDU field elements per preamble type. More...
 
typedef std::pair< uint64_t, uint16_t > UidStaIdPair
 A pair of a UID and STA_ID. More...
 
- Protected Attributes inherited from ns3::PhyEntity
std::vector< EventIdm_endOfMpduEvents
 the end of MPDU events (only used for A-MPDUs) More...
 
std::vector< EventIdm_endPreambleDetectionEvents
 the end of preamble detection events More...
 
std::vector< EventIdm_endRxPayloadEvents
 the end of receive events (only one unless UL MU reception) More...
 
std::list< WifiModem_modeList
 the list of supported modes More...
 
std::map< UidStaIdPair, SignalNoiseDbmm_signalNoiseMap
 Map of the latest signal power and noise power in dBm (noise power includes the noise figure) More...
 
Ptr< WifiPhyStateHelperm_state
 Pointer to WifiPhyStateHelper of the WifiPhy (to make it reachable for child classes) More...
 
std::map< UidStaIdPair, std::vector< bool > > m_statusPerMpduMap
 Map of the current reception status per MPDU that is filled in as long as MPDUs are being processed by the PHY in case of an A-MPDU. More...
 
Ptr< WifiPhym_wifiPhy
 Pointer to the owning WifiPhy. More...
 
- Static Protected Attributes inherited from ns3::PhyEntity
static uint64_t m_globalPpduUid = 0
 Global counter of the PPDU UID. More...
 

Detailed Description

PHY entity for OFDM (11a)

This class is also used for the 10 MHz and 5 MHz bandwidth variants addressing vehicular communications (default is 20 MHz bandwidth).

Refer to IEEE 802.11-2016, clause 17.

Definition at line 60 of file ofdm-phy.h.

Constructor & Destructor Documentation

◆ OfdmPhy()

ns3::OfdmPhy::OfdmPhy ( OfdmPhyVariant  variant = OFDM_PHY_DEFAULT,
bool  buildModeList = true 
)

Constructor for OFDM PHY.

Parameters
variantthe OFDM PHY variant
buildModeListflag used to add OFDM modes to list (disabled by child classes to only add child classes' modes)

Definition at line 101 of file ofdm-phy.cc.

References GetOfdmRate(), ns3::GetOfdmRatesBpsList(), ns3::PhyEntity::m_modeList, NS_ABORT_MSG, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::OFDM_PHY_10_MHZ, ns3::OFDM_PHY_5_MHZ, and ns3::OFDM_PHY_DEFAULT.

+ Here is the call graph for this function:

◆ ~OfdmPhy()

ns3::OfdmPhy::~OfdmPhy ( )
virtual

Destructor for OFDM PHY.

Definition at line 141 of file ofdm-phy.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

◆ BuildPpdu()

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

Build amendment-specific PPDU.

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

Reimplemented from ns3::PhyEntity.

Reimplemented in ns3::VhtPhy.

Definition at line 275 of file ofdm-phy.cc.

References ns3::WifiTxVector::GetChannelWidth(), ns3::WifiPhy::GetOperatingChannel(), ns3::WifiPhy::GetPhyBand(), ns3::WifiPhyOperatingChannel::GetPrimaryChannelCenterFrequency(), ns3::PhyEntity::m_wifiPhy, NS_LOG_FUNCTION, and ns3::PhyEntity::ObtainNextUid().

+ Here is the call graph for this function:

◆ CalculateDataRate() [1/2]

uint64_t ns3::OfdmPhy::CalculateDataRate ( Time  symbolDuration,
uint16_t  usableSubCarriers,
uint16_t  numberOfBitsPerSubcarrier,
double  codingRate 
)
staticprotected

Calculates data rate from the supplied parameters.

Parameters
symbolDurationthe symbol duration
usableSubCarriersthe number of usable subcarriers for data
numberOfBitsPerSubcarrierthe number of data bits per subcarrier
codingRatethe coding rate
Returns
the data bit rate of this signal in bps.

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

References ns3::Time::GetNanoSeconds().

+ Here is the call graph for this function:

◆ CalculateDataRate() [2/2]

uint64_t ns3::OfdmPhy::CalculateDataRate ( WifiCodeRate  codeRate,
uint16_t  constellationSize,
uint16_t  channelWidth 
)
staticprotected

Calculates data rate from the supplied parameters.

Parameters
codeRatethe code rate of the mode
constellationSizethe size of modulation constellation
channelWidththe considered channel width in MHz
Returns
the data bit rate of this signal in bps.

Definition at line 568 of file ofdm-phy.cc.

References CalculateDataRate(), GetCodeRatio(), GetSymbolDuration(), and GetUsableSubcarriers().

Referenced by ns3::HtPhy::CalculateDataRate(), CalculateDataRate(), ns3::ErpOfdmPhy::GetDataRate(), GetDataRate(), and ns3::ErpOfdmPhy::GetPhyRate().

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

◆ CalculatePhyRate()

uint64_t ns3::OfdmPhy::CalculatePhyRate ( WifiCodeRate  codeRate,
uint64_t  dataRate 
)
staticprotected

Calculate the PHY rate in bps from code rate and data rate.

Parameters
codeRatethe WifiCodeRate
dataRatethe data rate in bps
Returns
the physical rate in bps from WifiCodeRate and data rate.

Definition at line 522 of file ofdm-phy.cc.

References GetCodeRatio().

Referenced by ns3::ErpOfdmPhy::GetPhyRate(), and GetPhyRate().

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

◆ CreateOfdmMode()

WifiMode ns3::OfdmPhy::CreateOfdmMode ( std::string  uniqueName,
bool  isMandatory 
)
staticprivate

Create an OFDM mode from a unique name, the unique name must already be contained inside ModulationLookupTable.

This method binds all the callbacks used by WifiMode.

Parameters
uniqueNamethe unique name of the WifiMode
isMandatorywhether the WifiMode is mandatory
Returns
the OFDM WifiMode

Definition at line 485 of file ofdm-phy.cc.

References ns3::WifiModeFactory::CreateWifiMode(), GetCodeRate(), GetConstellationSize(), GetDataRateFromTxVector(), GetPhyRateFromTxVector(), IsAllowed(), m_ofdmModulationLookupTable, ns3::MakeBoundCallback(), ns3::MakeCallback(), NS_ASSERT_MSG, and ns3::WIFI_MOD_CLASS_OFDM.

+ Here is the call graph for this function:

◆ DoEndReceiveField()

PhyEntity::PhyFieldRxStatus ns3::OfdmPhy::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::PhyEntity.

Reimplemented in ns3::VhtPhy.

Definition at line 284 of file ofdm-phy.cc.

References ns3::PhyEntity::DoEndReceiveField(), EndReceiveHeader(), NS_LOG_FUNCTION, and ns3::WIFI_PPDU_FIELD_NON_HT_HEADER.

Referenced by ns3::HtPhy::DoEndReceiveField().

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

◆ EndReceiveHeader()

PhyEntity::PhyFieldRxStatus ns3::OfdmPhy::EndReceiveHeader ( Ptr< Event event)
protected

End receiving the header, perform OFDM-specific actions, and provide the status of the reception.

Parameters
eventthe event holding incoming PPDU's information
Returns
status of the reception of the header

Definition at line 295 of file ofdm-phy.cc.

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

Referenced by DoEndReceiveField().

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

◆ GetCcaThreshold()

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

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

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

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

Reimplemented from ns3::PhyEntity.

Reimplemented in ns3::VhtPhy.

Definition at line 629 of file ofdm-phy.cc.

References ns3::DbmToW(), ns3::WifiPhy::GetCcaSensitivityThreshold(), ns3::PhyEntity::GetCcaThreshold(), ns3::PhyEntity::GetRxChannelWidth(), ns3::PhyEntity::m_wifiPhy, and ns3::WToDbm().

Referenced by ns3::HtPhy::GetCcaIndication().

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

◆ GetCodeRate()

WifiCodeRate ns3::OfdmPhy::GetCodeRate ( const std::string &  name)
static

Return the WifiCodeRate from the OFDM mode's unique name using ModulationLookupTable.

This is mainly used as a callback for WifiMode operation.

Parameters
namethe unique name of the OFDM mode
Returns
WifiCodeRate corresponding to the unique name

Definition at line 502 of file ofdm-phy.cc.

References m_ofdmModulationLookupTable.

Referenced by CreateOfdmMode(), GetDataRate(), and GetPhyRate().

+ Here is the caller graph for this function:

◆ GetCodeRatio()

double ns3::OfdmPhy::GetCodeRatio ( WifiCodeRate  codeRate)
staticprotected

Convert WifiCodeRate to a ratio, e.g., code ratio of WIFI_CODE_RATE_1_2 is 0.5.

Parameters
codeRatethe WifiCodeRate
Returns
the ratio form of WifiCodeRate.

Definition at line 535 of file ofdm-phy.cc.

References NS_FATAL_ERROR, ns3::WIFI_CODE_RATE_1_2, ns3::WIFI_CODE_RATE_2_3, ns3::WIFI_CODE_RATE_3_4, and ns3::WIFI_CODE_RATE_UNDEFINED.

Referenced by CalculateDataRate(), CalculatePhyRate(), and ns3::HtPhy::GetCodeRatio().

+ Here is the caller graph for this function:

◆ GetConstellationSize()

uint16_t ns3::OfdmPhy::GetConstellationSize ( const std::string &  name)
static

Return the constellation size from the OFDM mode's unique name using ModulationLookupTable.

This is mainly used as a callback for WifiMode operation.

Parameters
namethe unique name of the OFDM mode
Returns
constellation size corresponding to the unique name

Definition at line 508 of file ofdm-phy.cc.

References m_ofdmModulationLookupTable.

Referenced by CreateOfdmMode(), and GetDataRate().

+ Here is the caller graph for this function:

◆ GetDataRate()

uint64_t ns3::OfdmPhy::GetDataRate ( const std::string &  name,
uint16_t  channelWidth 
)
static

Return the data rate from the OFDM mode's unique name and the supplied parameters.

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

Parameters
namethe unique name of the OFDM mode
channelWidththe considered channel width in MHz
Returns
the data bit rate of this signal in bps.

Definition at line 560 of file ofdm-phy.cc.

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

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::OfdmPhy::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 553 of file ofdm-phy.cc.

References ns3::WifiTxVector::GetChannelWidth(), GetDataRate(), ns3::WifiTxVector::GetMode(), and ns3::WifiMode::GetUniqueName().

Referenced by CreateOfdmMode().

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

◆ GetDuration()

Time ns3::OfdmPhy::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::PhyEntity.

Reimplemented in ns3::VhtPhy.

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

References ns3::PhyEntity::GetDuration(), GetHeaderDuration(), GetPreambleDuration(), ns3::WIFI_PPDU_FIELD_NON_HT_HEADER, and ns3::WIFI_PPDU_FIELD_PREAMBLE.

+ Here is the call graph for this function:

◆ GetHeaderDuration()

Time ns3::OfdmPhy::GetHeaderDuration ( const WifiTxVector txVector) const
protectedvirtual
Parameters
txVectorthe transmission parameters
Returns
the duration of the SIGNAL field

Reimplemented in ns3::ErpOfdmPhy.

Definition at line 220 of file ofdm-phy.cc.

References ns3::WifiTxVector::GetChannelWidth(), and ns3::MicroSeconds().

Referenced by GetDuration().

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

◆ GetHeaderMode()

WifiMode ns3::OfdmPhy::GetHeaderMode ( const WifiTxVector txVector) const
protectedvirtual
Parameters
txVectorthe transmission parameters
Returns
the WifiMode used for the SIGNAL field

Reimplemented in ns3::ErpOfdmPhy.

Definition at line 160 of file ofdm-phy.cc.

References ns3::WifiTxVector::GetChannelWidth(), GetOfdmRate1_5MbpsBW5MHz(), GetOfdmRate3MbpsBW10MHz(), and GetOfdmRate6Mbps().

Referenced by GetSigMode().

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

◆ GetMaxPsduSize()

uint32_t ns3::OfdmPhy::GetMaxPsduSize ( void  ) const
overrideprotectedvirtual

Get the maximum PSDU size in bytes.

Returns
the maximum PSDU size in bytes

Implements ns3::PhyEntity.

Reimplemented in ns3::VhtPhy.

Definition at line 613 of file ofdm-phy.cc.

◆ GetMeasurementChannelWidth()

uint16_t ns3::OfdmPhy::GetMeasurementChannelWidth ( const Ptr< const WifiPpdu ppdu) const
overrideprotectedvirtual

Return the channel width used to measure the RSSI.

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

Implements ns3::PhyEntity.

Definition at line 619 of file ofdm-phy.cc.

References ns3::PhyEntity::GetRxChannelWidth().

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

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

◆ GetNumberServiceBits()

uint8_t ns3::OfdmPhy::GetNumberServiceBits ( void  ) const
protected
Returns
the number of service bits

Definition at line 263 of file ofdm-phy.cc.

Referenced by ns3::HtPhy::GetPayloadDuration(), and GetPayloadDuration().

+ Here is the caller graph for this function:

◆ GetOfdmRate()

WifiMode ns3::OfdmPhy::GetOfdmRate ( uint64_t  rate,
uint16_t  bw = 20 
)
static

◆ GetOfdmRate12Mbps()

static WifiMode ns3::OfdmPhy::GetOfdmRate12Mbps ( void  )
static

Return a WifiMode for OFDM at 12Mbps.

Returns
a WifiMode for OFDM at 12 Mbps

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate12MbpsBW10MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate12MbpsBW10MHz ( void  )
static

Return a WifiMode for OFDM at 12 Mbps with 10 MHz channel spacing.

Returns
a WifiMode for OFDM at 12 Mbps with 10 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate12MbpsBW5MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate12MbpsBW5MHz ( void  )
static

Return a WifiMode for OFDM at 12 Mbps with 5 MHz channel spacing.

Returns
a WifiMode for OFDM at 12 Mbps with 5 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate13_5MbpsBW5MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate13_5MbpsBW5MHz ( void  )
static

Return a WifiMode for OFDM at 13.5 Mbps with 5 MHz channel spacing.

Returns
a WifiMode for OFDM at 13.5 Mbps with 5 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate18Mbps()

static WifiMode ns3::OfdmPhy::GetOfdmRate18Mbps ( void  )
static

Return a WifiMode for OFDM at 18 Mbps.

Returns
a WifiMode for OFDM at 18 Mbps

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate18MbpsBW10MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate18MbpsBW10MHz ( void  )
static

Return a WifiMode for OFDM at 18 Mbps with 10 MHz channel spacing.

Returns
a WifiMode for OFDM at 18 Mbps with 10 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate1_5MbpsBW5MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate1_5MbpsBW5MHz ( void  )
static

Return a WifiMode for OFDM at 1.5 Mbps with 5 MHz channel spacing.

Returns
a WifiMode for OFDM at 1.5 Mbps with 5 MHz channel spacing

Referenced by GetHeaderMode(), and GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate24Mbps()

static WifiMode ns3::OfdmPhy::GetOfdmRate24Mbps ( void  )
static

Return a WifiMode for OFDM at 24 Mbps.

Returns
a WifiMode for OFDM at 24 Mbps

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate24MbpsBW10MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate24MbpsBW10MHz ( void  )
static

Return a WifiMode for OFDM at 24 Mbps with 10 MHz channel spacing.

Returns
a WifiMode for OFDM at 24 Mbps with 10 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate27MbpsBW10MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate27MbpsBW10MHz ( void  )
static

Return a WifiMode for OFDM at 27 Mbps with 10 MHz channel spacing.

Returns
a WifiMode for OFDM at 27 Mbps with 10 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate2_25MbpsBW5MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate2_25MbpsBW5MHz ( void  )
static

Return a WifiMode for OFDM at 2.25 Mbps with 5 MHz channel spacing.

Returns
a WifiMode for OFDM at 2.25 Mbps with 5 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate36Mbps()

static WifiMode ns3::OfdmPhy::GetOfdmRate36Mbps ( void  )
static

Return a WifiMode for OFDM at 36 Mbps.

Returns
a WifiMode for OFDM at 36 Mbps

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate3MbpsBW10MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate3MbpsBW10MHz ( void  )
static

Return a WifiMode for OFDM at 3 Mbps with 10 MHz channel spacing.

Returns
a WifiMode for OFDM at 3 Mbps with 10 MHz channel spacing

Referenced by GetHeaderMode(), and GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate3MbpsBW5MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate3MbpsBW5MHz ( void  )
static

Return a WifiMode for OFDM at 3 Mbps with 5 MHz channel spacing.

Returns
a WifiMode for OFDM at 3 Mbps with 5 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate48Mbps()

static WifiMode ns3::OfdmPhy::GetOfdmRate48Mbps ( void  )
static

Return a WifiMode for OFDM at 48 Mbps.

Returns
a WifiMode for OFDM at 48 Mbps

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate4_5MbpsBW10MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate4_5MbpsBW10MHz ( void  )
static

Return a WifiMode for OFDM at 4.5 Mbps with 10 MHz channel spacing.

Returns
a WifiMode for OFDM at 4.5 Mbps with 10 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate4_5MbpsBW5MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate4_5MbpsBW5MHz ( void  )
static

Return a WifiMode for OFDM at 4.5 Mbps with 5 MHz channel spacing.

Returns
a WifiMode for OFDM at 4.5 Mbps with 5 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate54Mbps()

static WifiMode ns3::OfdmPhy::GetOfdmRate54Mbps ( void  )
static

Return a WifiMode for OFDM at 54 Mbps.

Returns
a WifiMode for OFDM at 54 Mbps

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate6Mbps()

static WifiMode ns3::OfdmPhy::GetOfdmRate6Mbps ( void  )
static

Return a WifiMode for OFDM at 6 Mbps.

Returns
a WifiMode for OFDM at 6 Mbps

Referenced by GetHeaderMode(), ns3::HtPhy::GetLSigMode(), and GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate6MbpsBW10MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate6MbpsBW10MHz ( void  )
static

Return a WifiMode for OFDM at 6 Mbps with 10 MHz channel spacing.

Returns
a WifiMode for OFDM at 6 Mbps with 10 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate6MbpsBW5MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate6MbpsBW5MHz ( void  )
static

Return a WifiMode for OFDM at 6 Mbps with 5 MHz channel spacing.

Returns
a WifiMode for OFDM at 6 Mbps with 5 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate9Mbps()

static WifiMode ns3::OfdmPhy::GetOfdmRate9Mbps ( void  )
static

Return a WifiMode for OFDM at 9 Mbps.

Returns
a WifiMode for OFDM at 9 Mbps

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate9MbpsBW10MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate9MbpsBW10MHz ( void  )
static

Return a WifiMode for OFDM at 9 Mbps with 10 MHz channel spacing.

Returns
a WifiMode for OFDM at 9 Mbps with 10 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetOfdmRate9MbpsBW5MHz()

static WifiMode ns3::OfdmPhy::GetOfdmRate9MbpsBW5MHz ( void  )
static

Return a WifiMode for OFDM at 9 Mbps with 5 MHz channel spacing.

Returns
a WifiMode for OFDM at 9 Mbps with 5 MHz channel spacing

Referenced by GetOfdmRate().

+ Here is the caller graph for this function:

◆ GetPayloadDuration()

Time ns3::OfdmPhy::GetPayloadDuration ( uint32_t  size,
const WifiTxVector txVector,
WifiPhyBand  band,
MpduType  mpdutype,
bool  incFlag,
uint32_t totalAmpduSize,
double totalAmpduNumSymbols,
uint16_t  staId 
) const
overridevirtual
Parameters
sizethe number of bytes in the packet to send
txVectorthe TXVECTOR used for the transmission of this packet
bandthe frequency band
mpdutypethe type of the MPDU as defined in WifiPhy::MpduType.
incFlagthis flag is used to indicate that the variables need to be update or not This function is called a couple of times for the same packet so variables should not be increased each time.
totalAmpduSizethe total size of the previously transmitted MPDUs for the concerned A-MPDU. If incFlag is set, this parameter will be updated.
totalAmpduNumSymbolsthe number of symbols previously transmitted for the MPDUs in the concerned A-MPDU, used for the computation of the number of symbols needed for the last MPDU. If incFlag is set, this parameter will be updated.
staIdthe STA-ID of the PSDU (only used for MU PPDUs)
Returns
the duration of the PSDU

Implements ns3::PhyEntity.

Definition at line 243 of file ofdm-phy.cc.

References ns3::FemtoSeconds(), ns3::WifiMode::GetDataRate(), ns3::Time::GetFemtoSeconds(), ns3::WifiTxVector::GetMode(), ns3::Time::GetNanoSeconds(), GetNumberServiceBits(), GetSignalExtension(), and ns3::MicroSeconds().

+ Here is the call graph for this function:

◆ GetPhyRate()

uint64_t ns3::OfdmPhy::GetPhyRate ( const std::string &  name,
uint16_t  channelWidth 
)
static

Return the PHY rate from the OFDM mode's unique name and the supplied parameters.

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

Parameters
namethe unique name of the OFDM mode
channelWidththe considered channel width in MHz
Returns
the physical bit rate of this signal in bps.

Definition at line 514 of file ofdm-phy.cc.

References 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::OfdmPhy::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 528 of file ofdm-phy.cc.

References ns3::WifiTxVector::GetChannelWidth(), ns3::WifiTxVector::GetMode(), GetPhyRate(), and ns3::WifiMode::GetUniqueName().

Referenced by CreateOfdmMode().

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

◆ GetPpduFormats()

const PhyEntity::PpduFormats & ns3::OfdmPhy::GetPpduFormats ( void  ) const
overridevirtual

Return the PPDU formats of the PHY.

Returns
the PPDU formats of the PHY

Implements ns3::PhyEntity.

Reimplemented in ns3::VhtPhy.

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

References m_ofdmPpduFormats.

◆ GetPreambleDuration()

Time ns3::OfdmPhy::GetPreambleDuration ( const WifiTxVector txVector) const
protectedvirtual
Parameters
txVectorthe transmission parameters
Returns
the duration of the preamble field
See also
WIFI_PPDU_FIELD_PREAMBLE

Reimplemented in ns3::ErpOfdmPhy.

Definition at line 199 of file ofdm-phy.cc.

References ns3::WifiTxVector::GetChannelWidth(), and ns3::MicroSeconds().

Referenced by GetDuration().

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

◆ GetSigMode()

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

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

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

Reimplemented from ns3::PhyEntity.

Reimplemented in ns3::VhtPhy.

Definition at line 147 of file ofdm-phy.cc.

References GetHeaderMode(), ns3::PhyEntity::GetSigMode(), ns3::WIFI_PPDU_FIELD_NON_HT_HEADER, and ns3::WIFI_PPDU_FIELD_PREAMBLE.

+ Here is the call graph for this function:

◆ GetSignalExtension()

Time ns3::OfdmPhy::GetSignalExtension ( WifiPhyBand  band) const
protected
Parameters
bandthe frequency band being used
Returns
the signal extension duration

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

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

Referenced by ns3::HtPhy::GetPayloadDuration(), and GetPayloadDuration().

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

◆ GetSymbolDuration()

Time ns3::OfdmPhy::GetSymbolDuration ( uint16_t  channelWidth)
staticprotected
Parameters
channelWidththe channel width in MHz
Returns
the symbol duration

Definition at line 591 of file ofdm-phy.cc.

References ns3::MicroSeconds().

Referenced by CalculateDataRate().

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

◆ GetTxPowerSpectralDensity()

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

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

Implements ns3::PhyEntity.

Definition at line 341 of file ofdm-phy.cc.

References ns3::WifiSpectrumValueHelper::CreateOfdmTxPowerSpectralDensity(), ns3::PhyEntity::GetCenterFrequencyForChannelWidth(), ns3::WifiTxVector::GetChannelWidth(), ns3::PhyEntity::GetGuardBandwidth(), ns3::PhyEntity::GetTxMaskRejectionParams(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ GetUsableSubcarriers()

uint16_t ns3::OfdmPhy::GetUsableSubcarriers ( void  )
staticprotected
Returns
the number of usable subcarriers for data

Definition at line 585 of file ofdm-phy.cc.

Referenced by CalculateDataRate(), ns3::EhtPhy::GetDataRate(), ns3::HePhy::GetDataRate(), ns3::HtPhy::GetDataRate(), ns3::VhtPhy::GetDataRate(), and ns3::VhtPhy::GetUsableSubcarriers().

+ Here is the caller graph for this function:

◆ InitializeModes()

void ns3::OfdmPhy::InitializeModes ( void  )
static

Initialize all OFDM modes (for all variants).

Definition at line 353 of file ofdm-phy.cc.

References GetOfdmRate(), and ns3::GetOfdmRatesBpsList().

Referenced by anonymous_namespace{ofdm-phy.cc}::ConstructorOfdm::ConstructorOfdm().

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

◆ IsAllConfigSupported()

bool ns3::OfdmPhy::IsAllConfigSupported ( WifiPpduField  field,
Ptr< const WifiPpdu ppdu 
) const
protectedvirtual

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 in ns3::HtPhy, and ns3::VhtPhy.

Definition at line 331 of file ofdm-phy.cc.

References IsChannelWidthSupported(), and ns3::PhyEntity::IsConfigSupported().

Referenced by EndReceiveHeader(), and ns3::HtPhy::IsAllConfigSupported().

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

◆ IsAllowed()

bool ns3::OfdmPhy::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 607 of file ofdm-phy.cc.

Referenced by CreateOfdmMode().

+ Here is the caller graph for this function:

◆ IsChannelWidthSupported()

bool ns3::OfdmPhy::IsChannelWidthSupported ( Ptr< const WifiPpdu ppdu) const
protectedvirtual

Checks if the PPDU's bandwidth is supported by the PHY.

Parameters
ppduthe received PPDU
Returns
true if supported, false otherwise

Definition at line 319 of file ofdm-phy.cc.

References ns3::WifiPhy::GetChannelWidth(), ns3::PhyEntity::m_wifiPhy, and NS_LOG_DEBUG.

Referenced by IsAllConfigSupported(), and ns3::VhtPhy::IsAllConfigSupported().

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

Member Data Documentation

◆ m_ofdmModulationLookupTable

const PhyEntity::ModulationLookupTable ns3::OfdmPhy::m_ofdmModulationLookupTable
staticprivate
Initial value:
{
{ "OfdmRate6Mbps", { WIFI_CODE_RATE_1_2, 2 } },
{ "OfdmRate9Mbps", { WIFI_CODE_RATE_3_4, 2 } },
{ "OfdmRate12Mbps", { WIFI_CODE_RATE_1_2, 4 } },
{ "OfdmRate18Mbps", { WIFI_CODE_RATE_3_4, 4 } },
{ "OfdmRate24Mbps", { WIFI_CODE_RATE_1_2, 16 } },
{ "OfdmRate36Mbps", { WIFI_CODE_RATE_3_4, 16 } },
{ "OfdmRate48Mbps", { WIFI_CODE_RATE_2_3, 64 } },
{ "OfdmRate54Mbps", { WIFI_CODE_RATE_3_4, 64 } },
{ "OfdmRate3MbpsBW10MHz", { WIFI_CODE_RATE_1_2, 2 } },
{ "OfdmRate4_5MbpsBW10MHz", { WIFI_CODE_RATE_3_4, 2 } },
{ "OfdmRate6MbpsBW10MHz", { WIFI_CODE_RATE_1_2, 4 } },
{ "OfdmRate9MbpsBW10MHz", { WIFI_CODE_RATE_3_4, 4 } },
{ "OfdmRate12MbpsBW10MHz", { WIFI_CODE_RATE_1_2, 16 } },
{ "OfdmRate18MbpsBW10MHz", { WIFI_CODE_RATE_3_4, 16 } },
{ "OfdmRate24MbpsBW10MHz", { WIFI_CODE_RATE_2_3, 64 } },
{ "OfdmRate27MbpsBW10MHz", { WIFI_CODE_RATE_3_4, 64 } },
{ "OfdmRate1_5MbpsBW5MHz", { WIFI_CODE_RATE_1_2, 2 } },
{ "OfdmRate2_25MbpsBW5MHz", { WIFI_CODE_RATE_3_4, 2 } },
{ "OfdmRate3MbpsBW5MHz", { WIFI_CODE_RATE_1_2, 4 } },
{ "OfdmRate4_5MbpsBW5MHz", { WIFI_CODE_RATE_3_4, 4 } },
{ "OfdmRate6MbpsBW5MHz", { WIFI_CODE_RATE_1_2, 16 } },
{ "OfdmRate9MbpsBW5MHz", { WIFI_CODE_RATE_3_4, 16 } },
{ "OfdmRate12MbpsBW5MHz", { WIFI_CODE_RATE_2_3, 64 } },
{ "OfdmRate13_5MbpsBW5MHz", { WIFI_CODE_RATE_3_4, 64 } }
}
const uint16_t WIFI_CODE_RATE_3_4
3/4 coding rate
const uint16_t WIFI_CODE_RATE_1_2
1/2 coding rate
const uint16_t WIFI_CODE_RATE_2_3
2/3 coding rate

lookup table to retrieve code rate and constellation size corresponding to a unique name of modulation

Definition at line 441 of file ofdm-phy.h.

Referenced by CreateOfdmMode(), GetCodeRate(), and GetConstellationSize().

◆ m_ofdmPpduFormats

const PhyEntity::PpduFormats ns3::OfdmPhy::m_ofdmPpduFormats
staticprivate
Initial value:
{
}
@ WIFI_PREAMBLE_LONG
@ 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

OFDM PPDU formats.

Definition at line 439 of file ofdm-phy.h.

Referenced by GetPpduFormats().


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