A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ns3::YansWifiPhy Class Reference

802.11 PHY layer modelThis PHY implements a model of 802.11a. The model implemented here is based on the model described in "Yet Another Network Simulator", (http://cutebugs.net/files/wns2-yans.pdf). More...

#include <yans-wifi-phy.h>

+ Inheritance diagram for ns3::YansWifiPhy:
+ Collaboration diagram for ns3::YansWifiPhy:

Public Member Functions

 YansWifiPhy ()
virtual ~YansWifiPhy ()
int64_t AssignStreams (int64_t stream)
virtual double CalculateSnr (WifiMode txMode, double ber) const
virtual void ConfigureStandard (enum WifiPhyStandard standard)
double GetCcaMode1Threshold (void) const
virtual Ptr< WifiChannelGetChannel (void) const
double GetChannelFrequencyMhz () const
 Return current center channel frequency in MHz, see SetChannelNumber()
uint16_t GetChannelNumber () const
 Return current channel number, see SetChannelNumber()
virtual Time GetDelayUntilIdle (void)
Ptr< ObjectGetDevice (void) const
double GetEdThreshold (void) const
Ptr< ErrorRateModelGetErrorRateModel (void) const
virtual Time GetLastRxStartTime (void) const
Ptr< ObjectGetMobility (void)
virtual WifiMode GetMode (uint32_t mode) const
virtual uint32_t GetNModes (void) const
virtual uint32_t GetNTxPower (void) const
double GetRxGain (void) const
double GetRxNoiseFigure (void) const
virtual Time GetStateDuration (void)
double GetTxGain (void) const
virtual double GetTxPowerEnd (void) const
virtual double GetTxPowerStart (void) const
virtual bool IsStateBusy (void)
virtual bool IsStateCcaBusy (void)
virtual bool IsStateIdle (void)
virtual bool IsStateRx (void)
virtual bool IsStateSwitching (void)
virtual bool IsStateTx (void)
virtual void RegisterListener (WifiPhyListener *listener)
virtual void SendPacket (Ptr< const Packet > packet, WifiMode mode, enum WifiPreamble preamble, uint8_t txPowerLevel)
void SetCcaMode1Threshold (double threshold)
void SetChannel (Ptr< YansWifiChannel > channel)
void SetChannelNumber (uint16_t id)
 Set channel number.
void SetDevice (Ptr< Object > device)
void SetEdThreshold (double threshold)
void SetErrorRateModel (Ptr< ErrorRateModel > rate)
void SetMobility (Ptr< Object > mobility)
void SetNTxPower (uint32_t n)
virtual void SetReceiveErrorCallback (WifiPhy::RxErrorCallback callback)
virtual void SetReceiveOkCallback (WifiPhy::RxOkCallback callback)
void SetRxGain (double gain)
void SetRxNoiseFigure (double noiseFigureDb)
void SetTxGain (double gain)
void SetTxPowerEnd (double end)
void SetTxPowerStart (double start)
void StartReceivePacket (Ptr< Packet > packet, double rxPowerDbm, WifiMode mode, WifiPreamble preamble)
- Public Member Functions inherited from ns3::WifiPhy
 WifiPhy ()
virtual ~WifiPhy ()
void NotifyMonitorSniffRx (Ptr< const Packet > packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble, double signalDbm, double noiseDbm)
void NotifyMonitorSniffTx (Ptr< const Packet > packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble)
void NotifyRxBegin (Ptr< const Packet > packet)
void NotifyRxDrop (Ptr< const Packet > packet)
void NotifyRxEnd (Ptr< const Packet > packet)
void NotifyTxBegin (Ptr< const Packet > packet)
void NotifyTxDrop (Ptr< const Packet > packet)
void NotifyTxEnd (Ptr< const Packet > packet)
- Public Member Functions inherited from ns3::Object
 Object ()
virtual ~Object ()
void AggregateObject (Ptr< Object > other)
void Dispose (void)
AggregateIterator GetAggregateIterator (void) const
virtual TypeId GetInstanceTypeId (void) const
template<typename T >
Ptr< T > GetObject (void) const
template<typename T >
Ptr< T > GetObject (TypeId tid) const
void Start (void)
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 SimpleRefCount (const SimpleRefCount &o)
uint32_t GetReferenceCount (void) const
SimpleRefCountoperator= (const SimpleRefCount &o)
void Ref (void) const
void Unref (void) const
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
void GetAttribute (std::string name, AttributeValue &value) const
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
void SetAttribute (std::string name, const AttributeValue &value)
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)

