ns-3
|
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>
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< ErrorRateModel > | GetErrorRateModel (void) const |
Ptr< Object > | GetDevice (void) const |
Ptr< Object > | GetMobility (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< WifiChannel > | GetChannel (void) const |
virtual void | ConfigureStandard (enum WifiPhyStandard standard) |
![]() | |
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) |
![]() | |
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) |
![]() | |
SimpleRefCount (const SimpleRefCount &o) | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
uint32_t | GetReferenceCount (void) const |
![]() | |
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 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 | |
![]() | |
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 |
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.
|
virtual |
txMode | the transmission mode |
ber | the probability of bit error rate |
Implements ns3::WifiPhy.
References ns3::ErrorRateModel::CalculateSnr().
|
virtual |
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().
|
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.
mode | index in array of supported modes |
Implements ns3::WifiPhy.
|
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.
Implements ns3::WifiPhy.
|
virtual |
Implements ns3::WifiPhy.
|
virtual |
Implements ns3::WifiPhy.
|
static |
This method returns the TypeId associated to ns3::YansWifiPhy.
This object is accessible through the following paths with Config::Set and Config::Connect:
Attributes defined for this type:
No TraceSources defined for this type.
TraceSources defined in parent class ns3::WifiPhy:
Reimplemented from ns3::WifiPhy.
References GetChannelNumber(), ns3::MicroSeconds(), SetChannelNumber(), and ns3::TypeId::SetParent().
|
virtual |
Implements ns3::WifiPhy.
|
virtual |
Implements ns3::WifiPhy.
|
virtual |
Implements ns3::WifiPhy.
|
virtual |
Implements ns3::WifiPhy.
|
virtual |
Implements ns3::WifiPhy.
Referenced by SetChannelNumber().
|
virtual |
Implements ns3::WifiPhy.
|
virtual |
listener | the new listener |
Add the input listener to the list of objects to be notified of PHY-level events.
Implements ns3::WifiPhy.
|
virtual |
packet | the packet to send |
mode | the transmission mode to use to send this packet |
preamble | the type of preamble to use to send this packet. |
txPowerLevel | a 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().
|
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().
|
virtual |
callback | the callback to invoke upon erroneous packet reception. |
Implements ns3::WifiPhy.
|
virtual |
callback | the callback to invoke upon successful packet reception. |
Implements ns3::WifiPhy.