A Discrete-Event Network Simulator
API
ns3::WifiPhy Class Referenceabstract

802.11 PHY layer model More...

#include "wifi-phy.h"

+ Inheritance diagram for ns3::WifiPhy:
+ Collaboration diagram for ns3::WifiPhy:

Public Types

typedef void(* MonitorSnifferRxCallback) (Ptr< const Packet > packet, uint16_t channelFreqMhz, WifiTxVector txVector, MpduInfo aMpdu, SignalNoiseDbm signalNoise, uint16_t staId)
 TracedCallback signature for monitor mode receive events. More...
 
typedef void(* MonitorSnifferTxCallback) (const Ptr< const Packet > packet, uint16_t channelFreqMhz, WifiTxVector txVector, MpduInfo aMpdu, uint16_t staId)
 TracedCallback signature for monitor mode transmit events. More...
 
typedef void(* PhyRxPayloadBeginTracedCallback) (WifiTxVector txVector, Time psduDuration)
 TracedCallback signature for start of PSDU reception events. More...
 
typedef void(* PsduTxBeginCallback) (WifiConstPsduMap psduMap, WifiTxVector txVector, double txPowerW)
 TracedCallback signature for PSDU transmit events. More...
 

Public Member Functions

 WifiPhy ()
 
virtual ~WifiPhy ()
 
void AddSupportedChannelWidth (uint16_t width)
 
virtual int64_t AssignStreams (int64_t stream)
 Assign a fixed random variable stream number to the random variables used by this model. More...
 
double CalculateSnr (const WifiTxVector &txVector, double ber) const
 
virtual void ConfigureStandardAndBand (WifiPhyStandard standard, WifiPhyBand band)
 Configure the PHY-level parameters for different Wi-Fi standard. More...
 
virtual WifiSpectrumBand ConvertHeRuSubcarriers (uint16_t bandWidth, uint16_t guardBandwidth, HeRu::SubcarrierRange range, uint8_t bandIndex=0) const
 
void EndReceiveInterBss (void)
 For HE receptions only, check and possibly modify the transmit power restriction state at the end of PPDU reception. More...
 
Time GetAckTxTime (void) const
 Return the estimated Ack TX time for this PHY. More...
 
Time GetBlockAckTxTime (void) const
 Return the estimated BlockAck TX time for this PHY. More...
 
std::list< uint8_t > GetBssMembershipSelectorList (void) const
 The WifiPhy::BssMembershipSelector() method is used (e.g., by a WifiRemoteStationManager) to determine the set of transmission/reception modes that this WifiPhy(-derived class) can support - a set of WifiMode objects which we call the BssMembershipSelectorSet, and which is stored inside HT PHY (and above) instances. More...
 
double GetCcaEdThreshold (void) const
 Return the CCA threshold (dBm). More...
 
virtual Ptr< ChannelGetChannel (void) const =0
 Return the Channel this WifiPhy is connected to. More...
 
uint8_t GetChannelNumber (void) const
 Return current channel number. More...
 
Time GetChannelSwitchDelay (void) const
 
uint16_t GetChannelWidth (void) const
 
WifiMode GetDefaultMode (void) const
 Get the default WifiMode supported by the PHY. More...
 
Time GetDelayUntilIdle (void)
 
Ptr< NetDeviceGetDevice (void) const
 Return the device this PHY is associated with. More...
 
uint16_t GetFrequency (void) const
 
virtual uint16_t GetGuardBandwidth (uint16_t currentChannelWidth) const =0
 
Time GetLastRxEndTime (void) const
 Return the end time of the last received packet. More...
 
Time GetLastRxStartTime (void) const
 Return the start time of the last received packet. More...
 
uint8_t GetMaxSupportedRxSpatialStreams (void) const
 
uint8_t GetMaxSupportedTxSpatialStreams (void) const
 
WifiMode GetMcs (WifiModulationClass modulation, uint8_t mcs) const
 Get the WifiMode object corresponding to the given MCS of the given modulation class. More...
 
std::list< WifiModeGetMcsList (void) const
 The WifiPhy::GetMcsList() method is used (e.g., by a WifiRemoteStationManager) to determine the set of transmission/reception MCS indices that this WifiPhy(-derived class) can support - a set of MCS indices which is stored by each HT PHY (and above). More...
 
