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

802.11 PHY layer modelThis PHY implements a spectrum-aware enhancement of the 802.11 SpectrumWifiPhy model. More...

#include "spectrum-wifi-phy.h"

+ Inheritance diagram for ns3::SpectrumWifiPhy:
+ Collaboration diagram for ns3::SpectrumWifiPhy:

Public Types

typedef void(* SignalArrivalCallback) (bool signalType, uint32_t senderNodeId, double rxPower, Time duration)
 Callback invoked when the PHY model starts to process a signal. More...
 
- Public Types inherited from ns3::WifiPhy
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

 SpectrumWifiPhy ()
 
virtual ~SpectrumWifiPhy ()
 
virtual void ConfigureStandardAndBand (WifiPhyStandard standard, WifiPhyBand band) override
 Configure the PHY-level parameters for different Wi-Fi standard. More...
 
void CreateWifiSpectrumPhyInterface (Ptr< NetDevice > device)
 Method to encapsulate the creation of the WifiSpectrumPhyInterface object (used to bind the WifiSpectrumPhy to a SpectrumChannel) and to link it to this SpectrumWifiPhy instance. More...
 
uint32_t GetBandBandwidth (void) const
 
Ptr< ChannelGetChannel (void) const override
 Return the Channel this WifiPhy is connected to. More...
 
virtual uint16_t GetGuardBandwidth (uint16_t currentChannelWidth) const override
 
Ptr< AntennaModelGetRxAntenna (void) const
 Get the antenna model used for reception. More...
 
Ptr< const SpectrumModelGetRxSpectrumModel ()
 
std::tuple< double, double, double > GetTxMaskRejectionParams (void) const override
 
void SetAntenna (const Ptr< AntennaModel > antenna)
 
void SetChannel (const Ptr< SpectrumChannel > channel)
 Set the SpectrumChannel this SpectrumWifiPhy is to be connected to. More...
 
virtual void SetChannelNumber (uint8_t id) override
 Set channel number. More...
 
virtual void SetChannelWidth (uint16_t channelwidth) override
 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...
 
virtual void SetFrequency (uint16_t freq) override
 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 StartRx (Ptr< SpectrumSignalParameters > rxParams)
 Input method for delivering a signal from the spectrum channel and low-level PHY interface to this SpectrumWifiPhy instance. More...
 
void StartTx (Ptr< WifiPpdu > ppdu) override
 
void Transmit (Ptr< WifiSpectrumSignalParameters > txParams)
 This function is sending the signal to the Spectrum channel after finishing the configuration of the transmit parameters. More...
 
- Public Member Functions inherited from ns3::WifiPhy
 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
 
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...
 
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
 
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...
 
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, 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...
 
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...
 
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...
 
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 TypeId GetTypeId (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::WifiPhy
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 GetPpduFieldDuration (WifiPpduField field, const WifiTxVector &txVector)
 Get the duration of the PPDU field (or group of fields) for the given transmission parameters. More...
 
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...
 

Protected Member Functions

void DoDispose (void) override
 Destructor implementation. More...
 
void DoInitialize (void) override
 Initialize() implementation. More...
 
WifiSpectrumBand GetBand (uint16_t bandWidth, uint8_t bandIndex=0) override
 Get the start band index and the stop band index for a given band. More...
 
- Protected Member Functions inherited from ns3::WifiPhy
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...
 
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)
 
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 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...
 

Private Types

typedef std::map< WifiSpectrumBand, HeRu::RuSpecRuBand
 

Private Member Functions

WifiSpectrumBand ConvertHeRuSubcarriers (uint16_t bandWidth, uint16_t guardBandwidth, HeRu::SubcarrierRange range, uint8_t bandIndex=0) const override
 
void ResetSpectrumModel (void)
 Perform run-time spectrum model change. More...
 
void UpdateInterferenceHelperBands (void)
 This function is called to update the bands handled by the InterferenceHelper. More...
 

Private Attributes

Ptr< AntennaModelm_antenna
 antenna model More...
 
Ptr< SpectrumChannelm_channel
 SpectrumChannel that this SpectrumWifiPhy is connected to. More...
 
bool m_disableWifiReception
 forces this PHY to fail to sync on any signal More...
 
