A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ofdm-phy.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Orange Labs
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Authors: Rediet <getachew.redieteab@orange.com>
7 * Sébastien Deronne <sebastien.deronne@gmail.com> (for logic ported from wifi-phy)
8 * Mathieu Lacage <mathieu.lacage@sophia.inria.fr> (for logic ported from wifi-phy)
9 */
10
11#ifndef OFDM_PHY_H
12#define OFDM_PHY_H
13
14#include "ns3/phy-entity.h"
15
16/**
17 * \file
18 * \ingroup wifi
19 * Declaration of ns3::OfdmPhy class
20 * and ns3::OfdmPhyVariant enum.
21 */
22
23namespace ns3
24{
25
26/**
27 * \ingroup wifi
28 * The OFDM (11a) PHY variants.
29 *
30 * \see OfdmPhy
31 */
38
39/**
40 * \brief PHY entity for OFDM (11a)
41 * \ingroup wifi
42 *
43 * This class is also used for the 10 MHz and 5 MHz bandwidth
44 * variants addressing vehicular communications (default is 20 MHz
45 * bandwidth).
46 *
47 * Refer to IEEE 802.11-2016, clause 17.
48 */
49class OfdmPhy : public PhyEntity
50{
51 public:
52 /**
53 * Constructor for OFDM PHY
54 *
55 * \param variant the OFDM PHY variant
56 * \param buildModeList flag used to add OFDM modes to list (disabled
57 * by child classes to only add child classes' modes)
58 */
59 OfdmPhy(OfdmPhyVariant variant = OFDM_PHY_DEFAULT, bool buildModeList = true);
60 /**
61 * Destructor for OFDM PHY
62 */
63 ~OfdmPhy() override;
64
65 WifiMode GetSigMode(WifiPpduField field, const WifiTxVector& txVector) const override;
66 const PpduFormats& GetPpduFormats() const override;
67 Time GetDuration(WifiPpduField field, const WifiTxVector& txVector) const override;
69 const WifiTxVector& txVector,
70 WifiPhyBand band,
71 MpduType mpdutype,
72 bool incFlag,
73 uint32_t& totalAmpduSize,
74 double& totalAmpduNumSymbols,
75 uint16_t staId) const override;
77 const WifiTxVector& txVector,
78 Time ppduDuration) override;
80 WifiChannelListType channelType) const override;
82
83 /**
84 * Initialize all OFDM modes (for all variants).
85 */
86 static void InitializeModes();
87 /**
88 * Return a WifiMode for OFDM
89 * corresponding to the provided rate and
90 * the channel bandwidth (20, 10, or 5 MHz).
91 *
92 * \param rate the rate in bps
93 * \param bw the bandwidth
94 * \return a WifiMode for OFDM
95 */
96 static WifiMode GetOfdmRate(uint64_t rate, MHz_u bw = 20);
97 /**
98 * Return a WifiMode for OFDM at 6 Mbps.
99 *
100 * \return a WifiMode for OFDM at 6 Mbps
101 */
103 /**
104 * Return a WifiMode for OFDM at 9 Mbps.
105 *
106 * \return a WifiMode for OFDM at 9 Mbps
107 */
109 /**
110 * Return a WifiMode for OFDM at 12Mbps.
111 *
112 * \return a WifiMode for OFDM at 12 Mbps
113 */
115 /**
116 * Return a WifiMode for OFDM at 18 Mbps.
117 *
118 * \return a WifiMode for OFDM at 18 Mbps
119 */
121 /**
122 * Return a WifiMode for OFDM at 24 Mbps.
123 *
124 * \return a WifiMode for OFDM at 24 Mbps
125 */
127 /**
128 * Return a WifiMode for OFDM at 36 Mbps.
129 *
130 * \return a WifiMode for OFDM at 36 Mbps
131 */
133 /**
134 * Return a WifiMode for OFDM at 48 Mbps.
135 *
136 * \return a WifiMode for OFDM at 48 Mbps
137 */
139 /**
140 * Return a WifiMode for OFDM at 54 Mbps.
141 *
142 * \return a WifiMode for OFDM at 54 Mbps
143 */
145 /**
146 * Return a WifiMode for OFDM at 3 Mbps with 10 MHz channel spacing.
147 *
148 * \return a WifiMode for OFDM at 3 Mbps with 10 MHz channel spacing
149 */
151 /**
152 * Return a WifiMode for OFDM at 4.5 Mbps with 10 MHz channel spacing.
153 *
154 * \return a WifiMode for OFDM at 4.5 Mbps with 10 MHz channel spacing
155 */
157 /**
158 * Return a WifiMode for OFDM at 6 Mbps with 10 MHz channel spacing.
159 *
160 * \return a WifiMode for OFDM at 6 Mbps with 10 MHz channel spacing
161 */
163 /**
164 * Return a WifiMode for OFDM at 9 Mbps with 10 MHz channel spacing.
165 *
166 * \return a WifiMode for OFDM at 9 Mbps with 10 MHz channel spacing
167 */
169 /**
170 * Return a WifiMode for OFDM at 12 Mbps with 10 MHz channel spacing.
171 *
172 * \return a WifiMode for OFDM at 12 Mbps with 10 MHz channel spacing
173 */
175 /**
176 * Return a WifiMode for OFDM at 18 Mbps with 10 MHz channel spacing.
177 *
178 * \return a WifiMode for OFDM at 18 Mbps with 10 MHz channel spacing
179 */
181 /**
182 * Return a WifiMode for OFDM at 24 Mbps with 10 MHz channel spacing.
183 *
184 * \return a WifiMode for OFDM at 24 Mbps with 10 MHz channel spacing
185 */
187 /**
188 * Return a WifiMode for OFDM at 27 Mbps with 10 MHz channel spacing.
189 *
190 * \return a WifiMode for OFDM at 27 Mbps with 10 MHz channel spacing
191 */
193 /**
194 * Return a WifiMode for OFDM at 1.5 Mbps with 5 MHz channel spacing.
195 *
196 * \return a WifiMode for OFDM at 1.5 Mbps with 5 MHz channel spacing
197 */
199 /**
200 * Return a WifiMode for OFDM at 2.25 Mbps with 5 MHz channel spacing.
201 *
202 * \return a WifiMode for OFDM at 2.25 Mbps with 5 MHz channel spacing
203 */
205 /**
206 * Return a WifiMode for OFDM at 3 Mbps with 5 MHz channel spacing.
207 *
208 * \return a WifiMode for OFDM at 3 Mbps with 5 MHz channel spacing
209 */
211 /**
212 * Return a WifiMode for OFDM at 4.5 Mbps with 5 MHz channel spacing.
213 *
214 * \return a WifiMode for OFDM at 4.5 Mbps with 5 MHz channel spacing
215 */
217 /**
218 * Return a WifiMode for OFDM at 6 Mbps with 5 MHz channel spacing.
219 *
220 * \return a WifiMode for OFDM at 6 Mbps with 5 MHz channel spacing
221 */
223 /**
224 * Return a WifiMode for OFDM at 9 Mbps with 5 MHz channel spacing.
225 *
226 * \return a WifiMode for OFDM at 9 Mbps with 5 MHz channel spacing
227 */
229 /**
230 * Return a WifiMode for OFDM at 12 Mbps with 5 MHz channel spacing.
231 *
232 * \return a WifiMode for OFDM at 12 Mbps with 5 MHz channel spacing
233 */
235 /**
236 * Return a WifiMode for OFDM at 13.5 Mbps with 5 MHz channel spacing.
237 *
238 * \return a WifiMode for OFDM at 13.5 Mbps with 5 MHz channel spacing
239 */
241
242 /**
243 * Return the WifiCodeRate from the OFDM mode's unique name using
244 * ModulationLookupTable. This is mainly used as a callback for
245 * WifiMode operation.
246 *
247 * \param name the unique name of the OFDM mode
248 * \return WifiCodeRate corresponding to the unique name
249 */
250 static WifiCodeRate GetCodeRate(const std::string& name);
251 /**
252 * Return the constellation size from the OFDM mode's unique name using
253 * ModulationLookupTable. This is mainly used as a callback for
254 * WifiMode operation.
255 *
256 * \param name the unique name of the OFDM mode
257 * \return constellation size corresponding to the unique name
258 */
259 static uint16_t GetConstellationSize(const std::string& name);
260 /**
261 * Return the PHY rate from the OFDM mode's unique name and
262 * the supplied parameters. This function calls CalculatePhyRate
263 * and is mainly used as a callback for WifiMode operation.
264 *
265 * \param name the unique name of the OFDM mode
266 * \param channelWidth the considered channel width
267 *
268 * \return the physical bit rate of this signal in bps.
269 */
270 static uint64_t GetPhyRate(const std::string& name, MHz_u channelWidth);
271
272 /**
273 * Return the PHY rate corresponding to
274 * the supplied TXVECTOR.
275 * This function is mainly used as a callback
276 * for WifiMode operation.
277 *
278 * \param txVector the TXVECTOR used for the transmission
279 * \param staId the station ID (only here to have a common signature for all callbacks)
280 * \return the physical bit rate of this signal in bps.
281 */
282 static uint64_t GetPhyRateFromTxVector(const WifiTxVector& txVector, uint16_t staId);
283 /**
284 * Return the data rate corresponding to
285 * the supplied TXVECTOR.
286 * This function is mainly used as a callback
287 * for WifiMode operation.
288 *
289 * \param txVector the TXVECTOR used for the transmission
290 * \param staId the station ID (only here to have a common signature for all callbacks)
291 * \return the data bit rate in bps.
292 */
293 static uint64_t GetDataRateFromTxVector(const WifiTxVector& txVector, uint16_t staId);
294 /**
295 * Return the data rate from the OFDM mode's unique name and
296 * the supplied parameters. This function calls CalculateDataRate and
297 * is mainly used as a callback for WifiMode operation.
298 *
299 * \param name the unique name of the OFDM mode
300 * \param channelWidth the considered channel width
301 *
302 * \return the data bit rate of this signal in bps.
303 */
304 static uint64_t GetDataRate(const std::string& name, MHz_u channelWidth);
305 /**
306 * Check whether the combination in TXVECTOR is allowed.
307 * This function is used as a callback for WifiMode operation.
308 *
309 * \param txVector the TXVECTOR
310 * \returns true if this combination is allowed, false otherwise.
311 */
312 static bool IsAllowed(const WifiTxVector& txVector);
313
314 protected:
317 Ptr<const WifiPpdu> ppdu) const override;
318 uint32_t GetMaxPsduSize() const override;
319 MHz_u GetMeasurementChannelWidth(const Ptr<const WifiPpdu> ppdu) const override;
320
321 /**
322 * \param txVector the transmission parameters
323 * \return the WifiMode used for the SIGNAL field
324 */
325 virtual WifiMode GetHeaderMode(const WifiTxVector& txVector) const;
326
327 /**
328 * \param txVector the transmission parameters
329 * \return the duration of the preamble field
330 *
331 * \see WIFI_PPDU_FIELD_PREAMBLE
332 */
333 virtual Time GetPreambleDuration(const WifiTxVector& txVector) const;
334 /**
335 * \param txVector the transmission parameters
336 * \return the duration of the SIGNAL field
337 */
338 virtual Time GetHeaderDuration(const WifiTxVector& txVector) const;
339
340 /**
341 * \return the number of service bits
342 */
343 uint8_t GetNumberServiceBits() const;
344 /**
345 * \param band the frequency band being used
346 * \return the signal extension duration
347 */
349
350 /**
351 * End receiving the header, perform OFDM-specific actions, and
352 * provide the status of the reception.
353 *
354 * \param event the event holding incoming PPDU's information
355 * \return status of the reception of the header
356 */
358
359 /**
360 * Checks if the PPDU's bandwidth is supported by the PHY.
361 *
362 * \param ppdu the received PPDU
363 * \return \c true if supported, \c false otherwise
364 */
365 virtual bool IsChannelWidthSupported(Ptr<const WifiPpdu> ppdu) const;
366 /**
367 * Checks if the signaled configuration (including bandwidth)
368 * is supported by the PHY.
369 *
370 * \param field the current PPDU field (SIG used for checking config)
371 * \param ppdu the received PPDU
372 * \return \c true if supported, \c false otherwise
373 */
374 virtual bool IsAllConfigSupported(WifiPpduField field, Ptr<const WifiPpdu> ppdu) const;
375
376 /**
377 * Calculate the PHY rate in bps from code rate and data rate.
378 *
379 * \param codeRate the WifiCodeRate
380 * \param dataRate the data rate in bps
381 * \return the physical rate in bps from WifiCodeRate and data rate.
382 */
383 static uint64_t CalculatePhyRate(WifiCodeRate codeRate, uint64_t dataRate);
384 /**
385 * Convert WifiCodeRate to a ratio, e.g., code ratio of WIFI_CODE_RATE_1_2 is 0.5.
386 *
387 * \param codeRate the WifiCodeRate
388 * \return the ratio form of WifiCodeRate.
389 */
390 static double GetCodeRatio(WifiCodeRate codeRate);
391 /**
392 * Calculates data rate from the supplied parameters.
393 *
394 * \param codeRate the code rate of the mode
395 * \param constellationSize the size of modulation constellation
396 * \param channelWidth the considered channel width
397 *
398 * \return the data bit rate of this signal in bps.
399 */
400 static uint64_t CalculateDataRate(WifiCodeRate codeRate,
401 uint16_t constellationSize,
402 MHz_u channelWidth);
403 /**
404 * Calculates data rate from the supplied parameters.
405 *
406 * \param symbolDuration the symbol duration
407 * \param usableSubCarriers the number of usable subcarriers for data
408 * \param numberOfBitsPerSubcarrier the number of data bits per subcarrier
409 * \param codingRate the coding rate
410 *
411 * \return the data bit rate of this signal in bps.
412 */
413 static uint64_t CalculateDataRate(Time symbolDuration,
414 uint16_t usableSubCarriers,
415 uint16_t numberOfBitsPerSubcarrier,
416 double codingRate);
417
418 /**
419 * \return the number of usable subcarriers for data
420 */
421 static uint16_t GetUsableSubcarriers();
422
423 /**
424 * \param channelWidth the channel width
425 * \return the symbol duration
426 */
427 static Time GetSymbolDuration(MHz_u channelWidth);
428
429 private:
430 /**
431 * Create an OFDM mode from a unique name, the unique name
432 * must already be contained inside ModulationLookupTable.
433 * This method binds all the callbacks used by WifiMode.
434 *
435 * \param uniqueName the unique name of the WifiMode
436 * \param isMandatory whether the WifiMode is mandatory
437 * \return the OFDM WifiMode
438 */
439 static WifiMode CreateOfdmMode(std::string uniqueName, bool isMandatory);
440
441 static const PpduFormats m_ofdmPpduFormats; //!< OFDM PPDU formats
442
443 static const ModulationLookupTable
444 m_ofdmModulationLookupTable; //!< lookup table to retrieve code rate and constellation size
445 //!< corresponding to a unique name of modulation
446}; // class OfdmPhy
447
448} // namespace ns3
449
450#endif /* OFDM_PHY_H */
PHY entity for OFDM (11a)
Definition ofdm-phy.h:50
static WifiMode GetOfdmRate6Mbps()
Return a WifiMode for OFDM at 6 Mbps.
uint32_t GetMaxPsduSize() const override
Get the maximum PSDU size in bytes.
Definition ofdm-phy.cc:652
~OfdmPhy() override
Destructor for OFDM PHY.
Definition ofdm-phy.cc:138
static WifiMode GetOfdmRate(uint64_t rate, MHz_u bw=20)
Return a WifiMode for OFDM corresponding to the provided rate and the channel bandwidth (20,...
Definition ofdm-phy.cc:404
static WifiMode GetOfdmRate13_5MbpsBW5MHz()
Return a WifiMode for OFDM at 13.5 Mbps with 5 MHz channel spacing.
static WifiMode GetOfdmRate48Mbps()
Return a WifiMode for OFDM at 48 Mbps.
dBm_u GetCcaThreshold(const Ptr< const WifiPpdu > ppdu, WifiChannelListType channelType) const override
Return the CCA threshold for a given channel type.
Definition ofdm-phy.cc:668
static const PpduFormats m_ofdmPpduFormats
OFDM PPDU formats.
Definition ofdm-phy.h:441
static uint16_t GetConstellationSize(const std::string &name)
Return the constellation size from the OFDM mode's unique name using ModulationLookupTable.
Definition ofdm-phy.cc:547
static WifiMode GetOfdmRate54Mbps()
Return a WifiMode for OFDM at 54 Mbps.
uint8_t GetNumberServiceBits() const
Definition ofdm-phy.cc:273
static WifiCodeRate GetCodeRate(const std::string &name)
Return the WifiCodeRate from the OFDM mode's unique name using ModulationLookupTable.
Definition ofdm-phy.cc:541
static uint64_t GetPhyRateFromTxVector(const WifiTxVector &txVector, uint16_t staId)
Return the PHY rate corresponding to the supplied TXVECTOR.
Definition ofdm-phy.cc:567
static WifiMode GetOfdmRate36Mbps()
Return a WifiMode for OFDM at 36 Mbps.
static WifiMode GetOfdmRate3MbpsBW10MHz()
Return a WifiMode for OFDM at 3 Mbps with 10 MHz channel spacing.
static void InitializeModes()
Initialize all OFDM modes (for all variants).
Definition ofdm-phy.cc:392
virtual bool IsAllConfigSupported(WifiPpduField field, Ptr< const WifiPpdu > ppdu) const
Checks if the signaled configuration (including bandwidth) is supported by the PHY.
Definition ofdm-phy.cc:347
PhyFieldRxStatus EndReceiveHeader(Ptr< Event > event)
End receiving the header, perform OFDM-specific actions, and provide the status of the reception.
Definition ofdm-phy.cc:310
static WifiMode GetOfdmRate2_25MbpsBW5MHz()
Return a WifiMode for OFDM at 2.25 Mbps with 5 MHz channel spacing.
const PpduFormats & GetPpduFormats() const override
Return the PPDU formats of the PHY.
Definition ofdm-phy.cc:177
static uint64_t GetDataRate(const std::string &name, MHz_u channelWidth)
Return the data rate from the OFDM mode's unique name and the supplied parameters.
Definition ofdm-phy.cc:597
static bool IsAllowed(const WifiTxVector &txVector)
Check whether the combination in TXVECTOR is allowed.
Definition ofdm-phy.cc:646
static WifiMode GetOfdmRate6MbpsBW5MHz()
Return a WifiMode for OFDM at 6 Mbps with 5 MHz channel spacing.
OfdmPhy(OfdmPhyVariant variant=OFDM_PHY_DEFAULT, bool buildModeList=true)
Constructor for OFDM PHY.
Definition ofdm-phy.cc:98
static uint64_t GetDataRateFromTxVector(const WifiTxVector &txVector, uint16_t staId)
Return the data rate corresponding to the supplied TXVECTOR.
Definition ofdm-phy.cc:591
static WifiMode GetOfdmRate1_5MbpsBW5MHz()
Return a WifiMode for OFDM at 1.5 Mbps with 5 MHz channel spacing.
static WifiMode GetOfdmRate18MbpsBW10MHz()
Return a WifiMode for OFDM at 18 Mbps with 10 MHz channel spacing.
static Time GetSymbolDuration(MHz_u channelWidth)
Definition ofdm-phy.cc:630
static WifiMode GetOfdmRate12MbpsBW10MHz()
Return a WifiMode for OFDM at 12 Mbps with 10 MHz channel spacing.
static uint16_t GetUsableSubcarriers()
Definition ofdm-phy.cc:624
static WifiMode GetOfdmRate9MbpsBW10MHz()
Return a WifiMode for OFDM at 9 Mbps with 10 MHz channel spacing.
static WifiMode GetOfdmRate4_5MbpsBW5MHz()
Return a WifiMode for OFDM at 4.5 Mbps with 5 MHz channel spacing.
static WifiMode GetOfdmRate3MbpsBW5MHz()
Return a WifiMode for OFDM at 3 Mbps with 5 MHz channel spacing.
virtual Time GetPreambleDuration(const WifiTxVector &txVector) const
Definition ofdm-phy.cc:197
Ptr< const WifiPpdu > GetRxPpduFromTxPpdu(Ptr< const WifiPpdu > ppdu) override
The WifiPpdu from the TX PHY is received by each RX PHY attached to the same channel.
Definition ofdm-phy.cc:681
static WifiMode GetOfdmRate27MbpsBW10MHz()
Return a WifiMode for OFDM at 27 Mbps with 10 MHz channel spacing.
Ptr< SpectrumValue > GetTxPowerSpectralDensity(Watt_u txPower, Ptr< const WifiPpdu > ppdu) const override
Definition ofdm-phy.cc:357
static WifiMode GetOfdmRate9MbpsBW5MHz()
Return a WifiMode for OFDM at 9 Mbps with 5 MHz channel spacing.
Ptr< WifiPpdu > BuildPpdu(const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override
Build amendment-specific PPDU.
Definition ofdm-phy.cc:285
static WifiMode GetOfdmRate12Mbps()
Return a WifiMode for OFDM at 12Mbps.
static WifiMode CreateOfdmMode(std::string uniqueName, bool isMandatory)
Create an OFDM mode from a unique name, the unique name must already be contained inside ModulationLo...
Definition ofdm-phy.cc:523
static WifiMode GetOfdmRate24MbpsBW10MHz()
Return a WifiMode for OFDM at 24 Mbps with 10 MHz channel spacing.
static WifiMode GetOfdmRate18Mbps()
Return a WifiMode for OFDM at 18 Mbps.
static uint64_t CalculatePhyRate(WifiCodeRate codeRate, uint64_t dataRate)
Calculate the PHY rate in bps from code rate and data rate.
Definition ofdm-phy.cc:561
static WifiMode GetOfdmRate6MbpsBW10MHz()
Return a WifiMode for OFDM at 6 Mbps with 10 MHz channel spacing.
MHz_u GetMeasurementChannelWidth(const Ptr< const WifiPpdu > ppdu) const override
Return the channel width used to measure the RSSI.
Definition ofdm-phy.cc:658
static WifiMode GetOfdmRate24Mbps()
Return a WifiMode for OFDM at 24 Mbps.
Time GetDuration(WifiPpduField field, const WifiTxVector &txVector) const override
Get the duration of the PPDU field (or group of fields) used by this entity for the given transmissio...
Definition ofdm-phy.cc:183
PhyFieldRxStatus DoEndReceiveField(WifiPpduField field, Ptr< Event > event) override
End receiving a given field, perform amendment-specific actions, and provide the status of the recept...
Definition ofdm-phy.cc:299
static uint64_t CalculateDataRate(WifiCodeRate codeRate, uint16_t constellationSize, MHz_u channelWidth)
Calculates data rate from the supplied parameters.
Definition ofdm-phy.cc:605
virtual Time GetHeaderDuration(const WifiTxVector &txVector) const
Definition ofdm-phy.cc:221
virtual WifiMode GetHeaderMode(const WifiTxVector &txVector) const
Definition ofdm-phy.cc:158
WifiMode GetSigMode(WifiPpduField field, const WifiTxVector &txVector) const override
Get the WifiMode for the SIG field specified by the PPDU field.
Definition ofdm-phy.cc:144
static WifiMode GetOfdmRate12MbpsBW5MHz()
Return a WifiMode for OFDM at 12 Mbps with 5 MHz channel spacing.
static uint64_t GetPhyRate(const std::string &name, MHz_u channelWidth)
Return the PHY rate from the OFDM mode's unique name and the supplied parameters.
Definition ofdm-phy.cc:553
static const ModulationLookupTable m_ofdmModulationLookupTable
lookup table to retrieve code rate and constellation size corresponding to a unique name of modulatio...
Definition ofdm-phy.h:444
static WifiMode GetOfdmRate4_5MbpsBW10MHz()
Return a WifiMode for OFDM at 4.5 Mbps with 10 MHz channel spacing.
static WifiMode GetOfdmRate9Mbps()
Return a WifiMode for OFDM at 9 Mbps.
virtual bool IsChannelWidthSupported(Ptr< const WifiPpdu > ppdu) const
Checks if the PPDU's bandwidth is supported by the PHY.
Definition ofdm-phy.cc:334
static double GetCodeRatio(WifiCodeRate codeRate)
Convert WifiCodeRate to a ratio, e.g., code ratio of WIFI_CODE_RATE_1_2 is 0.5.
Definition ofdm-phy.cc:573
Time GetSignalExtension(WifiPhyBand band) const
Definition ofdm-phy.cc:279
Time GetPayloadDuration(uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, MpduType mpdutype, bool incFlag, uint32_t &totalAmpduSize, double &totalAmpduNumSymbols, uint16_t staId) const override
Definition ofdm-phy.cc:245
Abstract class for PHY entities.
Definition phy-entity.h:64
std::map< std::string, CodeRateConstellationSizePair > ModulationLookupTable
A modulation lookup table using unique name of modulation as key.
Definition phy-entity.h:539
std::map< WifiPreamble, std::vector< WifiPpduField > > PpduFormats
A map of PPDU field elements per preamble type.
Definition phy-entity.h:529
Smart pointer class similar to boost::intrusive_ptr.
Simulation virtual time values and global simulation resolution.
Definition nstime.h:94
represent a single transmission mode
Definition wifi-mode.h:40
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
WifiPhyBand
Identifies the PHY band.
OfdmPhyVariant
The OFDM (11a) PHY variants.
Definition ofdm-phy.h:33
WifiChannelListType
Enumeration of the possible channel-list parameter elements defined in Table 8-5 of IEEE 802....
WifiPpduField
The type of PPDU field (grouped for convenience)
MpduType
The type of an MPDU.
Definition wifi-types.h:41
@ OFDM_PHY_10_MHZ
Definition ofdm-phy.h:35
@ OFDM_PHY_DEFAULT
Definition ofdm-phy.h:34
@ OFDM_PHY_5_MHZ
Definition ofdm-phy.h:36
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::unordered_map< uint16_t, Ptr< const WifiPsdu > > WifiConstPsduMap
Map of const PSDUs indexed by STA-ID.
WifiCodeRate
These constants define the various convolutional coding rates used for the OFDM transmission modes in...
Status of the reception of the PPDU field.
Definition phy-entity.h:80