std::list< WifiModeGetMcsList (WifiModulationClass modulation) const
 Get the list of supported MCSs for the given modulation class (i.e. More...
 
Ptr< MobilityModelGetMobility (void) const
 Return the mobility model this PHY is associated with. More...
 
std::list< WifiModeGetModeList (void) const
 The WifiPhy::GetModeList() method is used (e.g., by a WifiRemoteStationManager) to determine the set of transmission/reception (non-MCS) modes that this WifiPhy(-derived class) can support - a set of modes which is stored by each non-HT PHY. More...
 
std::list< WifiModeGetModeList (WifiModulationClass modulation) const
 Get the list of supported (non-MCS) modes for the given modulation class (i.e. More...
 
uint16_t GetNMcs (void) const
 
uint8_t GetNTxPower (void) const
 Return the number of available transmission power levels. More...
 
uint8_t GetNumberOfAntennas (void) const
 
const WifiPhyOperatingChannelGetOperatingChannel (void) const
 Get a const reference to the operating channel. More...
 
WifiPhyBand GetPhyBand (void) const
 Get the configured Wi-Fi band. More...
 
Ptr< PhyEntityGetPhyEntity (WifiModulationClass modulation) const
 Get the supported PHY entity corresponding to the modulation class, for the WifiPhy instance. More...
 
WifiPhyStandard GetPhyStandard (void) const
 Get the configured Wi-Fi standard. More...
 
Time GetPifs (void) const
 Return the PCF Interframe Space (PIFS) for this PHY. More...
 
double GetPowerDbm (uint8_t power) const
 Get the power of the given power level in dBm. More...
 
uint64_t GetPreviouslyRxPpduUid (void) const
 
double GetRxGain (void) const
 Return the reception gain (dB). More...
 
double GetRxSensitivity (void) const
 Return the receive sensitivity threshold (dBm). More...
 
bool GetShortPhyPreambleSupported (void) const
 Return whether short PHY preamble is supported. More...
 
Time GetSifs (void) const
 Return the Short Interframe Space (SIFS) for this PHY. More...
 
Time GetSlot (void) const
 Return the slot duration for this PHY. More...
 
Ptr< WifiPhyStateHelperGetState (void) const
 Return the WifiPhyStateHelper of this PHY. More...
 
std::vector< uint16_t > GetSupportedChannelWidthSet (void) const
 
double GetTxGain (void) const
 Return the transmission gain (dB). More...
 
virtual std::tuple< double, double, double > GetTxMaskRejectionParams (void) const =0
 
double GetTxPowerEnd (void) const
 Return the maximum available transmission power level (dBm). More...
 
double GetTxPowerForTransmission (Ptr< const WifiPpdu > ppdu) const
 Compute the transmit power for the next transmission. More...
 
double GetTxPowerStart (void) const
 Return the minimum available transmission power level (dBm). More...
 
bool IsMcsSupported (WifiModulationClass modulation, uint8_t mcs) const
 Check if the given MCS of the given modulation class is supported by the PHY. More...
 
bool IsModeSupported (WifiMode mode) const
 Check if the given WifiMode is supported by the PHY. More...
 
bool IsStateCcaBusy (void) const
 
bool IsStateIdle (void) const
 
bool IsStateOff (void) const
 
bool IsStateRx (void) const
 
bool IsStateSleep (void) const
 
bool IsStateSwitching (void) const
 
bool IsStateTx (void) const
 
void NotifyChannelAccessRequested (void)
 Notify the PHY that an access to the channel was requested. More...
 
void NotifyMonitorSniffRx (Ptr< const WifiPsdu > psdu, uint16_t channelFreqMhz, WifiTxVector txVector, SignalNoiseDbm signalNoise, std::vector< bool > statusPerMpdu, uint16_t staId=SU_STA_ID)
 Public method used to fire a MonitorSniffer trace for a wifi PSDU being received. More...
 
void NotifyMonitorSniffTx (Ptr< const WifiPsdu > psdu, uint16_t channelFreqMhz, WifiTxVector txVector, uint16_t staId=SU_STA_ID)
 Public method used to fire a MonitorSniffer trace for a wifi PSDU being transmitted. More...
 
void NotifyRxBegin (Ptr< const WifiPsdu > psdu, const RxPowerWattPerChannelBand &rxPowersW)
 Public method used to fire a PhyRxBegin trace. More...
 
void NotifyRxDrop (Ptr< const WifiPsdu > psdu, WifiPhyRxfailureReason reason)
 Public method used to fire a PhyRxDrop trace. More...
 
void NotifyRxEnd (Ptr< const WifiPsdu > psdu)
 Public method used to fire a PhyRxEnd trace. More...
 
void NotifyTxBegin (WifiConstPsduMap psdus, double txPowerW)
 Public method used to fire a PhyTxBegin trace. More...
 
void NotifyTxDrop (Ptr< const WifiPsdu > psdu)
 Public method used to fire a PhyTxDrop trace. More...
 
void NotifyTxEnd (WifiConstPsduMap psdus)
 Public method used to fire a PhyTxEnd trace. More...
 
void RegisterListener (WifiPhyListener *listener)
 
void ResetCca (bool powerRestricted, double txPowerMaxSiso=0, double txPowerMaxMimo=0)
 Reset PHY to IDLE, with some potential TX power restrictions for the next transmission. More...
 
void ResetReceive (Ptr< Event > event)
 Reset PHY at the end of the packet under reception after it has failed the PHY header. More...
 
void ResumeFromOff (void)
 Resume from off mode. More...
 
void ResumeFromSleep (void)
 Resume from sleep mode. More...
 
void Send (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector)
 This function is a wrapper for the Send variant that accepts a WifiConstPsduMap as first argument. More...
 
void Send (WifiConstPsduMap psdus, WifiTxVector txVector)
 
void SetCapabilitiesChangedCallback (Callback< void > callback)
 
void SetCcaEdThreshold (double threshold)
 Sets the CCA threshold (dBm). More...
 
virtual void SetChannelNumber (uint8_t id)
 Set channel number. More...
 
virtual void SetChannelWidth (uint16_t channelWidth)
 If the operating channel for this object has not been set yet, the given channel width is saved and will be used, along with the center frequency and channel number that have been saved similarly, to set the operating channel when the standard and band are configured. More...
 
void SetDevice (const Ptr< NetDevice > device)
 Sets the device this PHY is associated with. More...
 
void SetErrorRateModel (const Ptr< ErrorRateModel > rate)
 Sets the error rate model. More...
 
void SetFrameCaptureModel (const Ptr< FrameCaptureModel > frameCaptureModel)
 Sets the frame capture model. More...
 
virtual void SetFrequency (uint16_t freq)
 If the operating channel for this object has not been set yet, the given center frequency is saved and will be used, along with the channel number and width that have been saved similarly, to set the operating channel when the standard and band are configured. More...
 
void SetMaxSupportedRxSpatialStreams (uint8_t streams)
 
void SetMaxSupportedTxSpatialStreams (uint8_t streams)
 
void SetMobility (const Ptr< MobilityModel > mobility)
 assign a mobility model to this device More...
 
void SetNTxPower (uint8_t n)
 Sets the number of transmission power levels available between the minimum level and the maximum level. More...
 
void SetNumberOfAntennas (uint8_t antennas)
 
void SetOffMode (void)
 Put in off mode. More...
 
void SetOperatingChannel (uint8_t number, uint16_t frequency, uint16_t width)
 Set the operating channel according to the specified parameters. More...
 
void SetPifs (Time pifs)
 Set the PCF Interframe Space (PIFS) for this PHY. More...
 
void SetPostReceptionErrorModel (const Ptr< ErrorModel > em)
 Attach a receive ErrorModel to the WifiPhy. More...
 
void SetPreambleDetectionModel (const Ptr< PreambleDetectionModel > preambleDetectionModel)
 Sets the preamble detection model. More...
 
void SetPrimary20Index (uint8_t index)
 Set the index of the primary 20 MHz channel (0 indicates the 20 MHz subchannel with the lowest center frequency). More...
 
void SetReceiveErrorCallback (RxErrorCallback callback)
 
void SetReceiveOkCallback (RxOkCallback callback)
 
void SetRxGain (double gain)
 Sets the reception gain (dB). More...
 
void SetRxNoiseFigure (double noiseFigureDb)
 Sets the RX loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver. More...
 
void SetRxSensitivity (double threshold)
 Sets the receive sensitivity threshold (dBm). More...
 
void SetShortPhyPreambleSupported (bool preamble)
 Enable or disable short PHY preamble. More...
 
void SetSifs (Time sifs)
 Set the Short Interframe Space (SIFS) for this PHY. More...
 
void SetSleepMode (void)
 Put in sleep mode. More...
 
void SetSlot (Time slot)
 Set the slot duration for this PHY. More...
 
void SetTxGain (double gain)
 Sets the transmission gain (dB). More...
 
void SetTxPowerEnd (double end)
 Sets the maximum available transmission power level (dBm). More...
 
void SetTxPowerStart (double start)
 Sets the minimum available transmission power level (dBm). More...
 
void SetWifiRadioEnergyModel (const Ptr< WifiRadioEnergyModel > wifiRadioEnergyModel)
 Sets the wifi radio energy model. More...
 
void StartReceivePreamble (Ptr< WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW, Time rxDuration)
 Start receiving the PHY preamble of a PPDU (i.e. More...
 
virtual void StartTx (Ptr< WifiPpdu > ppdu)=0
 
void UnregisterListener (WifiPhyListener *listener)
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor. More...
 
virtual ~Object ()
 Destructor. More...
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together. More...
 
void Dispose (void)
 Dispose of this Object. More...
 
AggregateIterator GetAggregateIterator (void) const
 Get an iterator to the Objects aggregated to this one. More...
 
virtual TypeId GetInstanceTypeId (void) const
 Get the most derived TypeId for this Object. More...
 
template<typename T >
Ptr< T > GetObject (void) const
 Get a pointer to the requested aggregated Object. More...
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId. More...
 
template<>
Ptr< ObjectGetObject () const
 Specialization of () for objects of type ns3::Object. More...
 
template<>
Ptr< ObjectGetObject (TypeId tid) const
 Specialization of (TypeId tid) for objects of type ns3::Object. More...
 
void Initialize (void)
 Invoke DoInitialize on all Objects aggregated to this one. More...
 
bool IsInitialized (void) const
 Check if the object has been initialized. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 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...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 Get the value of an attribute, raising fatal errors if unsuccessful. More...
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising erros. More...
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful. More...
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors. More...
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context. More...
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context. More...
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context. More...
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context. More...
 

Static Public Member Functions

static void AddStaticPhyEntity (WifiModulationClass modulation, Ptr< PhyEntity > phyEntity)
 Add the PHY entity to the map of implemented PHY entities for the given modulation class. More...
 
static Time CalculatePhyPreambleAndHeaderDuration (const WifiTxVector &txVector)
 
static Time CalculateTxDuration (uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, uint16_t staId=SU_STA_ID)
 
static Time CalculateTxDuration (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, WifiPhyBand band)
 This function is a wrapper for the CalculateTxDuration variant that accepts a WifiConstPsduMap as first argument. More...
 
static Time CalculateTxDuration (WifiConstPsduMap psduMap, const WifiTxVector &txVector, WifiPhyBand band)
 
static uint32_t GetMaxPsduSize (WifiModulationClass modulation)
 Get the maximum PSDU size in bytes for the given modulation class. More...
 
static Time GetPayloadDuration (uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, MpduType mpdutype=NORMAL_MPDU, uint16_t staId=SU_STA_ID)
 
static Time GetPayloadDuration (uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, MpduType mpdutype, bool incFlag, uint32_t &totalAmpduSize, double &totalAmpduNumSymbols, uint16_t staId)
 
static Time GetPreambleDetectionDuration (void)
 
static Time GetStartOfPacketDuration (const WifiTxVector &txVector)
 
static const Ptr< const PhyEntityGetStaticPhyEntity (WifiModulationClass modulation)
 Get the implemented PHY entity corresponding to the modulation class. More...
 
static TypeId GetTypeId (void)
 Get the type ID. More...
 
static WifiConstPsduMap GetWifiConstPsduMap (Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector)
 Get a WifiConstPsduMap from a PSDU and the TXVECTOR to use to send the PSDU. More...
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 Get the type ID. More...
 

Static Public Attributes

static const std::set< FrequencyChannelInfom_frequencyChannels
 Available frequency channels. More...
 

Protected Member Functions

void AddPhyEntity (WifiModulationClass modulation, Ptr< PhyEntity > phyEntity)
 Add the PHY entity to the map of supported PHY entities for the given modulation class for the WifiPhy instance. More...
 
Time DoChannelSwitch (void)
 Perform any actions necessary when user changes operating channel after initialization. More...
 
virtual void DoDispose (void)
 Destructor implementation. More...
 
virtual WifiSpectrumBand GetBand (uint16_t bandWidth, uint8_t bandIndex=0)
 Get the start band index and the stop band index for a given band. More...
 
uint16_t GetMeasurementChannelWidth (const Ptr< const WifiPpdu > ppdu) const
 Return the channel width used to measure the RSSI. More...
 
WifiSpectrumBand GetPrimaryBand (uint16_t bandWidth)
 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...
 
void Reset (void)
 Reset data upon end of TX or RX. More...
 
void SwitchMaybeToCcaBusy (uint16_t channelWidth)
 Check if PHY state should move to CCA busy state based on current state of interference tracker. More...
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object. More...
 
virtual void DoInitialize (void)
 Initialize() implementation. More...
 
virtual void NotifyNewAggregate (void)
 Notify all Objects aggregated to this one of a new Object being aggregated. More...
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes. More...
 
virtual void NotifyConstructionCompleted (void)
 Notifier called once the ObjectBase is fully constructed. More...
 

Protected Attributes

Ptr< Eventm_currentEvent
 Hold the current event. More...
 
std::map< std::pair< uint64_t, WifiPreamble >, Ptr< Event > > m_currentPreambleEvents
 store event associated to a PPDU (that has a unique ID and preamble combination) whose preamble is being received More...
 
EventId m_endPhyRxEvent
 the end of PHY receive event More...
 
EventId m_endTxEvent
 the end of transmit event More...
 
InterferenceHelper m_interference
 the class handling interference computations More...
 
std::map< WifiModulationClass, Ptr< PhyEntity > > m_phyEntities
 This map holds the supported PHY entities. More...
 
uint64_t m_previouslyRxPpduUid
 UID of the previously received PPDU, reset to UINT64_MAX upon transmission. More...
 
Ptr< UniformRandomVariablem_random
 Provides uniform random variables. More...
 
uint32_t m_rxMpduReferenceNumber
 A-MPDU reference number to identify all received subframes belonging to the same received A-MPDU. More...
 
Ptr< WifiPhyStateHelperm_state
 Pointer to WifiPhyStateHelper. More...
 
uint32_t m_txMpduReferenceNumber
 A-MPDU reference number to identify all transmitted subframes belonging to the same received A-MPDU. More...
 

Private Member Functions

void AbortCurrentReception (WifiPhyRxfailureReason reason)
 Due to newly arrived signal, the current reception cannot be continued and has to be aborted. More...
 
void Configure80211a (void)
 Configure WifiPhy with appropriate channel frequency and supported rates for 802.11a standard. More...
 
void Configure80211ac (void)
 Configure WifiPhy with appropriate channel frequency and supported rates for 802.11ac standard. More...
 
void Configure80211ax (void)
 Configure WifiPhy with appropriate channel frequency and supported rates for 802.11ax standard. More...
 
void Configure80211b (void)
 Configure WifiPhy with appropriate channel frequency and supported rates for 802.11b standard. More...
 
void Configure80211g (void)
 Configure WifiPhy with appropriate channel frequency and supported rates for 802.11g standard. More...
 
void Configure80211n (void)
 Configure WifiPhy with appropriate channel frequency and supported rates for 802.11n standard. More...
 
void Configure80211p (void)
 Configure WifiPhy with appropriate channel frequency and supported rates for 802.11p standard. More...
 
void ConfigureHtDeviceMcsSet (void)
 Configure the device MCS set with the appropriate HtMcs modes for the number of available transmit spatial streams. More...
 
Ptr< const WifiPsduGetAddressedPsduInPpdu (Ptr< const WifiPpdu > ppdu) const
 Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU). More...
 
void MaybeCcaBusyDuration (uint16_t channelWidth)
 Eventually switch to CCA busy. More...
 
void PushMcs (WifiMode mode)
 Add the given MCS to the device MCS set. More...
 
void RebuildMcsMap (void)
 Rebuild the mapping of MCS values to indices in the device MCS set. More...
 

Private Attributes

Time m_ackTxTime
 estimated Ack TX time More...
 
WifiPhyBand m_band
 WifiPhyBand. More...
 
Time m_blockAckTxTime
 estimated BlockAck TX time More...
 
Callback< void > m_capabilitiesChangedCallback
 Callback when PHY capabilities changed. More...
 
double m_ccaEdThresholdW
 Clear channel assessment (CCA) threshold in watts. More...
 
bool m_channelAccessRequested
 Flag if channels access has been requested (used for OBSS_PD SR) More...
 
Time m_channelSwitchDelay
 Time required to switch between channel. More...
 
Ptr< NetDevicem_device
 Pointer to the device. More...
 
Ptr< FrameCaptureModelm_frameCaptureModel
 Frame capture model. More...
 
uint8_t m_initialChannelNumber
 Store channel number until initialization. More...
 
uint16_t m_initialChannelWidth
 Store channel width (MHz) until initialization. More...
 
uint16_t m_initialFrequency
 Store frequency until initialization (MHz) More...
 
uint8_t m_initialPrimary20Index
 Store the index of primary20 until initialization. More...
 
Ptr< MobilityModelm_mobility
 Pointer to the mobility model. More...
 
uint8_t m_nTxPower
 Number of available transmission power levels. More...
 
uint8_t m_numberOfAntennas
 Number of transmitters. More...
 
WifiPhyOperatingChannel m_operatingChannel
 Operating channel. More...
 
TracedCallback< Ptr< const Packet >, uint16_t, WifiTxVector, MpduInfo, SignalNoiseDbm, uint16_t > m_phyMonitorSniffRxTrace
 A trace source that emulates a Wi-Fi device in monitor mode sniffing a packet being received. More...
 
TracedCallback< Ptr< const Packet >, uint16_t, WifiTxVector, MpduInfo, uint16_t > m_phyMonitorSniffTxTrace
 A trace source that emulates a Wi-Fi device in monitor mode sniffing a packet being transmitted. More...
 
TracedCallback< Ptr< const Packet >, RxPowerWattPerChannelBandm_phyRxBeginTrace
 The trace source fired when a packet begins the reception process from the medium. More...
 
TracedCallback< Ptr< const Packet >, WifiPhyRxfailureReasonm_phyRxDropTrace
 The trace source fired when the PHY layer drops a packet it has received. More...
 
TracedCallback< Ptr< const Packet > > m_phyRxEndTrace
 The trace source fired when a packet ends the reception process from the medium. More...
 
TracedCallback< WifiTxVector, Timem_phyRxPayloadBeginTrace
 The trace source fired when the reception of the PHY payload (PSDU) begins. More...
 
TracedCallback< Ptr< const Packet >, double > m_phyTxBeginTrace
 The trace source fired when a packet begins the transmission process on the medium. More...
 
TracedCallback< Ptr< const Packet > > m_phyTxDropTrace
 The trace source fired when the PHY layer drops a packet as it tries to transmit it. More...
 
TracedCallback< Ptr< const Packet > > m_phyTxEndTrace
 The trace source fired when a packet ends the transmission process on the medium. More...
 
TracedCallback< WifiConstPsduMap, WifiTxVector, double > m_phyTxPsduBeginTrace
 The trace source fired when a PSDU map begins the transmission process on the medium. More...
 
Time m_pifs
 PCF Interframe Space (PIFS) duration. More...
 
Ptr< ErrorModelm_postReceptionErrorModel
 Error model for receive packet events. More...
 
double m_powerDensityLimit
 the power density limit (dBm/MHz) More...
 
bool m_powerRestricted
 Flag whether transmit power is restricted by OBSS PD SR. More...
 
Ptr< PreambleDetectionModelm_preambleDetectionModel
 Preamble detection model. More...
 
double m_rxGainDb
 Reception gain (dB) More...
 
double m_rxSensitivityW
 Receive sensitivity threshold in watts. More...
 
uint8_t m_rxSpatialStreams
 Number of supported RX spatial streams. More...
 
bool m_shortPreamble
 Flag if short PHY preamble is supported. More...
 
Time m_sifs
 Short Interframe Space (SIFS) duration. More...
 
Time m_slot
 Slot duration. More...
 
WifiPhyStandard m_standard
 WifiPhyStandard. More...
 
std::vector< uint16_t > m_supportedChannelWidthSet
 Supported channel width set (MHz) More...
 
Time m_timeLastPreambleDetected
 Record the time the last preamble was detected. More...
 
double m_txGainDb
 Transmission gain (dB) More...
 
double m_txPowerBaseDbm
 Minimum transmission power (dBm) More...
 
double m_txPowerEndDbm
 Maximum transmission power (dBm) More...
 
double m_txPowerMaxMimo
 MIMO maximum transmit power due to OBSS PD SR power restriction (dBm) More...
 
double m_txPowerMaxSiso
 SISO maximum transmit power due to OBSS PD SR power restriction (dBm) More...
 
uint8_t m_txSpatialStreams
 Number of supported TX spatial streams. More...
 
Ptr< WifiRadioEnergyModelm_wifiRadioEnergyModel
 Wifi radio energy model. More...
 

Static Private Attributes

static std::map< WifiModulationClass, Ptr< PhyEntity > > m_staticPhyEntities
 Map of implemented PHY entities. More...
 

Friends

class PhyEntity
 

Additional Inherited Members

Detailed Description

802.11 PHY layer model


Config Paths

ns3::WifiPhy is accessible through the following paths with Config::Set and Config::Connect:

  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Phy"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WaveNetDevice/PhyEntities/[i]"

Attributes

  • Frequency: The center frequency (MHz) of the operating channel. If the operating channel for this object has not been set yet, the value of this attribute is saved and will be used, along with the channel number and width configured via other attributes, to set the operating channel when the standard and band are configured. The default value of this attribute is 0, which means unspecified center frequency. Note that if center frequency and channel number are both 0 when the standard and band are configured, a default channel (of the configured width, if any, or the default width for the current standard and band, otherwise) is set. If the operating channel for this object has been already set, the specified center frequency must uniquely identify a channel in the band being used.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint16_t 0:65535
    • Initial value: 0
    • Flags: construct write read
  • ChannelNumber: The channel number of the operating channel. If the operating channel for this object has not been set yet, the value of this attribute is saved and will be used, along with the center frequency and width configured via other attributes, to set the operating channel when the standard and band are configured. The default value of this attribute is 0, which means unspecified channel number. Note that if center frequency and channel number are both 0 when the standard and band are configured, a default channel (of the configured width, if any, or the default width for the current standard and band, otherwise) is set. If the operating channel for this object has been already set, the specified channel number must uniquely identify a channel in the band being used.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 0:233
    • Initial value: 0
    • Flags: construct write read
  • ChannelWidth: The width in MHz of the operating channel (5, 10, 20, 22, 40, 80 or 160). If the operating channel for this object has not been set yet, the value of this attribute is saved and will be used, along with the center frequency and channel number configured via other attributes, to set the operating channel when the standard and band are configured. The default value of this attribute is 0, which means unspecified channel width. Note that if center frequency and channel number are both 0 when the standard and band are configured, a default channel (of the configured width, if any, or the default width for the current standard and band, otherwise) is set. Do not set this attribute when the standard and band of this object have been already configured, because it cannot uniquely identify a channel in the band being used.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint16_t 5:160
    • Initial value: 0
    • Flags: construct write read
  • Primary20MHzIndex: The index of the primary 20 MHz channel within the operating channel (0 indicates the 20 MHz subchannel with the lowest center frequency). This attribute is only valid if the width of the operating channel is a multiple of 20 MHz.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 0:7
    • Initial value: 0
    • Flags: construct write
  • RxSensitivity: The energy of a received signal should be higher than this threshold (dBm) for the PHY to detect the signal. This threshold refers to a width of 20 MHz and will be scaled to match the width of the received signal.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: -101
    • Flags: construct write read
  • CcaEdThreshold: The energy of a non Wi-Fi received signal should be higher than this threshold (dBm) to allow the PHY layer to declare CCA BUSY state. This check is performed on the 20 MHz primary channel only.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: -62
    • Flags: construct write read
  • TxGain: Transmission gain (dB).
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 0
    • Flags: construct write read
  • RxGain: Reception gain (dB).
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 0
    • Flags: construct write read
  • TxPowerLevels: Number of transmission power levels available between TxPowerStart and TxPowerEnd included.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 0:255
    • Initial value: 1
    • Flags: construct write read
  • TxPowerEnd: Maximum available transmission level (dBm).
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 16.0206
    • Flags: construct write read
  • TxPowerStart: Minimum available transmission level (dBm).
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 16.0206
    • Flags: construct write read
  • RxNoiseFigure: Loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver. According to Wikipedia (http://en.wikipedia.org/wiki/Noise_figure), this is "the difference in decibels (dB) between the noise output of the actual receiver to the noise output of an ideal receiver with the same overall gain and bandwidth when the receivers are connected to sources at the standard noise temperature T0 (usually 290 K)".
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 7
    • Flags: construct write
  • State: The state of the PHY layer.
  • ChannelSwitchDelay: Delay between two short frames transmitted on different frequencies.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +250000ns
    • Flags: construct write read
  • Antennas: The number of antennas on the device.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 1:8
    • Initial value: 1
    • Flags: construct write read
  • MaxSupportedTxSpatialStreams: The maximum number of supported TX spatial streams.This parameter is only valuable for 802.11n/ac/ax STAs and APs.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 1:8
    • Initial value: 1
    • Flags: construct write read
  • MaxSupportedRxSpatialStreams: The maximum number of supported RX spatial streams.This parameter is only valuable for 802.11n/ac/ax STAs and APs.
    • Set with class: ns3::UintegerValue
    • Underlying type: uint8_t 1:8
    • Initial value: 1
    • Flags: construct write read
  • ShortPlcpPreambleSupported: Whether or not short PHY preamble is supported.This parameter is only valuable for 802.11b STAs and APs.Note: 802.11g APs and STAs always support short PHY preamble.
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: false
    • Flags: construct write read
  • FrameCaptureModel: Ptr to an object that implements the frame capture model
  • PreambleDetectionModel: Ptr to an object that implements the preamble detection model
  • PostReceptionErrorModel: An optional packet error model can be added to the receive packet process after any propagation-based (SNR-based) error models have been applied. Typically this is used to force specific packet drops, for testing purposes.
  • Sifs: The duration of the Short Interframe Space. NOTE that the default value is overwritten by the value defined by the standard; if you want to set this attribute, you have to do it after that the PHY object is initialized.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +0ns
    • Flags: construct write read
  • Slot: The duration of a slot. NOTE that the default value is overwritten by the value defined by the standard; if you want to set this attribute, you have to do it after that the PHY object is initialized.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +0ns
    • Flags: construct write read
  • Pifs: The duration of the PCF Interframe Space. NOTE that the default value is overwritten by the value defined by the standard; if you want to set this attribute, you have to do it after that the PHY object is initialized.
    • Set with class: ns3::TimeValue
    • Underlying type: Time -9.22337e+18ns:+9.22337e+18ns
    • Initial value: +0ns
    • Flags: construct write read
  • PowerDensityLimit: The mean equivalent isotropically radiated power densitylimit (in dBm/MHz) set by regulators.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 100
    • Flags: construct write read

TraceSources

  • PhyTxBegin: Trace source indicating a packet has begun transmitting over the channel medium
    Callback signature: ns3::Packet::TracedCallback
  • PhyTxPsduBegin: Trace source indicating a PSDU has begun transmitting over the channel medium
    Callback signature: ns3::WifiPhy::PsduTxBeginCallback
  • PhyTxEnd: Trace source indicating a packet has been completely transmitted over the channel.
    Callback signature: ns3::Packet::TracedCallback
  • PhyTxDrop: Trace source indicating a packet has been dropped by the device during transmission
    Callback signature: ns3::Packet::TracedCallback
  • PhyRxBegin: Trace source indicating a packet has begun being received from the channel medium by the device
    Callback signature: ns3::Packet::TracedCallback
  • PhyRxPayloadBegin: Trace source indicating the reception of the payload of a PPDU has begun
    Callback signature: ns3::WifiPhy::PhyRxPayloadBeginTracedCallback
  • PhyRxEnd: Trace source indicating a packet has been completely received from the channel medium by the device
    Callback signature: ns3::Packet::TracedCallback
  • PhyRxDrop: Trace source indicating a packet has been dropped by the device during reception
    Callback signature: ns3::Packet::TracedCallback
  • MonitorSnifferRx: Trace source simulating a wifi device in monitor mode sniffing all received frames
    Callback signature: ns3::WifiPhy::MonitorSnifferRxTracedCallback
  • MonitorSnifferTx: Trace source simulating the capability of a wifi device in monitor mode to sniff all frames being transmitted
    Callback signature: ns3::WifiPhy::MonitorSnifferTxTracedCallback

Size of this type is 776 bytes (on a 64-bit architecture).

Definition at line 48 of file wifi-phy.h.

Member Typedef Documentation

◆ MonitorSnifferRxCallback

typedef void(* ns3::WifiPhy::MonitorSnifferRxCallback) (Ptr< const Packet > packet, uint16_t channelFreqMhz, WifiTxVector txVector, MpduInfo aMpdu, SignalNoiseDbm signalNoise, uint16_t staId)

TracedCallback signature for monitor mode receive events.

Parameters
packetthe packet being received
channelFreqMhzthe frequency in MHz at which the packet is received. Note that in real devices this is normally the frequency to which the receiver is tuned, and this can be different than the frequency at which the packet was originally transmitted. This is because it is possible to have the receiver tuned on a given channel and still to be able to receive packets on a nearby channel.
txVectorthe TXVECTOR that holds RX parameters
aMpduthe type of the packet (0 is not A-MPDU, 1 is a MPDU that is part of an A-MPDU and 2 is the last MPDU in an A-MPDU) and the A-MPDU reference number (must be a different value for each A-MPDU but the same for each subframe within one A-MPDU)
signalNoisesignal power and noise power in dBm
staIdthe STA-ID
Todo:
WifiTxVector should be passed by const reference because of its size.

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

◆ MonitorSnifferTxCallback

typedef void(* ns3::WifiPhy::MonitorSnifferTxCallback) (const Ptr< const Packet > packet, uint16_t channelFreqMhz, WifiTxVector txVector, MpduInfo aMpdu, uint16_t staId)

TracedCallback signature for monitor mode transmit events.

Parameters
packetthe packet being transmitted
channelFreqMhzthe frequency in MHz at which the packet is transmitted.
txVectorthe TXVECTOR that holds TX parameters
aMpduthe type of the packet (0 is not A-MPDU, 1 is a MPDU that is part of an A-MPDU and 2 is the last MPDU in an A-MPDU) and the A-MPDU reference number (must be a different value for each A-MPDU but the same for each subframe within one A-MPDU)
staIdthe STA-ID
Todo:
WifiTxVector should be passed by const reference because of its size.

Definition at line 675 of file wifi-phy.h.

◆ PhyRxPayloadBeginTracedCallback

typedef void(* ns3::WifiPhy::PhyRxPayloadBeginTracedCallback) (WifiTxVector txVector, Time psduDuration)

TracedCallback signature for start of PSDU reception events.

Parameters
txVectorthe TXVECTOR decoded from the PHY header
psduDurationthe duration of the PSDU

Definition at line 696 of file wifi-phy.h.

◆ PsduTxBeginCallback

typedef void(* ns3::WifiPhy::PsduTxBeginCallback) (WifiConstPsduMap psduMap, WifiTxVector txVector, double txPowerW)

TracedCallback signature for PSDU transmit events.

Parameters
psduMapthe PSDU map being transmitted
txVectorthe TXVECTOR holding the TX parameters
txPowerWthe transmit power in Watts

Definition at line 688 of file wifi-phy.h.

Constructor & Destructor Documentation

◆ WifiPhy()

ns3::WifiPhy::WifiPhy ( )

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

References m_random, m_state, and NS_LOG_FUNCTION.

◆ ~WifiPhy()

ns3::WifiPhy::~WifiPhy ( )
virtual

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

References NS_LOG_FUNCTION.

Member Function Documentation

◆ AbortCurrentReception()

void ns3::WifiPhy::AbortCurrentReception ( WifiPhyRxfailureReason  reason)
private

Due to newly arrived signal, the current reception cannot be continued and has to be aborted.

Parameters
reasonthe reason the reception is aborted

Definition at line 2171 of file wifi-phy.cc.

References ns3::EventId::Cancel(), GetAddressedPsduInPpdu(), ns3::EventId::IsRunning(), m_currentEvent, m_currentPreambleEvents, m_endPhyRxEvent, m_interference, m_phyEntities, m_state, NotifyRxDrop(), ns3::InterferenceHelper::NotifyRxEnd(), ns3::Simulator::Now(), NS_LOG_FUNCTION, and ns3::OBSS_PD_CCA_RESET.

Referenced by ns3::PhyEntity::AbortCurrentReception(), ResetCca(), and Send().

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

◆ AddPhyEntity()

void ns3::WifiPhy::AddPhyEntity ( WifiModulationClass  modulation,
Ptr< PhyEntity phyEntity 
)
protected

Add the PHY entity to the map of supported PHY entities for the given modulation class for the WifiPhy instance.

This is a wrapper method used to check that the PHY entity is in the static map of implemented PHY entities (

See also
m_staticPhyEntities). In addition, child classes can add their own PHY entities.
Parameters
modulationthe modulation class
phyEntitythe PHY entity

Definition at line 894 of file wifi-phy.cc.

References m_phyEntities, m_staticPhyEntities, NS_ABORT_MSG_IF, NS_ASSERT_MSG, and NS_LOG_FUNCTION.

Referenced by Configure80211a(), Configure80211ac(), Configure80211ax(), Configure80211b(), Configure80211g(), Configure80211n(), and Configure80211p().

+ Here is the caller graph for this function:

◆ AddStaticPhyEntity()

void ns3::WifiPhy::AddStaticPhyEntity ( WifiModulationClass  modulation,
Ptr< PhyEntity phyEntity 
)
static

Add the PHY entity to the map of implemented PHY entities for the given modulation class.

Through this method, child classes can add their own PHY entities in a static manner.

Parameters
modulationthe modulation class
phyEntitythe PHY entity

Definition at line 886 of file wifi-phy.cc.

References m_staticPhyEntities, NS_ASSERT_MSG, and NS_LOG_FUNCTION.

Referenced by anonymous_namespace{dsss-phy.cc}::ConstructorDsss::ConstructorDsss(), anonymous_namespace{erp-ofdm-phy.cc}::ConstructorErpOfdm::ConstructorErpOfdm(), anonymous_namespace{he-phy.cc}::ConstructorHe::ConstructorHe(), anonymous_namespace{ht-phy.cc}::ConstructorHt::ConstructorHt(), anonymous_namespace{ofdm-phy.cc}::ConstructorOfdm::ConstructorOfdm(), and anonymous_namespace{vht-phy.cc}::ConstructorVht::ConstructorVht().

+ Here is the caller graph for this function:

◆ AddSupportedChannelWidth()

void ns3::WifiPhy::AddSupportedChannelWidth ( uint16_t  width)
Parameters
widththe channel width (in MHz) to support

Definition at line 1442 of file wifi-phy.cc.

References m_supportedChannelWidthSet, and NS_LOG_FUNCTION.

Referenced by SetChannelWidth(), and SetOperatingChannel().

+ Here is the caller graph for this function:

◆ AssignStreams()

int64_t ns3::WifiPhy::AssignStreams ( int64_t  stream)
virtual

Assign a fixed random variable stream number to the random variables used by this model.

Return the number of streams (possibly zero) that have been assigned.

Parameters
streamfirst stream index to use
Returns
the number of stream indices assigned by this model

Definition at line 2298 of file wifi-phy.cc.

References ns3::InterferenceHelper::GetErrorRateModel(), m_interference, m_random, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().

Referenced by TestThresholdPreambleDetectionWithoutFrameCapture::DoRun(), TestThresholdPreambleDetectionWithFrameCapture::DoRun(), TestSimpleFrameCaptureModel::DoRun(), TestUlOfdmaPpduUid::DoRun(), TestPhyHeadersReception::DoRun(), TestMultipleHeTbPreambles::DoRun(), TestAmpduReception::DoRun(), TestPhyPaddingExclusion::DoSetup(), TestDlOfdmaPhyTransmission::RunOne(), TestUlOfdmaPhyTransmission::RunOne(), and TestUlOfdmaPowerControl::RunOne().

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

◆ CalculatePhyPreambleAndHeaderDuration()

Time ns3::WifiPhy::CalculatePhyPreambleAndHeaderDuration ( const WifiTxVector txVector)
static
Parameters
txVectorthe transmission parameters used for this packet
Returns
the total amount of time this PHY will stay busy for the transmission of the PHY preamble and PHY header.

Definition at line 1604 of file wifi-phy.cc.

References ns3::WifiTxVector::GetModulationClass(), and GetStaticPhyEntity().

Referenced by ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), ns3::InterferenceHelper::CalculatePayloadPer(), CalculateTxDuration(), ns3::DsssPpdu::DsssPpdu(), ns3::DsssPpdu::GetTxDuration(), ns3::VhtPpdu::GetTxDuration(), ns3::HePpdu::GetTxDuration(), ns3::FrameExchangeManager::SendMpdu(), ns3::HtFrameExchangeManager::SendPsdu(), ns3::HeFrameExchangeManager::SendPsduMap(), ns3::FrameExchangeManager::SendRts(), ns3::FrameExchangeManager::UpdateNav(), and ns3::VhtPpdu::VhtPpdu().

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

◆ CalculateSnr()

double ns3::WifiPhy::CalculateSnr ( const WifiTxVector txVector,
double  ber 
) const
Parameters
txVectorthe transmission vector
berthe probability of bit error rate
Returns
the minimum SNR which is required to achieve the requested BER for the specified transmission vector. (W/W)

Definition at line 864 of file wifi-phy.cc.

References ns3::InterferenceHelper::GetErrorRateModel(), and m_interference.

+ Here is the call graph for this function:

◆ CalculateTxDuration() [1/3]

Time ns3::WifiPhy::CalculateTxDuration ( uint32_t  size,
const WifiTxVector txVector,
WifiPhyBand  band,
uint16_t  staId = SU_STA_ID 
)
static
Parameters
sizethe number of bytes in the packet to send
txVectorthe TXVECTOR used for the transmission of this packet
bandthe frequency band being used
staIdthe STA-ID of the recipient (only used for MU)
Returns
the total amount of time this PHY will stay busy for the transmission of these bytes.

Definition at line 1610 of file wifi-phy.cc.

References CalculatePhyPreambleAndHeaderDuration(), GetPayloadDuration(), ns3::Time::IsStrictlyPositive(), ns3::NORMAL_MPDU, and NS_ASSERT.

Referenced by ns3::HtFrameExchangeManager::CalculateAcknowledgmentTime(), ns3::FrameExchangeManager::CalculateAcknowledgmentTime(), ns3::FrameExchangeManager::CalculateProtectionTime(), ns3::HePhy::CalculateTxDuration(), CalculateTxDuration(), ns3::PhyEntity::CalculateTxDuration(), ns3::FrameExchangeManager::DoSendCtsAfterRts(), ns3::QosFrameExchangeManager::GetCtsToSelfDurationId(), ns3::QosFrameExchangeManager::GetFrameDurationId(), ns3::FrameExchangeManager::GetFrameDurationId(), ns3::QosFrameExchangeManager::GetRtsDurationId(), ns3::FrameExchangeManager::GetRtsDurationId(), ns3::OfdmPpdu::GetTxDuration(), ns3::HtPpdu::GetTxDuration(), ns3::FrameExchangeManager::GetTxDuration(), SpectrumWifiPhyBasicTest::MakeSignal(), WifiPhyThresholdsTest::MakeWifiSignal(), TestMultipleHeTbPreambles::RxHeTbPpdu(), Send(), TestAmpduReception::SendAmpduWithThreeMpdus(), ns3::HtFrameExchangeManager::SendBlockAck(), ns3::QosFrameExchangeManager::SendCfEndIfNeeded(), ns3::FrameExchangeManager::SendCtsToSelf(), ns3::FrameExchangeManager::SendMpdu(), ns3::HtFrameExchangeManager::SendMpduFromBaManager(), TestUlOfdmaPowerControl::SendMuBar(), ns3::FrameExchangeManager::SendNormalAck(), TestThresholdPreambleDetectionWithoutFrameCapture::SendPacket(), TestThresholdPreambleDetectionWithFrameCapture::SendPacket(), TestSimpleFrameCaptureModel::SendPacket(), TestPhyHeadersReception::SendPacket(), ns3::HtFrameExchangeManager::SendPsdu(), ns3::HeFrameExchangeManager::SendPsduMap(), ns3::FrameExchangeManager::SendRts(), TestUlOfdmaPpduUid::SendTbPpdu(), ns3::RrMultiUserScheduler::TrySendingBasicTf(), ns3::RrMultiUserScheduler::TrySendingBsrpTf(), and ns3::FrameExchangeManager::UpdateNav().

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

◆ CalculateTxDuration() [2/3]

Time ns3::WifiPhy::CalculateTxDuration ( Ptr< const WifiPsdu psdu,
const WifiTxVector txVector,
WifiPhyBand  band 
)
static

This function is a wrapper for the CalculateTxDuration variant that accepts a WifiConstPsduMap as first argument.

This function inserts the given PSDU in a WifiConstPsduMap along with a STA-ID value that is determined based on whether the given PSDU has to be transmitted as a DL or UL frame, thus allowing to properly calculate the TX duration in case the PSDU has to be transmitted as an UL frame.

Parameters
psduthe PSDU to transmit
txVectorthe TXVECTOR used for the transmission of the PSDU
bandthe frequency band
Returns
the total amount of time this PHY will stay busy for the transmission of the PPDU

Definition at line 1619 of file wifi-phy.cc.

References CalculateTxDuration(), and GetWifiConstPsduMap().

+ Here is the call graph for this function:

◆ CalculateTxDuration() [3/3]

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

Definition at line 1625 of file wifi-phy.cc.

References CalculateTxDuration(), ns3::WifiTxVector::GetModulationClass(), and GetStaticPhyEntity().

+ Here is the call graph for this function:

◆ Configure80211a()

void ns3::WifiPhy::Configure80211a ( void  )
private

Configure WifiPhy with appropriate channel frequency and supported rates for 802.11a standard.

Definition at line 952 of file wifi-phy.cc.

References AddPhyEntity(), GetSifs(), GetSlot(), m_ackTxTime, ns3::MicroSeconds(), NS_LOG_FUNCTION, SetPifs(), SetSifs(), SetSlot(), and ns3::WIFI_MOD_CLASS_OFDM.

Referenced by Configure80211n(), and ConfigureStandardAndBand().

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

◆ Configure80211ac()

void ns3::WifiPhy::Configure80211ac ( void  )
private

Configure WifiPhy with appropriate channel frequency and supported rates for 802.11ac standard.

Definition at line 1046 of file wifi-phy.cc.

References AddPhyEntity(), Configure80211n(), NS_LOG_FUNCTION, and ns3::WIFI_MOD_CLASS_VHT.

Referenced by Configure80211ax(), and ConfigureStandardAndBand().

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

◆ Configure80211ax()

void ns3::WifiPhy::Configure80211ax ( void  )
private

Configure WifiPhy with appropriate channel frequency and supported rates for 802.11ax standard.

Definition at line 1054 of file wifi-phy.cc.

References AddPhyEntity(), Configure80211ac(), Configure80211n(), m_band, NS_LOG_FUNCTION, ns3::WIFI_MOD_CLASS_HE, and ns3::WIFI_PHY_BAND_2_4GHZ.

Referenced by ConfigureStandardAndBand().

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

◆ Configure80211b()

void ns3::WifiPhy::Configure80211b ( void  )
private

Configure WifiPhy with appropriate channel frequency and supported rates for 802.11b standard.

Definition at line 967 of file wifi-phy.cc.

References AddPhyEntity(), GetSifs(), GetSlot(), m_ackTxTime, ns3::MicroSeconds(), NS_LOG_FUNCTION, SetPifs(), SetSifs(), SetSlot(), ns3::WIFI_MOD_CLASS_DSSS, and ns3::WIFI_MOD_CLASS_HR_DSSS.

Referenced by Configure80211g(), and ConfigureStandardAndBand().

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

◆ Configure80211g()

void ns3::WifiPhy::Configure80211g ( void  )
private

Configure WifiPhy with appropriate channel frequency and supported rates for 802.11g standard.

Definition at line 984 of file wifi-phy.cc.

References AddPhyEntity(), Configure80211b(), NS_LOG_FUNCTION, and ns3::WIFI_MOD_CLASS_ERP_OFDM.

Referenced by Configure80211n(), and ConfigureStandardAndBand().

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

◆ Configure80211n()

void ns3::WifiPhy::Configure80211n ( void  )
private

Configure WifiPhy with appropriate channel frequency and supported rates for 802.11n standard.

Definition at line 1027 of file wifi-phy.cc.

References AddPhyEntity(), Configure80211a(), Configure80211g(), m_band, m_blockAckTxTime, m_txSpatialStreams, ns3::MicroSeconds(), NS_LOG_FUNCTION, ns3::WIFI_MOD_CLASS_HT, and ns3::WIFI_PHY_BAND_2_4GHZ.

Referenced by Configure80211ac(), Configure80211ax(), and ConfigureStandardAndBand().

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

◆ Configure80211p()

void ns3::WifiPhy::Configure80211p ( void  )
private

Configure WifiPhy with appropriate channel frequency and supported rates for 802.11p standard.

Definition at line 997 of file wifi-phy.cc.

References AddPhyEntity(), GetChannelWidth(), GetSifs(), GetSlot(), m_ackTxTime, ns3::MicroSeconds(), NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::OFDM_PHY_10_MHZ, ns3::OFDM_PHY_5_MHZ, SetPifs(), SetSifs(), SetSlot(), and ns3::WIFI_MOD_CLASS_OFDM.

Referenced by ConfigureStandardAndBand().

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

◆ ConfigureHtDeviceMcsSet()

void ns3::WifiPhy::ConfigureHtDeviceMcsSet ( void  )
private

Configure the device MCS set with the appropriate HtMcs modes for the number of available transmit spatial streams.

◆ ConfigureStandardAndBand()

◆ ConvertHeRuSubcarriers()

WifiSpectrumBand ns3::WifiPhy::ConvertHeRuSubcarriers ( uint16_t  bandWidth,
uint16_t  guardBandwidth,
HeRu::SubcarrierRange  range,
uint8_t  bandIndex = 0 
) const
virtual
Parameters
bandWidththe width (MHz) of the band used for the OFDMA transmission. Must be a multiple of 20 MHz
guardBandwidthwidth of the guard band (MHz)
rangethe subcarrier range of the HE RU
bandIndexthe index (starting at 0) of the band within the operating channel
Returns
the converted subcarriers

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

Reimplemented in ns3::SpectrumWifiPhy.

Definition at line 1928 of file wifi-phy.cc.

References NS_ASSERT_MSG.

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

+ Here is the caller graph for this function:

◆ DoChannelSwitch()

Time ns3::WifiPhy::DoChannelSwitch ( void  )
protected

Perform any actions necessary when user changes operating channel after initialization.

Returns
zero if the PHY can immediately switch channel, a positive value indicating the amount of time to wait until the channel switch can be performed or a negative value indicating that channel switch is currently not possible (i.e., the radio is in sleep mode)

Definition at line 1299 of file wifi-phy.cc.

References ns3::EventId::Cancel(), CCA_BUSY, ns3::InterferenceHelper::EraseEvents(), GetChannelSwitchDelay(), GetDelayUntilIdle(), IDLE, ns3::Object::IsInitialized(), IsStateSwitching(), ns3::Time::IsZero(), m_channelAccessRequested, m_currentEvent, m_currentPreambleEvents, m_endPhyRxEvent, m_interference, m_phyEntities, m_powerRestricted, m_state, NS_ASSERT, NS_LOG_DEBUG, RX, ns3::Seconds(), SLEEP, and TX.

Referenced by SetOperatingChannel().

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

◆ DoDispose()

void ns3::WifiPhy::DoDispose ( void  )
protectedvirtual

Destructor implementation.

This method is called by Dispose() or by the Object's destructor, whichever comes first.

Subclasses are expected to implement their real destruction code in an overridden version of this method and chain up to their parent's implementation once they are done. i.e, for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose() method.

It is safe to call GetObject() from within this method.

Reimplemented from ns3::Object.

Reimplemented in ns3::SpectrumWifiPhy, OfdmaSpectrumWifiPhy, and ns3::YansWifiPhy.

Definition at line 596 of file wifi-phy.cc.

References ns3::EventId::Cancel(), m_currentEvent, m_currentPreambleEvents, m_device, m_endPhyRxEvent, m_endTxEvent, m_frameCaptureModel, m_mobility, m_phyEntities, m_postReceptionErrorModel, m_preambleDetectionModel, m_random, m_state, m_supportedChannelWidthSet, m_wifiRadioEnergyModel, and NS_LOG_FUNCTION.

Referenced by ns3::YansWifiPhy::DoDispose(), and ns3::SpectrumWifiPhy::DoDispose().

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

◆ EndReceiveInterBss()

void ns3::WifiPhy::EndReceiveInterBss ( void  )

For HE receptions only, check and possibly modify the transmit power restriction state at the end of PPDU reception.

Definition at line 1937 of file wifi-phy.cc.

References m_channelAccessRequested, m_powerRestricted, and NS_LOG_FUNCTION.

Referenced by ResetCca().

+ Here is the caller graph for this function:

◆ GetAckTxTime()

Time ns3::WifiPhy::GetAckTxTime ( void  ) const

Return the estimated Ack TX time for this PHY.

Returns
the estimated Ack TX time

Definition at line 940 of file wifi-phy.cc.

References m_ackTxTime.

Referenced by ns3::MinstrelWifiManager::CalculateTimeUnicastPacket(), and ns3::ChannelAccessManager::GetEifsNoDifs().

+ Here is the caller graph for this function:

◆ GetAddressedPsduInPpdu()

Ptr< const WifiPsdu > ns3::WifiPhy::GetAddressedPsduInPpdu ( Ptr< const WifiPpdu ppdu) const
private

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

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

Definition at line 2259 of file wifi-phy.cc.

References GetPhyEntity().

Referenced by AbortCurrentReception().

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

◆ GetBand()

WifiSpectrumBand ns3::WifiPhy::GetBand ( uint16_t  bandWidth,
uint8_t  bandIndex = 0 
)
protectedvirtual

Get the start band index and the stop band index for a given band.

Parameters
bandWidththe width of the band to be returned (MHz)
bandIndexthe index of the band to be returned
Returns
a pair of start and stop indexes that defines the band

Reimplemented in ns3::SpectrumWifiPhy.

Definition at line 2278 of file wifi-phy.cc.

Referenced by GetPrimaryBand().

+ Here is the caller graph for this function:

◆ GetBlockAckTxTime()

Time ns3::WifiPhy::GetBlockAckTxTime ( void  ) const

Return the estimated BlockAck TX time for this PHY.

Returns
the estimated BlockAck TX time

Definition at line 946 of file wifi-phy.cc.

References m_blockAckTxTime.

Referenced by ns3::MinstrelHtWifiManager::CalculateRetransmits().

+ Here is the caller graph for this function:

◆ GetBssMembershipSelectorList()

std::list< uint8_t > ns3::WifiPhy::GetBssMembershipSelectorList ( void  ) const

The WifiPhy::BssMembershipSelector() method is used (e.g., by a WifiRemoteStationManager) to determine the set of transmission/reception modes that this WifiPhy(-derived class) can support - a set of WifiMode objects which we call the BssMembershipSelectorSet, and which is stored inside HT PHY (and above) instances.

Returns
the list of BSS membership selectors.

Definition at line 1427 of file wifi-phy.cc.

References list, and m_phyEntities.

Referenced by ns3::ApWifiMac::GetSupportedRates(), ns3::StaWifiMac::GetSupportedRates(), ns3::StaWifiMac::Receive(), and ns3::StaWifiMac::UpdateApInfoFromProbeResp().

+ Here is the caller graph for this function:

◆ GetCcaEdThreshold()

double ns3::WifiPhy::GetCcaEdThreshold ( void  ) const

Return the CCA threshold (dBm).

Returns
the CCA threshold in dBm

Definition at line 685 of file wifi-phy.cc.

References m_ccaEdThresholdW, and ns3::WToDbm().

Referenced by GetTypeId().

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

◆ GetChannel()

virtual Ptr<Channel> ns3::WifiPhy::GetChannel ( void  ) const
pure virtual

Return the Channel this WifiPhy is connected to.

Returns
the Channel this WifiPhy is connected to

Implemented in ns3::SpectrumWifiPhy, and ns3::YansWifiPhy.

Referenced by ns3::WifiNetDevice::GetChannel(), and ns3::WaveNetDevice::GetChannel().

+ Here is the caller graph for this function:

◆ GetChannelNumber()

uint8_t ns3::WifiPhy::GetChannelNumber ( void  ) const

◆ GetChannelSwitchDelay()

Time ns3::WifiPhy::GetChannelSwitchDelay ( void  ) const
Returns
the required time for channel switch operation of this WifiPhy

Definition at line 858 of file wifi-phy.cc.

References m_channelSwitchDelay.

Referenced by ns3::DefaultChannelScheduler::AssignDefaultCchAccess(), DoChannelSwitch(), and ns3::DefaultChannelScheduler::SwitchToNextChannel().

+ Here is the caller graph for this function:

◆ GetChannelWidth()

uint16_t ns3::WifiPhy::GetChannelWidth ( void  ) const
Returns
the channel width in MHz

Definition at line 1233 of file wifi-phy.cc.

References ns3::WifiPhyOperatingChannel::GetWidth(), and m_operatingChannel.

Referenced by ns3::WifiRemoteStationManager::AddStationVhtCapabilities(), ns3::IdealWifiManager::BuildSnrThresholds(), ns3::MeshWifiInterfaceMac::CheckSupportedRates(), Configure80211p(), ns3::IdealWifiManager::DoReportRtsOk(), SetChannelFrequencyTest::DoRun(), ns3::WifiRemoteStationManager::GetAckTxVector(), ns3::SpectrumWifiPhy::GetBand(), ns3::SpectrumWifiPhy::GetBandBandwidth(), ns3::WifiRemoteStationManager::GetBlockAckTxVector(), ns3::WifiRemoteStationManager::GetCtsToSelfTxVector(), ns3::WifiRemoteStationManager::GetCtsTxVector(), ns3::WifiRemoteStationManager::GetDataTxVector(), ns3::RegularWifiMac::GetHeCapabilities(), ns3::RegularWifiMac::GetHtCapabilities(), ns3::ApWifiMac::GetHtOperation(), GetMeasurementChannelWidth(), ns3::HePhy::GetNonOfdmaBand(), GetPrimaryBand(), ns3::WifiRemoteStationManager::GetRtsTxVector(), ns3::HePhy::GetRuBandForRx(), ns3::DsssPhy::GetRxChannelWidth(), ns3::PhyEntity::GetRxChannelWidth(), ns3::SpectrumWifiPhy::GetRxSpectrumModel(), ns3::MeshWifiInterfaceMac::GetSupportedRates(), ns3::ApWifiMac::GetSupportedRates(), ns3::StaWifiMac::GetSupportedRates(), GetTypeId(), ns3::RegularWifiMac::GetVhtCapabilities(), ns3::ApWifiMac::GetVhtOperationalChannelWidth(), ns3::ThompsonSamplingWifiManager::InitializeStation(), ns3::OfdmPhy::IsChannelWidthSupported(), ns3::WifiRemoteStationManager::LookupState(), ns3::ApWifiMac::Receive(), ns3::MeshWifiInterfaceMac::Receive(), ns3::SpectrumWifiPhy::ResetSpectrumModel(), SetChannelWidth(), SetOperatingChannel(), ns3::SpectrumWifiPhy::StartRx(), ns3::StaWifiMac::UpdateApInfoFromAssocResp(), ns3::StaWifiMac::UpdateApInfoFromBeacon(), ns3::StaWifiMac::UpdateApInfoFromProbeResp(), and ns3::SpectrumWifiPhy::UpdateInterferenceHelperBands().

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

◆ GetDefaultMode()

WifiMode ns3::WifiPhy::GetDefaultMode ( void  ) const

Get the default WifiMode supported by the PHY.

This is the first mode to be added (i.e. the lowest one over all supported PHY entities).

Returns
the default WifiMode

Definition at line 1978 of file wifi-phy.cc.

References m_phyEntities, and NS_ASSERT_MSG.

◆ GetDelayUntilIdle()

Time ns3::WifiPhy::GetDelayUntilIdle ( void  )
Returns
the predicted delay until this PHY can become WifiPhy::IDLE.

The PHY will never become WifiPhy::IDLE before the delay returned by this method but it could become really idle later.

Definition at line 2137 of file wifi-phy.cc.

References m_state.

Referenced by DoChannelSwitch(), ns3::StaWifiMac::MissedBeacons(), and SetSleepMode().

+ Here is the caller graph for this function:

◆ GetDevice()

◆ GetFrequency()

uint16_t ns3::WifiPhy::GetFrequency ( void  ) const
Returns
the operating center frequency (MHz)

Definition at line 1168 of file wifi-phy.cc.

References ns3::WifiPhyOperatingChannel::GetFrequency(), and m_operatingChannel.

Referenced by SetChannelFrequencyTest::DoRun(), ns3::PhyEntity::EndReceivePayload(), ns3::SpectrumWifiPhy::GetRxSpectrumModel(), GetTypeId(), ns3::SpectrumWifiPhy::ResetSpectrumModel(), Send(), and SetFrequency().

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

◆ GetGuardBandwidth()

virtual uint16_t ns3::WifiPhy::GetGuardBandwidth ( uint16_t  currentChannelWidth) const
pure virtual
Parameters
currentChannelWidthchannel width of the current transmission (MHz)
Returns
the width of the guard band (MHz)

Note: in order to properly model out of band transmissions for OFDM, the guard band has been configured so as to expand the modeled spectrum up to the outermost referenced point in "Transmit spectrum mask" sections' PSDs of each PHY specification of 802.11-2016 standard. It thus ultimately corresponds to the current channel bandwidth (which can be different from devices max channel width).

This method is only relevant for SpectrumWifiPhy.

Implemented in OfdmaSpectrumWifiPhy, ns3::SpectrumWifiPhy, and ns3::YansWifiPhy.

Referenced by ns3::PhyEntity::GetGuardBandwidth().

+ Here is the caller graph for this function:

◆ GetLastRxEndTime()

Time ns3::WifiPhy::GetLastRxEndTime ( void  ) const

Return the end time of the last received packet.

Returns
the end time of the last received packet

Definition at line 2149 of file wifi-phy.cc.

References m_state.

Referenced by ns3::HePhy::DoEndReceivePayload(), and ns3::PhyEntity::DoEndReceivePayload().

+ Here is the caller graph for this function:

◆ GetLastRxStartTime()

Time ns3::WifiPhy::GetLastRxStartTime ( void  ) const

Return the start time of the last received packet.

Returns
the start time of the last received packet

Definition at line 2143 of file wifi-phy.cc.

References m_state.

◆ GetMaxPsduSize()

uint32_t ns3::WifiPhy::GetMaxPsduSize ( WifiModulationClass  modulation)
static

Get the maximum PSDU size in bytes for the given modulation class.

Parameters
modulationthe modulation class
Returns
the maximum PSDU size in bytes for the given modulation class

Definition at line 1631 of file wifi-phy.cc.

References GetStaticPhyEntity().

Referenced by ns3::QosFrameExchangeManager::IsWithinSizeAndTimeLimits().

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

◆ GetMaxSupportedRxSpatialStreams()

uint8_t ns3::WifiPhy::GetMaxSupportedRxSpatialStreams ( void  ) const
Returns
the maximum number of supported RX spatial streams

Definition at line 1421 of file wifi-phy.cc.

References m_rxSpatialStreams.

Referenced by ns3::ApWifiMac::GetHeOperation(), GetTypeId(), ns3::RegularWifiMac::GetVhtCapabilities(), ns3::ApWifiMac::GetVhtOperation(), ns3::HePhy::IsConfigSupported(), and ns3::HtPhy::IsConfigSupported().

+ Here is the caller graph for this function:

◆ GetMaxSupportedTxSpatialStreams()

◆ GetMcs()

WifiMode ns3::WifiPhy::GetMcs ( WifiModulationClass  modulation,
uint8_t  mcs 
) const

Get the WifiMode object corresponding to the given MCS of the given modulation class.

Parameters
modulationthe modulation class
mcsthe MCS value
Returns
the WifiMode object corresponding to the given MCS of the given modulation class

Definition at line 2088 of file wifi-phy.cc.

References IsMcsSupported(), m_phyEntities, and NS_ASSERT_MSG.

+ Here is the call graph for this function:

◆ GetMcsList() [1/2]

◆ GetMcsList() [2/2]

std::list< WifiMode > ns3::WifiPhy::GetMcsList ( WifiModulationClass  modulation) const

Get the list of supported MCSs for the given modulation class (i.e.

corresponding to a given PHY entity).

Parameters
modulationthe modulation class
Returns
the list of supported MCSs for the given modulation class.
See also
GetMcsList (void)

Definition at line 2070 of file wifi-phy.cc.

References list, and m_phyEntities.

◆ GetMeasurementChannelWidth()

uint16_t ns3::WifiPhy::GetMeasurementChannelWidth ( const Ptr< const WifiPpdu ppdu) const
protected

Return the channel width used to measure the RSSI.

This corresponds to the primary channel unless it corresponds to the HE TB PPDU solicited by the AP.

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

Definition at line 2266 of file wifi-phy.cc.

References GetChannelWidth(), and GetPhyEntity().

Referenced by ns3::PhyEntity::EndPreambleDetectionPeriod(), ResetReceive(), ResumeFromOff(), ResumeFromSleep(), Send(), StartReceivePreamble(), ns3::PhyEntity::StartReceivePreamble(), and ns3::SpectrumWifiPhy::StartRx().

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

◆ GetMobility()

Ptr< MobilityModel > ns3::WifiPhy::GetMobility ( void  ) const

Return the mobility model this PHY is associated with.

This method will return either the mobility model that has been explicitly set by a call to YansWifiPhy::SetMobility(), or else will return the mobility model (if any) that has been aggregated to the node.

Returns
the mobility model this PHY is associated with

Definition at line 795 of file wifi-phy.cc.

References m_device, and m_mobility.

Referenced by ns3::WifiSpectrumPhyInterface::GetMobility(), and ns3::YansWifiChannel::Send().

+ Here is the caller graph for this function:

◆ GetModeList() [1/2]

std::list< WifiMode > ns3::WifiPhy::GetModeList ( void  ) const

The WifiPhy::GetModeList() method is used (e.g., by a WifiRemoteStationManager) to determine the set of transmission/reception (non-MCS) modes that this WifiPhy(-derived class) can support - a set of modes which is stored by each non-HT PHY.

It is important to note that this list is a superset (not necessarily proper) of the OperationalRateSet (which is logically, if not actually, a property of the associated WifiRemoteStationManager), which itself is a superset (again, not necessarily proper) of the BSSBasicRateSet.

Returns
the list of supported (non-MCS) modes.

Definition at line 2004 of file wifi-phy.cc.

References list, and m_phyEntities.

Referenced by ns3::WifiRemoteStationManager::AddAllSupportedModes(), ns3::MeshWifiInterfaceMac::ForwardDown(), ns3::WifiRemoteStationManager::GetControlAnswerMode(), ns3::MeshWifiInterfaceMac::GetSupportedRates(), ns3::ApWifiMac::GetSupportedRates(), ns3::StaWifiMac::GetSupportedRates(), ns3::ApWifiMac::Receive(), ns3::MeshWifiInterfaceMac::Receive(), ns3::StaWifiMac::UpdateApInfoFromAssocResp(), ns3::StaWifiMac::UpdateApInfoFromBeacon(), and ns3::StaWifiMac::UpdateApInfoFromProbeResp().

+ Here is the caller graph for this function:

◆ GetModeList() [2/2]

std::list< WifiMode > ns3::WifiPhy::GetModeList ( WifiModulationClass  modulation) const

Get the list of supported (non-MCS) modes for the given modulation class (i.e.

corresponding to a given PHY entity).

Parameters
modulationthe modulation class
Returns
the list of supported (non-MCS) modes for the given modulation class.
See also
GetModeList (void)

Definition at line 2021 of file wifi-phy.cc.

References list, and m_phyEntities.

◆ GetNMcs()

uint16_t ns3::WifiPhy::GetNMcs ( void  ) const
Returns
the number of supported MCSs.
See also
GetMcsList (void)

Definition at line 2039 of file wifi-phy.cc.

References m_phyEntities.

Referenced by ns3::RegularWifiMac::GetHtCapabilities().

+ Here is the caller graph for this function:

◆ GetNTxPower()

uint8_t ns3::WifiPhy::GetNTxPower ( void  ) const

Return the number of available transmission power levels.

Returns
the number of available transmission power levels

Definition at line 732 of file wifi-phy.cc.

References m_nTxPower.

◆ GetNumberOfAntennas()

uint8_t ns3::WifiPhy::GetNumberOfAntennas ( void  ) const
Returns
the number of antennas on this device

Definition at line 1372 of file wifi-phy.cc.

References m_numberOfAntennas.

Referenced by ns3::WifiRemoteStationManager::GetNumberOfAntennas(), GetTypeId(), SetErrorRateModel(), SetMaxSupportedRxSpatialStreams(), SetMaxSupportedTxSpatialStreams(), and SetRxNoiseFigure().

+ Here is the caller graph for this function:

◆ GetOperatingChannel()

const WifiPhyOperatingChannel & ns3::WifiPhy::GetOperatingChannel ( void  ) const

Get a const reference to the operating channel.

Returns
a const reference to the operating channel

Definition at line 1137 of file wifi-phy.cc.

References m_operatingChannel.

Referenced by SetChannelFrequencyTest::DoRun(), ns3::PhyEntity::GetCenterFrequencyForChannelWidth(), ns3::HePhy::GetCenterFrequencyForNonOfdmaPart(), ns3::HePhy::GetNonOfdmaBand(), ns3::HePhy::GetRuBandForRx(), ns3::SpectrumWifiPhy::StartRx(), and ns3::SpectrumWifiPhy::UpdateInterferenceHelperBands().

+ Here is the caller graph for this function:

◆ GetPayloadDuration() [1/2]

Time ns3::WifiPhy::GetPayloadDuration ( uint32_t  size,
const WifiTxVector txVector,
WifiPhyBand  band,
MpduType  mpdutype = NORMAL_MPDU,
uint16_t  staId = SU_STA_ID 
)
static
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.
staIdthe STA-ID of the PSDU (only used for MU PPDUs)
Returns
the duration of the PSDU

Definition at line 1586 of file wifi-phy.cc.

Referenced by ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), CalculateTxDuration(), GetPayloadDuration(), and ns3::PhyEntity::ScheduleEndOfMpdus().

+ Here is the caller graph for this function:

◆ GetPayloadDuration() [2/2]

Time ns3::WifiPhy::GetPayloadDuration ( uint32_t  size,
const WifiTxVector txVector,
WifiPhyBand  band,
MpduType  mpdutype,
bool  incFlag,
uint32_t &  totalAmpduSize,
double &  totalAmpduNumSymbols,
uint16_t  staId 
)
static
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

Definition at line 1594 of file wifi-phy.cc.

References ns3::WifiTxVector::GetModulationClass(), GetPayloadDuration(), and GetStaticPhyEntity().

+ Here is the call graph for this function:

◆ GetPhyBand()

WifiPhyBand ns3::WifiPhy::GetPhyBand ( void  ) const

Get the configured Wi-Fi band.

Returns
the Wi-Fi band that has been configured

Definition at line 1124 of file wifi-phy.cc.

References m_band.

Referenced by ns3::WifiRemoteStationManager::AddStationHeCapabilities(), ns3::ErpOfdmPhy::BuildPpdu(), ns3::VhtPhy::BuildPpdu(), ns3::HtPhy::BuildPpdu(), ns3::OfdmPhy::BuildPpdu(), ns3::HePhy::BuildPpdu(), ns3::HtFrameExchangeManager::CalculateAcknowledgmentTime(), ns3::FrameExchangeManager::CalculateAcknowledgmentTime(), ns3::FrameExchangeManager::CalculateProtectionTime(), ns3::FrameExchangeManager::DoSendCtsAfterRts(), ns3::QosFrameExchangeManager::GetCtsToSelfDurationId(), ns3::QosFrameExchangeManager::GetFrameDurationId(), ns3::FrameExchangeManager::GetFrameDurationId(), ns3::RegularWifiMac::GetHeCapabilities(), ns3::QosFrameExchangeManager::GetRtsDurationId(), ns3::FrameExchangeManager::GetRtsDurationId(), ns3::FrameExchangeManager::GetTxDuration(), SpectrumWifiPhyBasicTest::MakeSignal(), WifiPhyThresholdsTest::MakeWifiSignal(), TestMultipleHeTbPreambles::RxHeTbPpdu(), ns3::PhyEntity::ScheduleEndOfMpdus(), Send(), TestAmpduReception::SendAmpduWithThreeMpdus(), ns3::HtFrameExchangeManager::SendBlockAck(), ns3::QosFrameExchangeManager::SendCfEndIfNeeded(), ns3::FrameExchangeManager::SendCtsToSelf(), ns3::FrameExchangeManager::SendMpdu(), ns3::HtFrameExchangeManager::SendMpduFromBaManager(), ns3::FrameExchangeManager::SendNormalAck(), TestThresholdPreambleDetectionWithoutFrameCapture::SendPacket(), TestThresholdPreambleDetectionWithFrameCapture::SendPacket(), TestSimpleFrameCaptureModel::SendPacket(), TestPhyHeadersReception::SendPacket(), ns3::HtFrameExchangeManager::SendPsdu(), ns3::HeFrameExchangeManager::SendPsduMap(), ns3::FrameExchangeManager::SendRts(), TestUlOfdmaPpduUid::SendTbPpdu(), and ns3::FrameExchangeManager::UpdateNav().

+ Here is the caller graph for this function:

◆ GetPhyEntity()

Ptr< PhyEntity > ns3::WifiPhy::GetPhyEntity ( WifiModulationClass  modulation) const

Get the supported PHY entity corresponding to the modulation class, for the WifiPhy instance.

Parameters
modulationthe modulation class
Returns
the pointer to the supported PHY entity

Definition at line 878 of file wifi-phy.cc.

References m_phyEntities, and NS_ABORT_MSG_IF.

Referenced by GetAddressedPsduInPpdu(), OfdmaSpectrumWifiPhy::GetHePhy(), GetMeasurementChannelWidth(), Send(), and ns3::SpectrumWifiPhy::StartTx().

+ Here is the caller graph for this function:

◆ GetPhyStandard()

WifiPhyStandard ns3::WifiPhy::GetPhyStandard ( void  ) const

Get the configured Wi-Fi standard.

Returns
the Wi-Fi standard that has been configured

Definition at line 1131 of file wifi-phy.cc.

References m_standard.

Referenced by ns3::SpectrumWifiPhy::GetBandBandwidth(), ns3::SpectrumWifiPhy::StartRx(), and ns3::SpectrumWifiPhy::UpdateInterferenceHelperBands().

+ Here is the caller graph for this function:

◆ GetPifs()

Time ns3::WifiPhy::GetPifs ( void  ) const

Return the PCF Interframe Space (PIFS) for this PHY.

Returns
the PIFS duration

Definition at line 934 of file wifi-phy.cc.

References m_pifs.

Referenced by ns3::QosFrameExchangeManager::PifsRecovery(), and ns3::QosFrameExchangeManager::TransmissionFailed().

+ Here is the caller graph for this function:

◆ GetPowerDbm()

double ns3::WifiPhy::GetPowerDbm ( uint8_t  power) const

Get the power of the given power level in dBm.

In SpectrumWifiPhy implementation, the power levels are equally spaced (in dBm).

Parameters
powerthe power level
Returns
the transmission power in dBm at the given power level

Definition at line 840 of file wifi-phy.cc.

References m_nTxPower, m_txPowerBaseDbm, m_txPowerEndDbm, NS_ASSERT, and NS_ASSERT_MSG.

Referenced by ns3::ParfWifiManager::CheckInit(), ns3::AparfWifiManager::CheckInit(), ns3::RrpaaWifiManager::CheckInit(), ns3::ParfWifiManager::DoGetDataTxVector(), ns3::AparfWifiManager::DoGetDataTxVector(), ns3::RrpaaWifiManager::DoGetDataTxVector(), GetTxPowerForTransmission(), Send(), and ns3::YansWifiPhy::StartTx().

+ Here is the caller graph for this function:

◆ GetPreambleDetectionDuration()

Time ns3::WifiPhy::GetPreambleDetectionDuration ( void  )
static
Returns
the preamble detection duration, which is the time correlation needs to detect the start of an incoming frame.

Definition at line 1574 of file wifi-phy.cc.

References ns3::MicroSeconds().

Referenced by ns3::PhyEntity::EndPreambleDetectionPeriod(), and ns3::PhyEntity::StartPreambleDetectionPeriod().

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

◆ GetPreviouslyRxPpduUid()

uint64_t ns3::WifiPhy::GetPreviouslyRxPpduUid ( void  ) const
Returns
the UID of the previously received PPDU (reset to UINT64_MAX upon transmission)

Definition at line 1876 of file wifi-phy.cc.

References m_previouslyRxPpduUid.

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

+ Here is the caller graph for this function:

◆ GetPrimaryBand()

WifiSpectrumBand ns3::WifiPhy::GetPrimaryBand ( uint16_t  bandWidth)
protected

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).