Static Public Member Functions

static TypeId GetTypeId (void)
 This method returns the TypeId associated to ns3::YansWifiPhy.
- Static Public Member Functions inherited from ns3::WifiPhy
static Time CalculateTxDuration (uint32_t size, WifiMode payloadMode, enum WifiPreamble preamble)
static WifiMode GetDsssRate11Mbps ()
static WifiMode GetDsssRate1Mbps ()
static WifiMode GetDsssRate2Mbps ()
static WifiMode GetDsssRate5_5Mbps ()
static WifiMode GetErpOfdmRate12Mbps ()
static WifiMode GetErpOfdmRate18Mbps ()
static WifiMode GetErpOfdmRate24Mbps ()
static WifiMode GetErpOfdmRate36Mbps ()
static WifiMode GetErpOfdmRate48Mbps ()
static WifiMode GetErpOfdmRate54Mbps ()
static WifiMode GetErpOfdmRate6Mbps ()
static WifiMode GetErpOfdmRate9Mbps ()
static WifiMode GetOfdmRate12Mbps ()
static WifiMode GetOfdmRate12MbpsBW10MHz ()
static WifiMode GetOfdmRate12MbpsBW5MHz ()
static WifiMode GetOfdmRate13_5MbpsBW5MHz ()
static WifiMode GetOfdmRate18Mbps ()
static WifiMode GetOfdmRate18MbpsBW10MHz ()
static WifiMode GetOfdmRate1_5MbpsBW5MHz ()
static WifiMode GetOfdmRate24Mbps ()
static WifiMode GetOfdmRate24MbpsBW10MHz ()
static WifiMode GetOfdmRate27MbpsBW10MHz ()
static WifiMode GetOfdmRate2_25MbpsBW5MHz ()
static WifiMode GetOfdmRate36Mbps ()
static WifiMode GetOfdmRate3MbpsBW10MHz ()
static WifiMode GetOfdmRate3MbpsBW5MHz ()
static WifiMode GetOfdmRate48Mbps ()
static WifiMode GetOfdmRate4_5MbpsBW10MHz ()
static WifiMode GetOfdmRate4_5MbpsBW5MHz ()
static WifiMode GetOfdmRate54Mbps ()
static WifiMode GetOfdmRate6Mbps ()
static WifiMode GetOfdmRate6MbpsBW10MHz ()
static WifiMode GetOfdmRate6MbpsBW5MHz ()
static WifiMode GetOfdmRate9Mbps ()
static WifiMode GetOfdmRate9MbpsBW10MHz ()
static WifiMode GetOfdmRate9MbpsBW5MHz ()
static uint32_t GetPayloadDurationMicroSeconds (uint32_t size, WifiMode payloadMode)
static uint32_t GetPlcpHeaderDurationMicroSeconds (WifiMode payloadMode, WifiPreamble preamble)
static WifiMode GetPlcpHeaderMode (WifiMode payloadMode, WifiPreamble preamble)
static uint32_t GetPlcpPreambleDurationMicroSeconds (WifiMode payloadMode, WifiPreamble preamble)

Private Member Functions

 YansWifiPhy (const YansWifiPhy &o)
void Configure80211_10Mhz (void)
void Configure80211_5Mhz ()
void Configure80211a (void)
void Configure80211b (void)
void Configure80211g (void)
void Configure80211p_CCH (void)
void Configure80211p_SCH (void)
void ConfigureHolland (void)
double DbmToW (double dbm) const
double DbToRatio (double db) const
virtual void DoDispose (void)
void EndReceive (Ptr< Packet > packet, Ptr< InterferenceHelper::Event > event)
double GetEdThresholdW (void) const
double GetPowerDbm (uint8_t power) const
double RatioToDb (double ratio) const
double WToDbm (double w) const

Private Attributes

double m_ccaMode1ThresholdW
Ptr< YansWifiChannelm_channel
uint16_t m_channelNumber
double m_channelStartingFrequency
 Standard-dependent center frequency of 0-th channel, MHz.
