802.11 PHY layer modelThis PHY implements a spectrum-aware enhancement of the 802.11 SpectrumWifiPhy model. More...
#include "spectrum-wifi-phy.h"
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... | |
![]() | |
typedef std::pair< uint8_t, WifiPhyStandard > | ChannelNumberStandardPair |
A pair of a ChannelNumber and WifiPhyStandard. More... | |
typedef std::pair< uint16_t, uint8_t > | FrequencyWidthPair |
A pair of a center Frequency and a ChannelWidth. More... | |
typedef void(* | MonitorSnifferRxCallback) (Ptr< const Packet > packet, uint16_t channelFreqMhz, WifiTxVector txVector, MpduInfo aMpdu, SignalNoiseDbm signalNoise) |
TracedCallback signature for monitor mode receive events. More... | |
typedef void(* | MonitorSnifferTxCallback) (const Ptr< const Packet > packet, uint16_t channelFreqMhz, WifiTxVector txVector, MpduInfo aMpdu) |
TracedCallback signature for monitor mode transmit events. More... | |
Public Member Functions | |
SpectrumWifiPhy () | |
virtual | ~SpectrumWifiPhy () |
void | AddOperationalChannel (uint8_t channelNumber) |
Add a channel number to the list of operational channels. More... | |
void | ClearOperationalChannelList (void) |
Clear the list of operational channels. More... | |
virtual void | ConfigureStandard (WifiPhyStandard standard) |
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... | |
double | GetBandBandwidth (void) const |
uint32_t | GetCenterFrequencyForChannelWidth (WifiTxVector txVector) const |
Get the center frequency of the channel corresponding the current TxVector rather than that of the supported channel width. More... | |
Ptr< Channel > | GetChannel (void) const |
Return the Channel this WifiPhy is connected to. More... | |
uint8_t | GetGuardBandwidth (uint8_t currentChannelWidth) const |
std::vector< uint8_t > | GetOperationalChannelList (void) const |
Return a list of channels to which it may be possible to roam By default, this method will return the current channel number followed by any other channel numbers that have been added. More... | |
Ptr< AntennaModel > | GetRxAntenna (void) const |
Get the antenna model used for reception. More... | |
Ptr< const SpectrumModel > | GetRxSpectrumModel () const |
Ptr< WifiSpectrumPhyInterface > | GetSpectrumPhy (void) const |
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) |
Set channel number. More... | |
virtual void | SetChannelWidth (uint8_t channelwidth) |
virtual void | SetFrequency (uint16_t freq) |
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< Packet > packet, WifiTxVector txVector, Time txDuration) |
![]() | |
WifiPhy () | |
virtual | ~WifiPhy () |
void | AddSupportedChannelWidth (uint8_t channelwidth) |
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 (WifiTxVector txVector, double ber) const |
Time | CalculateTxDuration (uint32_t size, WifiTxVector txVector, uint16_t frequency) |
Time | CalculateTxDuration (uint32_t size, WifiTxVector txVector, uint16_t frequency, MpduType mpdutype, uint8_t incFlag) |
bool | DefineChannelNumber (uint8_t channelNumber, WifiPhyStandard standard, uint16_t frequency, uint8_t channelWidth) |
Add a channel definition to the WifiPhy. More... | |
void | EndReceive (Ptr< Packet > packet, WifiPreamble preamble, MpduType mpdutype, Ptr< InterferenceHelper::Event > event) |
The last bit of the packet has arrived. More... | |
uint8_t | GetBssMembershipSelector (uint8_t selector) 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 as WifiPhy::m_bssMembershipSelectorSet. More... | |
double | GetCcaMode1Threshold (void) const |
Return the CCA threshold (dBm). More... | |
uint8_t | GetChannelNumber (void) const |
Return current channel number. More... | |
Time | GetChannelSwitchDelay (void) const |
uint8_t | GetChannelWidth (void) const |
Time | GetDelayUntilIdle (void) |
Ptr< NetDevice > | GetDevice (void) const |
Return the device this PHY is associated with. More... | |
double | GetEdThreshold (void) const |
Return the energy detection threshold (dBm). More... | |
double | GetEdThresholdW (void) const |
Return the energy detection threshold. More... | |
Ptr< ErrorRateModel > | GetErrorRateModel (void) const |
Return the error rate model this PHY is using. More... | |
Ptr< FrameCaptureModel > | GetFrameCaptureModel (void) const |
Return the frame capture model this PHY is using. More... | |
uint16_t | GetFrequency (void) const |
bool | GetGreenfield (void) const |
Return whether Greenfield is supported. More... | |
Time | GetGuardInterval (void) const |
Time | GetLastRxStartTime (void) const |
Return the start time of the last received packet. More... | |
bool | GetLdpc (void) const |
Return if LDPC is supported. More... | |
uint8_t | GetMaxSupportedRxSpatialStreams (void) const |
uint8_t | GetMaxSupportedTxSpatialStreams (void) const |
WifiMode | GetMcs (uint8_t mcs) const |
The WifiPhy::GetMcs() method is used (e.g., by a WifiRemoteStationManager) to determine the set of transmission/reception MCS indexes that this WifiPhy(-derived class) can support - a set of MCS indexes which we call the DeviceMcsSet, and which is stored as WifiPhy::m_deviceMcsSet. More... | |
WifiModeList | GetMembershipSelectorModes (uint32_t selector) |
The WifiPhy::GetMembershipSelectorModes() 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 as WifiPhy::m_bssMembershipSelectorSet. More... | |
Ptr< MobilityModel > | GetMobility (void) const |
Return the mobility model this PHY is associated with. More... | |
WifiMode | GetMode (uint8_t mode) const |
The WifiPhy::GetNModes() and WifiPhy::GetMode() methods are 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 DeviceRateSet, and which is stored as WifiPhy::m_deviceRateSet. More... | |
uint8_t | GetNBssMembershipSelectors (void) const |
The WifiPhy::NBssMembershipSelectors() 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 as WifiPhy::m_bssMembershipSelectorSet. More... | |
uint8_t | GetNMcs (void) const |
The WifiPhy::GetNMcs() method is used (e.g., by a WifiRemoteStationManager) to determine the set of transmission/reception MCS indexes that this WifiPhy(-derived class) can support - a set of MCS indexes which we call the DeviceMcsSet, and which is stored as WifiPhy::m_deviceMcsSet. More... | |
uint8_t | GetNModes (void) const |
The WifiPhy::GetNModes() and WifiPhy::GetMode() methods are 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 DeviceRateSet, and which is stored as WifiPhy::m_deviceRateSet. More... | |
uint8_t | GetNTxPower (void) const |
Return the number of available transmission power levels. More... | |
uint8_t | GetNumberOfAntennas (void) const |
Time | GetPayloadDuration (uint32_t size, WifiTxVector txVector, uint16_t frequency) |
Time | GetPayloadDuration (uint32_t size, WifiTxVector txVector, uint16_t frequency, MpduType mpdutype, uint8_t incFlag) |
double | GetPowerDbm (uint8_t power) const |
Get the power of the given power level in dBm. More... | |
double | GetRxGain (void) const |
Return the reception gain (dB). More... | |
double | GetRxNoiseFigure (void) const |
Return the RX noise figure (dBm). More... | |
bool | GetShortGuardInterval (void) const |
Return whether short guard interval is supported. More... | |
bool | GetShortPlcpPreambleSupported (void) const |
Return whether short PLCP preamble is supported. More... | |
WifiPhyStandard | GetStandard (void) const |
Get the configured Wi-Fi standard. More... | |
bool | GetStbc (void) const |
Return whether STBC is supported. More... | |
std::vector< uint8_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 | GetTxPowerStart (void) const |
Return the minimum available transmission power level (dBm). More... | |
bool | IsMcsSupported (WifiMode mcs) const |
Check if the given WifiMode 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 | NotifyMonitorSniffRx (Ptr< const Packet > packet, uint16_t channelFreqMhz, WifiTxVector txVector, MpduInfo aMpdu, SignalNoiseDbm signalNoise) |
Public method used to fire a MonitorSniffer trace for a wifi packet being received. More... | |
void | NotifyMonitorSniffTx (Ptr< const Packet > packet, uint16_t channelFreqMhz, WifiTxVector txVector, MpduInfo aMpdu) |
Public method used to fire a MonitorSniffer trace for a wifi packet being transmitted. More... | |
void | NotifyRxBegin (Ptr< const Packet > packet) |
Public method used to fire a PhyRxBegin trace. More... | |
void | NotifyRxDrop (Ptr< const Packet > packet) |
Public method used to fire a PhyRxDrop trace. More... | |
void | NotifyRxEnd (Ptr< const Packet > packet) |
Public method used to fire a PhyRxEnd trace. More... | |
void | NotifyTxBegin (Ptr< const Packet > packet) |
Public method used to fire a PhyTxBegin trace. More... | |
void | NotifyTxDrop (Ptr< const Packet > packet) |
Public method used to fire a PhyTxDrop trace. More... | |
void | NotifyTxEnd (Ptr< const Packet > packet) |
Public method used to fire a PhyTxEnd trace. More... | |
void | RegisterListener (WifiPhyListener *listener) |
void | ResumeFromOff (void) |
Resume from off mode. More... | |
void | ResumeFromSleep (void) |
Resume from sleep mode. More... | |
void | SendPacket (Ptr< const Packet > packet, WifiTxVector txVector, MpduType mpdutype=NORMAL_MPDU) |
void | SetCapabilitiesChangedCallback (Callback< void > callback) |
void | SetCcaMode1Threshold (double threshold) |
Sets the CCA threshold (dBm). More... | |
void | SetDevice (const Ptr< NetDevice > device) |
Sets the device this PHY is associated with. More... | |
void | SetEdThreshold (double threshold) |
Sets the energy detection threshold (dBm). 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 | SetGreenfield (bool greenfield) |
Enable or disable Greenfield support. More... | |
void | SetGuardInterval (Time guardInterval) |
void | SetLdpc (bool ldpc) |
Enable or disable LDPC. 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 | 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 | SetShortGuardInterval (bool shortGuardInterval) |
Enable or disable support for HT/VHT short guard interval. More... | |
void | SetShortPlcpPreambleSupported (bool preamble) |
Enable or disable short PLCP preamble. More... | |
void | SetSleepMode (void) |
Put in sleep mode. More... | |
void | SetStbc (bool stbc) |
Enable or disable STBC. 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 | StartReceivePacket (Ptr< Packet > packet, WifiTxVector txVector, MpduType mpdutype, Ptr< InterferenceHelper::Event > event) |
Starting receiving the payload of a packet (i.e. More... | |
void | StartReceivePreambleAndHeader (Ptr< Packet > packet, double rxPowerW, Time rxDuration) |
Starting receiving the plcp of a packet (i.e. More... | |
void | UnregisterListener (WifiPhyListener *listener) |
![]() | |
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... | |
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... | |
![]() | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount (void) const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. More... | |
void | Ref (void) const |
Increment the reference count. More... | |
void | Unref (void) const |
Decrement the reference count. More... | |
![]() | |
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 Time | CalculatePlcpPreambleAndHeaderDuration (WifiTxVector txVector) |
static WifiMode | GetDsssRate11Mbps () |
Return a WifiMode for DSSS at 11Mbps. More... | |
static WifiMode | GetDsssRate1Mbps () |
Return a WifiMode for DSSS at 1Mbps. More... | |
static WifiMode | GetDsssRate2Mbps () |
Return a WifiMode for DSSS at 2Mbps. More... | |
static WifiMode | GetDsssRate5_5Mbps () |
Return a WifiMode for DSSS at 5.5Mbps. More... | |
static WifiMode | GetErpOfdmRate12Mbps () |
Return a WifiMode for ERP-OFDM at 12Mbps. More... | |
static WifiMode | GetErpOfdmRate18Mbps () |
Return a WifiMode for ERP-OFDM at 18Mbps. More... | |
static WifiMode | GetErpOfdmRate24Mbps () |
Return a WifiMode for ERP-OFDM at 24Mbps. More... | |
static WifiMode | GetErpOfdmRate36Mbps () |
Return a WifiMode for ERP-OFDM at 36Mbps. More... | |
static WifiMode | GetErpOfdmRate48Mbps () |
Return a WifiMode for ERP-OFDM at 48Mbps. More... | |
static WifiMode | GetErpOfdmRate54Mbps () |
Return a WifiMode for ERP-OFDM at 54Mbps. More... | |
static WifiMode | GetErpOfdmRate6Mbps () |
Return a WifiMode for ERP-OFDM at 6Mbps. More... | |
static WifiMode | GetErpOfdmRate9Mbps () |
Return a WifiMode for ERP-OFDM at 9Mbps. More... | |
static WifiMode | GetHeMcs0 () |
Return MCS 0 from HE MCS values. More... | |
static WifiMode | GetHeMcs1 () |
Return MCS 1 from HE MCS values. More... | |
static WifiMode | GetHeMcs10 () |
Return MCS 10 from HE MCS values. More... | |
static WifiMode | GetHeMcs11 () |
Return MCS 11 from HE MCS values. More... | |
static WifiMode | GetHeMcs2 () |
Return MCS 2 from HE MCS values. More... | |
static WifiMode | GetHeMcs3 () |
Return MCS 3 from HE MCS values. More... | |
static WifiMode | GetHeMcs4 () |
Return MCS 4 from HE MCS values. More... | |
static WifiMode | GetHeMcs5 () |
Return MCS 5 from HE MCS values. More... | |
static WifiMode | GetHeMcs6 () |
Return MCS 6 from HE MCS values. More... | |
static WifiMode | GetHeMcs7 () |
Return MCS 7 from HE MCS values. More... | |
static WifiMode | GetHeMcs8 () |
Return MCS 8 from HE MCS values. More... | |
static WifiMode | GetHeMcs9 () |
Return MCS 9 from HE MCS values. More... | |
static WifiMode | GetHePlcpHeaderMode () |
static WifiMode | GetHtMcs0 () |
Return MCS 0 from HT MCS values. More... | |
static WifiMode | GetHtMcs1 () |
Return MCS 1 from HT MCS values. More... | |
static WifiMode | GetHtMcs10 () |
Return MCS 10 from HT MCS values. More... | |
static WifiMode | GetHtMcs11 () |
Return MCS 11 from HT MCS values. More... | |
static WifiMode | GetHtMcs12 () |
Return MCS 12 from HT MCS values. More... | |
static WifiMode | GetHtMcs13 () |
Return MCS 13 from HT MCS values. More... | |
static WifiMode | GetHtMcs14 () |
Return MCS 14 from HT MCS values. More... | |
static WifiMode | GetHtMcs15 () |
Return MCS 15 from HT MCS values. More... | |
static WifiMode | GetHtMcs16 () |
Return MCS 16 from HT MCS values. More... | |
static WifiMode | GetHtMcs17 () |
Return MCS 17 from HT MCS values. More... | |
static WifiMode | GetHtMcs18 () |
Return MCS 18 from HT MCS values. More... | |
static WifiMode | GetHtMcs19 () |
Return MCS 19 from HT MCS values. More... | |
static WifiMode | GetHtMcs2 () |
Return MCS 2 from HT MCS values. More... | |
static WifiMode | GetHtMcs20 () |
Return MCS 20 from HT MCS values. More... | |
static WifiMode | GetHtMcs21 () |
Return MCS 21 from HT MCS values. More... | |
static WifiMode | GetHtMcs22 () |
Return MCS 22 from HT MCS values. More... | |
static WifiMode | GetHtMcs23 () |
Return MCS 23 from HT MCS values. More... | |
static WifiMode | GetHtMcs24 () |
Return MCS 24 from HT MCS values. More... | |
static WifiMode | GetHtMcs25 () |
Return MCS 25 from HT MCS values. More... | |
static WifiMode | GetHtMcs26 () |
Return MCS 26 from HT MCS values. More... | |
static WifiMode | GetHtMcs27 () |
Return MCS 27 from HT MCS values. More... | |
static WifiMode | GetHtMcs28 () |
Return MCS 28 from HT MCS values. More... | |
static WifiMode | GetHtMcs29 () |
Return MCS 29 from HT MCS values. More... | |
static WifiMode | GetHtMcs3 () |
Return MCS 3 from HT MCS values. More... | |
static WifiMode | GetHtMcs30 () |
Return MCS 30 from HT MCS values. More... | |
static WifiMode | GetHtMcs31 () |
Return MCS 31 from HT MCS values. More... | |
static WifiMode | GetHtMcs4 () |
Return MCS 4 from HT MCS values. More... | |
static WifiMode | GetHtMcs5 () |
Return MCS 5 from HT MCS values. More... | |
static WifiMode | GetHtMcs6 () |
Return MCS 6 from HT MCS values. More... | |
static WifiMode | GetHtMcs7 () |
Return MCS 7 from HT MCS values. More... | |
static WifiMode | GetHtMcs8 () |
Return MCS 8 from HT MCS values. More... | |
static WifiMode | GetHtMcs9 () |
Return MCS 9 from HT MCS values. More... | |
static WifiMode | GetHtPlcpHeaderMode () |
static WifiMode | GetOfdmRate12Mbps () |
Return a WifiMode for OFDM at 12Mbps. More... | |
static WifiMode | GetOfdmRate12MbpsBW10MHz () |
Return a WifiMode for OFDM at 12Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate12MbpsBW5MHz () |
Return a WifiMode for OFDM at 12Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate13_5MbpsBW5MHz () |
Return a WifiMode for OFDM at 13.5Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate18Mbps () |
Return a WifiMode for OFDM at 18Mbps. More... | |
static WifiMode | GetOfdmRate18MbpsBW10MHz () |
Return a WifiMode for OFDM at 18Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate1_5MbpsBW5MHz () |
Return a WifiMode for OFDM at 1.5Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate24Mbps () |
Return a WifiMode for OFDM at 24Mbps. More... | |
static WifiMode | GetOfdmRate24MbpsBW10MHz () |
Return a WifiMode for OFDM at 24Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate27MbpsBW10MHz () |
Return a WifiMode for OFDM at 27Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate2_25MbpsBW5MHz () |
Return a WifiMode for OFDM at 2.25Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate36Mbps () |
Return a WifiMode for OFDM at 36Mbps. More... | |
static WifiMode | GetOfdmRate3MbpsBW10MHz () |
Return a WifiMode for OFDM at 3Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate3MbpsBW5MHz () |
Return a WifiMode for OFDM at 3Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate48Mbps () |
Return a WifiMode for OFDM at 48Mbps. More... | |
static WifiMode | GetOfdmRate4_5MbpsBW10MHz () |
Return a WifiMode for OFDM at 4.5Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate4_5MbpsBW5MHz () |
Return a WifiMode for OFDM at 4.5Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate54Mbps () |
Return a WifiMode for OFDM at 54Mbps. More... | |
static WifiMode | GetOfdmRate6Mbps () |
Return a WifiMode for OFDM at 6Mbps. More... | |
static WifiMode | GetOfdmRate6MbpsBW10MHz () |
Return a WifiMode for OFDM at 6Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate6MbpsBW5MHz () |
Return a WifiMode for OFDM at 6Mbps with 5MHz channel spacing. More... | |
static WifiMode | GetOfdmRate9Mbps () |
Return a WifiMode for OFDM at 9Mbps. More... | |
static WifiMode | GetOfdmRate9MbpsBW10MHz () |
Return a WifiMode for OFDM at 9Mbps with 10MHz channel spacing. More... | |
static WifiMode | GetOfdmRate9MbpsBW5MHz () |
Return a WifiMode for OFDM at 9Mbps with 5MHz channel spacing. More... | |
static Time | GetPlcpHeaderDuration (WifiTxVector txVector) |
static WifiMode | GetPlcpHeaderMode (WifiTxVector txVector) |
static Time | GetPlcpHtSigHeaderDuration (WifiPreamble preamble) |
static Time | GetPlcpPreambleDuration (WifiTxVector txVector) |
static Time | GetPlcpSigA1Duration (WifiPreamble preamble) |
static Time | GetPlcpSigA2Duration (WifiPreamble preamble) |
static Time | GetPlcpSigBDuration (WifiPreamble preamble) |
static Time | GetPlcpTrainingSymbolDuration (WifiTxVector txVector) |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
static WifiMode | GetVhtMcs0 () |
Return MCS 0 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs1 () |
Return MCS 1 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs2 () |
Return MCS 2 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs3 () |
Return MCS 3 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs4 () |
Return MCS 4 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs5 () |
Return MCS 5 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs6 () |
Return MCS 6 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs7 () |
Return MCS 7 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs8 () |
Return MCS 8 from VHT MCS values. More... | |
static WifiMode | GetVhtMcs9 () |
Return MCS 9 from VHT MCS values. More... | |
static WifiMode | GetVhtPlcpHeaderMode () |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Protected Member Functions | |
void | DoDispose (void) |
Destructor implementation. More... | |
void | DoInitialize (void) |
Initialize() implementation. More... | |
![]() | |
bool | DoChannelSwitch (uint8_t id) |
The default implementation does nothing and returns true. More... | |
bool | DoFrequencySwitch (uint16_t frequency) |
The default implementation does nothing and returns true. More... | |
void | SwitchMaybeToCcaBusy (void) |
Check if Phy state should move to CCA busy state based on current state of interference tracker. More... | |
![]() | |
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... | |
![]() | |
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 Member Functions | |
Ptr< SpectrumValue > | GetTxPowerSpectralDensity (uint16_t centerFrequency, uint8_t channelWidth, double txPowerW, WifiModulationClass modulationClass) const |
void | ResetSpectrumModel (void) |
Perform run-time spectrum model change. More... | |
Private Attributes | |
Ptr< AntennaModel > | m_antenna |
antenna model More... | |
Ptr< SpectrumChannel > | m_channel |
SpectrumChannel that this SpectrumWifiPhy is connected to. More... | |
bool | m_disableWifiReception |
forces this Phy to fail to sync on any signal More... | |
std::vector< uint8_t > | m_operationalChannelList |
List of possible channels. More... | |
Ptr< const SpectrumModel > | m_rxSpectrumModel |
receive spectrum model More... | |
TracedCallback< bool, uint32_t, double, Time > | m_signalCb |
Signal callback. More... | |
Ptr< WifiSpectrumPhyInterface > | m_wifiSpectrumPhyInterface |
Spectrum phy interface. More... | |
Additional Inherited Members | |
![]() | |
EventId | m_endPlcpRxEvent |
the end PLCP receive event More... | |
EventId | m_endRxEvent |
the end reeive event More... | |
InterferenceHelper | m_interference |
Pointer to InterferenceHelper. More... | |
uint16_t | m_mpdusNum |
carries the number of expected mpdus that are part of an A-MPDU More... | |
bool | m_plcpSuccess |
Flag if the PLCP of the packet or the first MPDU in an A-MPDU has been received. More... | |
Ptr< UniformRandomVariable > | m_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< WifiPhyStateHelper > | m_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... | |
![]() | |
static TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
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.
ns3::SpectrumWifiPhy is accessible through the following paths with Config::Set and Config::Connect:
Size of this type is 672 bytes (on a 64-bit architecture).
Definition at line 49 of file spectrum-wifi-phy.h.
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.
signalType | Whether signal is WiFi (true) or foreign (false) |
senderNodeId | Node Id of the sender of the signal |
rxPower | received signal power (dBm) |
duration | Signal duration |
Definition at line 176 of file spectrum-wifi-phy.h.
ns3::SpectrumWifiPhy::SpectrumWifiPhy | ( | ) |
Definition at line 59 of file spectrum-wifi-phy.cc.
References NS_LOG_FUNCTION.
|
virtual |
Definition at line 64 of file spectrum-wifi-phy.cc.
References NS_LOG_FUNCTION.
void ns3::SpectrumWifiPhy::AddOperationalChannel | ( | uint8_t | channelNumber | ) |
Add a channel number to the list of operational channels.
This method is used to support scanning for strongest base station.
channelNumber | the channel number to add |
Definition at line 189 of file spectrum-wifi-phy.cc.
References m_operationalChannelList.
void ns3::SpectrumWifiPhy::ClearOperationalChannelList | ( | void | ) |
Clear the list of operational channels.
Definition at line 210 of file spectrum-wifi-phy.cc.
References m_operationalChannelList.
|
virtual |
Configure the PHY-level parameters for different Wi-Fi standard.
standard | the Wi-Fi standard |
Reimplemented from ns3::WifiPhy.
Definition at line 178 of file spectrum-wifi-phy.cc.
References ns3::WifiPhy::ConfigureStandard(), ns3::Object::IsInitialized(), NS_LOG_FUNCTION, and ResetSpectrumModel().
Referenced by SpectrumWifiPhyBasicTest::DoSetup().
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.
device | pointer to the NetDevice object including this new object |
Definition at line 283 of file spectrum-wifi-phy.cc.
References m_wifiSpectrumPhyInterface, and NS_LOG_FUNCTION.
Referenced by ns3::SpectrumWifiPhyHelper::Create().
|
protectedvirtual |
Destructor implementation.
This method is called by Dispose() or by the Object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overriden 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.
Definition at line 70 of file spectrum-wifi-phy.cc.
References ns3::WifiPhy::DoDispose(), m_channel, m_wifiSpectrumPhyInterface, and NS_LOG_FUNCTION.
|
protectedvirtual |
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::WifiPhy.
Definition at line 79 of file spectrum-wifi-phy.cc.
References ns3::WifiPhy::DoInitialize(), m_channel, m_wifiSpectrumPhyInterface, NS_FATAL_ERROR, and NS_LOG_FUNCTION.
double ns3::SpectrumWifiPhy::GetBandBandwidth | ( | void | ) | const |
Definition at line 355 of file spectrum-wifi-phy.cc.
References ns3::WifiPhy::GetStandard(), NS_FATAL_ERROR, ns3::WIFI_PHY_STANDARD_80211_10MHZ, ns3::WIFI_PHY_STANDARD_80211_5MHZ, ns3::WIFI_PHY_STANDARD_80211a, ns3::WIFI_PHY_STANDARD_80211ac, ns3::WIFI_PHY_STANDARD_80211ax_2_4GHZ, ns3::WIFI_PHY_STANDARD_80211ax_5GHZ, ns3::WIFI_PHY_STANDARD_80211b, ns3::WIFI_PHY_STANDARD_80211g, ns3::WIFI_PHY_STANDARD_80211n_2_4GHZ, ns3::WIFI_PHY_STANDARD_80211n_5GHZ, and ns3::WIFI_PHY_STANDARD_holland.
Referenced by GetRxSpectrumModel(), ResetSpectrumModel(), and StartRx().
uint32_t ns3::SpectrumWifiPhy::GetCenterFrequencyForChannelWidth | ( | WifiTxVector | txVector | ) | const |
Get the center frequency of the channel corresponding the current TxVector rather than that of the supported channel width.
Consider that this "primary channel" is on the lower part for the time being.
txVector | the TXVECTOR that has the channel width that is to be used |
Definition at line 322 of file spectrum-wifi-phy.cc.
References ns3::WifiTxVector::GetChannelWidth(), ns3::WifiPhy::GetChannelWidth(), ns3::WifiPhy::GetFrequency(), and NS_LOG_FUNCTION.
Referenced by StartTx().
Return the Channel this WifiPhy is connected to.
Implements ns3::WifiPhy.
Definition at line 120 of file spectrum-wifi-phy.cc.
References m_channel.
uint8_t ns3::SpectrumWifiPhy::GetGuardBandwidth | ( | uint8_t | currentChannelWidth | ) | const |
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).
Definition at line 391 of file spectrum-wifi-phy.cc.
Referenced by GetRxSpectrumModel(), GetTxPowerSpectralDensity(), ResetSpectrumModel(), and StartRx().
std::vector< uint8_t > ns3::SpectrumWifiPhy::GetOperationalChannelList | ( | void | ) | const |
Return a list of channels to which it may be possible to roam By default, this method will return the current channel number followed by any other channel numbers that have been added.
Definition at line 195 of file spectrum-wifi-phy.cc.
References ns3::WifiPhy::GetChannelNumber(), and m_operationalChannelList.
Ptr< AntennaModel > ns3::SpectrumWifiPhy::GetRxAntenna | ( | void | ) | const |
Get the antenna model used for reception.
Definition at line 270 of file spectrum-wifi-phy.cc.
References m_antenna.
Referenced by ns3::WifiSpectrumPhyInterface::GetRxAntenna().
Ptr< const SpectrumModel > ns3::SpectrumWifiPhy::GetRxSpectrumModel | ( | void | ) | const |
Definition at line 95 of file spectrum-wifi-phy.cc.
References GetBandBandwidth(), ns3::WifiPhy::GetChannelWidth(), ns3::WifiPhy::GetFrequency(), GetGuardBandwidth(), ns3::WifiSpectrumValueHelper::GetSpectrumModel(), m_rxSpectrumModel, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ns3::WifiSpectrumPhyInterface::GetRxSpectrumModel().
Ptr< WifiSpectrumPhyInterface > ns3::SpectrumWifiPhy::GetSpectrumPhy | ( | void | ) | const |
Definition at line 264 of file spectrum-wifi-phy.cc.
References m_wifiSpectrumPhyInterface.
|
private |
centerFrequency | center frequency (MHz) |
channelWidth | channel width (MHz) of the channel for the current transmission |
txPowerW | power in W to spread across the bands |
modulationClass | the modulation class |
This is a helper function to create the right Tx PSD corresponding to the standard in use.
Definition at line 292 of file spectrum-wifi-phy.cc.
References ns3::WifiSpectrumValueHelper::CreateDsssTxPowerSpectralDensity(), ns3::WifiSpectrumValueHelper::CreateHeOfdmTxPowerSpectralDensity(), ns3::WifiSpectrumValueHelper::CreateHtOfdmTxPowerSpectralDensity(), ns3::WifiSpectrumValueHelper::CreateOfdmTxPowerSpectralDensity(), GetGuardBandwidth(), NS_ABORT_MSG_IF, NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::WIFI_MOD_CLASS_DSSS, ns3::WIFI_MOD_CLASS_ERP_OFDM, ns3::WIFI_MOD_CLASS_HE, ns3::WIFI_MOD_CLASS_HR_DSSS, ns3::WIFI_MOD_CLASS_HT, ns3::WIFI_MOD_CLASS_OFDM, and ns3::WIFI_MOD_CLASS_VHT.
Referenced by StartTx().
|
static |
Get the type ID.
Definition at line 41 of file spectrum-wifi-phy.cc.
References m_disableWifiReception, m_signalCb, ns3::MakeBooleanAccessor(), ns3::MakeBooleanChecker(), ns3::MakeTraceSourceAccessor(), and ns3::TypeId::SetParent().
|
private |
Perform run-time spectrum model change.
Definition at line 132 of file spectrum-wifi-phy.cc.
References GetBandBandwidth(), ns3::WifiPhy::GetChannelWidth(), ns3::WifiPhy::GetFrequency(), GetGuardBandwidth(), ns3::WifiSpectrumValueHelper::GetSpectrumModel(), ns3::Object::IsInitialized(), m_channel, m_rxSpectrumModel, m_wifiSpectrumPhyInterface, NS_ASSERT_MSG(), NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by ConfigureStandard(), SetChannelNumber(), SetChannelWidth(), and SetFrequency().
void ns3::SpectrumWifiPhy::SetAntenna | ( | const Ptr< AntennaModel > | antenna | ) |
antenna | an 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 modelling need for this arises
Definition at line 276 of file spectrum-wifi-phy.cc.
References m_antenna, and NS_LOG_FUNCTION.
void ns3::SpectrumWifiPhy::SetChannel | ( | const Ptr< SpectrumChannel > | channel | ) |
Set the SpectrumChannel this SpectrumWifiPhy is to be connected to.
channel | the SpectrumChannel this SpectrumWifiPhy is to be connected to |
Definition at line 126 of file spectrum-wifi-phy.cc.
References third::channel, and m_channel.
Referenced by ns3::SpectrumWifiPhyHelper::Create().
|
virtual |
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). This method may fail to take action if the Phy model determines that the channel number cannot be switched for some reason (e.g. sleep state)
id | the channel number |
Reimplemented from ns3::WifiPhy.
Definition at line 145 of file spectrum-wifi-phy.cc.
References ns3::Object::IsInitialized(), NS_LOG_FUNCTION, ResetSpectrumModel(), and ns3::WifiPhy::SetChannelNumber().
Referenced by SpectrumWifiPhyBasicTest::DoSetup().
|
virtual |
channelwidth | channel width |
Reimplemented from ns3::WifiPhy.
Definition at line 167 of file spectrum-wifi-phy.cc.
References ns3::Object::IsInitialized(), NS_LOG_FUNCTION, ResetSpectrumModel(), and ns3::WifiPhy::SetChannelWidth().
|
virtual |
freq | the operating center frequency (MHz) on this node. |
Reimplemented from ns3::WifiPhy.
Definition at line 156 of file spectrum-wifi-phy.cc.
References ns3::Object::IsInitialized(), NS_LOG_FUNCTION, ResetSpectrumModel(), and ns3::WifiPhy::SetFrequency().
Referenced by SpectrumWifiPhyBasicTest::DoSetup().
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.
rxParams | Input signal parameters |
Definition at line 216 of file spectrum-wifi-phy.cc.
References ns3::InterferenceHelper::AddForeignSignal(), ns3::Time::As(), ns3::WifiSpectrumValueHelper::CreateRfFilter(), ns3::DbToRatio(), GetBandBandwidth(), ns3::WifiPhy::GetChannelWidth(), ns3::WifiPhy::GetFrequency(), GetGuardBandwidth(), ns3::WifiPhy::GetRxGain(), ns3::Integral(), m_disableWifiReception, ns3::WifiPhy::m_interference, m_signalCb, ns3::Time::NS, NS_LOG_DEBUG, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::WifiPhy::StartReceivePreambleAndHeader(), ns3::WifiPhy::SwitchMaybeToCcaBusy(), and ns3::WToDbm().
Referenced by SpectrumWifiPhyBasicTest::SendSignal(), and ns3::WifiSpectrumPhyInterface::StartRx().
|
virtual |
packet | the packet to send |
txVector | the TXVECTOR that has tx parameters such as mode, the transmission mode to use to send this packet, and txPowerLevel, a power level to use to send this packet. The real transmission power is calculated as txPowerMin + txPowerLevel * (txPowerMax - txPowerMin) / nTxLevels |
txDuration | duration of the transmission. |
Implements ns3::WifiPhy.
Definition at line 337 of file spectrum-wifi-phy.cc.
References ns3::DbmToW(), GetCenterFrequencyForChannelWidth(), ns3::WifiPhy::GetChannelNumber(), ns3::WifiTxVector::GetChannelWidth(), ns3::WifiTxVector::GetMode(), ns3::WifiMode::GetModulationClass(), ns3::WifiPhy::GetPowerDbm(), ns3::WifiPhy::GetTxGain(), ns3::WifiTxVector::GetTxPowerLevel(), GetTxPowerSpectralDensity(), ns3::Integral(), m_antenna, m_channel, m_wifiSpectrumPhyInterface, NS_ASSERT_MSG(), NS_LOG_DEBUG, and ns3::WToDbm().
|
private |
antenna model
Definition at line 219 of file spectrum-wifi-phy.h.
Referenced by GetRxAntenna(), SetAntenna(), and StartTx().
|
private |
SpectrumChannel that this SpectrumWifiPhy is connected to.
Definition at line 215 of file spectrum-wifi-phy.h.
Referenced by DoDispose(), DoInitialize(), GetChannel(), ResetSpectrumModel(), SetChannel(), and StartTx().
|
private |
forces this Phy to fail to sync on any signal
Definition at line 221 of file spectrum-wifi-phy.h.
Referenced by GetTypeId(), and StartRx().
|
private |
List of possible channels.
Definition at line 216 of file spectrum-wifi-phy.h.
Referenced by AddOperationalChannel(), ClearOperationalChannelList(), and GetOperationalChannelList().
|
mutableprivate |
receive spectrum model
Definition at line 220 of file spectrum-wifi-phy.h.
Referenced by GetRxSpectrumModel(), and ResetSpectrumModel().
|
private |
Signal callback.
Definition at line 222 of file spectrum-wifi-phy.h.
Referenced by GetTypeId(), and StartRx().
|
private |
Spectrum phy interface.
Definition at line 218 of file spectrum-wifi-phy.h.
Referenced by CreateWifiSpectrumPhyInterface(), DoDispose(), DoInitialize(), GetSpectrumPhy(), ResetSpectrumModel(), and StartTx().