Otherwise, this call is equivalent to GetBand with bandIndex equal to zero.

Parameters
bandWidththe width of the band to be returned (MHz)
Returns
a pair of start and stop indexes that defines the band

Definition at line 2287 of file wifi-phy.cc.

References GetBand(), GetChannelWidth(), ns3::WifiPhyOperatingChannel::GetPrimaryChannelIndex(), and m_operatingChannel.

Referenced by ns3::PhyEntity::EndPreambleDetectionPeriod(), ns3::PhyEntity::GetChannelWidthAndBand(), ns3::PhyEntity::GetPhyHeaderSnrPer(), ns3::PhyEntity::GetRxPowerWForPpdu(), MaybeCcaBusyDuration(), ResumeFromOff(), ResumeFromSleep(), and SwitchMaybeToCcaBusy().

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

◆ GetRxGain()

double ns3::WifiPhy::GetRxGain ( void  ) const

Return the reception gain (dB).

Returns
the reception gain in dB

Definition at line 758 of file wifi-phy.cc.

References m_rxGainDb.

Referenced by GetTypeId(), and ns3::SpectrumWifiPhy::StartRx().

+ Here is the caller graph for this function:

◆ GetRxSensitivity()

double ns3::WifiPhy::GetRxSensitivity ( void  ) const

