802.11 PHY layer model More...
#include "wifi-phy.h"
Public Types | |
using | ChannelTuple = std::tuple< uint8_t, uint16_t, int, uint8_t > |
Tuple identifying an operating channel. | |
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. | |
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. | |
typedef void(* | PhyRxBeginTracedCallback) (Ptr< const Packet > packet, RxPowerWattPerChannelBand rxPowersW) |
TracedCallback signature for PhyRxBegin trace source. | |
typedef void(* | PhyRxPayloadBeginTracedCallback) (WifiTxVector txVector, Time psduDuration) |
TracedCallback signature for start of PSDU reception events. | |
typedef void(* | PhyTxBeginTracedCallback) (Ptr< const Packet > packet, double txPowerW) |
TracedCallback signature for Phy transmit events. | |
typedef void(* | PsduTxBeginCallback) (WifiConstPsduMap psduMap, WifiTxVector txVector, double txPowerW) |
TracedCallback signature for PSDU transmit events. | |
Public Member Functions | |
WifiPhy () | |
~WifiPhy () override | |
virtual int64_t | AssignStreams (int64_t stream) |
Assign a fixed random variable stream number to the random variables used by this model. | |
double | CalculateSnr (const WifiTxVector &txVector, double ber) const |
virtual void | ConfigureStandard (WifiStandard standard) |
Configure the PHY-level parameters for different Wi-Fi standard. | |
virtual WifiSpectrumBandFrequencies | ConvertIndicesToFrequencies (const WifiSpectrumBandIndices &indices) const =0 |
This is a helper function to convert start and stop indices to start and stop frequencies. | |
void | EndReceiveInterBss () |
For HE receptions only, check and possibly modify the transmit power restriction state at the end of PPDU reception. | |
Time | GetAckTxTime () const |
Return the estimated Ack TX time for this PHY. | |
virtual WifiSpectrumBandInfo | GetBand (uint16_t bandWidth, uint8_t bandIndex=0)=0 |
Get the info of a given band. | |
Time | GetBlockAckTxTime () const |
Return the estimated BlockAck TX time for this PHY. | |
std::list< uint8_t > | GetBssMembershipSelectorList () 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. | |
double | GetCcaEdThreshold () const |
Return the CCA energy detection threshold (dBm). | |
double | GetCcaSensitivityThreshold () const |
Return the CCA sensitivity threshold (dBm). | |
virtual Ptr< Channel > | GetChannel () const =0 |
Return the Channel this WifiPhy is connected to. | |
uint8_t | GetChannelNumber () const |
Return current channel number. | |
Time | GetChannelSwitchDelay () const |
uint16_t | GetChannelWidth () const |
virtual FrequencyRange | GetCurrentFrequencyRange () const =0 |
Get the frequency range of the current RF interface. | |
WifiMode | GetDefaultMode () const |
Get the default WifiMode supported by the PHY. | |
Time | GetDelayUntilIdle () |
Ptr< WifiNetDevice > | GetDevice () const |
Return the device this PHY is associated with. | |
uint16_t | GetFrequency () const |
virtual uint16_t | GetGuardBandwidth (uint16_t currentChannelWidth) const =0 |
Time | GetLastRxEndTime () const |
Return the end time of the last received packet. | |
Time | GetLastRxStartTime () const |
Return the start time of the last received packet. | |
Ptr< PhyEntity > | GetLatestPhyEntity () const |
Get the latest PHY entity supported by this PHY instance. | |
uint8_t | GetMaxSupportedRxSpatialStreams () const |
uint8_t | GetMaxSupportedTxSpatialStreams () const |
WifiMode | GetMcs (WifiModulationClass modulation, uint8_t mcs) const |
Get the WifiMode object corresponding to the given MCS of the given modulation class. | |
std::list< WifiMode > | GetMcsList () 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). | |
std::list< WifiMode > | GetMcsList (WifiModulationClass modulation) const |
Get the list of supported MCSs for the given modulation class (i.e. | |
Ptr< MobilityModel > | GetMobility () const |
Return the mobility model this PHY is associated with. | |
std::list< WifiMode > | GetModeList () 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. | |
std::list< WifiMode > | GetModeList (WifiModulationClass modulation) const |
Get the list of supported (non-MCS) modes for the given modulation class (i.e. | |
uint16_t | GetNMcs () const |
uint8_t | GetNTxPower () const |
Return the number of available transmission power levels. | |
uint8_t | GetNumberOfAntennas () const |
const WifiPhyOperatingChannel & | GetOperatingChannel () const |
Get a const reference to the operating channel. | |
WifiPhyBand | GetPhyBand () const |
Get the configured Wi-Fi band. | |
Ptr< PhyEntity > | GetPhyEntity (WifiModulationClass modulation) const |
Get the supported PHY entity corresponding to the modulation class. | |
Ptr< PhyEntity > | GetPhyEntity (WifiStandard standard) const |
Get the supported PHY entity corresponding to the wifi standard. | |
Ptr< PhyEntity > | GetPhyEntityForPpdu (const Ptr< const WifiPpdu > ppdu) const |
Get the supported PHY entity to use for a received PPDU. | |
Time | GetPifs () const |
Return the PCF Interframe Space (PIFS) for this PHY. | |
double | GetPowerDbm (uint8_t power) const |
Get the power of the given power level in dBm. | |
uint64_t | GetPreviouslyRxPpduUid () const |
uint8_t | GetPrimary20Index () const |
uint8_t | GetPrimaryChannelNumber (uint16_t primaryChannelWidth) const |
Get channel number of the primary channel. | |
double | GetRxGain () const |
Return the reception gain (dB). | |
double | GetRxSensitivity () const |
Return the receive sensitivity threshold (dBm). | |
bool | GetShortPhyPreambleSupported () const |
Return whether short PHY preamble is supported. | |
Time | GetSifs () const |
Return the Short Interframe Space (SIFS) for this PHY. | |
Time | GetSlot () const |
Return the slot duration for this PHY. | |
WifiStandard | GetStandard () const |
Get the configured Wi-Fi standard. | |
Ptr< WifiPhyStateHelper > | GetState () const |
Return the WifiPhyStateHelper of this PHY. | |
uint32_t | GetSubcarrierSpacing () const |
uint16_t | GetTxBandwidth (WifiMode mode, uint16_t maxAllowedBandWidth=std::numeric_limits< uint16_t >::max()) const |
Get the bandwidth for a transmission occurring on the current operating channel and using the given WifiMode, subject to the constraint that the TX bandwidth cannot exceed the given maximum allowed value. | |
double | GetTxGain () const |
Return the transmission gain (dB). | |
virtual std::tuple< double, double, double > | GetTxMaskRejectionParams () const =0 |
double | GetTxPowerEnd () const |
Return the maximum available transmission power level (dBm). | |
double | GetTxPowerForTransmission (Ptr< const WifiPpdu > ppdu) const |
Compute the transmit power for the next transmission. | |
double | GetTxPowerStart () const |
Return the minimum available transmission power level (dBm). | |
bool | HasFixedPhyBand () const |
bool | IsMcsSupported (WifiModulationClass modulation, uint8_t mcs) const |
Check if the given MCS of the given modulation class is supported by the PHY. | |
bool | IsModeSupported (WifiMode mode) const |
Check if the given WifiMode is supported by the PHY. | |
bool | IsStateCcaBusy () const |
bool | IsStateIdle () const |
bool | IsStateOff () const |
bool | IsStateRx () const |
bool | IsStateSleep () const |
bool | IsStateSwitching () const |
bool | IsStateTx () const |
void | NotifyChannelAccessRequested () |
Notify the PHY that an access to the channel was requested. | |
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. | |
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. | |
void | NotifyRxBegin (Ptr< const WifiPsdu > psdu, const RxPowerWattPerChannelBand &rxPowersW) |
Public method used to fire a PhyRxBegin trace. | |
void | NotifyRxDrop (Ptr< const WifiPsdu > psdu, WifiPhyRxfailureReason reason) |
Public method used to fire a PhyRxDrop trace. | |
void | NotifyRxEnd (Ptr< const WifiPsdu > psdu) |
Public method used to fire a PhyRxEnd trace. | |
void | NotifyTxBegin (WifiConstPsduMap psdus, double txPowerW) |
Public method used to fire a PhyTxBegin trace. | |
void | NotifyTxDrop (Ptr< const WifiPsdu > psdu) |
Public method used to fire a PhyTxDrop trace. | |
void | NotifyTxEnd (WifiConstPsduMap psdus) |
Public method used to fire a PhyTxEnd trace. | |
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. | |
void | ResumeFromOff () |
Resume from off mode. | |
void | ResumeFromSleep () |
Resume from sleep mode. | |
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. | |
void | Send (WifiConstPsduMap psdus, const WifiTxVector &txVector) |
void | SetCapabilitiesChangedCallback (Callback< void > callback) |
void | SetCcaEdThreshold (double threshold) |
Sets the CCA energy detection threshold (dBm). | |
void | SetCcaSensitivityThreshold (double threshold) |
Sets the CCA sensitivity threshold (dBm). | |
virtual void | SetDevice (const Ptr< WifiNetDevice > device) |
Sets the device this PHY is associated with. | |
void | SetErrorRateModel (const Ptr< ErrorRateModel > model) |
Sets the error rate model. | |
void | SetFixedPhyBand (bool enable) |
Configure whether it is prohibited to change PHY band after initialization. | |
void | SetFrameCaptureModel (const Ptr< FrameCaptureModel > frameCaptureModel) |
Sets the frame capture model. | |
virtual void | SetInterferenceHelper (const Ptr< InterferenceHelper > helper) |
Sets the interference helper. | |
void | SetMaxSupportedRxSpatialStreams (uint8_t streams) |
void | SetMaxSupportedTxSpatialStreams (uint8_t streams) |
void | SetMobility (const Ptr< MobilityModel > mobility) |
assign a mobility model to this device | |
void | SetNTxPower (uint8_t n) |
Sets the number of transmission power levels available between the minimum level and the maximum level. | |
void | SetNumberOfAntennas (uint8_t antennas) |
void | SetOffMode () |
Put in off mode. | |
void | SetOperatingChannel (const ChannelTuple &channelTuple) |
If the standard for this object has not been set yet, store the given channel settings. | |
void | SetOperatingChannel (const WifiPhyOperatingChannel &channel) |
If the standard for this object has not been set yet, store the channel settings corresponding to the given operating channel. | |
void | SetPifs (Time pifs) |
Set the PCF Interframe Space (PIFS) for this PHY. | |
void | SetPostReceptionErrorModel (const Ptr< ErrorModel > em) |
Attach a receive ErrorModel to the WifiPhy. | |
void | SetPreambleDetectionModel (const Ptr< PreambleDetectionModel > preambleDetectionModel) |
Sets the preamble detection model. | |
void | SetReceiveErrorCallback (RxErrorCallback callback) |
void | SetReceiveOkCallback (RxOkCallback callback) |
void | SetRxGain (double gain) |
Sets the reception gain (dB). | |
void | SetRxNoiseFigure (double noiseFigureDb) |
Sets the RX loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver. | |
void | SetRxSensitivity (double threshold) |
Sets the receive sensitivity threshold (dBm). | |
void | SetShortPhyPreambleSupported (bool preamble) |
Enable or disable short PHY preamble. | |
void | SetSifs (Time sifs) |
Set the Short Interframe Space (SIFS) for this PHY. | |
void | SetSleepMode () |
Put in sleep mode. | |
void | SetSlot (Time slot) |
Set the slot duration for this PHY. | |
void | SetTxGain (double gain) |
Sets the transmission gain (dB). | |
void | SetTxPowerEnd (double end) |
Sets the maximum available transmission power level (dBm). | |
void | SetTxPowerStart (double start) |
Sets the minimum available transmission power level (dBm). | |
void | SetWifiRadioEnergyModel (const Ptr< WifiRadioEnergyModel > wifiRadioEnergyModel) |
Sets the wifi radio energy model. | |
void | StartReceivePreamble (Ptr< const WifiPpdu > ppdu, RxPowerWattPerChannelBand &rxPowersW, Time rxDuration) |
Start receiving the PHY preamble of a PPDU (i.e. | |
virtual void | StartTx (Ptr< const WifiPpdu > ppdu)=0 |
void | UnregisterListener (WifiPhyListener *listener) |
![]() | |
Object () | |
Constructor. | |
~Object () override | |
Destructor. | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. | |
void | Dispose () |
Dispose of this Object. | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. | |
bool | IsInitialized () const |
Check if the object has been initialized. | |
![]() | |
SimpleRefCount () | |
Default constructor. | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. | |
void | Ref () const |
Increment the reference count. | |
void | Unref () const |
Decrement the reference count. | |
![]() | |
virtual | ~ObjectBase () |
Virtual destructor. | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. | |
virtual TypeId | GetInstanceTypeId () const =0 |
Get the most derived TypeId for this Object. | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. | |
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. | |
static Time | CalculatePhyPreambleAndHeaderDuration (const WifiTxVector &txVector) |
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. | |
static Time | CalculateTxDuration (uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, uint16_t staId=SU_STA_ID) |
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. | |
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 | GetPayloadDuration (uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, MpduType mpdutype=NORMAL_MPDU, uint16_t staId=SU_STA_ID) |
static Time | GetPreambleDetectionDuration () |
static Time | GetStartOfPacketDuration (const WifiTxVector &txVector) |
static const Ptr< const PhyEntity > | GetStaticPhyEntity (WifiModulationClass modulation) |
Get the implemented PHY entity corresponding to the modulation class. | |
static TypeId | GetTypeId () |
Get the type ID. | |
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. | |
![]() | |
static TypeId | GetTypeId () |
Register this type. | |
![]() | |
static TypeId | GetTypeId () |
Get the type ID. | |
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. | |
virtual void | DoChannelSwitch () |
Actually switch channel based on the stored channel settings. | |
void | DoDispose () override |
Destructor implementation. | |
void | DoInitialize () override |
Initialize() implementation. | |
Time | GetDelayUntilChannelSwitch () |
Perform any actions necessary when user changes operating channel after initialization. | |
void | NotifyCcaBusy (const Ptr< const WifiPpdu > ppdu, Time duration) |
Notify PHY state helper to switch to CCA busy state,. | |
void | Reset () |
Reset data upon end of TX or RX. | |
void | SwitchMaybeToCcaBusy (const Ptr< const WifiPpdu > ppdu) |
Check if PHY state should move to CCA busy state based on current state of interference tracker. | |
![]() | |
Object (const Object &o) | |
Copy an Object. | |
virtual void | DoDispose () |
Destructor implementation. | |
virtual void | DoInitialize () |
Initialize() implementation. | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. | |
![]() | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. | |
Protected Attributes | |
Ptr< Event > | m_currentEvent |
Hold the current event. | |
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 | |
EventId | m_endPhyRxEvent |
the end of PHY receive event | |
EventId | m_endTxEvent |
the end of transmit event | |
Ptr< InterferenceHelper > | m_interference |
Pointer to a helper responsible for interference computations. | |
std::map< WifiModulationClass, Ptr< PhyEntity > > | m_phyEntities |
This map holds the supported PHY entities. | |
uint64_t | m_previouslyRxPpduUid |
UID of the previously received PPDU, reset to UINT64_MAX upon transmission. | |
Ptr< UniformRandomVariable > | m_random |
Provides uniform random variables. | |
uint32_t | m_rxMpduReferenceNumber |
A-MPDU reference number to identify all received subframes belonging to the same received A-MPDU. | |
Ptr< WifiPhyStateHelper > | m_state |
Pointer to WifiPhyStateHelper. | |
uint32_t | m_txMpduReferenceNumber |
A-MPDU reference number to identify all transmitted subframes belonging to the same received A-MPDU. | |
Private Member Functions | |
void | AbortCurrentReception (WifiPhyRxfailureReason reason) |
Due to newly arrived signal, the current reception cannot be continued and has to be aborted. | |
void | Configure80211a () |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11a standard. | |
void | Configure80211ac () |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11ac standard. | |
void | Configure80211ax () |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11ax standard. | |
void | Configure80211b () |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11b standard. | |
void | Configure80211be () |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11be standard. | |
void | Configure80211g () |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11g standard. | |
void | Configure80211n () |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11n standard. | |
void | Configure80211p () |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11p standard. | |
void | ConfigureHtDeviceMcsSet () |
Configure the device MCS set with the appropriate HtMcs modes for the number of available transmit spatial streams. | |
Ptr< const WifiPsdu > | GetAddressedPsduInPpdu (Ptr< const WifiPpdu > ppdu) const |
Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU). | |
void | PushMcs (WifiMode mode) |
Add the given MCS to the device MCS set. | |
void | RebuildMcsMap () |
Rebuild the mapping of MCS values to indices in the device MCS set. | |
Static Private Member Functions | |
static std::map< WifiModulationClass, Ptr< PhyEntity > > & | GetStaticPhyEntities () |
Private Attributes | |
Time | m_ackTxTime |
estimated Ack TX time | |
WifiPhyBand | m_band |
WifiPhyBand. | |
Time | m_blockAckTxTime |
estimated BlockAck TX time | |
Callback< void > | m_capabilitiesChangedCallback |
Callback when PHY capabilities changed. | |
double | m_ccaEdThresholdW |
Clear channel assessment (CCA) energy detection (ED) threshold in watts. | |
double | m_ccaSensitivityThresholdW |
Clear channel assessment (CCA) modulation and coding rate sensitivity threshold in watts. | |
bool | m_channelAccessRequested |
Flag if channels access has been requested (used for OBSS_PD SR) | |
ChannelTuple | m_channelSettings |
Store operating channel settings until initialization. | |
Time | m_channelSwitchDelay |
Time required to switch between channel. | |
Ptr< WifiNetDevice > | m_device |
Pointer to the device. | |
bool | m_fixedPhyBand |
True to prohibit changing PHY band after initialization. | |
Ptr< FrameCaptureModel > | m_frameCaptureModel |
Frame capture model. | |
Ptr< MobilityModel > | m_mobility |
Pointer to the mobility model. | |
double | m_noiseFigureDb |
The noise figure in dB. | |
uint8_t | m_nTxPower |
Number of available transmission power levels. | |
uint8_t | m_numberOfAntennas |
Number of transmitters. | |
WifiPhyOperatingChannel | m_operatingChannel |
Operating channel. | |
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. | |
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. | |
TracedCallback< Ptr< const Packet >, RxPowerWattPerChannelBand > | m_phyRxBeginTrace |
The trace source fired when a packet begins the reception process from the medium. | |
TracedCallback< Ptr< const Packet >, WifiPhyRxfailureReason > | m_phyRxDropTrace |
The trace source fired when the PHY layer drops a packet it has received. | |
TracedCallback< Ptr< const Packet > > | m_phyRxEndTrace |
The trace source fired when a packet ends the reception process from the medium. | |
TracedCallback< WifiTxVector, Time > | m_phyRxPayloadBeginTrace |
The trace source fired when the reception of the PHY payload (PSDU) begins. | |
TracedCallback< Ptr< const Packet >, double > | m_phyTxBeginTrace |
The trace source fired when a packet begins the transmission process on the medium. | |
TracedCallback< Ptr< const Packet > > | m_phyTxDropTrace |
The trace source fired when the PHY layer drops a packet as it tries to transmit it. | |
TracedCallback< Ptr< const Packet > > | m_phyTxEndTrace |
The trace source fired when a packet ends the transmission process on the medium. | |
TracedCallback< WifiConstPsduMap, WifiTxVector, double > | m_phyTxPsduBeginTrace |
The trace source fired when a PSDU map begins the transmission process on the medium. | |
Time | m_pifs |
PCF Interframe Space (PIFS) duration. | |
Ptr< ErrorModel > | m_postReceptionErrorModel |
Error model for receive packet events. | |
double | m_powerDensityLimit |
the power density limit (dBm/MHz) | |
bool | m_powerRestricted |
Flag whether transmit power is restricted by OBSS PD SR. | |
Ptr< PreambleDetectionModel > | m_preambleDetectionModel |
Preamble detection model. | |
double | m_rxGainDb |
Reception gain (dB) | |
double | m_rxSensitivityW |
Receive sensitivity threshold in watts. | |
uint8_t | m_rxSpatialStreams |
Number of supported RX spatial streams. | |
bool | m_shortPreamble |
Flag if short PHY preamble is supported. | |
Time | m_sifs |
Short Interframe Space (SIFS) duration. | |
Time | m_slot |
Slot duration. | |
WifiStandard | m_standard |
WifiStandard. | |
Time | m_timeLastPreambleDetected |
Record the time the last preamble was detected. | |
double | m_txGainDb |
Transmission gain (dB) | |
double | m_txPowerBaseDbm |
Minimum transmission power (dBm) | |
double | m_txPowerEndDbm |
Maximum transmission power (dBm) | |
double | m_txPowerMaxMimo |
MIMO maximum transmit power due to OBSS PD SR power restriction (dBm) | |
double | m_txPowerMaxSiso |
SISO maximum transmit power due to OBSS PD SR power restriction (dBm) | |
uint8_t | m_txSpatialStreams |
Number of supported TX spatial streams. | |
Ptr< WifiRadioEnergyModel > | m_wifiRadioEnergyModel |
Wifi radio energy model. | |
Friends | |
class | PhyEntity |
Additional Inherited Members | |
![]() | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. | |
802.11 PHY layer model
ns3::WifiPhy is accessible through the following paths with Config::Set and Config::Connect:
Time
+0ns:+9.22337e+18ns Time
+9.22337e+18ns:+9.22337e+18ns Time
+9.22337e+18ns:+9.22337e+18ns Time
+9.22337e+18ns:+9.22337e+18ns Size of this type is 664 bytes (on a 64-bit architecture).
Definition at line 52 of file wifi-phy.h.
using ns3::WifiPhy::ChannelTuple = std::tuple<uint8_t , uint16_t , int , uint8_t > |
Tuple identifying an operating channel.
Definition at line 868 of file wifi-phy.h.
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.
packet | the packet being received |
channelFreqMhz | the 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. |
txVector | the TXVECTOR that holds RX parameters |
aMpdu | the 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) |
signalNoise | signal power and noise power in dBm |
staId | the STA-ID |
Definition at line 634 of file wifi-phy.h.
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.
packet | the packet being transmitted |
channelFreqMhz | the frequency in MHz at which the packet is transmitted. |
txVector | the TXVECTOR that holds TX parameters |
aMpdu | the 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) |
staId | the STA-ID |
Definition at line 673 of file wifi-phy.h.
typedef void(* ns3::WifiPhy::PhyRxBeginTracedCallback) (Ptr< const Packet > packet, RxPowerWattPerChannelBand rxPowersW) |
TracedCallback signature for PhyRxBegin trace source.
packet | the packet being received |
rxPowersW | the receive power per channel band in Watts |
Definition at line 704 of file wifi-phy.h.
typedef void(* ns3::WifiPhy::PhyRxPayloadBeginTracedCallback) (WifiTxVector txVector, Time psduDuration) |
TracedCallback signature for start of PSDU reception events.
txVector | the TXVECTOR decoded from the PHY header |
psduDuration | the duration of the PSDU |
Definition at line 713 of file wifi-phy.h.
typedef void(* ns3::WifiPhy::PhyTxBeginTracedCallback) (Ptr< const Packet > packet, double txPowerW) |
TracedCallback signature for Phy transmit events.
packet | the packet being transmitted |
txPowerW | the transmit power in Watts |
Definition at line 685 of file wifi-phy.h.
typedef void(* ns3::WifiPhy::PsduTxBeginCallback) (WifiConstPsduMap psduMap, WifiTxVector txVector, double txPowerW) |
TracedCallback signature for PSDU transmit events.
psduMap | the PSDU map being transmitted |
txVector | the TXVECTOR holding the TX parameters |
txPowerW | the transmit power in Watts |
Definition at line 694 of file wifi-phy.h.
ns3::WifiPhy::WifiPhy | ( | ) |
Definition at line 344 of file wifi-phy.cc.
References m_random, m_state, and NS_LOG_FUNCTION.
|
override |
Definition at line 370 of file wifi-phy.cc.
References NS_LOG_FUNCTION.
|
private |
Due to newly arrived signal, the current reception cannot be continued and has to be aborted.
reason | the reason the reception is aborted |
Definition at line 2077 of file wifi-phy.cc.
References ns3::EventId::Cancel(), GetAddressedPsduInPpdu(), GetChannelWidth(), GetCurrentFrequencyRange(), ns3::EventId::IsRunning(), m_currentEvent, m_currentPreambleEvents, m_endPhyRxEvent, m_interference, m_phyEntities, m_state, NotifyRxDrop(), ns3::Simulator::Now(), NS_LOG_FUNCTION, and ns3::OBSS_PD_CCA_RESET.
Referenced by ns3::PhyEntity::AbortCurrentReception(), GetDelayUntilChannelSwitch(), ResetCca(), and Send().
|
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 (
modulation | the modulation class |
phyEntity | the PHY entity |
Definition at line 764 of file wifi-phy.cc.
References GetStaticPhyEntities(), m_phyEntities, NS_ABORT_MSG_IF, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
Referenced by Configure80211a(), Configure80211ac(), Configure80211ax(), Configure80211b(), Configure80211be(), Configure80211g(), Configure80211n(), and Configure80211p().
|
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.
modulation | the modulation class |
phyEntity | the PHY entity |
Definition at line 754 of file wifi-phy.cc.
References GetStaticPhyEntities(), NS_ASSERT_MSG, and NS_LOG_FUNCTION.
Referenced by anonymous_namespace{dsss-phy.cc}::ConstructorDsss::ConstructorDsss(), anonymous_namespace{eht-phy.cc}::ConstructorEht::ConstructorEht(), 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().
|
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.
stream | first stream index to use |
Definition at line 2180 of file wifi-phy.cc.
References m_interference, m_random, NS_LOG_FUNCTION, and ns3::RandomVariableStream::SetStream().
Referenced by TestNonHtDuplicatePhyReception::DoRun(), TestUlOfdmaPpduUid::DoRun(), TestMultipleHeTbPreambles::DoRun(), TestThresholdPreambleDetectionWithoutFrameCapture::DoRun(), TestThresholdPreambleDetectionWithFrameCapture::DoRun(), TestSimpleFrameCaptureModel::DoRun(), TestPhyHeadersReception::DoRun(), TestAmpduReception::DoRun(), TestUnsupportedBandwidthReception::DoRun(), TestMultipleCtsResponsesFromMuRts::DoSetup(), TestPhyPaddingExclusion::DoSetup(), WifiPhyCcaIndicationTest::RunOne(), TestDlOfdmaPhyTransmission::RunOne(), TestDlOfdmaPhyPuncturing::RunOne(), TestUlOfdmaPhyTransmission::RunOne(), and TestUlOfdmaPowerControl::RunOne().
|
static |
txVector | the transmission parameters used for this packet |
Definition at line 1489 of file wifi-phy.cc.
References ns3::WifiTxVector::GetModulationClass(), and GetStaticPhyEntity().
Referenced by ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), ns3::InterferenceHelper::CalculatePayloadPer(), CalculateTxDuration(), WifiTxopTest::CheckResults(), ns3::DsssPpdu::GetTxDuration(), ns3::VhtPpdu::GetTxDuration(), ns3::HePhy::GetValidPpduDuration(), ns3::FrameExchangeManager::SendMpdu(), ns3::HeFrameExchangeManager::SendMuRts(), ns3::HtFrameExchangeManager::SendPsdu(), ns3::HeFrameExchangeManager::SendPsduMap(), ns3::FrameExchangeManager::SendRts(), ns3::DsssPpdu::SetDsssHeader(), ns3::VhtPpdu::SetVhtSigHeader(), and ns3::FrameExchangeManager::UpdateNav().
double ns3::WifiPhy::CalculateSnr | ( | const WifiTxVector & | txVector, |
double | ber | ||
) | const |
txVector | the transmission vector |
ber | the probability of bit error rate |
Definition at line 698 of file wifi-phy.cc.
References m_interference.
|
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.
psdu | the PSDU to transmit |
txVector | the TXVECTOR used for the transmission of the PSDU |
band | the frequency band |
Definition at line 1508 of file wifi-phy.cc.
References CalculateTxDuration(), and GetWifiConstPsduMap().
|
static |
size | the number of bytes in the packet to send |
txVector | the TXVECTOR used for the transmission of this packet |
band | the frequency band being used |
staId | the STA-ID of the recipient (only used for MU) |
Definition at line 1496 of file wifi-phy.cc.
References CalculatePhyPreambleAndHeaderDuration(), GetPayloadDuration(), ns3::Time::IsStrictlyPositive(), ns3::NORMAL_MPDU, and NS_ASSERT.
Referenced by ns3::FrameExchangeManager::CalculateAcknowledgmentTime(), ns3::HtFrameExchangeManager::CalculateAcknowledgmentTime(), ns3::FrameExchangeManager::CalculateProtectionTime(), CalculateTxDuration(), ns3::PhyEntity::CalculateTxDuration(), ns3::HePhy::CalculateTxDuration(), TxDurationTest::CalculateTxDurationUsingList(), EmlsrDlTxopTest::CheckBlockAck(), MultiLinkTxTest::CheckBlockAck(), MultiLinkMuTxTest::CheckBlockAck(), EmlNotificationExchangeTest::CheckEmlNotification(), EmlsrDlTxopTest::CheckEmlNotificationFrame(), EmlsrDlTxopTest::CheckInitialControlFrame(), EmlsrDlTxopTest::CheckQosFrames(), EmlsrDlTxopTest::CheckResults(), TestPrimary20CoveredByPpdu::CreatePpdu(), ns3::FrameExchangeManager::DoSendCtsAfterRts(), WifiPrimaryChannelsTest::DoSendHeTbPpdu(), WifiPrimaryChannelsTest::DoSetup(), ns3::EhtFrameExchangeManager::ForwardPsduDown(), ns3::EhtFrameExchangeManager::ForwardPsduMapDown(), ns3::QosFrameExchangeManager::GetCtsToSelfDurationId(), ns3::FrameExchangeManager::GetFrameDurationId(), ns3::QosFrameExchangeManager::GetFrameDurationId(), ns3::HeFrameExchangeManager::GetMuRtsDurationId(), ns3::FrameExchangeManager::GetRtsDurationId(), ns3::QosFrameExchangeManager::GetRtsDurationId(), ns3::HtPpdu::GetTxDuration(), ns3::OfdmPpdu::GetTxDuration(), ns3::FrameExchangeManager::GetTxDuration(), SpectrumWifiPhyBasicTest::MakeSignal(), WifiPhyThresholdsTest::MakeWifiSignal(), ns3::ApWifiMac::ReceiveEmlNotification(), TestMultipleHeTbPreambles::RxHeTbPpdu(), TestMultiUserScheduler::SelectTxFormat(), Send(), TestAmpduReception::SendAmpduWithThreeMpdus(), ns3::HtFrameExchangeManager::SendBlockAck(), ns3::QosFrameExchangeManager::SendCfEndIfNeeded(), ns3::FrameExchangeManager::SendCtsToSelf(), ns3::FrameExchangeManager::SendMpdu(), TestUlOfdmaPowerControl::SendMuBar(), ns3::HeFrameExchangeManager::SendMuRts(), TestNonHtDuplicatePhyReception::SendNonHtDuplicatePpdu(), ns3::FrameExchangeManager::SendNormalAck(), WifiPhyReceptionTest::SendPacket(), SpectrumWifiPhyMultipleInterfacesTest::SendPpdu(), TestUnsupportedBandwidthReception::SendPpdu(), ns3::HtFrameExchangeManager::SendPsdu(), ns3::HeFrameExchangeManager::SendPsduMap(), ns3::FrameExchangeManager::SendRts(), TestUlOfdmaPpduUid::SendTbPpdu(), ns3::StaWifiMac::SetPmModeAfterAssociation(), OfdmaAckSequenceTest::Transmit(), WifiTxopTest::Transmit(), WifiUseAvailBwTest::Transmit(), EmlsrOperationsTestBase::Transmit(), MultiLinkMuTxTest::Transmit(), WifiChannelSwitchingTest::Transmit(), ns3::RrMultiUserScheduler::TrySendingBasicTf(), ns3::RrMultiUserScheduler::TrySendingBsrpTf(), and ns3::FrameExchangeManager::UpdateNav().
|
static |
psduMap | the PSDU(s) to transmit indexed by STA-ID |
txVector | the TXVECTOR used for the transmission of the PPDU |
band | the frequency band being used |
Definition at line 1516 of file wifi-phy.cc.
References ns3::WifiTxVector::GetModulationClass(), and GetStaticPhyEntity().
|
private |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11a standard.
Definition at line 825 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 ConfigureStandard().
|
private |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11ac standard.
Definition at line 919 of file wifi-phy.cc.
References AddPhyEntity(), Configure80211n(), NS_LOG_FUNCTION, and ns3::WIFI_MOD_CLASS_VHT.
Referenced by Configure80211ax(), and ConfigureStandard().
|
private |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11ax standard.
Definition at line 927 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 Configure80211be(), and ConfigureStandard().
|
private |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11b standard.
Definition at line 840 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 ConfigureStandard().
|
private |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11be standard.
Definition at line 942 of file wifi-phy.cc.
References AddPhyEntity(), Configure80211ax(), NS_LOG_FUNCTION, and ns3::WIFI_MOD_CLASS_EHT.
Referenced by ConfigureStandard().
|
private |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11g standard.
Definition at line 857 of file wifi-phy.cc.
References AddPhyEntity(), Configure80211b(), NS_LOG_FUNCTION, and ns3::WIFI_MOD_CLASS_ERP_OFDM.
Referenced by Configure80211n(), and ConfigureStandard().
|
private |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11n standard.
Definition at line 900 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 ConfigureStandard().
|
private |
Configure WifiPhy with appropriate channel frequency and supported rates for 802.11p standard.
Definition at line 870 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 ConfigureStandard().
|
private |
Configure the device MCS set with the appropriate HtMcs modes for the number of available transmit spatial streams.
|
virtual |
Configure the PHY-level parameters for different Wi-Fi standard.
Note that, in case a Spectrum PHY is used, this method must be called after adding a spectrum channel covering the operating channel bandwidth.
standard | the Wi-Fi standard |
Definition at line 950 of file wifi-phy.cc.
References Configure80211a(), Configure80211ac(), Configure80211ax(), Configure80211b(), Configure80211be(), Configure80211g(), Configure80211n(), Configure80211p(), ns3::WifiPhyOperatingChannel::IsSet(), m_channelSettings, m_operatingChannel, m_phyEntities, m_standard, NS_ABORT_MSG_IF, NS_ASSERT_MSG, NS_LOG_DEBUG, NS_LOG_FUNCTION, SetOperatingChannel(), ns3::WIFI_STANDARD_80211a, ns3::WIFI_STANDARD_80211ac, ns3::WIFI_STANDARD_80211ax, ns3::WIFI_STANDARD_80211b, ns3::WIFI_STANDARD_80211be, ns3::WIFI_STANDARD_80211g, ns3::WIFI_STANDARD_80211n, ns3::WIFI_STANDARD_80211p, and ns3::WIFI_STANDARD_UNSPECIFIED.
Referenced by DoChannelSwitch(), LargestIdlePrimaryChannelTest::DoRun(), AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), Bug2831TestCase::DoRun(), HeAggregationTest::DoRunSubTest(), SpectrumWifiPhyBasicTest::DoSetup(), SpectrumWifiPhyFilterTest::DoSetup(), TestNonHtDuplicatePhyReception::DoSetup(), TestMultipleCtsResponsesFromMuRts::DoSetup(), WifiPhyCcaThresholdsTest::DoSetup(), WifiPhyCcaIndicationTest::DoSetup(), TestDlOfdmaPhyTransmission::DoSetup(), TestDlOfdmaPhyPuncturing::DoSetup(), TestUlOfdmaPpduUid::DoSetup(), TestMultipleHeTbPreambles::DoSetup(), TestUlOfdmaPhyTransmission::DoSetup(), TestPhyPaddingExclusion::DoSetup(), WifiPhyReceptionTest::DoSetup(), TestUnsupportedBandwidthReception::DoSetup(), TestPrimary20CoveredByPpdu::DoSetup(), TestSpectrumChannelWithBandwidthFilter::DoSetup(), WifiPhyThresholdsTest::DoSetup(), and InterferenceExperiment::Run().
|
pure virtual |
This is a helper function to convert start and stop indices to start and stop frequencies.
indices | the start/stop indices to convert |
Implemented in ns3::SpectrumWifiPhy, and ns3::YansWifiPhy.
Referenced by ns3::HePhy::GetNonOfdmaBand(), ns3::HePhy::GetRuBandForRx(), and ns3::HePhy::GetRuBandForTx().
|
protectedvirtual |
Actually switch channel based on the stored channel settings.
Reimplemented in ns3::SpectrumWifiPhy.
Definition at line 1169 of file wifi-phy.cc.
References ConfigureStandard(), ns3::VhtConfiguration::Get160MHzOperationSupported(), GetChannelSwitchDelay(), ns3::WifiPhyOperatingChannel::GetDefaultChannelNumber(), ns3::GetDefaultChannelWidth(), ns3::GetDefaultPhyBand(), ns3::WifiNetDevice::GetHtConfiguration(), ns3::WifiNetDevice::GetVhtConfiguration(), ns3::Object::IsInitialized(), m_band, m_channelSettings, m_device, m_fixedPhyBand, m_operatingChannel, m_standard, m_state, NS_ABORT_MSG, NS_ABORT_MSG_IF, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::WifiPhyOperatingChannel::Set(), ns3::WifiPhyOperatingChannel::SetPrimary20Index(), and ns3::WIFI_PHY_BAND_UNSPECIFIED.
Referenced by ns3::SpectrumWifiPhy::DoChannelSwitch(), and SetOperatingChannel().
|
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::Object.
Reimplemented in ns3::YansWifiPhy, MuRtsCtsSpectrumWifiPhy, and OfdmaSpectrumWifiPhy.
Definition at line 401 of file wifi-phy.cc.
References ns3::EventId::Cancel(), m_currentEvent, m_currentPreambleEvents, m_device, m_endPhyRxEvent, m_endTxEvent, m_frameCaptureModel, m_interference, m_mobility, m_phyEntities, m_postReceptionErrorModel, m_preambleDetectionModel, m_random, m_state, m_wifiRadioEnergyModel, and NS_LOG_FUNCTION.
Referenced by ns3::SpectrumWifiPhy::DoDispose(), and ns3::YansWifiPhy::DoDispose().
|
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 MuRtsCtsSpectrumWifiPhy, and OfdmaSpectrumWifiPhy.
Definition at line 376 of file wifi-phy.cc.
References ns3::WifiNetDevice::GetNode(), ns3::Object::GetObject(), m_device, m_mobility, NS_ABORT_MSG_UNLESS, NS_LOG_FUNCTION, and NS_LOG_WARN.
Referenced by ns3::SpectrumWifiPhy::DoInitialize().
void ns3::WifiPhy::EndReceiveInterBss | ( | ) |
For HE receptions only, check and possibly modify the transmit power restriction state at the end of PPDU reception.
Definition at line 1855 of file wifi-phy.cc.
References m_channelAccessRequested, m_powerRestricted, and NS_LOG_FUNCTION.
Referenced by ResetCca().
Time ns3::WifiPhy::GetAckTxTime | ( | ) | const |
Return the estimated Ack TX time for this PHY.
Definition at line 813 of file wifi-phy.cc.
References m_ackTxTime.
Referenced by ns3::MinstrelWifiManager::CalculateTimeUnicastPacket(), and ns3::ChannelAccessManager::GetEifsNoDifs().
|
private |
Get the PSDU addressed to that PHY in a PPDU (useful for MU PPDU).
ppdu | the PPDU to extract the PSDU from |
Definition at line 2173 of file wifi-phy.cc.
References GetPhyEntityForPpdu().
Referenced by AbortCurrentReception().
|
pure virtual |
Get the info of a given band.
bandWidth | the width of the band to be returned (MHz) |
bandIndex | the index of the band to be returned |
Implemented in ns3::SpectrumWifiPhy, and ns3::YansWifiPhy.
Referenced by ns3::HePhy::GetPer20MHzDurations(), ns3::PhyEntity::GetPrimaryBand(), and ns3::PhyEntity::GetSecondaryBand().
Time ns3::WifiPhy::GetBlockAckTxTime | ( | ) | const |
Return the estimated BlockAck TX time for this PHY.
Definition at line 819 of file wifi-phy.cc.
References m_blockAckTxTime.
Referenced by ns3::MinstrelHtWifiManager::CalculateRetransmits().
std::list< uint8_t > ns3::WifiPhy::GetBssMembershipSelectorList | ( | ) | 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.
Definition at line 1317 of file wifi-phy.cc.
References list, and m_phyEntities.
double ns3::WifiPhy::GetCcaEdThreshold | ( | ) | const |
Return the CCA energy detection threshold (dBm).
Definition at line 501 of file wifi-phy.cc.
References m_ccaEdThresholdW, and ns3::WToDbm().
Referenced by ns3::PhyEntity::GetCcaThreshold(), ns3::VhtPhy::GetCcaThreshold(), and GetTypeId().
double ns3::WifiPhy::GetCcaSensitivityThreshold | ( | ) | const |
Return the CCA sensitivity threshold (dBm).
Definition at line 514 of file wifi-phy.cc.
References m_ccaSensitivityThresholdW, and ns3::WToDbm().
Referenced by ns3::PhyEntity::GetCcaThreshold(), ns3::OfdmPhy::GetCcaThreshold(), ns3::VhtPhy::GetCcaThreshold(), and GetTypeId().
Return the Channel this WifiPhy is connected to.
Implemented in ns3::SpectrumWifiPhy, and ns3::YansWifiPhy.
Referenced by ns3::WifiNetDevice::GetChannel(), and GetTypeId().
uint8_t ns3::WifiPhy::GetChannelNumber | ( | ) | const |
Return current channel number.
Definition at line 1029 of file wifi-phy.cc.
References ns3::WifiPhyOperatingChannel::GetNumber(), and m_operatingChannel.
Referenced by ns3::MeshWifiInterfaceMac::GetFrequencyChannel(), GetTypeId(), and ns3::PhyEntity::Transmit().
Time ns3::WifiPhy::GetChannelSwitchDelay | ( | ) | const |
Definition at line 692 of file wifi-phy.cc.
References m_channelSwitchDelay.
Referenced by DoChannelSwitch().
uint16_t ns3::WifiPhy::GetChannelWidth | ( | ) | const |
Definition at line 1035 of file wifi-phy.cc.
References ns3::WifiPhyOperatingChannel::GetWidth(), and m_operatingChannel.
Referenced by AbortCurrentReception(), ns3::IdealWifiManager::BuildSnrThresholds(), ns3::PhyEntity::CanStartRx(), TestMultiUserScheduler::ComputeWifiTxVector(), Configure80211p(), ns3::SpectrumWifiPhy::DoChannelSwitch(), ns3::ChannelAccessManager::DoGrantDcfAccess(), ns3::IdealWifiManager::DoReportRtsOk(), AmpduAggregationTest::DoRun(), TwoLevelAggregationTest::DoRun(), TestNonHtDuplicatePhyReception::DoRun(), HeAggregationTest::DoRunSubTest(), ns3::SpectrumWifiPhy::GetBand(), ns3::HtPhy::GetCcaIndication(), ns3::VhtPhy::GetCcaIndication(), ns3::HePhy::GetNonOfdmaBand(), ns3::ChannelAccessManager::GetPer20MHzBusy(), ns3::HePhy::GetPer20MHzDurations(), ns3::PhyEntity::GetPrimaryBand(), ns3::HePhy::GetRuBandForRx(), ns3::PhyEntity::GetRxChannelWidth(), ns3::DsssPhy::GetRxChannelWidth(), ns3::PhyEntity::GetSecondaryBand(), GetSubcarrierSpacing(), GetTxBandwidth(), GetTypeId(), ns3::ThompsonSamplingWifiManager::InitializeStation(), ns3::ChannelAccessManager::InitLastBusyStructs(), ns3::OfdmPhy::IsChannelWidthSupported(), ns3::SpectrumWifiPhy::ResetSpectrumModelIfNeeded(), ns3::SpectrumWifiPhy::StartRx(), and ns3::SpectrumWifiPhy::UpdateInterferenceHelperBands().
|
pure virtual |
Get the frequency range of the current RF interface.
Implemented in ns3::SpectrumWifiPhy, and ns3::YansWifiPhy.
Referenced by AbortCurrentReception(), ns3::PhyEntity::EndPreambleDetectionPeriod(), ns3::PhyEntity::NotifyInterferenceRxEndAndClear(), and ns3::PhyEntity::ResetReceive().
WifiMode ns3::WifiPhy::GetDefaultMode | ( | ) | 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).
Definition at line 1885 of file wifi-phy.cc.
References m_phyEntities, and NS_ASSERT_MSG.
|
protected |
Perform any actions necessary when user changes operating channel after initialization.
Definition at line 1122 of file wifi-phy.cc.
References AbortCurrentReception(), ns3::EventId::Cancel(), ns3::CHANNEL_SWITCHING, GetDelayUntilIdle(), ns3::Object::IsInitialized(), IsStateSwitching(), m_channelAccessRequested, m_currentEvent, m_currentPreambleEvents, m_endPhyRxEvent, m_phyEntities, m_powerRestricted, m_state, NS_ASSERT, NS_LOG_DEBUG, and ns3::Seconds().
Referenced by SetOperatingChannel().
Time ns3::WifiPhy::GetDelayUntilIdle | ( | ) |
The PHY will never become WifiPhy::IDLE before the delay returned by this method but it could become really idle later.
Definition at line 2045 of file wifi-phy.cc.
References m_state.
Referenced by GetDelayUntilChannelSwitch(), ns3::StaWifiMac::MissedBeacons(), and SetSleepMode().
Ptr< WifiNetDevice > ns3::WifiPhy::GetDevice | ( | ) | const |
Return the device this PHY is associated with.
Definition at line 615 of file wifi-phy.cc.
References m_device.
Referenced by ns3::SpectrumWifiPhy::AddChannel(), ns3::HePhy::CanStartRx(), ns3::HePhy::DoStartReceivePayload(), ns3::HePhy::GetBssColor(), ns3::VhtPhy::GetCcaThreshold(), ns3::WifiRemoteStationManager::GetEhtSupported(), ns3::WifiRemoteStationManager::GetGuardInterval(), ns3::WifiRemoteStationManager::GetHeSupported(), ns3::WifiRemoteStationManager::GetHtSupported(), ns3::WifiRemoteStationManager::GetLdpcSupported(), ns3::HePhy::GetMaxDelayPpduSameUid(), ns3::WifiRemoteStationManager::GetShortGuardIntervalSupported(), ns3::HePhy::GetStaId(), ns3::WifiRemoteStationManager::GetVhtSupported(), ns3::HePhy::SetTrigVector(), and ns3::HePhy::StartTx().
uint16_t ns3::WifiPhy::GetFrequency | ( | ) | const |
Definition at line 1023 of file wifi-phy.cc.
References ns3::WifiPhyOperatingChannel::GetFrequency(), and m_operatingChannel.
Referenced by ns3::SpectrumWifiPhy::DoChannelSwitch(), TestNonHtDuplicatePhyReception::DoRun(), ns3::PhyEntity::EndReceivePayload(), ns3::HePhy::GetPer20MHzDurations(), GetTypeId(), ns3::SpectrumWifiPhy::ResetSpectrumModelIfNeeded(), and Send().
|
pure virtual |
currentChannelWidth | channel width of the current transmission (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 ns3::SpectrumWifiPhy, and ns3::YansWifiPhy.
Referenced by ns3::PhyEntity::GetGuardBandwidth().
Time ns3::WifiPhy::GetLastRxEndTime | ( | ) | const |
Return the end time of the last received packet.
Definition at line 2057 of file wifi-phy.cc.
References m_state.
Referenced by ns3::PhyEntity::DoEndReceivePayload(), and ns3::HePhy::DoEndReceivePayload().
Time ns3::WifiPhy::GetLastRxStartTime | ( | ) | const |
Return the start time of the last received packet.
Definition at line 2051 of file wifi-phy.cc.
References m_state.
Get the latest PHY entity supported by this PHY instance.
Definition at line 728 of file wifi-phy.cc.
References GetPhyEntity(), and m_standard.
Referenced by ns3::ErpOfdmPhy::BuildPpdu(), ns3::OfdmPhy::BuildPpdu(), ns3::SpectrumWifiPhy::CanStartRx(), OfdmaSpectrumWifiPhy::GetHePhy(), GetPhyEntityForPpdu(), NotifyCcaBusy(), TestMultipleHeTbPreambles::RxHeTbPpdu(), TestPhyPaddingExclusion::SetTrigVector(), TestUlOfdmaPhyTransmission::SetTrigVector(), and SwitchMaybeToCcaBusy().
|
static |
Get the maximum PSDU size in bytes for the given modulation class.
modulation | the modulation class |
Definition at line 1525 of file wifi-phy.cc.
References GetStaticPhyEntity().
Referenced by ns3::QosFrameExchangeManager::IsWithinSizeAndTimeLimits().
uint8_t ns3::WifiPhy::GetMaxSupportedRxSpatialStreams | ( | ) | const |
Definition at line 1311 of file wifi-phy.cc.
References m_rxSpatialStreams.
Referenced by ns3::ApWifiMac::GetEhtOperation(), ns3::ApWifiMac::GetHeOperation(), GetTypeId(), ns3::HePhy::IsConfigSupported(), and ns3::HtPhy::IsConfigSupported().
uint8_t ns3::WifiPhy::GetMaxSupportedTxSpatialStreams | ( | ) | const |
Definition at line 1293 of file wifi-phy.cc.
References m_txSpatialStreams.
Referenced by ns3::IdealWifiManager::BuildSnrThresholds(), GetTypeId(), ns3::ThompsonSamplingWifiManager::InitializeStation(), and Send().
WifiMode ns3::WifiPhy::GetMcs | ( | WifiModulationClass | modulation, |
uint8_t | mcs | ||
) | const |
Get the WifiMode object corresponding to the given MCS of the given modulation class.
modulation | the modulation class |
mcs | the MCS value |
Definition at line 1996 of file wifi-phy.cc.
References IsMcsSupported(), m_phyEntities, and NS_ASSERT_MSG.
std::list< WifiMode > ns3::WifiPhy::GetMcsList | ( | ) | 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).
Definition at line 1961 of file wifi-phy.cc.
References list, and m_phyEntities.
Referenced by ns3::WifiRemoteStationManager::AddAllSupportedMcs(), and ns3::ThompsonSamplingWifiManager::InitializeStation().
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).
modulation | the modulation class |
Definition at line 1978 of file wifi-phy.cc.
References list, and m_phyEntities.
Ptr< MobilityModel > ns3::WifiPhy::GetMobility | ( | ) | 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.
Definition at line 627 of file wifi-phy.cc.
References m_mobility.
Referenced by ns3::WifiSpectrumPhyInterface::GetMobility().
std::list< WifiMode > ns3::WifiPhy::GetModeList | ( | ) | 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.
Definition at line 1912 of file wifi-phy.cc.
References list, and m_phyEntities.
Referenced by ns3::WifiRemoteStationManager::AddAllSupportedModes(), and ns3::MeshWifiInterfaceMac::Receive().
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).
modulation | the modulation class |
Definition at line 1929 of file wifi-phy.cc.
References list, and m_phyEntities.
uint16_t ns3::WifiPhy::GetNMcs | ( | ) | const |
Definition at line 1947 of file wifi-phy.cc.
References m_phyEntities.
uint8_t ns3::WifiPhy::GetNTxPower | ( | ) | const |
Return the number of available transmission power levels.
Definition at line 564 of file wifi-phy.cc.
References m_nTxPower.
uint8_t ns3::WifiPhy::GetNumberOfAntennas | ( | ) | const |
Definition at line 1261 of file wifi-phy.cc.
References m_numberOfAntennas.
Referenced by GetTypeId(), SetMaxSupportedRxSpatialStreams(), and SetMaxSupportedTxSpatialStreams().
const WifiPhyOperatingChannel & ns3::WifiPhy::GetOperatingChannel | ( | ) | const |
Get a const reference to the operating channel.
Definition at line 1017 of file wifi-phy.cc.
References m_operatingChannel.
Referenced by ns3::PhyEntity::BuildPpdu(), ns3::EhtPhy::BuildPpdu(), ns3::HePhy::BuildPpdu(), ns3::HtPhy::BuildPpdu(), ns3::DsssPhy::BuildPpdu(), ns3::ErpOfdmPhy::BuildPpdu(), ns3::OfdmPhy::BuildPpdu(), ns3::VhtPhy::BuildPpdu(), ns3::PhyEntity::CanStartRx(), MultiLinkSetupTest::CheckMlSetup(), TestPrimary20CoveredByPpdu::CreatePpdu(), ns3::SpectrumWifiPhy::DoChannelSwitch(), ns3::ChannelAccessManager::DoGrantDcfAccess(), TestNonHtDuplicatePhyReception::DoRun(), ns3::WifiDefaultAssocManager::EndScanning(), ns3::HtPhy::GetCcaIndication(), ns3::VhtPhy::GetCcaIndication(), ns3::PhyEntity::GetCenterFrequencyForChannelWidth(), ns3::HePhy::GetCenterFrequencyForNonOfdmaPart(), ns3::HePhy::GetNonOfdmaBand(), ns3::HePhy::GetPer20MHzDurations(), ns3::ApWifiMac::GetReducedNeighborReport(), ns3::HePhy::GetRuBandForRx(), ns3::HePhy::GetRuBandForTx(), ns3::HePhy::GetSigBSize(), ns3::EhtPhy::GetSigBSize(), ns3::HePhy::GetTxPowerSpectralDensity(), ns3::ChannelAccessManager::InitLastBusyStructs(), WifiPhyCcaThresholdsTest::RunOne(), TestPrimary20CoveredByPpdu::RunOne(), TestMultipleHeTbPreambles::RxHeTbPpdu(), TestAmpduReception::SendAmpduWithThreeMpdus(), WifiPhyReceptionTest::SendPacket(), TestUnsupportedBandwidthReception::SendPpdu(), SpectrumWifiPhyBasicTest::SendSignal(), and WifiPhyThresholdsTest::SendSignal().
|
static |
size | the number of bytes in the packet to send |
txVector | the TXVECTOR used for the transmission of this packet |
band | the frequency band |
mpdutype | the type of the MPDU as defined in WifiPhy::MpduType. |
incFlag | this 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. |
totalAmpduSize | the total size of the previously transmitted MPDUs for the concerned A-MPDU. If incFlag is set, this parameter will be updated. |
totalAmpduNumSymbols | the 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. |
staId | the STA-ID of the PSDU (only used for MU PPDUs) |
Definition at line 1468 of file wifi-phy.cc.
References ns3::WifiTxVector::GetModulationClass(), and GetStaticPhyEntity().
|
static |
size | the number of bytes in the packet to send |
txVector | the TXVECTOR used for the transmission of this packet |
band | the frequency band |
mpdutype | the type of the MPDU as defined in WifiPhy::MpduType. |
staId | the STA-ID of the PSDU (only used for MU PPDUs) |
Definition at line 1449 of file wifi-phy.cc.
References GetPayloadDuration().
Referenced by ns3::MinstrelHtWifiManager::CalculateMpduTxDuration(), CalculateTxDuration(), GetPayloadDuration(), and ns3::PhyEntity::ScheduleEndOfMpdus().
WifiPhyBand ns3::WifiPhy::GetPhyBand | ( | ) | const |
Get the configured Wi-Fi band.
Definition at line 1005 of file wifi-phy.cc.
References m_band.
Referenced by ns3::FrameExchangeManager::CalculateAcknowledgmentTime(), ns3::HtFrameExchangeManager::CalculateAcknowledgmentTime(), ns3::FrameExchangeManager::CalculateProtectionTime(), EmlsrDlTxopTest::CheckInitialControlFrame(), EmlsrDlTxopTest::CheckQosFrames(), TestPrimary20CoveredByPpdu::CreatePpdu(), ns3::ChannelAccessManager::DoGrantDcfAccess(), ns3::FrameExchangeManager::DoSendCtsAfterRts(), ns3::HePhy::DoStartReceivePayload(), ns3::EhtFrameExchangeManager::ForwardPsduDown(), ns3::EhtFrameExchangeManager::ForwardPsduMapDown(), ns3::QosFrameExchangeManager::GetCtsToSelfDurationId(), ns3::FrameExchangeManager::GetFrameDurationId(), ns3::QosFrameExchangeManager::GetFrameDurationId(), ns3::MsduAggregator::GetMaxAmsduSize(), ns3::HeFrameExchangeManager::GetMuRtsDurationId(), ns3::FrameExchangeManager::GetRtsDurationId(), ns3::QosFrameExchangeManager::GetRtsDurationId(), ns3::FrameExchangeManager::GetTxDuration(), ns3::WifiRemoteStationManager::GetVhtSupported(), SpectrumWifiPhyBasicTest::MakeSignal(), WifiPhyThresholdsTest::MakeWifiSignal(), TestMultipleHeTbPreambles::RxHeTbPpdu(), ns3::PhyEntity::ScheduleEndOfMpdus(), TestMultiUserScheduler::SelectTxFormat(), Send(), TestAmpduReception::SendAmpduWithThreeMpdus(), ns3::HtFrameExchangeManager::SendBlockAck(), ns3::QosFrameExchangeManager::SendCfEndIfNeeded(), ns3::FrameExchangeManager::SendCtsToSelf(), ns3::FrameExchangeManager::SendMpdu(), ns3::HeFrameExchangeManager::SendMuRts(), TestNonHtDuplicatePhyReception::SendNonHtDuplicatePpdu(), ns3::FrameExchangeManager::SendNormalAck(), WifiPhyReceptionTest::SendPacket(), TestUnsupportedBandwidthReception::SendPpdu(), ns3::HtFrameExchangeManager::SendPsdu(), ns3::HeFrameExchangeManager::SendPsduMap(), ns3::HeFrameExchangeManager::SendPsduMapWithProtection(), ns3::FrameExchangeManager::SendRts(), TestUlOfdmaPpduUid::SendTbPpdu(), TestPhyPaddingExclusion::SetTrigVector(), TestUlOfdmaPhyTransmission::SetTrigVector(), ns3::StaWifiMac::StartScanning(), ns3::MeshWifiInterfaceMac::SwitchFrequencyChannel(), EmlsrOperationsTestBase::Transmit(), MultiLinkMuTxTest::Transmit(), ns3::RrMultiUserScheduler::TrySendingBasicTf(), ns3::RrMultiUserScheduler::TrySendingBsrpTf(), and ns3::FrameExchangeManager::UpdateNav().
Ptr< PhyEntity > ns3::WifiPhy::GetPhyEntity | ( | WifiModulationClass | modulation | ) | const |
Get the supported PHY entity corresponding to the modulation class.
modulation | the modulation class |
Definition at line 713 of file wifi-phy.cc.
References m_phyEntities, and NS_ABORT_MSG_IF.
Referenced by ns3::EhtFrameExchangeManager::ForwardPsduDown(), GetLatestPhyEntity(), GetPhyEntity(), GetPhyEntityForPpdu(), WifiPhyCcaThresholdsTest::RunOne(), TestPrimary20CoveredByPpdu::RunOne(), Send(), ns3::HeFrameExchangeManager::SendPsduMap(), TestUlOfdmaPpduUid::SendTbPpdu(), and ns3::SpectrumWifiPhy::StartTx().
Ptr< PhyEntity > ns3::WifiPhy::GetPhyEntity | ( | WifiStandard | standard | ) | const |
Get the supported PHY entity corresponding to the wifi standard.
standard | the wifi standard |
Definition at line 722 of file wifi-phy.cc.
References ns3::GetModulationClassForStandard(), and GetPhyEntity().
Get the supported PHY entity to use for a received PPDU.
This typically returns the entity corresponding to the modulation class used to transmit the PPDU. If the modulation class used to transmit the PPDU is not supported by the PHY, the latest PHY entity corresponding to the configured standard is returned. If the modulation used to transmit the PPDU is non-HT (duplicate), the latest PHY entity corresponding to the configured standard is also returned.
ppdu | the received PPDU |
Definition at line 734 of file wifi-phy.cc.
References GetLatestPhyEntity(), GetPhyEntity(), m_phyEntities, NS_ABORT_IF, and ns3::WIFI_MOD_CLASS_HT.
Referenced by ns3::PhyEntity::DoGetEvent(), GetAddressedPsduInPpdu(), and ns3::SpectrumWifiPhy::GetRxPpduFromTxPpdu().
Time ns3::WifiPhy::GetPifs | ( | ) | const |
Return the PCF Interframe Space (PIFS) for this PHY.
Definition at line 807 of file wifi-phy.cc.
References m_pifs.
Referenced by ns3::ChannelAccessManager::DoGrantDcfAccess(), ns3::QosFrameExchangeManager::PifsRecovery(), and ns3::QosFrameExchangeManager::TransmissionFailed().
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).
power | the power level |
Definition at line 673 of file wifi-phy.cc.
References m_nTxPower, m_txPowerBaseDbm, m_txPowerEndDbm, NS_ASSERT, and NS_ASSERT_MSG.
Referenced by ns3::AparfWifiManager::CheckInit(), ns3::ParfWifiManager::CheckInit(), ns3::RrpaaWifiManager::CheckInit(), ns3::AparfWifiManager::DoGetDataTxVector(), ns3::ParfWifiManager::DoGetDataTxVector(), ns3::RrpaaWifiManager::DoGetDataTxVector(), GetTxPowerForTransmission(), Send(), and ns3::YansWifiPhy::StartTx().
|
static |
Definition at line 1437 of file wifi-phy.cc.
References ns3::MicroSeconds().
Referenced by ns3::PhyEntity::EndPreambleDetectionPeriod(), TestUlOfdmaPhyTransmission::SchedulePowerMeasurementChecks(), and ns3::PhyEntity::StartPreambleDetectionPeriod().
uint64_t ns3::WifiPhy::GetPreviouslyRxPpduUid | ( | ) | const |
Definition at line 1814 of file wifi-phy.cc.
References m_previouslyRxPpduUid.
Referenced by ns3::HePhy::ObtainNextUid().
uint8_t ns3::WifiPhy::GetPrimary20Index | ( | ) | const |
Definition at line 1041 of file wifi-phy.cc.
References ns3::WifiPhyOperatingChannel::GetPrimaryChannelIndex(), and m_operatingChannel.
Referenced by GetTypeId().