ns-3
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:

List of all members.

Public Member Functions

void SetChannel (Ptr< YansWifiChannel > channel)
void SetChannelNumber (uint16_t id)
 Set channel number.
uint16_t GetChannelNumber () const
 Return current channel number, see SetChannelNumber()
double GetChannelFrequencyMhz () const
 Return current center channel frequency in MHz, see SetChannelNumber()
void StartReceivePacket (Ptr< Packet > packet, double rxPowerDbm, WifiMode mode, WifiPreamble preamble)
void SetRxNoiseFigure (double noiseFigureDb)
void SetTxPowerStart (double start)
void SetTxPowerEnd (double end)
void SetNTxPower (uint32_t n)
void SetTxGain (double gain)
void SetRxGain (double gain)
void SetEdThreshold (double threshold)
void SetCcaMode1Threshold (double threshold)
void SetErrorRateModel (Ptr< ErrorRateModel > rate)
void SetDevice (Ptr< Object > device)
void SetMobility (Ptr< Object > mobility)
double GetRxNoiseFigure (void) const
double GetTxGain (void) const
double GetRxGain (void) const
double GetEdThreshold (void) const
double GetCcaMode1Threshold (void) const
Ptr< ErrorRateModelGetErrorRateModel (void) const
Ptr< ObjectGetDevice (void) const
Ptr< ObjectGetMobility (void)
virtual double GetTxPowerStart (void) const
virtual double GetTxPowerEnd (void) const
virtual uint32_t GetNTxPower (void) const
virtual void SetReceiveOkCallback (WifiPhy::RxOkCallback callback)
virtual void SetReceiveErrorCallback (WifiPhy::RxErrorCallback callback)
virtual void SendPacket (Ptr< const Packet > packet, WifiMode mode, enum WifiPreamble preamble, uint8_t txPowerLevel)
virtual void RegisterListener (WifiPhyListener *listener)
virtual bool IsStateCcaBusy (void)
virtual bool IsStateIdle (void)
virtual bool IsStateBusy (void)
virtual bool IsStateRx (void)
virtual bool IsStateTx (void)
virtual bool IsStateSwitching (void)
virtual Time GetStateDuration (void)
virtual Time GetDelayUntilIdle (void)
virtual Time GetLastRxStartTime (void) const
virtual uint32_t GetNModes (void) const
virtual WifiMode GetMode (uint32_t mode) const
virtual double CalculateSnr (WifiMode txMode, double ber) const
virtual Ptr< WifiChannelGetChannel (void) const
virtual void ConfigureStandard (enum WifiPhyStandard standard)
- Public Member Functions inherited from ns3::WifiPhy
void NotifyTxBegin (Ptr< const Packet > packet)
void NotifyTxEnd (Ptr< const Packet > packet)
void NotifyTxDrop (Ptr< const Packet > packet)
void NotifyRxBegin (Ptr< const Packet > packet)
void NotifyRxEnd (Ptr< const Packet > packet)
void NotifyRxDrop (Ptr< const Packet > packet)
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)
- Public Member Functions inherited from ns3::Object
virtual TypeId GetInstanceTypeId (void) const
template<typename T >
Ptr< T > GetObject (void) const
template<typename T >
Ptr< T > GetObject (TypeId tid) const
void Dispose (void)
void AggregateObject (Ptr< Object > other)
AggregateIterator GetAggregateIterator (void) const
void Start (void)
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount (const SimpleRefCount &o)
SimpleRefCountoperator= (const SimpleRefCount &o)
void Ref (void) const
void Unref (void) const
uint32_t GetReferenceCount (void) const
- Public Member Functions inherited from ns3::ObjectBase
void SetAttribute (std::string name, const AttributeValue &value)
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
void GetAttribute (std::string name, AttributeValue &value) const
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
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 GetPlcpHeaderMode (WifiMode payloadMode, WifiPreamble preamble)
static uint32_t GetPlcpHeaderDurationMicroSeconds (WifiMode payloadMode, WifiPreamble preamble)
static uint32_t GetPlcpPreambleDurationMicroSeconds (WifiMode payloadMode, WifiPreamble preamble)
static uint32_t GetPayloadDurationMicroSeconds (uint32_t size, WifiMode payloadMode)
static WifiMode GetDsssRate1Mbps ()
static WifiMode GetDsssRate2Mbps ()
static WifiMode GetDsssRate5_5Mbps ()
static WifiMode GetDsssRate11Mbps ()
static WifiMode GetErpOfdmRate6Mbps ()
static WifiMode GetErpOfdmRate9Mbps ()
static WifiMode GetErpOfdmRate12Mbps ()
static WifiMode GetErpOfdmRate18Mbps ()
static WifiMode GetErpOfdmRate24Mbps ()
static WifiMode GetErpOfdmRate36Mbps ()
static WifiMode GetErpOfdmRate48Mbps ()
static WifiMode GetErpOfdmRate54Mbps ()
static WifiMode GetOfdmRate6Mbps ()
static WifiMode GetOfdmRate9Mbps ()
static WifiMode GetOfdmRate12Mbps ()
static WifiMode GetOfdmRate18Mbps ()
static WifiMode GetOfdmRate24Mbps ()
static WifiMode GetOfdmRate36Mbps ()
static WifiMode GetOfdmRate48Mbps ()
static WifiMode GetOfdmRate54Mbps ()
static WifiMode GetOfdmRate3MbpsBW10MHz ()
static WifiMode GetOfdmRate4_5MbpsBW10MHz ()
static WifiMode GetOfdmRate6MbpsBW10MHz ()
static WifiMode GetOfdmRate9MbpsBW10MHz ()
static WifiMode GetOfdmRate12MbpsBW10MHz ()
static WifiMode GetOfdmRate18MbpsBW10MHz ()
static WifiMode GetOfdmRate24MbpsBW10MHz ()
static WifiMode GetOfdmRate27MbpsBW10MHz ()
static WifiMode GetOfdmRate1_5MbpsBW5MHz ()
static WifiMode GetOfdmRate2_25MbpsBW5MHz ()
static WifiMode GetOfdmRate3MbpsBW5MHz ()
static WifiMode GetOfdmRate4_5MbpsBW5MHz ()
static WifiMode GetOfdmRate6MbpsBW5MHz ()
static WifiMode GetOfdmRate9MbpsBW5MHz ()
static WifiMode GetOfdmRate12MbpsBW5MHz ()
static WifiMode GetOfdmRate13_5MbpsBW5MHz ()