Return the receive sensitivity threshold (dBm).

Returns
the receive sensitivity threshold in dBm

Definition at line 672 of file wifi-phy.cc.

References m_rxSensitivityW, and ns3::WToDbm().

Referenced by GetTypeId(), and ns3::SpectrumWifiPhy::StartRx().

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

◆ GetShortPhyPreambleSupported()

bool ns3::WifiPhy::GetShortPhyPreambleSupported ( void  ) const

Return whether short PHY preamble is supported.

Returns
if short PHY preamble is supported or not

Definition at line 771 of file wifi-phy.cc.

References m_shortPreamble.

Referenced by ns3::StaWifiMac::GetCapabilities(), GetTypeId(), and ns3::ApWifiMac::UpdateShortPreambleEnabled().

+ Here is the caller graph for this function:

◆ GetSifs()

Time ns3::WifiPhy::GetSifs ( void  ) const

Return the Short Interframe Space (SIFS) for this PHY.

Returns
the SIFS duration

Definition at line 910 of file wifi-phy.cc.

References m_sifs.

Referenced by ns3::HtFrameExchangeManager::CalculateAcknowledgmentTime(), ns3::FrameExchangeManager::CalculateAcknowledgmentTime(), ns3::FrameExchangeManager::CalculateProtectionTime(), ns3::MinstrelHtWifiManager::CalculateRetransmits(), ns3::MinstrelWifiManager::CalculateTimeUnicastPacket(), Configure80211a(), Configure80211b(), Configure80211p(), ns3::FrameExchangeManager::DoSendCtsAfterRts(), ns3::HtFrameExchangeManager::EndReceiveAmpdu(), ns3::FrameExchangeManager::GetCtsToSelfDurationId(), ns3::ChannelAccessManager::GetEifsNoDifs(), ns3::FrameExchangeManager::GetFrameDurationId(), ns3::FrameExchangeManager::GetRtsDurationId(), ns3::ChannelAccessManager::GetSifs(), ns3::QosFrameExchangeManager::PifsRecovery(), ns3::QosFrameExchangeManager::ReceiveMpdu(), ns3::HtFrameExchangeManager::ReceiveMpdu(), ns3::FrameExchangeManager::ReceiveMpdu(), ns3::HtFrameExchangeManager::SendBlockAck(), ns3::FrameExchangeManager::SendCtsToSelf(), ns3::FrameExchangeManager::SendMpdu(), ns3::HtFrameExchangeManager::SendMpduFromBaManager(), TestUlOfdmaPowerControl::SendMuBar(), ns3::FrameExchangeManager::SendNormalAck(), ns3::HtFrameExchangeManager::SendPsdu(), ns3::HeFrameExchangeManager::SendPsduMap(), ns3::FrameExchangeManager::SendRts(), ns3::QosFrameExchangeManager::TransmissionSucceeded(), ns3::HtFrameExchangeManager::TransmissionSucceeded(), ns3::FrameExchangeManager::TransmissionSucceeded(), and ns3::FrameExchangeManager::UpdateNav().

