A Discrete-Event Network Simulator
API
wifi-phy.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2005,2006 INRIA
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19  */
20 
21 #ifndef WIFI_PHY_H
22 #define WIFI_PHY_H
23 
24 #include <stdint.h>
25 #include "ns3/callback.h"
26 #include "ns3/packet.h"
27 #include "ns3/object.h"
28 #include "ns3/nstime.h"
29 #include "ns3/ptr.h"
30 #include "wifi-mode.h"
31 #include "wifi-preamble.h"
32 #include "wifi-phy-standard.h"
33 #include "ns3/traced-callback.h"
34 #include "wifi-tx-vector.h"
35 
36 namespace ns3 {
37 
38 class WifiChannel;
39 class NetDevice;
40 
45 {
46 public:
47  virtual ~WifiPhyListener ();
48 
61  virtual void NotifyRxStart (Time duration) = 0;
67  virtual void NotifyRxEndOk (void) = 0;
73  virtual void NotifyRxEndError (void) = 0;
84  virtual void NotifyTxStart (Time duration, double txPowerDbm) = 0;
85 
101  virtual void NotifyMaybeCcaBusyStart (Time duration) = 0;
109  virtual void NotifySwitchingStart (Time duration) = 0;
113  virtual void NotifySleep (void) = 0;
117  virtual void NotifyWakeup (void) = 0;
118 };
119 
120 
126 class WifiPhy : public Object
127 {
128 public:
132  enum State
133  {
145  TX,
149  RX,
158  };
159 
172 
173  static TypeId GetTypeId (void);
174 
175  WifiPhy ();
176  virtual ~WifiPhy ();
177 
183  virtual double GetTxPowerStart (void) const = 0;
189  virtual double GetTxPowerEnd (void) const = 0;
193  virtual uint32_t GetNTxPower (void) const = 0;
194 
199  virtual void SetReceiveOkCallback (RxOkCallback callback) = 0;
204  virtual void SetReceiveErrorCallback (RxErrorCallback callback) = 0;
205 
214  virtual void SendPacket (Ptr<const Packet> packet, WifiTxVector txvector, enum WifiPreamble preamble, uint8_t packetType) = 0;
215 
222  virtual void RegisterListener (WifiPhyListener *listener) = 0;
229  virtual void UnregisterListener (WifiPhyListener *listener) = 0;
230 
234  virtual void SetSleepMode (void) = 0;
238  virtual void ResumeFromSleep (void) = 0;
239 
243  virtual bool IsStateIdle (void) = 0;
247  virtual bool IsStateCcaBusy (void) = 0;
251  virtual bool IsStateBusy (void) = 0;
255  virtual bool IsStateRx (void) = 0;
259  virtual bool IsStateTx (void) = 0;
263  virtual bool IsStateSwitching (void) = 0;
267  virtual bool IsStateSleep (void) = 0;
271  virtual Time GetStateDuration (void) = 0;
278  virtual Time GetDelayUntilIdle (void) = 0;
279 
285  virtual Time GetLastRxStartTime (void) const = 0;
286 
297  Time CalculateTxDuration (uint32_t size, WifiTxVector txvector, enum WifiPreamble preamble, double frequency, uint8_t packetType, uint8_t incFlag);
298 
312  static WifiMode GetMFPlcpHeaderMode (WifiMode payloadMode, WifiPreamble preamble);
319  static Time GetPlcpHtSigHeaderDuration (WifiMode payloadMode, WifiPreamble preamble);
320 
321 
328  static WifiMode GetPlcpHeaderMode (WifiMode payloadMode, WifiPreamble preamble);
329 
336  static Time GetPlcpHeaderDuration (WifiMode payloadMode, WifiPreamble preamble);
337 
344  static Time GetPlcpPreambleDuration (WifiMode payloadMode, WifiPreamble preamble);
345 
356  Time GetPayloadDuration (uint32_t size, WifiTxVector txvector, WifiPreamble preamble, double frequency, uint8_t packetType, uint8_t incFlag);
357 
375  virtual uint32_t GetNModes (void) const = 0;
394  virtual WifiMode GetMode (uint32_t mode) const = 0;
402  virtual bool IsModeSupported (WifiMode mode) const = 0;
409  virtual double CalculateSnr (WifiMode txMode, double ber) const = 0;
421  virtual uint32_t GetNBssMembershipSelectors (void) const=0;
422 
435  virtual uint32_t GetBssMembershipSelector (uint32_t selector) const=0;
450  virtual WifiModeList GetMembershipSelectorModes(uint32_t selector)=0;
462  virtual uint8_t GetNMcs (void) const=0;
475  virtual uint8_t GetMcs (uint8_t mcs) const=0;
476 
484  virtual uint32_t WifiModeToMcs (WifiMode mode)=0;
492  virtual WifiMode McsToWifiMode (uint8_t mcs)=0;
493 
494 
505  virtual void SetChannelNumber (uint16_t id) = 0;
511  virtual uint16_t GetChannelNumber (void) const = 0;
515  virtual Time GetChannelSwitchDelay (void) const = 0;
516 
522  virtual void ConfigureStandard (enum WifiPhyStandard standard) = 0;
523 
529  virtual Ptr<WifiChannel> GetChannel (void) const = 0;
530 
536  static WifiMode GetDsssRate1Mbps ();
542  static WifiMode GetDsssRate2Mbps ();
548  static WifiMode GetDsssRate5_5Mbps ();
554  static WifiMode GetDsssRate11Mbps ();
560  static WifiMode GetErpOfdmRate6Mbps ();
566  static WifiMode GetErpOfdmRate9Mbps ();
572  static WifiMode GetErpOfdmRate12Mbps ();
578  static WifiMode GetErpOfdmRate18Mbps ();
584  static WifiMode GetErpOfdmRate24Mbps ();
590  static WifiMode GetErpOfdmRate36Mbps ();
596  static WifiMode GetErpOfdmRate48Mbps ();
602  static WifiMode GetErpOfdmRate54Mbps ();
608  static WifiMode GetOfdmRate6Mbps ();
614  static WifiMode GetOfdmRate9Mbps ();
620  static WifiMode GetOfdmRate12Mbps ();
626  static WifiMode GetOfdmRate18Mbps ();
632  static WifiMode GetOfdmRate24Mbps ();
638  static WifiMode GetOfdmRate36Mbps ();
644  static WifiMode GetOfdmRate48Mbps ();
650  static WifiMode GetOfdmRate54Mbps ();
656  static WifiMode GetOfdmRate3MbpsBW10MHz ();
662  static WifiMode GetOfdmRate4_5MbpsBW10MHz ();
668  static WifiMode GetOfdmRate6MbpsBW10MHz ();
674  static WifiMode GetOfdmRate9MbpsBW10MHz ();
680  static WifiMode GetOfdmRate12MbpsBW10MHz ();
686  static WifiMode GetOfdmRate18MbpsBW10MHz ();
692  static WifiMode GetOfdmRate24MbpsBW10MHz ();
698  static WifiMode GetOfdmRate27MbpsBW10MHz ();
704  static WifiMode GetOfdmRate1_5MbpsBW5MHz ();
710  static WifiMode GetOfdmRate2_25MbpsBW5MHz ();
716  static WifiMode GetOfdmRate3MbpsBW5MHz ();
722  static WifiMode GetOfdmRate4_5MbpsBW5MHz ();
728  static WifiMode GetOfdmRate6MbpsBW5MHz ();
734  static WifiMode GetOfdmRate9MbpsBW5MHz ();
740  static WifiMode GetOfdmRate12MbpsBW5MHz ();
746  static WifiMode GetOfdmRate13_5MbpsBW5MHz ();
752  static WifiMode GetOfdmRate6_5MbpsBW20MHz ();
758  static WifiMode GetOfdmRate13MbpsBW20MHz ();
764  static WifiMode GetOfdmRate19_5MbpsBW20MHz ();
770  static WifiMode GetOfdmRate26MbpsBW20MHz ();
776  static WifiMode GetOfdmRate39MbpsBW20MHz ();
782  static WifiMode GetOfdmRate52MbpsBW20MHz ();
788  static WifiMode GetOfdmRate58_5MbpsBW20MHz ();
794  static WifiMode GetOfdmRate65MbpsBW20MHz ();
800  static WifiMode GetOfdmRate13_5MbpsBW40MHz ();
806  static WifiMode GetOfdmRate27MbpsBW40MHz ();
812  static WifiMode GetOfdmRate40_5MbpsBW40MHz ();
818  static WifiMode GetOfdmRate54MbpsBW40MHz ();
824  static WifiMode GetOfdmRate81MbpsBW40MHz ();
830  static WifiMode GetOfdmRate108MbpsBW40MHz ();
836  static WifiMode GetOfdmRate121_5MbpsBW40MHz ();
842  static WifiMode GetOfdmRate135MbpsBW40MHz ();
843  //Rates for clause 20 with short guard interval
849  static WifiMode GetOfdmRate7_2MbpsBW20MHz ();
855  static WifiMode GetOfdmRate14_4MbpsBW20MHz ();
861  static WifiMode GetOfdmRate21_7MbpsBW20MHz ();
867  static WifiMode GetOfdmRate28_9MbpsBW20MHz ();
873  static WifiMode GetOfdmRate43_3MbpsBW20MHz ();
879  static WifiMode GetOfdmRate57_8MbpsBW20MHz ();
886  static WifiMode GetOfdmRate65MbpsBW20MHzShGi ();
892  static WifiMode GetOfdmRate72_2MbpsBW20MHz ();
898  static WifiMode GetOfdmRate15MbpsBW40MHz ();
904  static WifiMode GetOfdmRate30MbpsBW40MHz ();
910  static WifiMode GetOfdmRate45MbpsBW40MHz ();
916  static WifiMode GetOfdmRate60MbpsBW40MHz ();
922  static WifiMode GetOfdmRate90MbpsBW40MHz ();
928  static WifiMode GetOfdmRate120MbpsBW40MHz ();
935  static WifiMode GetOfdmRate135MbpsBW40MHzShGi ();
941  static WifiMode GetOfdmRate150MbpsBW40MHz ();
942 
943 
950  void NotifyTxBegin (Ptr<const Packet> packet);
951 
958  void NotifyTxEnd (Ptr<const Packet> packet);
959 
966  void NotifyTxDrop (Ptr<const Packet> packet);
967 
974  void NotifyRxBegin (Ptr<const Packet> packet);
975 
982  void NotifyRxEnd (Ptr<const Packet> packet);
983 
990  void NotifyRxDrop (Ptr<const Packet> packet);
991 
1011  void NotifyMonitorSniffRx (Ptr<const Packet> packet, uint16_t channelFreqMhz,
1012  uint16_t channelNumber, uint32_t rate,
1013  bool isShortPreamble, double signalDbm,
1014  double noiseDbm);
1015 
1035  typedef void (* MonitorSnifferRxCallback)
1036  (Ptr<const Packet> packet, uint16_t channelFreqMhz,
1037  uint16_t channelNumber, uint32_t rate,
1038  bool isShortPreamble, double signalDbm,
1039  double noiseDbm);
1040 
1054  void NotifyMonitorSniffTx (Ptr<const Packet> packet, uint16_t channelFreqMhz,
1055  uint16_t channelNumber, uint32_t rate,
1056  bool isShortPreamble, uint8_t txPower);
1057 
1070  typedef void (* MonitorSnifferTxCallback)
1071  (const Ptr<const Packet> packet, uint16_t channelFreqMhz,
1072  uint16_t channelNumber, uint32_t rate,
1073  bool isShortPreamble, uint8_t txPower);
1074 
1075 
1084  virtual int64_t AssignStreams (int64_t stream) = 0;
1085 
1089  virtual void SetFrequency (uint32_t freq)=0;
1093  virtual uint32_t GetFrequency (void) const=0;
1097  virtual void SetNumberOfTransmitAntennas (uint32_t tx)=0;
1098 
1102  virtual uint32_t GetNumberOfTransmitAntennas (void) const=0;
1106  virtual void SetNumberOfReceiveAntennas (uint32_t rx)=0 ;
1110  virtual uint32_t GetNumberOfReceiveAntennas (void) const=0;
1114  virtual void SetGuardInterval (bool guardInterval)=0;
1118  virtual bool GetGuardInterval (void) const = 0;
1122  virtual void SetLdpc (bool ldpc)=0;
1126  virtual bool GetLdpc (void) const=0;
1130  virtual void SetStbc (bool stbc)=0;
1134  virtual bool GetStbc (void) const=0;
1135 
1139  virtual void SetGreenfield (bool greenfield)=0;
1143  virtual bool GetGreenfield (void) const=0;
1147  virtual bool GetChannelBonding (void) const = 0;
1151  virtual void SetChannelBonding (bool channelbonding) = 0 ;
1152 
1153 private:
1161 
1169 
1177 
1185 
1193 
1200 
1211  TracedCallback<Ptr<const Packet>, uint16_t, uint16_t, uint32_t, bool, double, double> m_phyMonitorSniffRxTrace;
1212 
1223  TracedCallback<Ptr<const Packet>, uint16_t, uint16_t, uint32_t, bool,uint8_t> m_phyMonitorSniffTxTrace;
1224 
1226  uint32_t m_totalAmpduSize;
1227 };
1228 
1234 std::ostream& operator<< (std::ostream& os, enum WifiPhy::State state);
1235 
1236 } // namespace ns3
1237 
1238 #endif /* WIFI_PHY_H */
static WifiMode GetOfdmRate9MbpsBW5MHz()
Return a WifiMode for OFDM at 9Mbps with 5MHz channel spacing.
Definition: wifi-phy.cc:1081
TracedCallback< Ptr< const Packet > > m_phyRxBeginTrace
The trace source fired when a packet begins the reception process from the medium.
Definition: wifi-phy.h:1184
static WifiMode GetErpOfdmRate24Mbps()
Return a WifiMode for ERP-OFDM at 24Mbps.
Definition: wifi-phy.cc:749
static WifiMode GetDsssRate11Mbps()
Return a WifiMode for DSSS at 11Mbps.
Definition: wifi-phy.cc:681
virtual uint32_t GetFrequency(void) const =0
virtual uint32_t GetNumberOfTransmitAntennas(void) const =0
virtual Ptr< WifiChannel > GetChannel(void) const =0
Return the WifiChannel this WifiPhy is connected to.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:95
static WifiMode GetErpOfdmRate36Mbps()
Return a WifiMode for ERP-OFDM at 36Mbps.
Definition: wifi-phy.cc:762
static WifiMode GetOfdmRate26MbpsBW20MHz()
Return a WifiMode for OFDM at 26Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1199
virtual void ConfigureStandard(enum WifiPhyStandard standard)=0
Configure the PHY-level parameters for different Wi-Fi standard.
Callback template class.
Definition: callback.h:978
static WifiMode GetOfdmRate9Mbps()
Return a WifiMode for OFDM at 9Mbps.
Definition: wifi-phy.cc:817
static WifiMode GetOfdmRate7_2MbpsBW20MHz()
Return a WifiMode for OFDM at 7.2Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1134
static WifiMode GetOfdmRate18MbpsBW10MHz()
Return a WifiMode for OFDM at 18Mbps with 10MHz channel spacing.
Definition: wifi-phy.cc:975
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
static WifiMode GetOfdmRate27MbpsBW10MHz()
Return a WifiMode for OFDM at 27Mbps with 10MHz channel spacing.
Definition: wifi-phy.cc:1001
virtual void NotifyTxStart(Time duration, double txPowerDbm)=0
static WifiMode GetOfdmRate3MbpsBW5MHz()
Return a WifiMode for OFDM at 3Mbps with 5MHz channel spacing.
Definition: wifi-phy.cc:1042
virtual void NotifyWakeup(void)=0
Notify listeners that we woke up.
virtual ~WifiPhy()
Definition: wifi-phy.cc:114
static WifiMode GetDsssRate1Mbps()
Return a WifiMode for DSSS at 1Mbps.
Definition: wifi-phy.cc:639
void NotifyMonitorSniffTx(Ptr< const Packet > packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble, uint8_t txPower)
Public method used to fire a MonitorSniffer trace for a wifi packet being transmitted.
Definition: wifi-phy.cc:630
virtual uint32_t GetNModes(void) const =0
The WifiPhy::GetNModes() and WifiPhy::GetMode() methods are used (e.g., by a WifiRemoteStationManager...
static WifiMode GetOfdmRate81MbpsBW40MHz()
Return a WifiMode for OFDM at 81Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1432
802.11 PHY layer model
Definition: wifi-phy.h:126
static WifiMode GetErpOfdmRate18Mbps()
Return a WifiMode for ERP-OFDM at 18Mbps.
Definition: wifi-phy.cc:736
The PHY layer has sense the medium busy through the CCA mechanism.
Definition: wifi-phy.h:141
void(* MonitorSnifferTxCallback)(const Ptr< const Packet > packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble, uint8_t txPower)
TracedCallback signature for monitor mode transmit events.
Definition: wifi-phy.h:1071
Forward calls to a chain of Callback.
uint32_t m_totalAmpduNumSymbols
Number of symbols previously transmitted for the MPDUs in an A-MPDU, used for the computation of the ...
Definition: wifi-phy.h:1225
static WifiMode GetOfdmRate12Mbps()
Return a WifiMode for OFDM at 12Mbps.
Definition: wifi-phy.cc:830
TracedCallback< Ptr< const Packet > > m_phyRxEndTrace
The trace source fired when a packet ends the reception process from the medium.
Definition: wifi-phy.h:1192
virtual uint8_t GetNMcs(void) const =0
The WifiPhy::GetNMcs() method is used (e.g., by a WifiRemoteStationManager) to determine the set of t...
static WifiMode GetOfdmRate43_3MbpsBW20MHz()
Return a WifiMode for OFDM at 43.3Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1238
Callback< void, Ptr< Packet >, double, WifiMode, enum WifiPreamble > RxOkCallback
arg1: packet received successfully arg2: snr of packet arg3: mode of packet arg4: type of preamble us...
Definition: wifi-phy.h:166
virtual double CalculateSnr(WifiMode txMode, double ber) const =0
static WifiMode GetOfdmRate60MbpsBW40MHz()
Return a WifiMode for OFDM at 60Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1419
static WifiMode GetOfdmRate1_5MbpsBW5MHz()
Return a WifiMode for OFDM at 1.5Mbps with 5MHz channel spacing.
Definition: wifi-phy.cc:1016
The PHY layer is sleeping.
Definition: wifi-phy.h:157
static WifiMode GetOfdmRate4_5MbpsBW10MHz()
Return a WifiMode for OFDM at 4.5Mbps with 10MHz channel spacing.
Definition: wifi-phy.cc:923
static WifiMode GetMFPlcpHeaderMode(WifiMode payloadMode, WifiPreamble preamble)
Definition: wifi-phy.cc:121
static WifiMode GetOfdmRate54Mbps()
Return a WifiMode for OFDM at 54Mbps.
Definition: wifi-phy.cc:895
virtual void SetLdpc(bool ldpc)=0
virtual void SetNumberOfReceiveAntennas(uint32_t rx)=0
virtual bool GetLdpc(void) const =0
virtual uint8_t GetMcs(uint8_t mcs) const =0
The WifiPhy::GetMcs() method is used (e.g., by a WifiRemoteStationManager) to determine the set of tr...
void NotifyTxDrop(Ptr< const Packet > packet)
Public method used to fire a PhyTxDrop trace.
Definition: wifi-phy.cc:600
static WifiMode GetOfdmRate108MbpsBW40MHz()
Return a WifiMode for OFDM at 108Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1457
static WifiMode GetOfdmRate21_7MbpsBW20MHz()
Return a WifiMode for OFDM at 21.7Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1185
void NotifyTxBegin(Ptr< const Packet > packet)
Public method used to fire a PhyTxBegin trace.
Definition: wifi-phy.cc:588
virtual uint32_t WifiModeToMcs(WifiMode mode)=0
For a given WifiMode finds the corresponding MCS value and returns it as defined in the IEEE 802...
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
Definition: wifi-mode.h:93
static WifiMode GetOfdmRate135MbpsBW40MHz()
Return a WifiMode for OFDM at 135Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1505
static WifiMode GetOfdmRate36Mbps()
Return a WifiMode for OFDM at 36Mbps.
Definition: wifi-phy.cc:869
static WifiMode GetOfdmRate6MbpsBW5MHz()
Return a WifiMode for OFDM at 6Mbps with 5MHz channel spacing.
Definition: wifi-phy.cc:1068
virtual bool IsStateCcaBusy(void)=0
virtual void RegisterListener(WifiPhyListener *listener)=0
virtual void NotifySwitchingStart(Time duration)=0
virtual void ResumeFromSleep(void)=0
Resume from sleep mode.
virtual bool IsStateIdle(void)=0
static WifiMode GetErpOfdmRate54Mbps()
Return a WifiMode for ERP-OFDM at 54Mbps.
Definition: wifi-phy.cc:788
void NotifyRxDrop(Ptr< const Packet > packet)
Public method used to fire a PhyRxDrop trace.
Definition: wifi-phy.cc:618
virtual bool IsStateSleep(void)=0
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
Definition: wifi-preamble.h:29
static WifiMode GetOfdmRate6_5MbpsBW20MHz()
Return a WifiMode for OFDM at 6.5Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1122
WifiPhyStandard
Identifies the PHY specification that a Wifi device is configured to use.
virtual bool GetStbc(void) const =0
Callback< void, Ptr< const Packet >, double > RxErrorCallback
arg1: packet received unsuccessfully arg2: snr of packet
Definition: wifi-phy.h:171
virtual void NotifyRxEndOk(void)=0
We have received the last bit of a packet for which NotifyRxStart was invoked first and...
static WifiMode GetOfdmRate135MbpsBW40MHzShGi()
Return a WifiMode for OFDM at 135Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1493
virtual void SetFrequency(uint32_t freq)=0
virtual void SetReceiveErrorCallback(RxErrorCallback callback)=0
TracedCallback< Ptr< const Packet >, uint16_t, uint16_t, uint32_t, bool, uint8_t > m_phyMonitorSniffTxTrace
A trace source that emulates a wifi device in monitor mode sniffing a packet being transmitted...
Definition: wifi-phy.h:1223
receive notifications about phy events.
Definition: wifi-phy.h:44
TracedCallback< Ptr< const Packet > > m_phyTxDropTrace
The trace source fired when the phy layer drops a packet as it tries to transmit it.
Definition: wifi-phy.h:1176
virtual void SetGuardInterval(bool guardInterval)=0
The PHY layer is IDLE.
Definition: wifi-phy.h:137
static WifiMode GetErpOfdmRate48Mbps()
Return a WifiMode for ERP-OFDM at 48Mbps.
Definition: wifi-phy.cc:775
static WifiMode GetPlcpHeaderMode(WifiMode payloadMode, WifiPreamble preamble)
Definition: wifi-phy.cc:189
virtual Time GetDelayUntilIdle(void)=0
virtual void SendPacket(Ptr< const Packet > packet, WifiTxVector txvector, enum WifiPreamble preamble, uint8_t packetType)=0
static WifiMode GetOfdmRate12MbpsBW10MHz()
Return a WifiMode for OFDM at 12Mbps with 10MHz channel spacing.
Definition: wifi-phy.cc:962
The PHY layer is receiving a packet.
Definition: wifi-phy.h:149
TracedCallback< Ptr< const Packet > > m_phyRxDropTrace
The trace source fired when the phy layer drops a packet it has received.
Definition: wifi-phy.h:1199
virtual bool IsModeSupported(WifiMode mode) const =0
Check if the given WifiMode is supported by the PHY.
virtual bool GetGuardInterval(void) const =0
virtual ~WifiPhyListener()
Definition: wifi-phy.cc:43
virtual void SetNumberOfTransmitAntennas(uint32_t tx)=0
void NotifyRxBegin(Ptr< const Packet > packet)
Public method used to fire a PhyRxBegin trace.
Definition: wifi-phy.cc:606
static WifiMode GetOfdmRate19_5MbpsBW20MHz()
Return a WifiMode for OFDM at 19.5Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1172
The PHY layer is sending a packet.
Definition: wifi-phy.h:145
static WifiMode GetOfdmRate18Mbps()
Return a WifiMode for OFDM at 18Mbps.
Definition: wifi-phy.cc:843
Time CalculateTxDuration(uint32_t size, WifiTxVector txvector, enum WifiPreamble preamble, double frequency, uint8_t packetType, uint8_t incFlag)
Definition: wifi-phy.cc:576
static WifiMode GetOfdmRate9MbpsBW10MHz()
Return a WifiMode for OFDM at 9Mbps with 10MHz channel spacing.
Definition: wifi-phy.cc:949
TracedCallback< Ptr< const Packet >, uint16_t, uint16_t, uint32_t, bool, double, double > m_phyMonitorSniffRxTrace
A trace source that emulates a wifi device in monitor mode sniffing a packet being received...
Definition: wifi-phy.h:1211
static WifiMode GetOfdmRate12MbpsBW5MHz()
Return a WifiMode for OFDM at 12Mbps with 5MHz channel spacing.
Definition: wifi-phy.cc:1094
virtual uint32_t GetNBssMembershipSelectors(void) const =0
The WifiPhy::NBssMembershipSelectors() method is used (e.g., by a WifiRemoteStationManager) to determ...
static WifiMode GetOfdmRate52MbpsBW20MHz()
Return a WifiMode for OFDM at 52Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1251
The PHY layer is switching to other channel.
Definition: wifi-phy.h:153
static WifiMode GetOfdmRate40_5MbpsBW40MHz()
Return a WifiMode for OFDM at 40.5Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1381
TracedCallback< Ptr< const Packet > > m_phyTxBeginTrace
The trace source fired when a packet begins the transmission process on the medium.
Definition: wifi-phy.h:1160
virtual bool IsStateSwitching(void)=0
static WifiMode GetOfdmRate72_2MbpsBW20MHz()
Return a WifiMode for OFDM at 72.2Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1317
static WifiMode GetOfdmRate65MbpsBW20MHzShGi()
Return a WifiMode for OFDM at 65Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1291
virtual bool IsStateBusy(void)=0
static WifiMode GetOfdmRate48Mbps()
Return a WifiMode for OFDM at 48Mbps.
Definition: wifi-phy.cc:882
virtual void NotifySleep(void)=0
Notify listeners that we went to sleep.
std::ostream & operator<<(std::ostream &os, const Angles &a)
print a struct Angles to output
Definition: angles.cc:42
static Time GetPlcpHeaderDuration(WifiMode payloadMode, WifiPreamble preamble)
Definition: wifi-phy.cc:262
static Time GetPlcpHtSigHeaderDuration(WifiMode payloadMode, WifiPreamble preamble)
Definition: wifi-phy.cc:172
void NotifyMonitorSniffRx(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 MonitorSniffer trace for a wifi packet being received.
Definition: wifi-phy.cc:624
virtual Time GetChannelSwitchDelay(void) const =0
static TypeId GetTypeId(void)
Definition: wifi-phy.cc:54
static Time GetPlcpHtTrainingSymbolDuration(WifiPreamble preamble, WifiTxVector txvector)
Definition: wifi-phy.cc:135
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static WifiMode GetOfdmRate57_8MbpsBW20MHz()
Return a WifiMode for OFDM at 57.8Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1264
virtual void UnregisterListener(WifiPhyListener *listener)=0
static WifiMode GetOfdmRate24Mbps()
Return a WifiMode for OFDM at 24Mbps.
Definition: wifi-phy.cc:856
virtual uint32_t GetBssMembershipSelector(uint32_t selector) const =0
The WifiPhy::BssMembershipSelector() method is used (e.g., by a WifiRemoteStationManager) to determin...
static WifiMode GetOfdmRate13MbpsBW20MHz()
Return a WifiMode for OFDM at 13Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1147
virtual bool IsStateRx(void)=0
virtual void SetGreenfield(bool greenfield)=0
virtual Time GetStateDuration(void)=0
static WifiMode GetOfdmRate65MbpsBW20MHz()
Return a WifiMode for OFDM at 65Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1304
virtual uint16_t GetChannelNumber(void) const =0
Return current channel number.
static WifiMode GetOfdmRate58_5MbpsBW20MHz()
Return a WifiMode for OFDM at 58.5Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1278
virtual WifiMode GetMode(uint32_t mode) const =0
The WifiPhy::GetNModes() and WifiPhy::GetMode() methods are used (e.g., by a WifiRemoteStationManager...
static WifiMode GetDsssRate5_5Mbps()
Return a WifiMode for DSSS at 5.5Mbps.
Definition: wifi-phy.cc:668
virtual void SetStbc(bool stbc)=0
static WifiMode GetOfdmRate2_25MbpsBW5MHz()
Return a WifiMode for OFDM at 2.25Mbps with 5MHz channel spacing.
Definition: wifi-phy.cc:1029
std::vector< WifiMode > WifiModeList
In various parts of the code, folk are interested in maintaining a list of transmission modes...
Definition: wifi-mode.h:177
static WifiMode GetErpOfdmRate9Mbps()
Return a WifiMode for ERP-OFDM at 9Mbps.
Definition: wifi-phy.cc:710
void NotifyTxEnd(Ptr< const Packet > packet)
Public method used to fire a PhyTxEnd trace.
Definition: wifi-phy.cc:594
virtual void SetChannelNumber(uint16_t id)=0
Set channel number.
virtual bool IsStateTx(void)=0
virtual void NotifyRxStart(Time duration)=0
virtual void NotifyRxEndError(void)=0
We have received the last bit of a packet for which NotifyRxStart was invoked first and...
virtual double GetTxPowerEnd(void) const =0
Return the maximum available transmission power level (dBm).
static WifiMode GetOfdmRate15MbpsBW40MHz()
Return a WifiMode for OFDM at 15Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1343
static WifiMode GetOfdmRate121_5MbpsBW40MHz()
Return a WifiMode for OFDM at 121.5Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1481
static WifiMode GetOfdmRate28_9MbpsBW20MHz()
Return a WifiMode for OFDM at 28.9Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1212
static WifiMode GetErpOfdmRate6Mbps()
Return a WifiMode for ERP-OFDM at 6Mbps.
Definition: wifi-phy.cc:697
virtual double GetTxPowerStart(void) const =0
Return the minimum available transmission power level (dBm).
virtual bool GetChannelBonding(void) const =0
static WifiMode GetErpOfdmRate12Mbps()
Return a WifiMode for ERP-OFDM at 12Mbps.
Definition: wifi-phy.cc:723
void NotifyRxEnd(Ptr< const Packet > packet)
Public method used to fire a PhyRxEnd trace.
Definition: wifi-phy.cc:612
static WifiMode GetOfdmRate13_5MbpsBW40MHz()
Return a WifiMode for OFDM at 13.5Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1330
static WifiMode GetOfdmRate30MbpsBW40MHz()
Return a WifiMode for OFDM at 30Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1368
virtual uint32_t GetNTxPower(void) const =0
static WifiMode GetOfdmRate54MbpsBW40MHz()
Return a WifiMode for OFDM at 54Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1406
virtual void SetSleepMode(void)=0
Put in sleep mode.
virtual void SetReceiveOkCallback(RxOkCallback callback)=0
virtual int64_t AssignStreams(int64_t stream)=0
Assign a fixed random variable stream number to the random variables used by this model...
virtual void SetChannelBonding(bool channelbonding)=0
static WifiMode GetOfdmRate90MbpsBW40MHz()
Return a WifiMode for OFDM at 90Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1444
uint32_t m_totalAmpduSize
Total size of the previously transmitted MPDUs in an A-MPDU, used for the computation of the number o...
Definition: wifi-phy.h:1226
static WifiMode GetOfdmRate45MbpsBW40MHz()
Return a WifiMode for OFDM at 45Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1393
static WifiMode GetOfdmRate120MbpsBW40MHz()
Return a WifiMode for OFDM at 120Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1469
static WifiMode GetOfdmRate39MbpsBW20MHz()
Return a WifiMode for OFDM at 39Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1225
A base class which provides memory management and object aggregation.
Definition: object.h:87
static WifiMode GetDsssRate2Mbps()
Return a WifiMode for DSSS at 2Mbps.
Definition: wifi-phy.cc:652
static WifiMode GetOfdmRate6MbpsBW10MHz()
Return a WifiMode for OFDM at 6Mbps with 10MHz channel spacing.
Definition: wifi-phy.cc:936
State
The state of the PHY layer.
Definition: wifi-phy.h:132
static WifiMode GetOfdmRate24MbpsBW10MHz()
Return a WifiMode for OFDM at 24Mbps with 10MHz channel spacing.
Definition: wifi-phy.cc:988
virtual WifiModeList GetMembershipSelectorModes(uint32_t selector)=0
The WifiPhy::GetMembershipSelectorModes() method is used (e.g., by a WifiRemoteStationManager) to det...
static WifiMode GetOfdmRate13_5MbpsBW5MHz()
Return a WifiMode for OFDM at 13.5Mbps with 5MHz channel spacing.
Definition: wifi-phy.cc:1107
virtual Time GetLastRxStartTime(void) const =0
Return the start time of the last received packet.
a unique identifier for an interface.
Definition: type-id.h:51
virtual WifiMode McsToWifiMode(uint8_t mcs)=0
For a given MCS finds the corresponding WifiMode and returns it as defined in the IEEE 802...
Time GetPayloadDuration(uint32_t size, WifiTxVector txvector, WifiPreamble preamble, double frequency, uint8_t packetType, uint8_t incFlag)
Definition: wifi-phy.cc:382
void(* MonitorSnifferRxCallback)(Ptr< const Packet > packet, uint16_t channelFreqMhz, uint16_t channelNumber, uint32_t rate, bool isShortPreamble, double signalDbm, double noiseDbm)
TracedCallback signature for monitor mode receive events.
Definition: wifi-phy.h:1036
static WifiMode GetOfdmRate6Mbps()
Return a WifiMode for OFDM at 6Mbps.
Definition: wifi-phy.cc:804
static WifiMode GetOfdmRate27MbpsBW40MHz()
Return a WifiMode for OFDM at 27Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1356
virtual bool GetGreenfield(void) const =0
virtual uint32_t GetNumberOfReceiveAntennas(void) const =0
static WifiMode GetOfdmRate4_5MbpsBW5MHz()
Return a WifiMode for OFDM at 4.5Mbps with 5MHz channel spacing.
Definition: wifi-phy.cc:1055
static WifiMode GetOfdmRate14_4MbpsBW20MHz()
Return a WifiMode for OFDM at 14.4Mbps with 20MHz channel spacing.
Definition: wifi-phy.cc:1160
static WifiMode GetOfdmRate3MbpsBW10MHz()
Return a WifiMode for OFDM at 3Mbps with 10MHz channel spacing.
Definition: wifi-phy.cc:910
TracedCallback< Ptr< const Packet > > m_phyTxEndTrace
The trace source fired when a packet ends the transmission process on the medium. ...
Definition: wifi-phy.h:1168
virtual void NotifyMaybeCcaBusyStart(Time duration)=0
static WifiMode GetOfdmRate150MbpsBW40MHz()
Return a WifiMode for OFDM at 150Mbps with 40MHz channel spacing.
Definition: wifi-phy.cc:1518
static Time GetPlcpPreambleDuration(WifiMode payloadMode, WifiPreamble preamble)
Definition: wifi-phy.cc:329