Time m_channelSwitchDelay
Ptr< Objectm_device
WifiModeList m_deviceRateSet
double m_edThresholdW
EventId m_endRxEvent
InterferenceHelper m_interference
Ptr< Objectm_mobility
uint32_t m_nTxPower
Ptr< UniformRandomVariablem_random
 Provides uniform random variables.
double m_rxGainDb
Ptr< WifiPhyStateHelperm_state
double m_txGainDb
double m_txPowerBaseDbm
double m_txPowerEndDbm

Additional Inherited Members

- Public Types inherited from ns3::WifiPhy
typedef Callback< void, Ptr
< const Packet >, double > 
RxErrorCallback
typedef Callback< void, Ptr
< Packet >, double, WifiMode,
enum WifiPreamble
RxOkCallback
enum  State {
  IDLE, CCA_BUSY, TX, RX,
  SWITCHING
}
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
virtual void DoDispose (void)
virtual void DoStart (void)
virtual void NotifyNewAggregate (void)

Detailed Description

802.11 PHY layer model

This PHY implements a model of 802.11a. The model implemented here is based on the model described in "Yet Another Network Simulator", (http://cutebugs.net/files/wns2-yans.pdf).

This PHY model depends on a channel loss and delay model as provided by the ns3::PropagationLossModel and ns3::PropagationDelayModel classes, both of which are members of the ns3::YansWifiChannel class.

Definition at line 63 of file yans-wifi-phy.h.

Constructor & Destructor Documentation

ns3::YansWifiPhy::YansWifiPhy ( )

Definition at line 127 of file yans-wifi-phy.cc.

References m_random, m_state, and NS_LOG_FUNCTION.

ns3::YansWifiPhy::~YansWifiPhy ( )
virtual

Definition at line 137 of file yans-wifi-phy.cc.

References NS_LOG_FUNCTION.

ns3::YansWifiPhy::YansWifiPhy ( const YansWifiPhy o)
private

Member Function Documentation

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

Assign a fixed random variable stream number to the random variables used by this model. Return the number of streams (possibly zero) that have been assigned.

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

Implements ns3::WifiPhy.

Definition at line 801 of file yans-wifi-phy.cc.

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

+ Here is the call graph for this function:

double ns3::YansWifiPhy::CalculateSnr ( WifiMode  txMode,
double  ber 
) const
virtual
Parameters
txModethe transmission mode
berthe probability of bit error rate
Returns
the minimum snr which is required to achieve the requested ber for the specified transmission mode. (W/W)

Implements ns3::WifiPhy.

Definition at line 309 of file yans-wifi-phy.cc.

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

+ Here is the call graph for this function:

void ns3::YansWifiPhy::Configure80211b ( void  )
private

Definition at line 557 of file yans-wifi-phy.cc.

References ns3::WifiPhy::GetDsssRate11Mbps(), ns3::WifiPhy::GetDsssRate1Mbps(), ns3::WifiPhy::GetDsssRate2Mbps(), ns3::WifiPhy::GetDsssRate5_5Mbps(), m_channelStartingFrequency, m_deviceRateSet, and NS_LOG_FUNCTION.

Referenced by ConfigureStandard().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::ConfigureHolland ( void  )
private
double ns3::YansWifiPhy::DbmToW ( double  dbm) const
private

Definition at line 727 of file yans-wifi-phy.cc.

Referenced by SetCcaMode1Threshold(), SetEdThreshold(), and StartReceivePacket().

+ Here is the caller graph for this function:

double ns3::YansWifiPhy::DbToRatio ( double  db) const
private

Definition at line 720 of file yans-wifi-phy.cc.

Referenced by SetRxNoiseFigure().

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::DoDispose ( void  )
privatevirtual

Definition at line 143 of file yans-wifi-phy.cc.

References m_channel, m_device, m_deviceRateSet, m_mobility, m_state, and NS_LOG_FUNCTION.

double ns3::YansWifiPhy::GetCcaMode1Threshold ( void  ) const

Definition at line 287 of file yans-wifi-phy.cc.

References m_ccaMode1ThresholdW, and WToDbm().

Referenced by GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Ptr< WifiChannel > ns3::YansWifiPhy::GetChannel ( void  ) const
virtual

Implements ns3::WifiPhy.

Definition at line 315 of file yans-wifi-phy.cc.

References m_channel.

double ns3::YansWifiPhy::GetChannelFrequencyMhz ( ) const

Return current center channel frequency in MHz, see SetChannelNumber()

Definition at line 382 of file yans-wifi-phy.cc.

References GetChannelNumber(), and m_channelStartingFrequency.

Referenced by EndReceive(), and SendPacket().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint16_t ns3::YansWifiPhy::GetChannelNumber ( ) const
virtual

Return current channel number, see SetChannelNumber()

Implements ns3::WifiPhy.

Definition at line 376 of file yans-wifi-phy.cc.

References m_channelNumber.

Referenced by EndReceive(), GetChannelFrequencyMhz(), ns3::MeshWifiInterfaceMac::GetFrequencyChannel(), GetTypeId(), ns3::YansWifiChannel::Send(), and SendPacket().

+ Here is the caller graph for this function:

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

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

Implements ns3::WifiPhy.

Definition at line 708 of file yans-wifi-phy.cc.

References ns3::WifiPhyStateHelper::GetDelayUntilIdle(), and m_state.

Referenced by SetChannelNumber().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Ptr< Object > ns3::YansWifiPhy::GetDevice ( void  ) const

Definition at line 298 of file yans-wifi-phy.cc.

References m_device.

double ns3::YansWifiPhy::GetEdThreshold ( void  ) const

Definition at line 281 of file yans-wifi-phy.cc.

References m_edThresholdW, and WToDbm().

Referenced by GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double ns3::YansWifiPhy::GetEdThresholdW ( void  ) const
private

Definition at line 746 of file yans-wifi-phy.cc.

References m_edThresholdW.

Ptr< ErrorRateModel > ns3::YansWifiPhy::GetErrorRateModel ( void  ) const

Definition at line 293 of file yans-wifi-phy.cc.

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

+ Here is the call graph for this function:

Time ns3::YansWifiPhy::GetLastRxStartTime ( void  ) const
virtual

Implements ns3::WifiPhy.

Definition at line 714 of file yans-wifi-phy.cc.

References ns3::WifiPhyStateHelper::GetLastRxStartTime(), and m_state.

+ Here is the call graph for this function:

Ptr< Object > ns3::YansWifiPhy::GetMobility ( void  )

Definition at line 303 of file yans-wifi-phy.cc.

References m_mobility.

Referenced by ns3::YansWifiChannel::Send().

+ Here is the caller graph for this function:

WifiMode ns3::YansWifiPhy::GetMode ( uint32_t  mode) const
virtual

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.

It is important to note that the DeviceRateSet 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.

Parameters
modeindex in array of supported modes
Returns
the mode whose index is specified.
See Also
WifiPhy::GetNModes()

Implements ns3::WifiPhy.

Definition at line 529 of file yans-wifi-phy.cc.

References m_deviceRateSet.

uint32_t ns3::YansWifiPhy::GetNModes ( void  ) const
virtual

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.

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

Returns
the number of transmission modes supported by this PHY.
See Also
WifiPhy::GetMode()

Implements ns3::WifiPhy.

Definition at line 524 of file yans-wifi-phy.cc.

References m_deviceRateSet.

uint32_t ns3::YansWifiPhy::GetNTxPower ( void  ) const
virtual
Returns
the number of tx power levels available for this PHY.

Implements ns3::WifiPhy.

Definition at line 534 of file yans-wifi-phy.cc.

References m_nTxPower.

double ns3::YansWifiPhy::GetPowerDbm ( uint8_t  power) const
private

Definition at line 752 of file yans-wifi-phy.cc.

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

Referenced by SendPacket().

+ Here is the caller graph for this function:

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

Definition at line 275 of file yans-wifi-phy.cc.

References m_rxGainDb.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

double ns3::YansWifiPhy::GetRxNoiseFigure ( void  ) const

Definition at line 255 of file yans-wifi-phy.cc.

References ns3::InterferenceHelper::GetNoiseFigure(), m_interference, and RatioToDb().

Referenced by EndReceive(), and GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Time ns3::YansWifiPhy::GetStateDuration ( void  )
virtual
Returns
the amount of time since the current state has started.

Implements ns3::WifiPhy.

Definition at line 703 of file yans-wifi-phy.cc.

References ns3::WifiPhyStateHelper::GetStateDuration(), and m_state.

+ Here is the call graph for this function:

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

Definition at line 270 of file yans-wifi-phy.cc.

References m_txGainDb.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

double ns3::YansWifiPhy::GetTxPowerEnd ( void  ) const
virtual

Implements ns3::WifiPhy.

Definition at line 265 of file yans-wifi-phy.cc.

References m_txPowerEndDbm.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

double ns3::YansWifiPhy::GetTxPowerStart ( void  ) const
virtual

Implements ns3::WifiPhy.

Definition at line 260 of file yans-wifi-phy.cc.

References m_txPowerBaseDbm.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

TypeId ns3::YansWifiPhy::GetTypeId ( void  )
static

This method returns the TypeId associated to ns3::YansWifiPhy.

This object is accessible through the following paths with Config::Set and Config::Connect:

  • /NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Phy/$ns3::YansWifiPhy

Attributes defined for this type:

  • EnergyDetectionThreshold: The energy of a received signal should be higher than this threshold (dbm) to allow the PHY layer to detect the signal.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: -96
    • Flags: construct write read
  • CcaMode1Threshold: The energy of a received signal should be higher than this threshold (dbm) to allow the PHY layer to declare CCA BUSY state
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: -99
    • Flags: construct write read
  • TxGain: Transmission gain (dB).
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 1
    • Flags: construct write read
  • RxGain: Reception gain (dB).
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 1
    • Flags: construct write read
  • TxPowerLevels: Number of transmission power levels available between TxPowerStart and TxPowerEnd included.
  • TxPowerEnd: Maximum available transmission level (dbm).
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 16.0206
    • Flags: construct write read
  • TxPowerStart: Minimum available transmission level (dbm).
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 16.0206
    • Flags: construct write read
  • RxNoiseFigure: Loss (dB) in the Signal-to-Noise-Ratio due to non-idealities in the receiver. According to Wikipedia (http://en.wikipedia.org/wiki/Noise_figure), this is "the difference in decibels (dB) between the noise output of the actual receiver to the noise output of an ideal receiver with the same overall gain and bandwidth when the receivers are connected to sources at the standard noise temperature T0 (usually 290 K)". For
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 7
    • Flags: construct write read
  • State: The state of the PHY layer
  • ChannelSwitchDelay: Delay between two short frames transmitted on different frequencies. NOTE: Unused now.
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +250000.0ns
    • Flags: construct write read
  • ChannelNumber: Channel center frequency = Channel starting frequency + 5 MHz * (nch - 1)

No TraceSources defined for this type.
TraceSources defined in parent class ns3::WifiPhy:

  • PhyTxBegin: Trace source indicating a packet has begun transmitting over the channel medium
  • PhyTxEnd: Trace source indicating a packet has been completely transmitted over the channel. NOTE: the only official WifiPhy implementation available to this date (YansWifiPhy) never fires this trace source.
  • PhyTxDrop: Trace source indicating a packet has been dropped by the device during transmission
  • PhyRxBegin: Trace source indicating a packet has begun being received from the channel medium by the device
  • PhyRxEnd: Trace source indicating a packet has been completely received from the channel medium by the device
  • PhyRxDrop: Trace source indicating a packet has been dropped by the device during reception
  • MonitorSnifferRx: Trace source simulating a wifi device in monitor mode sniffing all received frames
  • MonitorSnifferTx: Trace source simulating the capability of a wifi device in monitor mode to sniff all frames being transmitted

Reimplemented from ns3::WifiPhy.

Definition at line 46 of file yans-wifi-phy.cc.

References GetCcaMode1Threshold(), GetChannelNumber(), GetEdThreshold(), GetRxGain(), GetRxNoiseFigure(), GetTxGain(), GetTxPowerEnd(), GetTxPowerStart(), m_channelSwitchDelay, m_nTxPower, m_state, ns3::MicroSeconds(), SetCcaMode1Threshold(), SetChannelNumber(), SetEdThreshold(), ns3::TypeId::SetParent(), SetRxGain(), SetRxNoiseFigure(), SetTxGain(), SetTxPowerEnd(), and SetTxPowerStart().

+ Here is the call graph for this function:

bool ns3::YansWifiPhy::IsStateBusy ( void  )
virtual
Returns
true of the current state of the PHY layer is not WifiPhy::IDLE, false otherwise.

Implements ns3::WifiPhy.

Definition at line 682 of file yans-wifi-phy.cc.

References ns3::WifiPhyStateHelper::IsStateBusy(), and m_state.

+ Here is the call graph for this function:

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

Implements ns3::WifiPhy.

Definition at line 671 of file yans-wifi-phy.cc.

References ns3::WifiPhyStateHelper::IsStateCcaBusy(), and m_state.

+ Here is the call graph for this function:

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

Implements ns3::WifiPhy.

Definition at line 677 of file yans-wifi-phy.cc.

References ns3::WifiPhyStateHelper::IsStateIdle(), and m_state.

+ Here is the call graph for this function:

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

Implements ns3::WifiPhy.

Definition at line 687 of file yans-wifi-phy.cc.

References ns3::WifiPhyStateHelper::IsStateRx(), and m_state.

Referenced by EndReceive().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Implements ns3::WifiPhy.

Definition at line 697 of file yans-wifi-phy.cc.

References ns3::WifiPhyStateHelper::IsStateSwitching(), and m_state.

Referenced by SetChannelNumber().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Implements ns3::WifiPhy.

Definition at line 692 of file yans-wifi-phy.cc.

References ns3::WifiPhyStateHelper::IsStateTx(), and m_state.

+ Here is the call graph for this function:

double ns3::YansWifiPhy::RatioToDb ( double  ratio) const
private

Definition at line 740 of file yans-wifi-phy.cc.

Referenced by EndReceive(), and GetRxNoiseFigure().

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::RegisterListener ( WifiPhyListener listener)
virtual
Parameters
listenerthe new listener

Add the input listener to the list of objects to be notified of PHY-level events.

Implements ns3::WifiPhy.

Definition at line 665 of file yans-wifi-phy.cc.

References m_state, and ns3::WifiPhyStateHelper::RegisterListener().

+ Here is the call graph for this function:

void ns3::YansWifiPhy::SendPacket ( Ptr< const Packet packet,
WifiMode  mode,
enum WifiPreamble  preamble,
uint8_t  txPowerLevel 
)
virtual
Parameters
packetthe packet to send
modethe transmission mode to use to send this packet
preamblethe type of preamble to use to send this packet.
txPowerLevela power level to use to send this packet. The real transmission power is calculated as txPowerMin + txPowerLevel * (txPowerMax - txPowerMin) / nTxLevels

Implements ns3::WifiPhy.

Definition at line 498 of file yans-wifi-phy.cc.

References ns3::WifiPhy::CalculateTxDuration(), ns3::EventId::Cancel(), GetChannelFrequencyMhz(), GetChannelNumber(), ns3::WifiMode::GetDataRate(), GetPowerDbm(), ns3::Packet::GetSize(), ns3::WifiPhyStateHelper::IsStateRx(), ns3::WifiPhyStateHelper::IsStateSwitching(), ns3::WifiPhyStateHelper::IsStateTx(), m_channel, m_endRxEvent, m_interference, m_state, m_txGainDb, ns3::WifiPhy::NotifyMonitorSniffTx(), ns3::InterferenceHelper::NotifyRxEnd(), ns3::WifiPhy::NotifyTxBegin(), NS_ASSERT, NS_LOG_FUNCTION, ns3::YansWifiChannel::Send(), ns3::WifiPhyStateHelper::SwitchToTx(), and ns3::WIFI_PREAMBLE_SHORT.

+ Here is the call graph for this function:

void ns3::YansWifiPhy::SetCcaMode1Threshold ( double  threshold)

Definition at line 233 of file yans-wifi-phy.cc.

References DbmToW(), m_ccaMode1ThresholdW, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::SetChannel ( Ptr< YansWifiChannel channel)

Definition at line 320 of file yans-wifi-phy.cc.

References ns3::YansWifiChannel::Add(), and m_channel.

Referenced by ns3::YansWifiPhyHelper::Create().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::SetChannelNumber ( uint16_t  id)
virtual

Set channel number.

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

where Starting channel frequency is standard-dependent, see SetStandard() as defined in IEEE 802.11-2007 17.3.8.3.2.

YansWifiPhy can switch among different channels. Basically, YansWifiPhy has a private attribute m_channelNumber that identifies the channel the PHY operates on. Channel switching cannot interrupt an ongoing transmission. When PHY is in TX state, the channel switching is postponed until the end of the current transmission. When the PHY is in RX state, the channel switching causes the drop of the synchronized packet.

Implements ns3::WifiPhy.

Definition at line 327 of file yans-wifi-phy.cc.

References ns3::EventId::Cancel(), ns3::WifiPhy::CCA_BUSY, ns3::InterferenceHelper::EraseEvents(), GetDelayUntilIdle(), ns3::WifiPhyStateHelper::GetState(), ns3::WifiPhy::IDLE, IsStateSwitching(), m_channelNumber, m_channelSwitchDelay, m_endRxEvent, m_interference, m_state, ns3::Simulator::Now(), NS_ASSERT, NS_LOG_DEBUG, ns3::WifiPhy::RX, ns3::Simulator::Schedule(), ns3::Seconds(), ns3::WifiPhyStateHelper::SwitchToChannelSwitching(), and ns3::WifiPhy::TX.

Referenced by GetTypeId(), and ns3::MeshWifiInterfaceMac::SwitchFrequencyChannel().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::SetDevice ( Ptr< Object device)

Definition at line 244 of file yans-wifi-phy.cc.

References m_device.

Referenced by ns3::YansWifiPhyHelper::Create().

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::SetEdThreshold ( double  threshold)

Definition at line 227 of file yans-wifi-phy.cc.

References DbmToW(), m_edThresholdW, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::SetErrorRateModel ( Ptr< ErrorRateModel rate)

Definition at line 239 of file yans-wifi-phy.cc.

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

Referenced by ns3::YansWifiPhyHelper::Create().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::SetMobility ( Ptr< Object mobility)

Definition at line 249 of file yans-wifi-phy.cc.

References m_mobility.

Referenced by ns3::YansWifiPhyHelper::Create().

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::SetNTxPower ( uint32_t  n)

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

References m_nTxPower, and NS_LOG_FUNCTION.

void ns3::YansWifiPhy::SetReceiveErrorCallback ( WifiPhy::RxErrorCallback  callback)
virtual
Parameters
callbackthe callback to invoke upon erroneous packet reception.

Implements ns3::WifiPhy.

Definition at line 393 of file yans-wifi-phy.cc.

References m_state, and ns3::WifiPhyStateHelper::SetReceiveErrorCallback().

+ Here is the call graph for this function:

void ns3::YansWifiPhy::SetReceiveOkCallback ( WifiPhy::RxOkCallback  callback)
virtual
Parameters
callbackthe callback to invoke upon successful packet reception.

Implements ns3::WifiPhy.

Definition at line 388 of file yans-wifi-phy.cc.

References m_state, and ns3::WifiPhyStateHelper::SetReceiveOkCallback().

+ Here is the call graph for this function:

void ns3::YansWifiPhy::SetRxGain ( double  gain)

Definition at line 221 of file yans-wifi-phy.cc.

References m_rxGainDb, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::SetRxNoiseFigure ( double  noiseFigureDb)

Definition at line 191 of file yans-wifi-phy.cc.

References DbToRatio(), m_interference, NS_LOG_FUNCTION, and ns3::InterferenceHelper::SetNoiseFigure().

Referenced by GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::SetTxGain ( double  gain)

Definition at line 215 of file yans-wifi-phy.cc.

References m_txGainDb, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::SetTxPowerEnd ( double  end)

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

References m_txPowerEndDbm, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

void ns3::YansWifiPhy::SetTxPowerStart ( double  start)

Definition at line 197 of file yans-wifi-phy.cc.

References m_txPowerBaseDbm, NS_LOG_FUNCTION, and visualizer.core::start().

Referenced by GetTypeId().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double ns3::YansWifiPhy::WToDbm ( double  w) const
private

Definition at line 734 of file yans-wifi-phy.cc.

Referenced by GetCcaMode1Threshold(), and GetEdThreshold().

+ Here is the caller graph for this function:

Member Data Documentation

double ns3::YansWifiPhy::m_ccaMode1ThresholdW
private

Definition at line 175 of file yans-wifi-phy.h.

Referenced by GetCcaMode1Threshold(), SetCcaMode1Threshold(), and StartReceivePacket().

Ptr<YansWifiChannel> ns3::YansWifiPhy::m_channel
private

Definition at line 182 of file yans-wifi-phy.h.

Referenced by DoDispose(), GetChannel(), SendPacket(), and SetChannel().

uint16_t ns3::YansWifiPhy::m_channelNumber
private

Definition at line 183 of file yans-wifi-phy.h.

Referenced by GetChannelNumber(), and SetChannelNumber().

double ns3::YansWifiPhy::m_channelStartingFrequency
private
Time ns3::YansWifiPhy::m_channelSwitchDelay
private

Definition at line 232 of file yans-wifi-phy.h.

Referenced by GetTypeId(), and SetChannelNumber().

Ptr<Object> ns3::YansWifiPhy::m_device
private

Definition at line 184 of file yans-wifi-phy.h.

Referenced by DoDispose(), GetDevice(), and SetDevice().

WifiModeList ns3::YansWifiPhy::m_deviceRateSet
private

This vector holds the set of transmission modes that this WifiPhy(-derived class) can support. In conversation we call this the DeviceRateSet (not a term you'll find in the standard), and it is a superset of standard-defined parameters such as the OperationalRateSet, and the BSSBasicRateSet (which, themselves, have a superset/subset relationship).

Mandatory rates relevant to this WifiPhy can be found by iterating over this vector looking for WifiMode objects for which WifiMode::IsMandatory() is true.

A quick note is appropriate here (well, here is as good a place as any I can find)...

In the standard there is no text that explicitly precludes production of a device that does not support some rates that are mandatory (according to the standard) for PHYs that the device happens to fully or partially support.

This approach is taken by some devices which choose to only support, for example, 6 and 9 Mbps ERP-OFDM rates for cost and power consumption reasons (i.e., these devices don't need to be designed for and waste current on the increased linearity requirement of higher-order constellations when 6 and 9 Mbps more than meet their data requirements). The wording of the standard allows such devices to have an OperationalRateSet which includes 6 and 9 Mbps ERP-OFDM rates, despite 12 and 24 Mbps being "mandatory" rates for the ERP-OFDM PHY.

Now this doesn't actually have any impact on code, yet. It is, however, something that we need to keep in mind for the future. Basically, the key point is that we can't be making assumptions like "the Operational Rate Set will contain all the mandatory rates".

Definition at line 223 of file yans-wifi-phy.h.

Referenced by Configure80211_10Mhz(), Configure80211_5Mhz(), Configure80211a(), Configure80211b(), Configure80211g(), Configure80211p_CCH(), Configure80211p_SCH(), ConfigureHolland(), DoDispose(), GetMode(), and GetNModes().

double ns3::YansWifiPhy::m_edThresholdW
private
EventId ns3::YansWifiPhy::m_endRxEvent
private

Definition at line 225 of file yans-wifi-phy.h.

Referenced by SendPacket(), SetChannelNumber(), and StartReceivePacket().

Ptr<Object> ns3::YansWifiPhy::m_mobility
private

Definition at line 185 of file yans-wifi-phy.h.

Referenced by DoDispose(), GetMobility(), and SetMobility().

uint32_t ns3::YansWifiPhy::m_nTxPower
private

Definition at line 180 of file yans-wifi-phy.h.

Referenced by GetNTxPower(), GetPowerDbm(), GetTypeId(), and SetNTxPower().

Ptr<UniformRandomVariable> ns3::YansWifiPhy::m_random
private

Provides uniform random variables.

Definition at line 227 of file yans-wifi-phy.h.

Referenced by AssignStreams(), EndReceive(), and YansWifiPhy().

double ns3::YansWifiPhy::m_rxGainDb
private

Definition at line 177 of file yans-wifi-phy.h.

Referenced by GetRxGain(), SetRxGain(), and StartReceivePacket().

double ns3::YansWifiPhy::m_txGainDb
private

Definition at line 176 of file yans-wifi-phy.h.

Referenced by GetTxGain(), SendPacket(), and SetTxGain().

double ns3::YansWifiPhy::m_txPowerBaseDbm
private

Definition at line 178 of file yans-wifi-phy.h.

Referenced by GetPowerDbm(), GetTxPowerStart(), and SetTxPowerStart().

double ns3::YansWifiPhy::m_txPowerEndDbm
private

Definition at line 179 of file yans-wifi-phy.h.

Referenced by GetPowerDbm(), GetTxPowerEnd(), and SetTxPowerEnd().


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