+ Here is the caller graph for this function:

◆ GetSlot()

◆ GetStartOfPacketDuration()

Time ns3::WifiPhy::GetStartOfPacketDuration ( const WifiTxVector txVector)
static
Parameters
txVectorthe transmission parameters used for this packet
Returns
the duration until the start of the packet

Definition at line 1580 of file wifi-phy.cc.

References ns3::MicroSeconds().

+ Here is the call graph for this function:

◆ GetState()

Ptr< WifiPhyStateHelper > ns3::WifiPhy::GetState ( void  ) const

Return the WifiPhyStateHelper of this PHY.

Returns
the WifiPhyStateHelper of this PHY

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

References m_state.

Referenced by WifiPhyThresholdsTest::DoSetup().

+ Here is the caller graph for this function:

◆ GetStaticPhyEntity()

const Ptr< const PhyEntity > ns3::WifiPhy::GetStaticPhyEntity ( WifiModulationClass  modulation)
static

Get the implemented PHY entity corresponding to the modulation class.

This is used to compute the different amendment-specific parameters within calling static methods.

Parameters
modulationthe modulation class
Returns
the pointer to the static implemented PHY entity

Definition at line 870 of file wifi-phy.cc.

References m_staticPhyEntities, and NS_ABORT_MSG_IF.