std::map< uint16_t, RuBandm_ruBands
 For each channel width, store all the distinct spectrum bands associated with every RU in a channel of that width. More...
 
Ptr< const SpectrumModelm_rxSpectrumModel
 receive spectrum model More...
 
TracedCallback< bool, uint32_t, double, Timem_signalCb
 Signal callback. More...
 
double m_txMaskInnerBandMinimumRejection
 The minimum rejection (in dBr) for the inner band of the transmit spectrum mask. More...
 
double m_txMaskOuterBandMaximumRejection
 The maximum rejection (in dBr) for the outer band of the transmit spectrum mask. More...
 
double m_txMaskOuterBandMinimumRejection
 The minimum rejection (in dBr) for the outer band of the transmit spectrum mask. More...
 
Ptr< WifiSpectrumPhyInterfacem_wifiSpectrumPhyInterface
 Spectrum PHY interface. More...
 

Friends

class ::SpectrumWifiPhyFilterTest
 allow SpectrumWifiPhyFilterTest class access More...
 

Additional Inherited Members

- Static Public Attributes inherited from ns3::WifiPhy
static const std::set< FrequencyChannelInfom_frequencyChannels
 Available frequency channels. More...
 
- Protected Attributes inherited from ns3::WifiPhy
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...
 

Detailed Description

802.11 PHY layer model

This PHY implements a spectrum-aware enhancement of the 802.11 SpectrumWifiPhy model.


This PHY model depends on a channel loss and delay model as provided by the ns3::SpectrumPropagationLossModel and ns3::PropagationDelayModel classes.

Config Paths

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

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

Attributes

  • DisableWifiReception: Prevent Wi-Fi frame sync from ever happening
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: false
    • Flags: construct write read
  • TxMaskInnerBandMinimumRejection: Minimum rejection (dBr) for the inner band of the transmit spectrum mask
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: -20
    • Flags: construct write read
  • TxMaskOuterBandMinimumRejection: Minimum rejection (dBr) for the outer band of the transmit spectrum mask
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: -28
    • Flags: construct write read
  • TxMaskOuterBandMaximumRejection: Maximum rejection (dBr) for the outer band of the transmit spectrum mask
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: -40
    • Flags: construct write read

Attributes defined in parent class ns3::WifiPhy

  • 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

TraceSources defined in parent class ns3::WifiPhy

  • 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 904 bytes (on a 64-bit architecture).

Definition at line 54 of file spectrum-wifi-phy.h.

Member Typedef Documentation

◆ RuBand

Definition at line 198 of file spectrum-wifi-phy.h.

◆ SignalArrivalCallback

typedef void(* ns3::SpectrumWifiPhy::SignalArrivalCallback) (bool signalType, uint32_t senderNodeId, double rxPower, Time duration)

Callback invoked when the PHY model starts to process a signal.

Parameters
signalTypeWhether signal is WiFi (true) or foreign (false)
senderNodeIdNode Id of the sender of the signal
rxPowerreceived signal power (dBm)
durationSignal duration

Definition at line 136 of file spectrum-wifi-phy.h.

Constructor & Destructor Documentation

◆ SpectrumWifiPhy()

ns3::SpectrumWifiPhy::SpectrumWifiPhy ( )

Definition at line 79 of file spectrum-wifi-phy.cc.

References NS_LOG_FUNCTION.

◆ ~SpectrumWifiPhy()

ns3::SpectrumWifiPhy::~SpectrumWifiPhy ( )
virtual

Definition at line 84 of file spectrum-wifi-phy.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

◆ ConfigureStandardAndBand()

◆ ConvertHeRuSubcarriers()

WifiSpectrumBand ns3::SpectrumWifiPhy::ConvertHeRuSubcarriers ( uint16_t  bandWidth,
uint16_t  guardBandwidth,
HeRu::SubcarrierRange  range,
uint8_t  bandIndex = 0 
) const
overrideprivatevirtual
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 from ns3::WifiPhy.

Definition at line 531 of file spectrum-wifi-phy.cc.

References GetBandBandwidth(), and NS_FATAL_ERROR.

Referenced by UpdateInterferenceHelperBands().

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

◆ CreateWifiSpectrumPhyInterface()

void ns3::SpectrumWifiPhy::CreateWifiSpectrumPhyInterface ( Ptr< NetDevice device)