Additional Inherited Members

- Public Types inherited from ns3::WifiPhy
enum  State {
  IDLE, CCA_BUSY, TX, RX,
  SWITCHING
}
typedef Callback< void, Ptr
< Packet >, double, WifiMode,
enum WifiPreamble
RxOkCallback
typedef Callback< void, Ptr
< const Packet >, double > 
RxErrorCallback

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.


Member Function Documentation

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.

References ns3::ErrorRateModel::CalculateSnr().

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.

Referenced by SetChannelNumber().

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.

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.

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

Implements ns3::WifiPhy.

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

Implements ns3::WifiPhy.

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.

References GetChannelNumber(), ns3::MicroSeconds(), SetChannelNumber(), and ns3::TypeId::SetParent().

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.

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.

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

Implements ns3::WifiPhy.

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

Implements ns3::WifiPhy.

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

Implements ns3::WifiPhy.

Referenced by SetChannelNumber().

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

Implements ns3::WifiPhy.

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.

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.

References ns3::WifiPhy::CalculateTxDuration(), ns3::EventId::Cancel(), GetChannelFrequencyMhz(), GetChannelNumber(), ns3::WifiMode::GetDataRate(), ns3::Packet::GetSize(), ns3::WifiPhy::NotifyMonitorSniffTx(), ns3::WifiPhy::NotifyTxBegin(), NS_ASSERT, NS_LOG_FUNCTION, and ns3::YansWifiChannel::Send().

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.

References ns3::EventId::Cancel(), ns3::WifiPhy::CCA_BUSY, GetDelayUntilIdle(), ns3::WifiPhy::IDLE, IsStateSwitching(), ns3::Simulator::Now(), NS_ASSERT, NS_LOG_DEBUG, ns3::WifiPhy::RX, ns3::Simulator::Schedule(), ns3::Seconds(), and ns3::WifiPhy::TX.

Referenced by GetTypeId().

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

Implements ns3::WifiPhy.

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

Implements ns3::WifiPhy.


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