Referenced by ns3::InterferenceHelper::CalculatePhyHeaderPer(), CalculatePhyPreambleAndHeaderDuration(), CalculateTxDuration(), ns3::HePhy::ConvertLSigLengthToHeTbPpduDuration(), GetMaxPsduSize(), GetPayloadDuration(), and GetWifiConstPsduMap().

+ Here is the caller graph for this function:

◆ GetSupportedChannelWidthSet()

std::vector< uint16_t > ns3::WifiPhy::GetSupportedChannelWidthSet ( void  ) const
Returns
a vector containing the supported channel widths, values in MHz

Definition at line 1457 of file wifi-phy.cc.

References m_supportedChannelWidthSet.

◆ GetTxGain()

double ns3::WifiPhy::GetTxGain ( void  ) const

Return the transmission gain (dB).

Returns
the transmission gain in dB

Definition at line 745 of file wifi-phy.cc.

References m_txGainDb.

Referenced by GetTxPowerForTransmission(), GetTypeId(), Send(), ns3::YansWifiPhy::StartTx(), and ns3::PhyEntity::Transmit().

+ Here is the caller graph for this function:

◆ GetTxMaskRejectionParams()

virtual std::tuple<double, double, double> ns3::WifiPhy::GetTxMaskRejectionParams ( void  ) const
pure virtual
Returns
a tuple containing the minimum rejection (in dBr) for the inner band, the minimum rejection (in dBr) for the outer band, and the maximum rejection (in dBr) for the outer band for the transmit spectrum mask.

