A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
interference-helper.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2005,2006 INRIA
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
18 */
19
20#ifndef INTERFERENCE_HELPER_H
21#define INTERFERENCE_HELPER_H
22
23#include "phy-entity.h"
24
25#include "ns3/object.h"
26
27namespace ns3
28{
29
30class WifiPpdu;
31class WifiPsdu;
32class ErrorRateModel;
33
34/**
35 * \ingroup wifi
36 * \brief handles interference calculations
37 * \brief signal event for a PPDU.
38 */
39class Event : public SimpleRefCount<Event>
40{
41 public:
42 /**
43 * Create an Event with the given parameters. Note that <i>rxPower</i> will
44 * be moved into this object.
45 *
46 * \param ppdu the PPDU
47 * \param duration duration of the PPDU
48 * \param rxPower the received power per band (W)
49 */
51
52 /**
53 * Return the PPDU.
54 *
55 * \return the PPDU
56 */
58 /**
59 * Return the start time of the signal.
60 *
61 * \return the start time of the signal
62 */
63 Time GetStartTime() const;
64 /**
65 * Return the end time of the signal.
66 *
67 * \return the end time of the signal
68 */
69 Time GetEndTime() const;
70 /**
71 * Return the duration of the signal.
72 *
73 * \return the duration of the signal
74 */
75 Time GetDuration() const;
76 /**
77 * Return the total received power (W).
78 *
79 * \return the total received power (W)
80 */
81 double GetRxPowerW() const;
82 /**
83 * Return the received power (W) for a given band.
84 *
85 * \param band the band for which the power should be returned
86 * \return the received power (W) for a given band
87 */
88 double GetRxPowerW(const WifiSpectrumBandInfo& band) const;
89 /**
90 * Return the received power (W) for all bands.
91 *
92 * \return the received power (W) for all bands.
93 */
95 /**
96 * Update the received power (W) for all bands, i.e. add up the received power
97 * to the current received power, for each band.
98 *
99 * \param rxPower the received power (W) for all bands.
100 */
101 void UpdateRxPowerW(const RxPowerWattPerChannelBand& rxPower);
102 /**
103 * Update the PPDU that initially generated the event.
104 * This is needed to have the PPDU holding the correct TXVECTOR
105 * upon reception of multiple signals carring the same content
106 * but over different channel width (typically non-HT duplicates).
107 *
108 * \param ppdu the new PPDU to use for this event.
109 */
111
112 private:
114 Time m_startTime; //!< start time
115 Time m_endTime; //!< end time
116 RxPowerWattPerChannelBand m_rxPowerW; //!< received power in watts per band
117};
118
119/**
120 * \brief Stream insertion operator.
121 *
122 * \param os the stream
123 * \param event the event
124 * \returns a reference to the stream
125 */
126std::ostream& operator<<(std::ostream& os, const Event& event);
127
128/**
129 * \ingroup wifi
130 * \brief handles interference calculations
131 */
133{
134 public:
136 ~InterferenceHelper() override;
137
138 /**
139 * \brief Get the type ID.
140 * \return the object TypeId
141 */
142 static TypeId GetTypeId();
143
144 /**
145 * Add a frequency band.
146 *
147 * \param band the band to be added
148 */
149 void AddBand(const WifiSpectrumBandInfo& band);
150
151 /**
152 * Check whether bands are already tracked by this interference helper.
153 *
154 * \return true if bands are tracked by this interference helper, false otherwise
155 */
156 bool HasBands() const;
157
158 /**
159 * Update the frequency bands that belongs to a given frequency range when the spectrum model is
160 * changed.
161 *
162 * \param bands the bands to be added in the new spectrum model
163 * \param freqRange the frequency range the bands belong to
164 */
165 void UpdateBands(const std::vector<WifiSpectrumBandInfo>& bands,
166 const FrequencyRange& freqRange);
167
168 /**
169 * Set the noise figure.
170 *
171 * \param value noise figure in linear scale
172 */
173 void SetNoiseFigure(double value);
174 /**
175 * Set the error rate model for this interference helper.
176 *
177 * \param rate Error rate model
178 */
179 void SetErrorRateModel(const Ptr<ErrorRateModel> rate);
180
181 /**
182 * Return the error rate model.
183 *
184 * \return Error rate model
185 */
187 /**
188 * Set the number of RX antennas in the receiver corresponding to this
189 * interference helper.
190 *
191 * \param rx the number of RX antennas
192 */
193 void SetNumberOfReceiveAntennas(uint8_t rx);
194
195 /**
196 * \param energyW the minimum energy (W) requested
197 * \param band identify the requested band
198 *
199 * \returns the expected amount of time the observed
200 * energy on the medium for a given band will
201 * be higher than the requested threshold.
202 */
203 Time GetEnergyDuration(double energyW, const WifiSpectrumBandInfo& band);
204
205 /**
206 * Add the PPDU-related signal to interference helper.
207 *
208 * \param ppdu the PPDU
209 * \param duration the PPDU duration
210 * \param rxPower received power per band (W)
211 * \param freqRange the frequency range in which the received signal is detected
212 * \param isStartHePortionRxing flag whether the event corresponds to the start of the HE
213 * portion reception (only used for MU)
214 *
215 * \return Event
216 */
218 Time duration,
220 const FrequencyRange& freqRange,
221 bool isStartHePortionRxing = false);
222
223 /**
224 * Add a non-Wifi signal to interference helper.
225 * \param duration the duration of the signal
226 * \param rxPower received power per band (W)
227 * \param freqRange the frequency range in which the received signal is detected
228 */
229 void AddForeignSignal(Time duration,
231 const FrequencyRange& freqRange);
232 /**
233 * Calculate the SNIR at the start of the payload and accumulate
234 * all SNIR changes in the SNIR vector for each MPDU of an A-MPDU.
235 * This workaround is required in order to provide one PER per MPDU, for
236 * reception success/failure evaluation, while hiding aggregation details from
237 * this class.
238 *
239 * \param event the event corresponding to the first time the corresponding PPDU arrives
240 * \param channelWidth the channel width used to transmit the PSDU (in MHz)
241 * \param band identify the band used by the PSDU
242 * \param staId the station ID of the PSDU (only used for MU)
243 * \param relativeMpduStartStop the time window (pair of start and end times) of PHY payload to
244 * focus on
245 *
246 * \return struct of SNR and PER (with PER being evaluated over the provided time window)
247 */
249 uint16_t channelWidth,
250 const WifiSpectrumBandInfo& band,
251 uint16_t staId,
252 std::pair<Time, Time> relativeMpduStartStop) const;
253 /**
254 * Calculate the SNIR for the event (starting from now until the event end).
255 *
256 * \param event the event corresponding to the first time the corresponding PPDU arrives
257 * \param channelWidth the channel width (in MHz)
258 * \param nss the number of spatial streams
259 * \param band identify the band used by the PSDU
260 *
261 * \return the SNR for the PPDU in linear scale
262 */
263 double CalculateSnr(Ptr<Event> event,
264 uint16_t channelWidth,
265 uint8_t nss,
266 const WifiSpectrumBandInfo& band) const;
267 /**
268 * Calculate the SNIR at the start of the PHY header and accumulate
269 * all SNIR changes in the SNIR vector.
270 *
271 * \param event the event corresponding to the first time the corresponding PPDU arrives
272 * \param channelWidth the channel width (in MHz) for header measurement
273 * \param band identify the band used by the PSDU
274 * \param header the PHY header to consider
275 *
276 * \return struct of SNR and PER
277 */
279 uint16_t channelWidth,
280 const WifiSpectrumBandInfo& band,
281 WifiPpduField header) const;
282
283 /**
284 * Notify that RX has started.
285 * \param freqRange the frequency range in which the received signal event is detected
286 */
287 void NotifyRxStart(const FrequencyRange& freqRange);
288 /**
289 * Notify that RX has ended.
290 *
291 * \param endTime the end time of the signal
292 * \param freqRange the frequency range in which the received signal event was detected
293 */
294 void NotifyRxEnd(Time endTime, const FrequencyRange& freqRange);
295
296 /**
297 * Update event to scale its received power (W) per band.
298 *
299 * \param event the event to be updated
300 * \param rxPower the received power (W) per band to be added to the current event
301 */
302 void UpdateEvent(Ptr<Event> event, const RxPowerWattPerChannelBand& rxPower);
303
304 protected:
305 void DoDispose() override;
306
307 /**
308 * Calculate SNR (linear ratio) from the given signal power and noise+interference power.
309 *
310 * \param signal signal power, W
311 * \param noiseInterference noise and interference power, W
312 * \param channelWidth signal width (MHz)
313 * \param nss the number of spatial streams
314 *
315 * \return SNR in linear scale
316 */
317 double CalculateSnr(double signal,
318 double noiseInterference,
319 uint16_t channelWidth,
320 uint8_t nss) const;
321 /**
322 * Calculate the success rate of the chunk given the SINR, duration, and TXVECTOR.
323 * The duration and TXVECTOR are used to calculate how many bits are present in the chunk.
324 *
325 * \param snir the SINR
326 * \param duration the duration of the chunk
327 * \param mode the WifiMode
328 * \param txVector the TXVECTOR
329 * \param field the PPDU field to which the chunk belongs to
330 *
331 * \return the success rate
332 */
333 double CalculateChunkSuccessRate(double snir,
334 Time duration,
335 WifiMode mode,
336 const WifiTxVector& txVector,
337 WifiPpduField field) const;
338 /**
339 * Calculate the success rate of the payload chunk given the SINR, duration, and TXVECTOR.
340 * The duration and TXVECTOR are used to calculate how many bits are present in the payload
341 * chunk.
342 *
343 * \param snir the SINR
344 * \param duration the duration of the chunk
345 * \param txVector the TXVECTOR
346 * \param staId the station ID of the PSDU (only used for MU)
347 *
348 * \return the success rate
349 */
350 double CalculatePayloadChunkSuccessRate(double snir,
351 Time duration,
352 const WifiTxVector& txVector,
353 uint16_t staId = SU_STA_ID) const;
354
355 private:
356 /**
357 * Noise and Interference (thus Ni) event.
358 */
360 {
361 public:
362 /**
363 * Create a NiChange at the given time and the amount of NI change.
364 *
365 * \param power the power in watts
366 * \param event causes this NI change
367 */
368 NiChange(double power, Ptr<Event> event);
369 ~NiChange();
370 /**
371 * Return the power
372 *
373 * \return the power in watts
374 */
375 double GetPower() const;
376 /**
377 * Add a given amount of power.
378 *
379 * \param power the power to be added to the existing value in watts
380 */
381 void AddPower(double power);
382 /**
383 * Return the event causes the corresponding NI change
384 *
385 * \return the event
386 */
387 Ptr<Event> GetEvent() const;
388
389 private:
390 double m_power; ///< power in watts
391 Ptr<Event> m_event; ///< event
392 };
393
394 /**
395 * typedef for a multimap of NiChange
396 */
397 using NiChanges = std::multimap<Time, NiChange>;
398
399 /**
400 * Map of NiChanges per band
401 */
402 using NiChangesPerBand = std::map<WifiSpectrumBandInfo, NiChanges>;
403
404 /**
405 * Map of first power per band
406 */
407 using FirstPowerPerBand = std::map<WifiSpectrumBandInfo, double>;
408
409 /**
410 * Check whether a given band is tracked by this interference helper.
411 *
412 * \param band the band to be checked
413 * \return true if the band is already tracked by this interference helper, false otherwise
414 */
415 bool HasBand(const WifiSpectrumBandInfo& band) const;
416
417 /**
418 * Check whether a given band belongs to a given frequency range.
419 *
420 * \param band the band to be checked
421 * \param freqRange the frequency range to check whether the band belong to
422 * \return true if the band belongs to the frequency range, false otherwise
423 */
425 const FrequencyRange& freqRange) const;
426
427 /**
428 * Append the given Event.
429 *
430 * \param event the event to be appended
431 * \param freqRange the frequency range in which the received signal event is detected
432 * \param isStartHePortionRxing flag whether event corresponds to the start of the HE portion
433 * reception (only used for MU)
434 */
435 void AppendEvent(Ptr<Event> event, const FrequencyRange& freqRange, bool isStartHePortionRxing);
436
437 /**
438 * Calculate noise and interference power in W.
439 *
440 * \param event the event
441 * \param nis the NiChanges
442 * \param band the band
443 *
444 * \return noise and interference power
445 */
447 NiChangesPerBand& nis,
448 const WifiSpectrumBandInfo& band) const;
449
450 /**
451 * Calculate power of all other events preceding a given event that belong to the same MU-MIMO
452 * transmission.
453 *
454 * \param event the event
455 * \param band the band
456 *
457 * \return the power of all other events preceding the event that belong to the same MU-MIMO
458 * transmission
459 */
460 double CalculateMuMimoPowerW(Ptr<const Event> event, const WifiSpectrumBandInfo& band) const;
461
462 /**
463 * Calculate the error rate of the given PHY payload only in the provided time
464 * window (thus enabling per MPDU PER information). The PHY payload can be divided into
465 * multiple chunks (e.g. due to interference from other transmissions).
466 *
467 * \param event the event
468 * \param channelWidth the channel width used to transmit the PSDU (in MHz)
469 * \param nis the NiChanges
470 * \param band identify the band used by the PSDU
471 * \param staId the station ID of the PSDU (only used for MU)
472 * \param window time window (pair of start and end times) of PHY payload to focus on
473 *
474 * \return the error rate of the payload
475 */
477 uint16_t channelWidth,
478 NiChangesPerBand* nis,
479 const WifiSpectrumBandInfo& band,
480 uint16_t staId,
481 std::pair<Time, Time> window) const;
482 /**
483 * Calculate the error rate of the PHY header. The PHY header
484 * can be divided into multiple chunks (e.g. due to interference from other transmissions).
485 *
486 * \param event the event
487 * \param nis the NiChanges
488 * \param channelWidth the channel width (in MHz) for header measurement
489 * \param band the band
490 * \param header the PHY header to consider
491 *
492 * \return the error rate of the HT PHY header
493 */
495 NiChangesPerBand* nis,
496 uint16_t channelWidth,
497 const WifiSpectrumBandInfo& band,
498 WifiPpduField header) const;
499 /**
500 * Calculate the success rate of the PHY header sections for the provided event.
501 *
502 * \param event the event
503 * \param nis the NiChanges
504 * \param channelWidth the channel width (in MHz) for header measurement
505 * \param band the band
506 * \param phyHeaderSections the map of PHY header sections (\see PhyEntity::PhyHeaderSections)
507 *
508 * \return the success rate of the PHY header sections
509 */
511 NiChangesPerBand* nis,
512 uint16_t channelWidth,
513 const WifiSpectrumBandInfo& band,
514 PhyEntity::PhyHeaderSections phyHeaderSections) const;
515
516 double m_noiseFigure; //!< noise figure (linear)
518 uint8_t m_numRxAntennas; //!< the number of RX antennas in the corresponding receiver
519 NiChangesPerBand m_niChanges; //!< NI Changes for each band
520 FirstPowerPerBand m_firstPowers; //!< first power of each band in watts
521 std::map<FrequencyRange, bool>
522 m_rxing; //!< flag whether it is in receiving state for a given FrequencyRange
523
524 /**
525 * Returns an iterator to the first NiChange that is later than moment
526 *
527 * \param moment time to check from
528 * \param niIt iterator of the band to check
529 * \returns an iterator to the list of NiChanges
530 */
531 NiChanges::iterator GetNextPosition(Time moment, NiChangesPerBand::iterator niIt);
532 /**
533 * Returns an iterator to the last NiChange that is before than moment
534 *
535 * \param moment time to check from
536 * \param niIt iterator of the band to check
537 * \returns an iterator to the list of NiChanges
538 */
539 NiChanges::iterator GetPreviousPosition(Time moment, NiChangesPerBand::iterator niIt);
540
541 /**
542 * Add NiChange to the list at the appropriate position and
543 * return the iterator of the new event.
544 *
545 * \param moment time to check from
546 * \param change the NiChange to add
547 * \param niIt iterator of the band to check
548 * \returns the iterator of the new event
549 */
550 NiChanges::iterator AddNiChangeEvent(Time moment,
551 NiChange change,
552 NiChangesPerBand::iterator niIt);
553
554 /**
555 * Return whether another event is a MU-MIMO event that belongs to the same transmission and to
556 * the same RU.
557 *
558 * \param currentEvent the current event that is being inspected
559 * \param otherEvent the other event to compare against
560 *
561 * \return whether both events belong to the same transmission and to the same RU
562 */
563 bool IsSameMuMimoTransmission(Ptr<const Event> currentEvent, Ptr<const Event> otherEvent) const;
564};
565
566} // namespace ns3
567
568#endif /* INTERFERENCE_HELPER_H */
handles interference calculations
Time m_endTime
end time
Time m_startTime
start time
Ptr< const WifiPpdu > GetPpdu() const
Return the PPDU.
Ptr< const WifiPpdu > m_ppdu
PPDU.
void UpdateRxPowerW(const RxPowerWattPerChannelBand &rxPower)
Update the received power (W) for all bands, i.e.
Time GetEndTime() const
Return the end time of the signal.
Time GetDuration() const
Return the duration of the signal.
double GetRxPowerW() const
Return the total received power (W).
RxPowerWattPerChannelBand m_rxPowerW
received power in watts per band
const RxPowerWattPerChannelBand & GetRxPowerWPerBand() const
Return the received power (W) for all bands.
Time GetStartTime() const
Return the start time of the signal.
void UpdatePpdu(Ptr< const WifiPpdu > ppdu)
Update the PPDU that initially generated the event.
Noise and Interference (thus Ni) event.
void AddPower(double power)
Add a given amount of power.
double GetPower() const
Return the power.
Ptr< Event > GetEvent() const
Return the event causes the corresponding NI change.
handles interference calculations
void SetNoiseFigure(double value)
Set the noise figure.
Ptr< Event > Add(Ptr< const WifiPpdu > ppdu, Time duration, RxPowerWattPerChannelBand &rxPower, const FrequencyRange &freqRange, bool isStartHePortionRxing=false)
Add the PPDU-related signal to interference helper.
double m_noiseFigure
noise figure (linear)
std::map< FrequencyRange, bool > m_rxing
flag whether it is in receiving state for a given FrequencyRange
Ptr< ErrorRateModel > GetErrorRateModel() const
Return the error rate model.
NiChanges::iterator AddNiChangeEvent(Time moment, NiChange change, NiChangesPerBand::iterator niIt)
Add NiChange to the list at the appropriate position and return the iterator of the new event.
std::map< WifiSpectrumBandInfo, NiChanges > NiChangesPerBand
Map of NiChanges per band.
void NotifyRxStart(const FrequencyRange &freqRange)
Notify that RX has started.
double CalculateMuMimoPowerW(Ptr< const Event > event, const WifiSpectrumBandInfo &band) const
Calculate power of all other events preceding a given event that belong to the same MU-MIMO transmiss...
uint8_t m_numRxAntennas
the number of RX antennas in the corresponding receiver
bool IsBandInFrequencyRange(const WifiSpectrumBandInfo &band, const FrequencyRange &freqRange) const
Check whether a given band belongs to a given frequency range.
void DoDispose() override
Destructor implementation.
std::multimap< Time, NiChange > NiChanges
typedef for a multimap of NiChange
NiChangesPerBand m_niChanges
NI Changes for each band.
void UpdateBands(const std::vector< WifiSpectrumBandInfo > &bands, const FrequencyRange &freqRange)
Update the frequency bands that belongs to a given frequency range when the spectrum model is changed...
void SetErrorRateModel(const Ptr< ErrorRateModel > rate)
Set the error rate model for this interference helper.
bool HasBands() const
Check whether bands are already tracked by this interference helper.
void AddForeignSignal(Time duration, RxPowerWattPerChannelBand &rxPower, const FrequencyRange &freqRange)
Add a non-Wifi signal to interference helper.
double CalculatePayloadChunkSuccessRate(double snir, Time duration, const WifiTxVector &txVector, uint16_t staId=SU_STA_ID) const
Calculate the success rate of the payload chunk given the SINR, duration, and TXVECTOR.
Ptr< ErrorRateModel > m_errorRateModel
error rate model
NiChanges::iterator GetNextPosition(Time moment, NiChangesPerBand::iterator niIt)
Returns an iterator to the first NiChange that is later than moment.
FirstPowerPerBand m_firstPowers
first power of each band in watts
Time GetEnergyDuration(double energyW, const WifiSpectrumBandInfo &band)
bool IsSameMuMimoTransmission(Ptr< const Event > currentEvent, Ptr< const Event > otherEvent) const
Return whether another event is a MU-MIMO event that belongs to the same transmission and to the same...
double CalculateChunkSuccessRate(double snir, Time duration, WifiMode mode, const WifiTxVector &txVector, WifiPpduField field) const
Calculate the success rate of the chunk given the SINR, duration, and TXVECTOR.
double CalculatePayloadPer(Ptr< const Event > event, uint16_t channelWidth, NiChangesPerBand *nis, const WifiSpectrumBandInfo &band, uint16_t staId, std::pair< Time, Time > window) const
Calculate the error rate of the given PHY payload only in the provided time window (thus enabling per...
bool HasBand(const WifiSpectrumBandInfo &band) const
Check whether a given band is tracked by this interference helper.
void AddBand(const WifiSpectrumBandInfo &band)
Add a frequency band.
double CalculateNoiseInterferenceW(Ptr< Event > event, NiChangesPerBand &nis, const WifiSpectrumBandInfo &band) const
Calculate noise and interference power in W.
double CalculatePhyHeaderPer(Ptr< const Event > event, NiChangesPerBand *nis, uint16_t channelWidth, const WifiSpectrumBandInfo &band, WifiPpduField header) const
Calculate the error rate of the PHY header.
NiChanges::iterator GetPreviousPosition(Time moment, NiChangesPerBand::iterator niIt)
Returns an iterator to the last NiChange that is before than moment.
void AppendEvent(Ptr< Event > event, const FrequencyRange &freqRange, bool isStartHePortionRxing)
Append the given Event.
double CalculateSnr(Ptr< Event > event, uint16_t channelWidth, uint8_t nss, const WifiSpectrumBandInfo &band) const
Calculate the SNIR for the event (starting from now until the event end).
std::map< WifiSpectrumBandInfo, double > FirstPowerPerBand
Map of first power per band.
PhyEntity::SnrPer CalculatePhyHeaderSnrPer(Ptr< Event > event, uint16_t channelWidth, const WifiSpectrumBandInfo &band, WifiPpduField header) const
Calculate the SNIR at the start of the PHY header and accumulate all SNIR changes in the SNIR vector.
static TypeId GetTypeId()
Get the type ID.
void UpdateEvent(Ptr< Event > event, const RxPowerWattPerChannelBand &rxPower)
Update event to scale its received power (W) per band.
void NotifyRxEnd(Time endTime, const FrequencyRange &freqRange)
Notify that RX has ended.
double CalculatePhyHeaderSectionPsr(Ptr< const Event > event, NiChangesPerBand *nis, uint16_t channelWidth, const WifiSpectrumBandInfo &band, PhyEntity::PhyHeaderSections phyHeaderSections) const
Calculate the success rate of the PHY header sections for the provided event.
void SetNumberOfReceiveAntennas(uint8_t rx)
Set the number of RX antennas in the receiver corresponding to this interference helper.
PhyEntity::SnrPer CalculatePayloadSnrPer(Ptr< Event > event, uint16_t channelWidth, const WifiSpectrumBandInfo &band, uint16_t staId, std::pair< Time, Time > relativeMpduStartStop) const
Calculate the SNIR at the start of the payload and accumulate all SNIR changes in the SNIR vector for...
A base class which provides memory management and object aggregation.
Definition: object.h:89
std::map< WifiPpduField, PhyHeaderChunkInfo > PhyHeaderSections
A map of PhyHeaderChunkInfo elements per PPDU field.
Definition: phy-entity.h:326
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:77
A template-based reference counting class.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
a unique identifier for an interface.
Definition: type-id.h:59
represent a single transmission mode
Definition: wifi-mode.h:51
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
WifiPpduField
The type of PPDU field (grouped for convenience)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:159
std::map< WifiSpectrumBandInfo, double > RxPowerWattPerChannelBand
A map of the received power (Watts) for each band.
Definition: phy-entity.h:77
static constexpr uint16_t SU_STA_ID
STA_ID to identify a single user (SU)
Definition: wifi-mode.h:35
Declaration of:
Struct defining a frequency range between minFrequency (MHz) and maxFrequency (MHz).
A struct for both SNR and PER.
Definition: phy-entity.h:147
WifiSpectrumBandInfo structure containing info about a spectrum band.