Method to encapsulate the creation of the WifiSpectrumPhyInterface object (used to bind the WifiSpectrumPhy to a SpectrumChannel) and to link it to this SpectrumWifiPhy instance.

Parameters
devicepointer to the NetDevice object including this new object

Definition at line 418 of file spectrum-wifi-phy.cc.

References m_wifiSpectrumPhyInterface, and NS_LOG_FUNCTION.

Referenced by TestDlOfdmaPhyTransmission::DoSetup(), SpectrumWifiPhyFilterTest::DoSetup(), TestUlOfdmaPpduUid::DoSetup(), TestUlOfdmaPhyTransmission::DoSetup(), TestPhyPaddingExclusion::DoSetup(), and InterferenceExperiment::Run().

+ Here is the caller graph for this function:

◆ DoDispose()

void ns3::SpectrumWifiPhy::DoDispose ( void  )
overrideprotectedvirtual

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::WifiPhy.

Reimplemented in OfdmaSpectrumWifiPhy.

Definition at line 90 of file spectrum-wifi-phy.cc.

References ns3::WifiPhy::DoDispose(), m_antenna, m_channel, m_ruBands, m_rxSpectrumModel, m_wifiSpectrumPhyInterface, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ DoInitialize()

void ns3::SpectrumWifiPhy::DoInitialize ( void  )
overrideprotectedvirtual

Initialize() implementation.

This method is called only once by Initialize(). If the user calls Initialize() multiple times, DoInitialize() is called only the first time.

Subclasses are expected to override this method and chain up to their parent's implementation once they are done. It is safe to call GetObject() and AggregateObject() from within this method.

Reimplemented from ns3::Object.

Reimplemented in OfdmaSpectrumWifiPhy.

Definition at line 102 of file spectrum-wifi-phy.cc.

References ns3::Object::DoInitialize(), m_channel, m_wifiSpectrumPhyInterface, NS_FATAL_ERROR, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ GetBand()

WifiSpectrumBand ns3::SpectrumWifiPhy::GetBand ( uint16_t  bandWidth,
uint8_t  bandIndex = 0 
)
overrideprotectedvirtual

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 from ns3::WifiPhy.

Definition at line 506 of file spectrum-wifi-phy.cc.

References GetBandBandwidth(), ns3::WifiPhy::GetChannelWidth(), ns3::SpectrumModel::GetNumBands(), GetRxSpectrumModel(), and NS_ASSERT_MSG.

Referenced by SpectrumWifiPhyFilterTest::RxCallback(), StartRx(), and UpdateInterferenceHelperBands().

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

◆ GetBandBandwidth()

uint32_t ns3::SpectrumWifiPhy::GetBandBandwidth ( void  ) const

◆ GetChannel()

Ptr< Channel > ns3::SpectrumWifiPhy::GetChannel ( void  ) const
overridevirtual

Return the Channel this WifiPhy is connected to.

Returns
the Channel this WifiPhy is connected to

Implements ns3::WifiPhy.

Definition at line 203 of file spectrum-wifi-phy.cc.

References m_channel.

◆ GetGuardBandwidth()

uint16_t ns3::SpectrumWifiPhy::GetGuardBandwidth ( uint16_t  currentChannelWidth) const
overridevirtual
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.

Implements ns3::WifiPhy.

Reimplemented in OfdmaSpectrumWifiPhy.

Definition at line 484 of file spectrum-wifi-phy.cc.

Referenced by GetRxSpectrumModel(), ResetSpectrumModel(), SpectrumWifiPhyFilterTest::RunOne(), StartRx(), and UpdateInterferenceHelperBands().

+ Here is the caller graph for this function:

◆ GetRxAntenna()

Ptr< AntennaModel > ns3::SpectrumWifiPhy::GetRxAntenna ( void  ) const

Get the antenna model used for reception.

Returns
the AntennaModel used for reception

Definition at line 405 of file spectrum-wifi-phy.cc.

References m_antenna.

Referenced by ns3::WifiSpectrumPhyInterface::GetRxAntenna().

+ Here is the caller graph for this function:

◆ GetRxSpectrumModel()

Ptr< const SpectrumModel > ns3::SpectrumWifiPhy::GetRxSpectrumModel ( void  )
Returns
the SpectrumModel that this SpectrumPhy expects to be used for all SpectrumValues that are passed to StartRx. If 0 is returned, it means that any model will be accepted.