This method is only relevant for SpectrumWifiPhy.

Implemented in ns3::SpectrumWifiPhy, and ns3::YansWifiPhy.

Referenced by ns3::PhyEntity::GetTxMaskRejectionParams().

+ Here is the caller graph for this function:

◆ GetTxPowerEnd()

double ns3::WifiPhy::GetTxPowerEnd ( void  ) const

Return the maximum available transmission power level (dBm).

Returns
the maximum available transmission power level (dBm)

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

References m_txPowerEndDbm.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ GetTxPowerForTransmission()

double ns3::WifiPhy::GetTxPowerForTransmission ( Ptr< const WifiPpdu ppdu) const

Compute the transmit power for the next transmission.

The returned power will satisfy the power density constraints after addition of antenna gain.

Parameters
ppduthe PPDU to transmit
Returns
the transmit power in dBm for the next transmission

Definition at line 2226 of file wifi-phy.cc.

References ns3::WifiTxVector::GetNssMax(), GetPowerDbm(), GetTxGain(), ns3::WifiTxVector::GetTxPowerLevel(), m_powerDensityLimit, m_powerRestricted, m_txPowerMaxMimo, m_txPowerMaxSiso, min, NS_LOG_FUNCTION, NS_LOG_INFO, and ns3::RatioToDb().

