802.11 PHY layer model More...
#include <wifi-phy.h>
Public Types | |
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 |
Public Member Functions | |
virtual double | GetTxPowerStart (void) const =0 |
virtual double | GetTxPowerEnd (void) const =0 |
virtual uint32_t | GetNTxPower (void) const =0 |
virtual void | SetReceiveOkCallback (RxOkCallback callback)=0 |
virtual void | SetReceiveErrorCallback (RxErrorCallback callback)=0 |
virtual void | SendPacket (Ptr< const Packet > packet, WifiMode mode, enum WifiPreamble preamble, uint8_t txPowerLevel)=0 |
virtual void | RegisterListener (WifiPhyListener *listener)=0 |
virtual bool | IsStateIdle (void)=0 |
virtual bool | IsStateCcaBusy (void)=0 |
virtual bool | IsStateBusy (void)=0 |
virtual bool | IsStateRx (void)=0 |
virtual bool | IsStateTx (void)=0 |
virtual bool | IsStateSwitching (void)=0 |
virtual Time | GetStateDuration (void)=0 |
virtual Time | GetDelayUntilIdle (void)=0 |
virtual Time | GetLastRxStartTime (void) const =0 |
virtual Time | CalculateTxDuration (uint32_t size, WifiMode payloadMode, enum WifiPreamble preamble) const =0 |
virtual uint32_t | GetNModes (void) const =0 |
virtual WifiMode | GetMode (uint32_t mode) const =0 |
virtual double | CalculateSnr (WifiMode txMode, double ber) const =0 |
virtual void | SetChannelNumber (uint16_t id)=0 |
Set channel number. | |
virtual uint16_t | GetChannelNumber () const =0 |
Return current channel number, see SetChannelNumber(). | |
virtual void | ConfigureStandard (enum WifiPhyStandard standard)=0 |
virtual Ptr< WifiChannel > | GetChannel (void) const =0 |
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 | NotifyPromiscSniffRx (Ptr< const Packet > packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble, double signalDbm, double noiseDbm) |
void | NotifyPromiscSniffTx (Ptr< const Packet > packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble) |
Static Public Member Functions | |
static TypeId | GetTypeId (void) |
This method returns the TypeId associated to ns3::WifiPhy. | |
static WifiMode | Get6mba (void) |
static WifiMode | Get9mba (void) |
static WifiMode | Get12mba (void) |
static WifiMode | Get18mba (void) |
static WifiMode | Get24mba (void) |
static WifiMode | Get36mba (void) |
static WifiMode | Get48mba (void) |
static WifiMode | Get54mba (void) |
static WifiMode | Get1mbb (void) |
static WifiMode | Get2mbb (void) |
static WifiMode | Get5_5mbb (void) |
static WifiMode | Get11mbb (void) |
static WifiMode | Get3mb10Mhz (void) |
static WifiMode | Get4_5mb10Mhz (void) |
static WifiMode | Get6mb10Mhz (void) |
static WifiMode | Get9mb10Mhz (void) |
static WifiMode | Get12mb10Mhz (void) |
static WifiMode | Get18mb10Mhz (void) |
static WifiMode | Get24mb10Mhz (void) |
static WifiMode | Get27mb10Mhz (void) |
static WifiMode | Get1_5mb5Mhz (void) |
static WifiMode | Get2_25mb5Mhz (void) |
static WifiMode | Get3mb5Mhz (void) |
static WifiMode | Get4_5mb5Mhz (void) |
static WifiMode | Get6mb5Mhz (void) |
static WifiMode | Get9mb5Mhz (void) |
static WifiMode | Get12mb5Mhz (void) |
static WifiMode | Get13_5mb5Mhz (void) |
802.11 PHY layer model
typedef Callback<void,Ptr<const Packet>, double> ns3::WifiPhy::RxErrorCallback |
arg1: packet received unsuccessfully arg2: snr of packet
typedef Callback<void,Ptr<Packet>, double, WifiMode, enum WifiPreamble> ns3::WifiPhy::RxOkCallback |
arg1: packet received successfully arg2: snr of packet arg3: mode of packet arg4: type of preamble used for packet.
enum ns3::WifiPhy::State |
virtual double ns3::WifiPhy::CalculateSnr | ( | WifiMode | txMode, | |
double | ber | |||
) | const [pure virtual] |
txMode | the transmission mode | |
ber | the probability of bit error rate |
Implemented in ns3::YansWifiPhy.
virtual Time ns3::WifiPhy::CalculateTxDuration | ( | uint32_t | size, | |
WifiMode | payloadMode, | |||
enum WifiPreamble | preamble | |||
) | const [pure virtual] |
size | the number of bytes in the packet to send | |
payloadMode | the transmission mode to use for this packet | |
preamble | the type of preamble to use for this packet. |
Implemented in ns3::YansWifiPhy.
virtual Time ns3::WifiPhy::GetDelayUntilIdle | ( | void | ) | [pure virtual] |
The PHY will never become WifiPhy::IDLE _before_ the delay returned by this method but it could become really idle later.
Implemented in ns3::YansWifiPhy.
virtual WifiMode ns3::WifiPhy::GetMode | ( | uint32_t | mode | ) | const [pure virtual] |
mode | index in array of supported modes |
Implemented in ns3::YansWifiPhy.
virtual uint32_t ns3::WifiPhy::GetNModes | ( | void | ) | const [pure virtual] |
Implemented in ns3::YansWifiPhy.
virtual uint32_t ns3::WifiPhy::GetNTxPower | ( | void | ) | const [pure virtual] |
Implemented in ns3::YansWifiPhy.
virtual Time ns3::WifiPhy::GetStateDuration | ( | void | ) | [pure virtual] |
Implemented in ns3::YansWifiPhy.
static TypeId ns3::WifiPhy::GetTypeId | ( | void | ) | [static] |
This method returns the TypeId associated to ns3::WifiPhy.
This object is accessible through the following paths with Config::Set and Config::Connect:
No Attributes defined for this type.
TraceSources defined for this type:
Reimplemented from ns3::Object.
Reimplemented in ns3::YansWifiPhy.
virtual bool ns3::WifiPhy::IsStateBusy | ( | void | ) | [pure virtual] |
Implemented in ns3::YansWifiPhy.
virtual bool ns3::WifiPhy::IsStateCcaBusy | ( | void | ) | [pure virtual] |
Implemented in ns3::YansWifiPhy.
virtual bool ns3::WifiPhy::IsStateIdle | ( | void | ) | [pure virtual] |
Implemented in ns3::YansWifiPhy.
virtual bool ns3::WifiPhy::IsStateRx | ( | void | ) | [pure virtual] |
Implemented in ns3::YansWifiPhy.
virtual bool ns3::WifiPhy::IsStateSwitching | ( | void | ) | [pure virtual] |
Implemented in ns3::YansWifiPhy.
virtual bool ns3::WifiPhy::IsStateTx | ( | void | ) | [pure virtual] |
Implemented in ns3::YansWifiPhy.
void ns3::WifiPhy::NotifyPromiscSniffRx | ( | Ptr< const Packet > | packet, | |
uint16_t | channelFreqMhz, | |||
uint16_t | channelNumber, | |||
uint32_t | rate, | |||
bool | isShortPreamble, | |||
double | signalDbm, | |||
double | noiseDbm | |||
) |
Public method used to fire a PromiscSniffer trace for a wifi packet being received. Implemented for encapsulation purposes.
packet | the packet being received | |
channelFreqMhz | the frequency in MHz at which the packet is received. Note that in real devices this is normally the frequency to which the receiver is tuned, and this can be different than the frequency at which the packet was originally transmitted. This is because it is possible to have the receiver tuned on a given channel and still to be able to receive packets on a nearby channel. | |
channelNumber | the channel on which the packet is received | |
rate | the PHY data rate in units of 500kbps (i.e., the same units used both for the radiotap and for the prism header) | |
isShortPreamble | true if short preamble is used, false otherwise | |
signalDbm | signal power in dBm | |
noiseDbm | noise power in dBm |
void ns3::WifiPhy::NotifyPromiscSniffTx | ( | Ptr< const Packet > | packet, | |
uint16_t | channelFreqMhz, | |||
uint16_t | channelNumber, | |||
uint32_t | rate, | |||
bool | isShortPreamble | |||
) |
Public method used to fire a PromiscSniffer trace for a wifi packet being transmitted. Implemented for encapsulation purposes.
packet | the packet being transmitted | |
channelFreqMhz | the frequency in MHz at which the packet is transmitted. | |
channelNumber | the channel on which the packet is transmitted | |
rate | the PHY data rate in units of 500kbps (i.e., the same units used both for the radiotap and for the prism header) | |
isShortPreamble | true if short preamble is used, false otherwise |
Public method used to fire a PhyRxBegin trace. Implemented for encapsulation purposes.
Public method used to fire a PhyRxDrop trace. Implemented for encapsulation purposes.
Public method used to fire a PhyRxEnd trace. Implemented for encapsulation purposes.
Public method used to fire a PhyTxBegin trace. Implemented for encapsulation purposes.
Public method used to fire a PhyTxDrop trace. Implemented for encapsulation purposes.
Public method used to fire a PhyTxEnd trace. Implemented for encapsulation purposes.
virtual void ns3::WifiPhy::RegisterListener | ( | WifiPhyListener * | listener | ) | [pure virtual] |
listener | the new listener |
Add the input listener to the list of objects to be notified of PHY-level events.
Implemented in ns3::YansWifiPhy.
virtual void ns3::WifiPhy::SendPacket | ( | Ptr< const Packet > | packet, | |
WifiMode | mode, | |||
enum WifiPreamble | preamble, | |||
uint8_t | txPowerLevel | |||
) | [pure 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 |
Implemented in ns3::YansWifiPhy.
virtual void ns3::WifiPhy::SetChannelNumber | ( | uint16_t | id | ) | [pure 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.
Implemented in ns3::YansWifiPhy.
virtual void ns3::WifiPhy::SetReceiveErrorCallback | ( | RxErrorCallback | callback | ) | [pure virtual] |
callback | the callback to invoke upon erroneous packet reception. |
Implemented in ns3::YansWifiPhy.
virtual void ns3::WifiPhy::SetReceiveOkCallback | ( | RxOkCallback | callback | ) | [pure virtual] |
callback | the callback to invoke upon successful packet reception. |
Implemented in ns3::YansWifiPhy.