Definition at line 118 of file spectrum-wifi-phy.cc.

References GetBandBandwidth(), ns3::WifiPhy::GetChannelWidth(), ns3::WifiPhy::GetFrequency(), GetGuardBandwidth(), ns3::WifiSpectrumValueHelper::GetSpectrumModel(), m_rxSpectrumModel, NS_LOG_DEBUG, NS_LOG_FUNCTION, and UpdateInterferenceHelperBands().

Referenced by GetBand(), and ns3::WifiSpectrumPhyInterface::GetRxSpectrumModel().

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

◆ GetTxMaskRejectionParams()

std::tuple< double, double, double > ns3::SpectrumWifiPhy::GetTxMaskRejectionParams ( void  ) const
overridevirtual
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.

Implements ns3::WifiPhy.

Definition at line 565 of file spectrum-wifi-phy.cc.

References m_txMaskInnerBandMinimumRejection, m_txMaskOuterBandMaximumRejection, and m_txMaskOuterBandMinimumRejection.

◆ GetTypeId()

◆ ResetSpectrumModel()

void ns3::SpectrumWifiPhy::ResetSpectrumModel ( void  )
private

◆ SetAntenna()

void ns3::SpectrumWifiPhy::SetAntenna ( const Ptr< AntennaModel antenna)
Parameters
antennaan AntennaModel to include in the transmitted SpectrumSignalParameters (in case any objects downstream of the SpectrumWifiPhy wish to adjust signal properties based on the transmitted antenna model. This antenna is also used when the underlying WifiSpectrumPhyInterface::GetRxAntenna() method is called.

Note: this method may be split into separate SetTx and SetRx methods in the future if the modeling need for this arises

Definition at line 411 of file spectrum-wifi-phy.cc.

References m_antenna, and NS_LOG_FUNCTION.

◆ SetChannel()

void ns3::SpectrumWifiPhy::SetChannel ( const Ptr< SpectrumChannel channel)

Set the SpectrumChannel this SpectrumWifiPhy is to be connected to.

Parameters
channelthe SpectrumChannel this SpectrumWifiPhy is to be connected to

Definition at line 209 of file spectrum-wifi-phy.cc.

References third::channel, and m_channel.

Referenced by TestDlOfdmaPhyTransmission::DoSetup(), SpectrumWifiPhyFilterTest::DoSetup(), TestUlOfdmaPpduUid::DoSetup(), TestUlOfdmaPhyTransmission::DoSetup(), TestPhyPaddingExclusion::DoSetup(), and InterferenceExperiment::Run().

+ Here is the caller graph for this function:

◆ SetChannelNumber()

void ns3::SpectrumWifiPhy::SetChannelNumber ( uint8_t  id)
overridevirtual

Set channel number.

Channel center frequency = Channel starting frequency + 5 MHz * (nch - 1)

where Starting channel frequency is standard-dependent, as defined in (Section 18.3.8.4.2 "Channel numbering"; IEEE Std 802.11-2012).

If the operating channel for this object has not been set yet, the given channel number is saved and will be used, along with the center frequency and width that have been saved similarly, to set the operating channel when the standard and band are configured. 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. If so, this method may still fail to take action if the PHY model determines that the channel number cannot be switched for some reason (e.g. sleep state)

Parameters
idthe channel number

Reimplemented from ns3::WifiPhy.

Definition at line 229 of file spectrum-wifi-phy.cc.

References ns3::Object::IsInitialized(), NS_LOG_FUNCTION, ResetSpectrumModel(), and ns3::WifiPhy::SetChannelNumber().

Referenced by TestThresholdPreambleDetectionWithoutFrameCapture::DoSetup(), SpectrumWifiPhyBasicTest::DoSetup(), WifiPhyThresholdsTest::DoSetup(), TestThresholdPreambleDetectionWithFrameCapture::DoSetup(), TestSimpleFrameCaptureModel::DoSetup(), TestPhyHeadersReception::DoSetup(), TestMultipleHeTbPreambles::DoSetup(), TestAmpduReception::DoSetup(), and InterferenceExperiment::Run().

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

◆ SetChannelWidth()

void ns3::SpectrumWifiPhy::SetChannelWidth ( uint16_t  channelWidth)
overridevirtual

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.

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 call this method when the standard and band of this object have been already configured, because it cannot uniquely identify a channel in the band being used.

Parameters
channelWidththe channel width (in MHz)

Reimplemented from ns3::WifiPhy.

Definition at line 251 of file spectrum-wifi-phy.cc.

References ns3::Object::IsInitialized(), NS_LOG_FUNCTION, ResetSpectrumModel(), and ns3::WifiPhy::SetChannelWidth().

Referenced by TestUlOfdmaPpduUid::DoSetup(), TestMultipleHeTbPreambles::DoSetup(), TestPhyPaddingExclusion::DoSetup(), TestDlOfdmaPhyTransmission::RunOne(), and TestUlOfdmaPhyTransmission::RunOne().

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

◆ SetFrequency()

void ns3::SpectrumWifiPhy::SetFrequency ( uint16_t  freq)
overridevirtual

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.

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. If so, this method may still fail to take action if the PHY model determines that the operating channel cannot be switched for some reason (e.g. sleep state)

Parameters
freqthe operating center frequency (MHz) on this node.

Reimplemented from ns3::WifiPhy.

Definition at line 240 of file spectrum-wifi-phy.cc.

References ns3::Object::IsInitialized(), NS_LOG_FUNCTION, ResetSpectrumModel(), and ns3::WifiPhy::SetFrequency().

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

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

◆ StartRx()

void ns3::SpectrumWifiPhy::StartRx ( Ptr< SpectrumSignalParameters rxParams)

Input method for delivering a signal from the spectrum channel and low-level PHY interface to this SpectrumWifiPhy instance.

Parameters
rxParamsInput signal parameters

Definition at line 273 of file spectrum-wifi-phy.cc.

References ns3::InterferenceHelper::Add(), ns3::InterferenceHelper::AddForeignSignal(), ns3::Time::As(), ns3::WifiSpectrumValueHelper::CreateRfFilter(), ns3::DbmToW(), ns3::DbToRatio(), GetBand(), GetBandBandwidth(), ns3::WifiPhy::GetChannelWidth(), ns3::WifiPhy::GetFrequency(), GetGuardBandwidth(), ns3::WifiPhy::GetMeasurementChannelWidth(), ns3::WifiPhy::GetOperatingChannel(), ns3::WifiNetDevice::GetPhy(), ns3::WifiPhy::GetPhyEntity(), ns3::WifiPhy::GetPhyStandard(), ns3::WifiPhyOperatingChannel::GetPrimaryChannelCenterFrequency(), ns3::WifiPhy::GetRxGain(), ns3::WifiPhy::GetRxSensitivity(), ns3::Integral(), m_disableWifiReception, ns3::WifiPhy::m_interference, m_ruBands, m_signalCb, ns3::Time::NS, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::WifiPhy::StartReceivePreamble(), ns3::WifiPhy::SwitchMaybeToCcaBusy(), ns3::WIFI_PHY_STANDARD_80211ax, and ns3::WToDbm().

Referenced by TestMultipleHeTbPreambles::DoRxHeTbPpduOfdmaPart(), TestMultipleHeTbPreambles::RxHeTbPpdu(), TestAmpduReception::SendAmpduWithThreeMpdus(), TestThresholdPreambleDetectionWithoutFrameCapture::SendPacket(), TestThresholdPreambleDetectionWithFrameCapture::SendPacket(), TestSimpleFrameCaptureModel::SendPacket(), TestPhyHeadersReception::SendPacket(), WifiPhyThresholdsTest::SendSignal(), SpectrumWifiPhyBasicTest::SendSignal(), and ns3::WifiSpectrumPhyInterface::StartRx().

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

◆ StartTx()

void ns3::SpectrumWifiPhy::StartTx ( Ptr< WifiPpdu ppdu)
overridevirtual
Parameters
ppduthe PPDU to send

Implements ns3::WifiPhy.

Reimplemented in OfdmaSpectrumWifiPhy.

Definition at line 427 of file spectrum-wifi-phy.cc.

References ns3::WifiPhy::GetPhyEntity(), and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ Transmit()

void ns3::SpectrumWifiPhy::Transmit ( Ptr< WifiSpectrumSignalParameters txParams)

This function is sending the signal to the Spectrum channel after finishing the configuration of the transmit parameters.

Parameters
txParamsthe parameters to be provided to the Spectrum channel

Definition at line 434 of file spectrum-wifi-phy.cc.

References m_antenna, m_channel, m_wifiSpectrumPhyInterface, NS_ASSERT_MSG, and NS_LOG_FUNCTION.

◆ UpdateInterferenceHelperBands()

void ns3::SpectrumWifiPhy::UpdateInterferenceHelperBands ( void  )
private

Friends And Related Function Documentation

◆ ::SpectrumWifiPhyFilterTest

friend class ::SpectrumWifiPhyFilterTest
friend

allow SpectrumWifiPhyFilterTest class access

Definition at line 58 of file spectrum-wifi-phy.h.

Member Data Documentation

◆ m_antenna

Ptr<AntennaModel> ns3::SpectrumWifiPhy::m_antenna
private

antenna model

Definition at line 194 of file spectrum-wifi-phy.h.

Referenced by DoDispose(), GetRxAntenna(), SetAntenna(), and Transmit().

◆ m_channel

Ptr<SpectrumChannel> ns3::SpectrumWifiPhy::m_channel
private

SpectrumChannel that this SpectrumWifiPhy is connected to.

Definition at line 191 of file spectrum-wifi-phy.h.

Referenced by DoDispose(), DoInitialize(), GetChannel(), ResetSpectrumModel(), SetChannel(), and Transmit().

◆ m_disableWifiReception

bool ns3::SpectrumWifiPhy::m_disableWifiReception
private

forces this PHY to fail to sync on any signal

Definition at line 202 of file spectrum-wifi-phy.h.

Referenced by GetTypeId(), and StartRx().

◆ m_ruBands

std::map<uint16_t, RuBand> ns3::SpectrumWifiPhy::m_ruBands
private

For each channel width, store all the distinct spectrum bands associated with every RU in a channel of that width.

Definition at line 200 of file spectrum-wifi-phy.h.

Referenced by DoDispose(), StartRx(), and UpdateInterferenceHelperBands().

◆ m_rxSpectrumModel

Ptr<const SpectrumModel> ns3::SpectrumWifiPhy::m_rxSpectrumModel
mutableprivate

receive spectrum model

Map a spectrum band associated with an RU to the RU specification

Definition at line 195 of file spectrum-wifi-phy.h.

Referenced by DoDispose(), GetRxSpectrumModel(), and ResetSpectrumModel().

◆ m_signalCb

TracedCallback<bool, uint32_t, double, Time> ns3::SpectrumWifiPhy::m_signalCb
private

Signal callback.

Definition at line 203 of file spectrum-wifi-phy.h.

Referenced by GetTypeId(), and StartRx().

◆ m_txMaskInnerBandMinimumRejection

double ns3::SpectrumWifiPhy::m_txMaskInnerBandMinimumRejection
private

The minimum rejection (in dBr) for the inner band of the transmit spectrum mask.

Definition at line 205 of file spectrum-wifi-phy.h.

Referenced by GetTxMaskRejectionParams(), and GetTypeId().

◆ m_txMaskOuterBandMaximumRejection

double ns3::SpectrumWifiPhy::m_txMaskOuterBandMaximumRejection
private

The maximum rejection (in dBr) for the outer band of the transmit spectrum mask.

Definition at line 207 of file spectrum-wifi-phy.h.

Referenced by GetTxMaskRejectionParams(), and GetTypeId().

◆ m_txMaskOuterBandMinimumRejection

double ns3::SpectrumWifiPhy::m_txMaskOuterBandMinimumRejection
private

The minimum rejection (in dBr) for the outer band of the transmit spectrum mask.

Definition at line 206 of file spectrum-wifi-phy.h.

Referenced by GetTxMaskRejectionParams(), and GetTypeId().

◆ m_wifiSpectrumPhyInterface

Ptr<WifiSpectrumPhyInterface> ns3::SpectrumWifiPhy::m_wifiSpectrumPhyInterface
private

Spectrum PHY interface.

Definition at line 193 of file spectrum-wifi-phy.h.

Referenced by CreateWifiSpectrumPhyInterface(), DoDispose(), DoInitialize(), ResetSpectrumModel(), and Transmit().


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