Referenced by Send(), ns3::YansWifiPhy::StartTx(), and ns3::PhyEntity::Transmit().

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

◆ GetTxPowerStart()

double ns3::WifiPhy::GetTxPowerStart ( void  ) const

Return the minimum available transmission power level (dBm).

Returns
the minimum available transmission power level (dBm)

Definition at line 706 of file wifi-phy.cc.

References m_txPowerBaseDbm.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ GetTypeId()

◆ GetWifiConstPsduMap()

WifiConstPsduMap ns3::WifiPhy::GetWifiConstPsduMap ( Ptr< const WifiPsdu psdu,
const WifiTxVector txVector 
)
static

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

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

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

Definition at line 1762 of file wifi-phy.cc.

References ns3::WifiTxVector::GetModulationClass(), and GetStaticPhyEntity().

Referenced by CalculateTxDuration(), and Send().

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

◆ IsMcsSupported()

bool ns3::WifiPhy::IsMcsSupported ( WifiModulationClass  modulation,
uint8_t  mcs 
) const

Check if the given MCS of the given modulation class is supported by the PHY.

Parameters
modulationthe modulation class
mcsthe MCS value
Returns
true if the given mode is supported, false otherwise

Definition at line 1993 of file wifi-phy.cc.

References m_phyEntities.

Referenced by GetMcs().

+ Here is the caller graph for this function:

◆ IsModeSupported()

bool ns3::WifiPhy::IsModeSupported ( WifiMode  mode) const

Check if the given WifiMode is supported by the PHY.

Parameters
modethe wifi mode to check
Returns
true if the given mode is supported, false otherwise

Definition at line 1965 of file wifi-phy.cc.

References m_phyEntities.

◆ IsStateCcaBusy()

bool ns3::WifiPhy::IsStateCcaBusy ( void  ) const
Returns
true of the current state of the PHY layer is WifiPhy::CCA_BUSY, false otherwise.

Definition at line 2095 of file wifi-phy.cc.

References m_state.

◆ IsStateIdle()

bool ns3::WifiPhy::IsStateIdle ( void  ) const
Returns
true of the current state of the PHY layer is WifiPhy::IDLE, false otherwise.

Definition at line 2101 of file wifi-phy.cc.

References m_state.

◆ IsStateOff()

bool ns3::WifiPhy::IsStateOff ( void  ) const
Returns
true if the current state of the PHY layer is WifiPhy::OFF, false otherwise.

Definition at line 2131 of file wifi-phy.cc.

References m_state.

◆ IsStateRx()

bool ns3::WifiPhy::IsStateRx ( void  ) const
Returns
true of the current state of the PHY layer is WifiPhy::RX, false otherwise.

Definition at line 2107 of file wifi-phy.cc.

References m_state.

Referenced by ns3::PhyEntity::EndPreambleDetectionPeriod(), ns3::StaWifiMac::MissedBeacons(), and ResetReceive().

+ Here is the caller graph for this function:

◆ IsStateSleep()

bool ns3::WifiPhy::IsStateSleep ( void  ) const
Returns
true if the current state of the PHY layer is WifiPhy::SLEEP, false otherwise.

Definition at line 2125 of file wifi-phy.cc.

References m_state.

◆ IsStateSwitching()

bool ns3::WifiPhy::IsStateSwitching ( void  ) const
Returns
true of the current state of the PHY layer is WifiPhy::SWITCHING, false otherwise.

Definition at line 2119 of file wifi-phy.cc.

References m_state.

Referenced by DoChannelSwitch().

+ Here is the caller graph for this function:

◆ IsStateTx()

bool ns3::WifiPhy::IsStateTx ( void  ) const
Returns
true of the current state of the PHY layer is WifiPhy::TX, false otherwise.

Definition at line 2113 of file wifi-phy.cc.

References m_state.

◆ MaybeCcaBusyDuration()

void ns3::WifiPhy::MaybeCcaBusyDuration ( uint16_t  channelWidth)
private

Eventually switch to CCA busy.

Parameters
channelWidththe channel width in MHz used for RSSI measurement

Definition at line 1914 of file wifi-phy.cc.

References ns3::InterferenceHelper::GetEnergyDuration(), GetPrimaryBand(), ns3::Time::IsZero(), m_ccaEdThresholdW, m_interference, and m_state.

Referenced by ns3::PhyEntity::DropPreambleEvent(), ns3::PhyEntity::EndReceiveField(), ns3::PhyEntity::EndReceivePayload(), ResetReceive(), Send(), StartReceivePreamble(), and ns3::PhyEntity::StartReceivePreamble().

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

◆ NotifyChannelAccessRequested()

void ns3::WifiPhy::NotifyChannelAccessRequested ( void  )

Notify the PHY that an access to the channel was requested.

This is typically called by the channel access manager to to notify the PHY about an ongoing transmission. The PHY will use this information to determine whether it should use power restriction as imposed by OBSS_PD SR.

Definition at line 1958 of file wifi-phy.cc.

References m_channelAccessRequested, and NS_LOG_FUNCTION.

Referenced by ns3::ChannelAccessManager::RequestAccess().

+ Here is the caller graph for this function:

◆ NotifyMonitorSniffRx()

void ns3::WifiPhy::NotifyMonitorSniffRx ( Ptr< const WifiPsdu psdu,
uint16_t  channelFreqMhz,
WifiTxVector  txVector,
SignalNoiseDbm  signalNoise,
std::vector< bool >  statusPerMpdu,
uint16_t  staId = SU_STA_ID 
)

Public method used to fire a MonitorSniffer trace for a wifi PSDU being received.

Implemented for encapsulation purposes. This method will extract all MPDUs if packet is an A-MPDU and will fire tracedCallback. The A-MPDU reference number (RX side) is set within the method. It must be a different value for each A-MPDU but the same for each subframe within one A-MPDU.

Parameters
psduthe PSDU being received
channelFreqMhzthe frequency in MHz at which the packet is received. Note that in real devices this is normally the frequency to which the receiver is tuned, and this can be different than the frequency at which the packet was originally transmitted. This is because it is possible to have the receiver tuned on a given channel and still to be able to receive packets on a nearby channel.
txVectorthe TXVECTOR that holds RX parameters
signalNoisesignal power and noise power in dBm (noise power includes the noise figure)
statusPerMpdureception status per MPDU
staIdthe STA-ID

Definition at line 1706 of file wifi-phy.cc.

References ns3::FIRST_MPDU_IN_AGGREGATE, ns3::WifiPsdu::GetAmpduSubframe(), ns3::WifiPsdu::GetNMpdus(), ns3::WifiPsdu::GetPacket(), ns3::WifiPsdu::IsAggregate(), ns3::WifiTxVector::IsAggregation(), ns3::WifiPsdu::IsSingle(), ns3::LAST_MPDU_IN_AGGREGATE, m_phyMonitorSniffRxTrace, m_rxMpduReferenceNumber, ns3::MIDDLE_MPDU_IN_AGGREGATE, ns3::MpduInfo::mpduRefNumber, ns3::NORMAL_MPDU, NS_ASSERT_MSG, ns3::SINGLE_MPDU, and ns3::MpduInfo::type.

Referenced by ns3::PhyEntity::EndReceivePayload().

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

◆ NotifyMonitorSniffTx()

void ns3::WifiPhy::NotifyMonitorSniffTx ( Ptr< const WifiPsdu psdu,
uint16_t  channelFreqMhz,
WifiTxVector  txVector,
uint16_t  staId = SU_STA_ID 
)

Public method used to fire a MonitorSniffer trace for a wifi PSDU being transmitted.

Implemented for encapsulation purposes. This method will extract all MPDUs if packet is an A-MPDU and will fire tracedCallback. The A-MPDU reference number (RX side) is set within the method. It must be a different value for each A-MPDU but the same for each subframe within one A-MPDU.

Parameters
psduthe PSDU being received
channelFreqMhzthe frequency in MHz at which the packet is transmitted.
txVectorthe TXVECTOR that holds TX parameters
staIdthe STA-ID

Definition at line 1737 of file wifi-phy.cc.

References ns3::FIRST_MPDU_IN_AGGREGATE, ns3::WifiPsdu::GetAmpduSubframe(), ns3::WifiPsdu::GetNMpdus(), ns3::WifiPsdu::GetPacket(), ns3::WifiPsdu::IsAggregate(), ns3::WifiTxVector::IsAggregation(), ns3::WifiPsdu::IsSingle(), ns3::LAST_MPDU_IN_AGGREGATE, m_phyMonitorSniffTxTrace, m_rxMpduReferenceNumber, ns3::MIDDLE_MPDU_IN_AGGREGATE, ns3::MpduInfo::mpduRefNumber, ns3::NORMAL_MPDU, NS_ASSERT_MSG, ns3::SINGLE_MPDU, and ns3::MpduInfo::type.

Referenced by Send().

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

◆ NotifyRxBegin()

void ns3::WifiPhy::NotifyRxBegin ( Ptr< const WifiPsdu psdu,
const RxPowerWattPerChannelBand rxPowersW 
)

Public method used to fire a PhyRxBegin trace.

Implemented for encapsulation purposes.

Parameters
psduthe PSDU being transmitted
rxPowersWthe receive power per channel band in Watts

Definition at line 1670 of file wifi-phy.cc.

References m_phyRxBeginTrace, and ns3::PeekPointer().

Referenced by ns3::PhyEntity::EndPreambleDetectionPeriod().

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

◆ NotifyRxDrop()

void ns3::WifiPhy::NotifyRxDrop ( Ptr< const WifiPsdu psdu,
WifiPhyRxfailureReason  reason 
)

Public method used to fire a PhyRxDrop trace.

Implemented for encapsulation purposes.

Parameters
psduthe PSDU being transmitted
reasonthe reason the packet was dropped

Definition at line 1694 of file wifi-phy.cc.

References m_phyRxDropTrace, and ns3::PeekPointer().

Referenced by AbortCurrentReception(), ns3::HePhy::DoGetEvent(), ns3::PhyEntity::DropPreambleEvent(), ns3::PhyEntity::EndPreambleDetectionPeriod(), and ns3::PhyEntity::EndReceiveField().

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

◆ NotifyRxEnd()

void ns3::WifiPhy::NotifyRxEnd ( Ptr< const WifiPsdu psdu)

Public method used to fire a PhyRxEnd trace.

Implemented for encapsulation purposes.

Parameters
psduthe PSDU being transmitted

Definition at line 1682 of file wifi-phy.cc.

References m_phyRxEndTrace, and ns3::PeekPointer().

Referenced by ns3::PhyEntity::EndReceivePayload().

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