A Discrete-Event Network Simulator
Home
Tutorials ▼
English
Documentation ▼
Installation
Manual
Models
Contributing
Wiki
Development ▼
API Docs
Issue Tracker
Merge Requests
API
Loading...
Searching...
No Matches
radiotap-header.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2009 CTTC
3
*
4
* SPDX-License-Identifier: GPL-2.0-only
5
*
6
* Authors: Nicola Baldo <nbaldo@cttc.es>
7
* Sébastien Deronne <sebastien.deronne@gmail.com>
8
*/
9
10
#ifndef RADIOTAP_HEADER_H
11
#define RADIOTAP_HEADER_H
12
13
#include "ns3/header.h"
14
15
#include <array>
16
#include <optional>
17
#include <vector>
18
19
namespace
ns3
20
{
21
22
/**
23
* @brief Radiotap header implementation
24
*
25
* Radiotap is a de facto standard for 802.11 frame injection and reception.
26
* The radiotap header format is a mechanism to supply additional information
27
* about frames, from the driver to userspace applications such as libpcap, and
28
* from a userspace application to the driver for transmission.
29
*/
30
class
RadiotapHeader
:
public
Header
31
{
32
public
:
33
RadiotapHeader
();
34
/**
35
* @brief Get the type ID.
36
* @returns the object TypeId
37
*/
38
static
TypeId
GetTypeId
();
39
TypeId
GetInstanceTypeId
()
const override
;
40
41
/**
42
* This method is used by Packet::AddHeader to store the header into the byte
43
* buffer of a packet. This method returns the number of bytes which are
44
* needed to store the header data during a Serialize.
45
*
46
* @returns The expected size of the header.
47
*/
48
uint32_t
GetSerializedSize
()
const override
;
49
50
/**
51
* This method is used by Packet::AddHeader to store the header into the byte
52
* buffer of a packet. The data written is expected to match bit-for-bit the
53
* representation of this header in a real network.
54
*
55
* @param start An iterator which points to where the header should
56
* be written.
57
*/
58
void
Serialize
(
Buffer::Iterator
start)
const override
;
59
60
/**
61
* This method is used by Packet::RemoveHeader to re-create a header from the
62
* byte buffer of a packet. The data read is expected to match bit-for-bit
63
* the representation of this header in real networks.
64
*
65
* @param start An iterator which points to where the header should be read.
66
* @returns The number of bytes read.
67
*/
68
uint32_t
Deserialize
(
Buffer::Iterator
start)
override
;
69
70
/**
71
* This method is used by Packet::Print to print the content of the header as
72
* ascii data to a C++ output stream. Although the header is free to format
73
* its output as it wishes, it is recommended to follow a few rules to integrate
74
* with the packet pretty printer: start with flags, small field
75
* values located between a pair of parens. Values should be separated
76
* by whitespace. Follow the parens with the important fields,
77
* separated by whitespace.
78
*
79
* eg: (field1 val1 field2 val2 field3 val3) field4 val4 field5 val5
80
*
81
* @param os The output stream
82
*/
83
void
Print
(std::ostream& os)
const override
;
84
85
/**
86
* @brief Set the Time Synchronization Function Timer (TSFT) value. Valid for
87
* received frames only.
88
*
89
* @param tsft Value in microseconds of the MAC's 64-bit 802.11 Time
90
* Synchronization Function timer when the first bit of the MPDU
91
* arrived at the MAC.
92
*/
93
void
SetTsft
(uint64_t tsft);
94
95
/**
96
* @brief Frame flags.
97
*/
98
enum
FrameFlag
: uint8_t
99
{
100
FRAME_FLAG_NONE
= 0x00,
/**< No flags set */
101
FRAME_FLAG_CFP
= 0x01,
/**< Frame sent/received during CFP */
102
FRAME_FLAG_SHORT_PREAMBLE
= 0x02,
/**< Frame sent/received with short preamble */
103
FRAME_FLAG_WEP
= 0x04,
/**< Frame sent/received with WEP encryption */
104
FRAME_FLAG_FRAGMENTED
= 0x08,
/**< Frame sent/received with fragmentation */
105
FRAME_FLAG_FCS_INCLUDED
= 0x10,
/**< Frame includes FCS */
106
FRAME_FLAG_DATA_PADDING
=
107
0x20,
/**< Frame has padding between 802.11 header and payload (to 32-bit boundary) */
108
FRAME_FLAG_BAD_FCS
= 0x40,
/**< Frame failed FCS check */
109
FRAME_FLAG_SHORT_GUARD
= 0x80
/**< Frame used short guard interval (HT) */
110
};
111
112
/**
113
* @brief Set the frame flags of the transmitted or received frame.
114
* @param flags flags to set.
115
*/
116
void
SetFrameFlags
(uint8_t flags);
117
118
/**
119
* @brief Set the transmit/receive channel frequency in units of megahertz
120
* @param rate the transmit/receive channel frequency in units of megahertz.
121
*/
122
void
SetRate
(uint8_t rate);
123
124
/**
125
* @brief Channel flags.
126
*/
127
enum
ChannelFlags
: uint16_t
128
{
129
CHANNEL_FLAG_NONE
= 0x0000,
/**< No flags set */
130
CHANNEL_FLAG_TURBO
= 0x0010,
/**< Turbo Channel */
131
CHANNEL_FLAG_CCK
= 0x0020,
/**< CCK channel */
132
CHANNEL_FLAG_OFDM
= 0x0040,
/**< OFDM channel */
133
CHANNEL_FLAG_SPECTRUM_2GHZ
= 0x0080,
/**< 2 GHz spectrum channel */
134
CHANNEL_FLAG_SPECTRUM_5GHZ
= 0x0100,
/**< 5 GHz spectrum channel */
135
CHANNEL_FLAG_PASSIVE
= 0x0200,
/**< Only passive scan allowed */
136
CHANNEL_FLAG_DYNAMIC
= 0x0400,
/**< Dynamic CCK-OFDM channel */
137
CHANNEL_FLAG_GFSK
= 0x0800
/**< GFSK channel (FHSS PHY) */
138
};
139
140
/**
141
* structure that contains the subfields of the Channel field.
142
*/
143
struct
ChannelFields
144
{
145
uint16_t
frequency
{0};
//!< Tx/Rx frequency in MHz
146
uint16_t
flags
{
CHANNEL_FLAG_NONE
};
//!< flags field (@see ChannelFlags)
147
};
148
149
/**
150
* @brief Set the subfields of the Channel field
151
*
152
* @param channelFields The subfields of the Channel field.
153
*/
154
void
SetChannelFields
(
const
ChannelFields& channelFields);
155
156
/**
157
* @brief Set the RF signal power at the antenna as a decibel difference
158
* from an arbitrary, fixed reference.
159
*
160
* @param signal The RF signal power at the antenna as a decibel difference
161
* from an arbitrary, fixed reference;
162
*/
163
void
SetAntennaSignalPower
(
double
signal);
164
165
/**
166
* @brief Set the RF noise power at the antenna as a decibel difference
167
* from an arbitrary, fixed reference.
168
*
169
* @param noise The RF noise power at the antenna as a decibel difference
170
* from an arbitrary, fixed reference.
171
*/
172
void
SetAntennaNoisePower
(
double
noise);
173
174
/**
175
* @brief MCS known bits.
176
*/
177
enum
McsKnown
: uint8_t
178
{
179
MCS_KNOWN_NONE
= 0x00,
/**< No flags set */
180
MCS_KNOWN_BANDWIDTH
= 0x01,
/**< Bandwidth */
181
MCS_KNOWN_INDEX
= 0x02,
/**< MCS index known */
182
MCS_KNOWN_GUARD_INTERVAL
= 0x04,
/**< Guard interval */
183
MCS_KNOWN_HT_FORMAT
= 0x08,
/**< HT format */
184
MCS_KNOWN_FEC_TYPE
= 0x10,
/**< FEC type */
185
MCS_KNOWN_STBC
= 0x20,
/**< STBC known */
186
MCS_KNOWN_NESS
= 0x40,
/**< Ness known (Number of extension spatial streams) */
187
MCS_KNOWN_NESS_BIT_1
=
188
0x80,
/**< Ness data - bit 1 (MSB) of Number of extension spatial streams */
189
};
190
191
/**
192
* @brief MCS flags.
193
*/
194
enum
McsFlags
: uint8_t
195
{
196
MCS_FLAGS_NONE
=
197
0x00,
/**< Default: 20 MHz, long guard interval, mixed HT format and BCC FEC type */
198
MCS_FLAGS_BANDWIDTH_40
= 0x01,
/**< 40 MHz */
199
MCS_FLAGS_BANDWIDTH_20L
= 0x02,
/**< 20L (20 MHz in lower half of 40 MHz channel) */
200
MCS_FLAGS_BANDWIDTH_20U
= 0x03,
/**< 20U (20 MHz in upper half of 40 MHz channel) */
201
MCS_FLAGS_GUARD_INTERVAL
= 0x04,
/**< Short guard interval */
202
MCS_FLAGS_HT_GREENFIELD
= 0x08,
/**< Greenfield HT format */
203
MCS_FLAGS_FEC_TYPE
= 0x10,
/**< LDPC FEC type */
204
MCS_FLAGS_STBC_STREAMS
= 0x60,
/**< STBC enabled */
205
MCS_FLAGS_NESS_BIT_0
=
206
0x80,
/**< Ness - bit 0 (LSB) of Number of extension spatial streams */
207
};
208
209
/**
210
* structure that contains the subfields of the MCS field.
211
*/
212
struct
McsFields
213
{
214
uint8_t
known
{
MCS_KNOWN_NONE
};
//!< known flags
215
uint8_t
flags
{
MCS_FLAGS_NONE
};
//!< flags field
216
uint8_t
mcs
{0};
//!< MCS index value
217
};
218
219
/**
220
* @brief Set the subfields of the MCS field
221
*
222
* @param mcsFields The subfields of the MCS field.
223
*/
224
void
SetMcsFields
(
const
McsFields& mcsFields);
225
226
/**
227
* @brief A-MPDU status flags.
228
*/
229
enum
AmpduFlags
: uint8_t
230
{
231
A_MPDU_STATUS_NONE
= 0x00,
/**< No flags set */
232
A_MPDU_STATUS_REPORT_ZERO_LENGTH
= 0x01,
/**< Driver reports 0-length subframes */
233
A_MPDU_STATUS_IS_ZERO_LENGTH
=
234
0x02,
/**< Frame is 0-length subframe (valid only if 0x0001 is set) */
235
A_MPDU_STATUS_LAST_KNOWN
=
236
0x04,
/**< Last subframe is known (should be set for all subframes in an A-MPDU) */
237
A_MPDU_STATUS_LAST
= 0x08,
/**< This frame is the last subframe */
238
A_MPDU_STATUS_DELIMITER_CRC_ERROR
= 0x10,
/**< Delimiter CRC error */
239
A_MPDU_STATUS_DELIMITER_CRC_KNOWN
=
240
0x20
/**< Delimiter CRC value known: the delimiter CRC value field is valid */
241
};
242
243
/**
244
* structure that contains the subfields of the A-MPDU status field.
245
*/
246
struct
AmpduStatusFields
247
{
248
uint32_t
referenceNumber
{
249
0};
//!< A-MPDU reference number to identify all subframes belonging to the same A-MPDU
250
uint16_t
flags
{
A_MPDU_STATUS_NONE
};
//!< flags field
251
uint8_t
crc
{1};
//!< CRC field
252
uint8_t
reserved
{0};
//!< Reserved field
253
};
254
255
/**
256
* @brief Set the subfields of the A-MPDU status field
257
*
258
* @param ampduStatusFields The subfields of the A-MPDU status field.
259
*/
260
void
SetAmpduStatus
(
const
AmpduStatusFields& ampduStatusFields);
261
262
/**
263
* @brief VHT known bits.
264
*/
265
enum
VhtKnown
: uint16_t
266
{
267
VHT_KNOWN_NONE
= 0x0000,
/**< No flags set */
268
VHT_KNOWN_STBC
= 0x0001,
/**< Space-time block coding (1 if all spatial streams of all users
269
have STBC, 0 otherwise). */
270
VHT_KNOWN_TXOP_PS_NOT_ALLOWED
= 0x0002,
/**< TXOP_PS_NOT_ALLOWED known */
271
VHT_KNOWN_GUARD_INTERVAL
= 0x0004,
/**< Guard interval */
272
VHT_KNOWN_SHORT_GI_NSYM_DISAMBIGUATION
= 0x0008,
/**< Short GI NSYM disambiguation known */
273
VHT_KNOWN_LDPC_EXTRA_OFDM_SYMBOL
= 0x0010,
/**< LDPC extra OFDM symbol known */
274
VHT_KNOWN_BEAMFORMED
= 0x0020,
/**< Beamformed known/applicable (this flag should be set to
275
zero for MU PPDUs). */
276
VHT_KNOWN_BANDWIDTH
= 0x0040,
/**< Bandwidth known */
277
VHT_KNOWN_GROUP_ID
= 0x0080,
/**< Group ID known */
278
VHT_KNOWN_PARTIAL_AID
= 0x0100,
/**< Partial AID known/applicable */
279
};
280
281
/**
282
* @brief VHT flags.
283
*/
284
enum
VhtFlags
: uint8_t
285
{
286
VHT_FLAGS_NONE
= 0x00,
/**< No flags set */
287
VHT_FLAGS_STBC
=
288
0x01,
/**< Set if all spatial streams of all users have space-time block coding */
289
VHT_FLAGS_TXOP_PS_NOT_ALLOWED
=
290
0x02,
/**< Set if STAs may not doze during TXOP (valid only for AP transmitters). */
291
VHT_FLAGS_GUARD_INTERVAL
= 0x04,
/**< Short guard interval */
292
VHT_FLAGS_SHORT_GI_NSYM_DISAMBIGUATION
=
293
0x08,
/**< Set if NSYM mod 10 = 9 (valid only if short GI is used).*/
294
VHT_FLAGS_LDPC_EXTRA_OFDM_SYMBOL
=
295
0x10,
/**< Set if one or more users are using LDPC and the encoding process resulted in
296
extra OFDM symbol(s) */
297
VHT_FLAGS_BEAMFORMED
= 0x20,
/**< Set if beamforming is used (valid for SU PPDUs only). */
298
};
299
300
/**
301
* structure that contains the subfields of the VHT field.
302
*/
303
struct
VhtFields
304
{
305
uint16_t
known
{
VHT_KNOWN_NONE
};
//!< known flags field
306
uint8_t
flags
{
VHT_FLAGS_NONE
};
//!< flags field
307
uint8_t
bandwidth
{0};
//!< bandwidth field
308
std::array<uint8_t, 4>
mcsNss
{};
//!< mcs_nss field
309
uint8_t
coding
{0};
//!< coding field
310
uint8_t
groupId
{0};
//!< group_id field
311
uint16_t
partialAid
{0};
//!< partial_aid field
312
};
313
314
/**
315
* @brief Set the subfields of the VHT field
316
*
317
* @param vhtFields The subfields of the VHT field.
318
*/
319
void
SetVhtFields
(
const
VhtFields& vhtFields);
320
321
/**
322
* @brief bits of the HE data fields.
323
*/
324
enum
HeData
: uint16_t
325
{
326
/* Data 1 */
327
HE_DATA1_FORMAT_EXT_SU
= 0x0001,
/**< HE EXT SU PPDU format */
328
HE_DATA1_FORMAT_MU
= 0x0002,
/**< HE MU PPDU format */
329
HE_DATA1_FORMAT_TRIG
= 0x0003,
/**< HE TRIG PPDU format */
330
HE_DATA1_BSS_COLOR_KNOWN
= 0x0004,
/**< BSS Color known */
331
HE_DATA1_BEAM_CHANGE_KNOWN
= 0x0008,
/**< Beam Change known */
332
HE_DATA1_UL_DL_KNOWN
= 0x0010,
/**< UL/DL known */
333
HE_DATA1_DATA_MCS_KNOWN
= 0x0020,
/**< data MCS known */
334
HE_DATA1_DATA_DCM_KNOWN
= 0x0040,
/**< data DCM known */
335
HE_DATA1_CODING_KNOWN
= 0x0080,
/**< Coding known */
336
HE_DATA1_LDPC_XSYMSEG_KNOWN
= 0x0100,
/**< LDPC extra symbol segment known */
337
HE_DATA1_STBC_KNOWN
= 0x0200,
/**< STBC known */
338
HE_DATA1_SPTL_REUSE_KNOWN
=
339
0x0400,
/**< Spatial Reuse known (Spatial Reuse 1 for HE TRIG PPDU format) */
340
HE_DATA1_SPTL_REUSE2_KNOWN
= 0x0800,
/**< Spatial Reuse 2 known (HE TRIG PPDU format),
341
STA-ID known (HE MU PPDU format) */
342
HE_DATA1_SPTL_REUSE3_KNOWN
= 0x1000,
/**< Spatial Reuse 3 known (HE TRIG PPDU format) */
343
HE_DATA1_SPTL_REUSE4_KNOWN
= 0x2000,
/**< Spatial Reuse 4 known (HE TRIG PPDU format) */
344
HE_DATA1_BW_RU_ALLOC_KNOWN
= 0x4000,
/**< data BW/RU allocation known */
345
HE_DATA1_DOPPLER_KNOWN
= 0x8000,
/**< Doppler known */
346
/* Data 2 */
347
HE_DATA2_PRISEC_80_KNOWN
= 0x0001,
/**< pri/sec 80 MHz known */
348
HE_DATA2_GI_KNOWN
= 0x0002,
/**< GI known */
349
HE_DATA2_NUM_LTF_SYMS_KNOWN
= 0x0004,
/**< number of LTF symbols known */
350
HE_DATA2_PRE_FEC_PAD_KNOWN
= 0x0008,
/**< Pre-FEC Padding Factor known */
351
HE_DATA2_TXBF_KNOWN
= 0x0010,
/**< TxBF known */
352
HE_DATA2_PE_DISAMBIG_KNOWN
= 0x0020,
/**< PE Disambiguity known */
353
HE_DATA2_TXOP_KNOWN
= 0x0040,
/**< TXOP known */
354
HE_DATA2_MIDAMBLE_KNOWN
= 0x0080,
/**< midamble periodicity known */
355
HE_DATA2_RU_OFFSET
= 0x3f00,
/**< RU allocation offset */
356
HE_DATA2_RU_OFFSET_KNOWN
= 0x4000,
/**< RU allocation offset known */
357
HE_DATA2_PRISEC_80_SEC
= 0x8000,
/**< pri/sec 80 MHz */
358
/* Data 3 */
359
HE_DATA3_BSS_COLOR
= 0x003f,
360
HE_DATA3_BEAM_CHANGE
= 0x0040,
361
HE_DATA3_UL_DL
= 0x0080,
362
HE_DATA3_DATA_MCS
= 0x0f00,
363
HE_DATA3_DATA_DCM
= 0x1000,
364
HE_DATA3_CODING
= 0x2000,
365
HE_DATA3_LDPC_XSYMSEG
= 0x4000,
366
HE_DATA3_STBC
= 0x8000,
367
/* Data 4 */
368
HE_DATA4_SU_MU_SPTL_REUSE
= 0x000f,
369
HE_DATA4_MU_STA_ID
= 0x7ff0,
370
HE_DATA4_TB_SPTL_REUSE1
= 0x000f,
371
HE_DATA4_TB_SPTL_REUSE2
= 0x00f0,
372
HE_DATA4_TB_SPTL_REUSE3
= 0x0f00,
373
HE_DATA4_TB_SPTL_REUSE4
= 0xf000,
374
/* Data 5 */
375
HE_DATA5_DATA_BW_RU_ALLOC_40MHZ
= 0x0001,
/**< 40 MHz data Bandwidth */
376
HE_DATA5_DATA_BW_RU_ALLOC_80MHZ
= 0x0002,
/**< 80 MHz data Bandwidth */
377
HE_DATA5_DATA_BW_RU_ALLOC_160MHZ
= 0x0003,
/**< 160 MHz data Bandwidth */
378
HE_DATA5_DATA_BW_RU_ALLOC_26T
= 0x0004,
/**< 26-tone RU allocation */
379
HE_DATA5_DATA_BW_RU_ALLOC_52T
= 0x0005,
/**< 52-tone RU allocation */
380
HE_DATA5_DATA_BW_RU_ALLOC_106T
= 0x0006,
/**< 106-tone RU allocation */
381
HE_DATA5_DATA_BW_RU_ALLOC_242T
= 0x0007,
/**< 242-tone RU allocation */
382
HE_DATA5_DATA_BW_RU_ALLOC_484T
= 0x0008,
/**< 484-tone RU allocation */
383
HE_DATA5_DATA_BW_RU_ALLOC_996T
= 0x0009,
/**< 996-tone RU allocation */
384
HE_DATA5_DATA_BW_RU_ALLOC_2x996T
= 0x000a,
/**< 2x996-tone RU allocation */
385
HE_DATA5_GI_1_6
= 0x0010,
/**< 1.6us GI */
386
HE_DATA5_GI_3_2
= 0x0020,
/**< 3.2us GI */
387
HE_DATA5_LTF_SYM_SIZE
= 0x00c0,
/**< LTF symbol size */
388
HE_DATA5_NUM_LTF_SYMS
= 0x0700,
/**< number of LTF symbols */
389
HE_DATA5_PRE_FEC_PAD
= 0x3000,
/**< Pre-FEC Padding Factor */
390
HE_DATA5_TXBF
= 0x4000,
/**< TxBF */
391
HE_DATA5_PE_DISAMBIG
= 0x8000,
/**< PE Disambiguity */
392
};
393
394
/**
395
* structure that contains the subfields of the HE field.
396
*/
397
struct
HeFields
398
{
399
uint16_t
data1
{0};
//!< data1 field
400
uint16_t
data2
{0};
//!< data2 field
401
uint16_t
data3
{0};
//!< data3 field
402
uint16_t
data4
{0};
//!< data4 field
403
uint16_t
data5
{0};
//!< data5 field
404
uint16_t
data6
{0};
//!< data6 field
405
};
406
407
/**
408
* @brief Set the subfields of the HE field
409
*
410
* @param heFields The subfields of the HE field.
411
*/
412
void
SetHeFields
(
const
HeFields& heFields);
413
414
/**
415
* @brief HE MU flags1.
416
*/
417
enum
HeMuFlags1
: uint16_t
418
{
419
HE_MU_FLAGS1_SIGB_MCS
= 0x000f,
//!< SIG-B MCS (from SIG-A)
420
HE_MU_FLAGS1_SIGB_MCS_KNOWN
= 0x0010,
//!< SIG-B MCS known
421
HE_MU_FLAGS1_SIGB_DCM
= 0x0020,
//!< SIG-B DCM (from SIG-A)
422
HE_MU_FLAGS1_SIGB_DCM_KNOWN
= 0x0040,
//!< SIG-B DCM known
423
HE_MU_FLAGS1_CH2_CENTER_26T_RU_KNOWN
= 0x0080,
//!< (Channel 2) Center 26-tone RU bit known
424
HE_MU_FLAGS1_CH1_RUS_KNOWN
= 0x0100,
//!< Channel 1 RUs known (which depends on BW)
425
HE_MU_FLAGS1_CH2_RUS_KNOWN
= 0x0200,
//!< Channel 2 RUs known (which depends on BW)
426
HE_MU_FLAGS1_CH1_CENTER_26T_RU_KNOWN
= 0x1000,
//!< (Channel 1) Center 26-tone RU bit known
427
HE_MU_FLAGS1_CH1_CENTER_26T_RU
= 0x2000,
//!< (Channel 1) Center 26-tone RU value
428
HE_MU_FLAGS1_SIGB_COMPRESSION_KNOWN
= 0x4000,
//!< SIG-B Compression known
429
HE_MU_FLAGS1_NUM_SIGB_SYMBOLS_KNOWN
= 0x8000,
//!< # of HE-SIG-B Symbols/MU-MIMO Users known
430
};
431
432
/**
433
* @brief HE MU flags2.
434
*/
435
enum
HeMuFlags2
: uint16_t
436
{
437
HE_MU_FLAGS2_BW_FROM_SIGA
= 0x0003,
/**< Bandwidth from Bandwidth field in HE-SIG-A */
438
HE_MU_FLAGS2_BW_FROM_SIGA_KNOWN
=
439
0x0004,
/**< Bandwidth from Bandwidth field in HE-SIG-A known */
440
HE_MU_FLAGS2_SIGB_COMPRESSION_FROM_SIGA
= 0x0008,
/**< SIG-B compression from SIG-A */
441
HE_MU_FLAGS2_NUM_SIGB_SYMBOLS_FROM_SIGA
=
442
0x00f0,
/**< # of HE-SIG-B Symbols - 1 or # of MU-MIMO Users - 1 from SIG-A */
443
HE_MU_FLAGS2_PREAMBLE_PUNCTURING_FROM_SIGA_BW_FIELD
=
444
0x0300,
/**< Preamble puncturing from Bandwidth field in HE-SIG-A */
445
HE_MU_FLAGS2_PREAMBLE_PUNCTURING_FROM_SIGA_BW_FIELD_KNOWN
=
446
0x0400,
/**< Preamble puncturing from Bandwidth field in HE-SIG-A known */
447
HE_MU_FLAGS2_CH2_CENTER_26T_RU
= 0x0800,
/**< (Channel 2) Center 26-tone RU value */
448
};
449
450
/**
451
* structure that contains the subfields of the HE-MU field.
452
*/
453
struct
HeMuFields
454
{
455
uint16_t
flags1
{0};
//!< flags1 field
456
uint16_t
flags2
{0};
//!< flags2 field
457
std::array<uint8_t, 4>
ruChannel1
{};
//!< RU_channel1 field
458
std::array<uint8_t, 4>
ruChannel2
{};
//!< RU_channel2 field
459
};
460
461
/**
462
* @brief Set the subfields of the HE-MU field
463
*
464
* @param heMuFields The subfields of the HE-MU field.
465
*/
466
void
SetHeMuFields
(
const
HeMuFields& heMuFields);
467
468
/**
469
* @brief HE MU per_user_known.
470
*/
471
enum
HeMuPerUserKnown
: uint8_t
472
{
473
HE_MU_PER_USER_POSITION_KNOWN
= 0x01,
//!< User field position known
474
HE_MU_PER_USER_STA_ID_KNOWN
= 0x02,
//!< STA-ID known
475
HE_MU_PER_USER_NSTS_KNOWN
= 0x04,
//!< NSTS known
476
HE_MU_PER_USER_TX_BF_KNOWN
= 0x08,
//!< Tx Beamforming known
477
HE_MU_PER_USER_SPATIAL_CONFIGURATION_KNOWN
= 0x10,
//!< Spatial Configuration known
478
HE_MU_PER_USER_MCS_KNOWN
= 0x20,
//!< MCS known
479
HE_MU_PER_USER_DCM_KNOWN
= 0x40,
//!< DCM known
480
HE_MU_PER_USER_CODING_KNOWN
= 0x80,
//!< Coding known
481
};
482
483
/**
484
* structure that contains the subfields of the HE-MU-other-user field.
485
*/
486
struct
HeMuOtherUserFields
487
{
488
uint16_t
perUser1
{0};
//!< per_user_1 field
489
uint16_t
perUser2
{0};
//!< per_user_2 field
490
uint8_t
perUserPosition
{0};
//!< per_user_position field
491
uint8_t
perUserKnown
{0};
//!< per_user_known field
492
};
493
494
/**
495
* @brief Set the subfields of the HE-MU-other-user field
496
*
497
* @param heMuOtherUserFields The subfields of the HE-MU-other-user field.
498
*/
499
void
SetHeMuOtherUserFields
(
const
HeMuOtherUserFields& heMuOtherUserFields);
500
501
/**
502
* structure that contains the subfields of the TLV fields.
503
*/
504
struct
TlvFields
505
{
506
uint16_t
type
{0};
//!< type field.
507
uint16_t
length
{0};
//!< length field.
508
};
509
510
/**
511
* structure that contains the subfields of the U-SIG field.
512
*/
513
struct
UsigFields
514
{
515
uint32_t
common
{0};
//!< common field.
516
uint32_t
value
{0};
//!< value field.
517
uint32_t
mask
{0};
//!< mask field.
518
};
519
520
/**
521
* @brief U-SIG common subfield.
522
*/
523
enum
UsigCommon
:
uint32_t
524
{
525
USIG_COMMON_PHY_VER_KNOWN
= 0x00000001,
526
USIG_COMMON_BW_KNOWN
= 0x00000002,
527
USIG_COMMON_UL_DL_KNOWN
= 0x00000004,
528
USIG_COMMON_BSS_COLOR_KNOWN
= 0x00000008,
529
USIG_COMMON_TXOP_KNOWN
= 0x00000010,
530
USIG_COMMON_BAD_USIG_CRC
= 0x00000020,
531
USIG_COMMON_VALIDATE_BITS_CHECKED
= 0x00000040,
532
USIG_COMMON_VALIDATE_BITS_OK
= 0x00000080,
533
USIG_COMMON_PHY_VER
= 0x00007000,
534
USIG_COMMON_BW
= 0x00038000,
535
USIG_COMMON_UL_DL
= 0x00040000,
536
USIG_COMMON_BSS_COLOR
= 0x01f80000,
537
USIG_COMMON_TXOP
= 0xfe000000,
538
};
539
540
/**
541
* @brief Possible BW values in U-SIG common subfield.
542
*/
543
enum
UsigCommonBw
: uint8_t
544
{
545
USIG_COMMON_BW_20MHZ
= 0,
546
USIG_COMMON_BW_40MHZ
= 1,
547
USIG_COMMON_BW_80MHZ
= 2,
548
USIG_COMMON_BW_160MHZ
= 3,
549
USIG_COMMON_BW_320MHZ_1
= 4,
550
USIG_COMMON_BW_320MHZ_2
= 5,
551
};
552
553
/**
554
* @brief EHT MU PPDU U-SIG contents.
555
*/
556
enum
UsigMu
:
uint32_t
557
{
558
/* MU-USIG-1 */
559
USIG1_MU_B20_B24_DISREGARD
= 0x0000001f,
560
USIG1_MU_B25_VALIDATE
= 0x00000020,
561
/* MU-USIG-2 */
562
USIG2_MU_B0_B1_PPDU_TYPE
= 0x000000c0,
563
USIG2_MU_B2_VALIDATE
= 0x00000100,
564
USIG2_MU_B3_B7_PUNCTURED_INFO
= 0x00003e00,
565
USIG2_MU_B8_VALIDATE
= 0x00004000,
566
USIG2_MU_B9_B10_SIG_MCS
= 0x00018000,
567
USIG2_MU_B11_B15_EHT_SYMBOLS
= 0x003e0000,
568
USIG2_MU_B16_B19_CRC
= 0x03c00000,
569
USIG2_MU_B20_B25_TAIL
= 0xfc000000,
570
};
571
572
/**
573
* @brief EHT TB PPDU U-SIG contents.
574
*/
575
enum
UsigTb
:
uint32_t
576
{
577
/* TB-USIG-1 */
578
USIG1_TB_B20_B25_DISREGARD
= 0x0000001f,
579
/* TB-USIG-2 */
580
USIG2_TB_B0_B1_PPDU_TYPE
= 0x000000c0,
581
USIG2_TB_B2_VALIDATE
= 0x00000100,
582
USIG2_TB_B3_B6_SPATIAL_REUSE_1
= 0x00001e00,
583
USIG2_TB_B7_B10_SPATIAL_REUSE_2
= 0x0001e000,
584
USIG2_TB_B11_B15_DISREGARD
= 0x003e0000,
585
USIG2_TB_B16_B19_CRC
= 0x03c00000,
586
USIG2_TB_B20_B25_TAIL
= 0xfc000000,
587
};
588
589
/**
590
* @brief Set the subfields of the U-SIG field
591
*
592
* @param usigFields The subfields of the U-SIG field.
593
*/
594
void
SetUsigFields
(
const
UsigFields& usigFields);
595
596
/**
597
* structure that contains the subfields of the EHT field.
598
*/
599
struct
EhtFields
600
{
601
uint32_t
known
{0};
//!< known field.
602
std::array<uint32_t, 9>
data
{};
//!< data fields.
603
std::vector<uint32_t>
userInfo
{};
//!< user info fields.
604
};
605
606
/**
607
* @brief EHT known subfield.
608
*/
609
enum
EhtKnown
:
uint32_t
610
{
611
EHT_KNOWN_SPATIAL_REUSE
= 0x00000002,
612
EHT_KNOWN_GI
= 0x00000004,
613
EHT_KNOWN_EHT_LTF
= 0x00000010,
614
EHT_KNOWN_LDPC_EXTRA_SYM_OM
= 0x00000020,
615
EHT_KNOWN_PRE_PADD_FACOR_OM
= 0x00000040,
616
EHT_KNOWN_PE_DISAMBIGUITY_OM
= 0x00000080,
617
EHT_KNOWN_DISREGARD_O
= 0x00000100,
618
EHT_KNOWN_DISREGARD_S
= 0x00000200,
619
EHT_KNOWN_CRC1
= 0x00002000,
620
EHT_KNOWN_TAIL1
= 0x00004000,
621
EHT_KNOWN_CRC2_O
= 0x00008000,
622
EHT_KNOWN_TAIL2_O
= 0x00010000,
623
EHT_KNOWN_NSS_S
= 0x00020000,
624
EHT_KNOWN_BEAMFORMED_S
= 0x00040000,
625
EHT_KNOWN_NR_NON_OFDMA_USERS_M
= 0x00080000,
626
EHT_KNOWN_ENCODING_BLOCK_CRC_M
= 0x00100000,
627
EHT_KNOWN_ENCODING_BLOCK_TAIL_M
= 0x00200000,
628
EHT_KNOWN_RU_MRU_SIZE_OM
= 0x00400000,
629
EHT_KNOWN_RU_MRU_INDEX_OM
= 0x00800000,
630
EHT_KNOWN_RU_ALLOC_TB_OM
= 0x01000000,
631
EHT_KNOWN_PRIMARY_80
= 0x02000000,
632
};
633
634
/**
635
* @brief EHT data subfield.
636
*/
637
enum
EhtData
:
uint32_t
638
{
639
/* Data 0 */
640
EHT_DATA0_SPATIAL_REUSE
= 0x00000078,
641
EHT_DATA0_GI
= 0x00000180,
642
EHT_DATA0_LTF
= 0x00000600,
643
EHT_DATA0_EHT_LTF
= 0x00003800,
644
EHT_DATA0_LDPC_EXTRA_SYM_OM
= 0x00004000,
645
EHT_DATA0_PRE_PADD_FACOR_OM
= 0x00018000,
646
EHT_DATA0_PE_DISAMBIGUITY_OM
= 0x00020000,
647
EHT_DATA0_DISREGARD_S
= 0x000c0000,
648
EHT_DATA0_DISREGARD_O
= 0x003c0000,
649
EHT_DATA0_CRC1_O
= 0x03c00000,
650
EHT_DATA0_TAIL1_O
= 0xfc000000,
651
/* Data 1 */
652
EHT_DATA1_RU_MRU_SIZE
= 0x0000001f,
653
EHT_DATA1_RU_MRU_INDEX
= 0x00001fe0,
654
EHT_DATA1_RU_ALLOC_CC_1_1_1
= 0x003fe000,
655
EHT_DATA1_RU_ALLOC_CC_1_1_1_KNOWN
= 0x00400000,
656
EHT_DATA1_PRIMARY_80
= 0xc0000000,
657
/* Data 2 */
658
EHT_DATA2_RU_ALLOC_CC_2_1_1
= 0x000001ff,
659
EHT_DATA2_RU_ALLOC_CC_2_1_1_KNOWN
= 0x00000200,
660
EHT_DATA2_RU_ALLOC_CC_1_1_2
= 0x0007fc00,
661
EHT_DATA2_RU_ALLOC_CC_1_1_2_KNOWN
= 0x00080000,
662
EHT_DATA2_RU_ALLOC_CC_2_1_2
= 0x1ff00000,
663
EHT_DATA2_RU_ALLOC_CC_2_1_2_KNOWN
= 0x20000000,
664
/* Data 3 */
665
EHT_DATA3_RU_ALLOC_CC_1_2_1
= 0x000001ff,
666
EHT_DATA3_RU_ALLOC_CC_1_2_1_KNOWN
= 0x00000200,
667
EHT_DATA3_RU_ALLOC_CC_2_2_1
= 0x0007fc00,
668
EHT_DATA3_RU_ALLOC_CC_2_2_1_KNOWN
= 0x00080000,
669
EHT_DATA3_RU_ALLOC_CC_1_2_2
= 0x1ff00000,
670
EHT_DATA3_RU_ALLOC_CC_1_2_2_KNOWN
= 0x20000000,
671
/* Data 4 */
672
EHT_DATA4_RU_ALLOC_CC_2_2_2
= 0x000001ff,
673
EHT_DATA4_RU_ALLOC_CC_2_2_2_KNOWN
= 0x00000200,
674
EHT_DATA4_RU_ALLOC_CC_1_2_3
= 0x0007fc00,
675
EHT_DATA4_RU_ALLOC_CC_1_2_3_KNOWN
= 0x00080000,
676
EHT_DATA4_RU_ALLOC_CC_2_2_3
= 0x1ff00000,
677
EHT_DATA4_RU_ALLOC_CC_2_2_3_KNOWN
= 0x20000000,
678
/* Data 5 */
679
EHT_DATA5_RU_ALLOC_CC_1_2_4
= 0x000001ff,
680
EHT_DATA5_RU_ALLOC_CC_1_2_4_KNOWN
= 0x00000200,
681
EHT_DATA5_RU_ALLOC_CC_2_2_4
= 0x0007fc00,
682
EHT_DATA5_RU_ALLOC_CC_2_2_4_KNOWN
= 0x00080000,
683
EHT_DATA5_RU_ALLOC_CC_1_2_5
= 0x1ff00000,
684
EHT_DATA5_RU_ALLOC_CC_1_2_5_KNOWN
= 0x20000000,
685
/* Data 6 */
686
EHT_DATA6_RU_ALLOC_CC_2_2_5
= 0x000001ff,
687
EHT_DATA6_RU_ALLOC_CC_2_2_5_KNOWN
= 0x00000200,
688
EHT_DATA6_RU_ALLOC_CC_1_2_6
= 0x0007fc00,
689
EHT_DATA6_RU_ALLOC_CC_1_2_6_KNOWN
= 0x00080000,
690
EHT_DATA6_RU_ALLOC_CC_2_2_6
= 0x1ff00000,
691
EHT_DATA6_RU_ALLOC_CC_2_2_6_KNOWN
= 0x20000000,
692
/* Data 7 */
693
EHT_DATA7_CRC2_O
= 0x0000000f,
694
EHT_DATA7_TAIL_2_O
= 0x000003f0,
695
EHT_DATA7_NSS_S
= 0x0000f000,
696
EHT_DATA7_BEAMFORMED_S
= 0x00010000,
697
EHT_DATA7_NUM_OF_NON_OFDMA_USERS
= 0x000e0000,
698
EHT_DATA7_USER_ENCODING_BLOCK_CRC
= 0x00f00000,
699
EHT_DATA7_USER_ENCODING_BLOCK_TAIL
= 0x3f000000,
700
/* Data 8 */
701
EHT_DATA8_RU_ALLOC_TB_FMT_PS_160
= 0x00000001,
702
EHT_DATA8_RU_ALLOC_TB_FMT_B0
= 0x00000002,
703
EHT_DATA8_RU_ALLOC_TB_FMT_B7_B1
= 0x000001fc,
704
};
705
706
/**
707
* @brief Possible GI values in EHT data subfield.
708
*/
709
enum
EhtData0Gi
: uint8_t
710
{
711
EHT_DATA0_GI_800_NS
= 0,
712
EHT_DATA0_GI_1600_NS
= 1,
713
EHT_DATA0_GI_3200_NS
= 2,
714
};
715
716
/**
717
* @brief Possible Primary 80 MHz Channel Position values in EHT data subfield.
718
*/
719
enum
EhtData1Primary80
: uint8_t
720
{
721
EHT_DATA1_PRIMARY_80_LOWEST
= 0,
722
EHT_DATA1_PRIMARY_80_HIGHEST
= 3,
723
};
724
725
/**
726
* @brief Possible RU/MRU Size values in EHT data subfield.
727
*/
728
enum
EhtData1RuSize
: uint8_t
729
{
730
EHT_DATA1_RU_MRU_SIZE_26
= 0,
731
EHT_DATA1_RU_MRU_SIZE_52
= 1,
732
EHT_DATA1_RU_MRU_SIZE_106
= 2,
733
EHT_DATA1_RU_MRU_SIZE_242
= 3,
734
EHT_DATA1_RU_MRU_SIZE_484
= 4,
735
EHT_DATA1_RU_MRU_SIZE_996
= 5,
736
EHT_DATA1_RU_MRU_SIZE_2x996
= 6,
737
EHT_DATA1_RU_MRU_SIZE_4x996
= 7,
738
EHT_DATA1_RU_MRU_SIZE_52_26
= 8,
739
EHT_DATA1_RU_MRU_SIZE_106_26
= 9,
740
EHT_DATA1_RU_MRU_SIZE_484_242
= 10,
741
EHT_DATA1_RU_MRU_SIZE_996_484
= 11,
742
EHT_DATA1_RU_MRU_SIZE_996_484_242
= 12,
743
EHT_DATA1_RU_MRU_SIZE_2x996_484
= 13,
744
EHT_DATA1_RU_MRU_SIZE_3x996
= 14,
745
EHT_DATA1_RU_MRU_SIZE_3x996_484
= 15,
746
};
747
748
/**
749
* @brief EHT user_info subfield.
750
*/
751
enum
EhtUserInfo
:
uint32_t
752
{
753
EHT_USER_INFO_STA_ID_KNOWN
= 0x00000001,
754
EHT_USER_INFO_MCS_KNOWN
= 0x00000002,
755
EHT_USER_INFO_CODING_KNOWN
= 0x00000004,
756
EHT_USER_INFO_NSS_KNOWN_O
= 0x00000010,
757
EHT_USER_INFO_BEAMFORMING_KNOWN_O
= 0x00000020,
758
EHT_USER_INFO_SPATIAL_CONFIG_KNOWN_M
= 0x00000040,
759
EHT_USER_INFO_DATA_FOR_USER
= 0x00000080,
760
EHT_USER_INFO_STA_ID
= 0x0007ff00,
761
EHT_USER_INFO_CODING
= 0x00080000,
762
EHT_USER_INFO_MCS
= 0x00f00000,
763
EHT_USER_INFO_NSS_O
= 0x0f000000,
764
EHT_USER_INFO_BEAMFORMING_O
= 0x20000000,
765
EHT_USER_INFO_SPATIAL_CONFIG_M
= 0x3f000000,
766
};
767
768
/**
769
* @brief Set the subfields of the EHT-SIG field
770
*
771
* @param ehtFields The subfields of the EHT-SIG field.
772
*/
773
void
SetEhtFields
(
const
EhtFields& ehtFields);
774
775
private
:
776
/**
777
* Serialize the Channel radiotap header.
778
*
779
* @param start An iterator which points to where the header should be written.
780
*/
781
void
SerializeChannel
(
Buffer::Iterator
& start)
const
;
782
783
/**
784
* Deserialize the Channel radiotap header.
785
*
786
* @param start An iterator which points to where the header should be read.
787
* @param bytesRead the number of bytes already read.
788
789
* @returns The number of bytes read.
790
*/
791
uint32_t
DeserializeChannel
(
Buffer::Iterator
start,
uint32_t
bytesRead);
792
793
/**
794
* Add Channel subfield/value pairs to the output stream.
795
*
796
* @param os The output stream
797
*/
798
void
PrintChannel
(std::ostream& os)
const
;
799
800
/**
801
* Serialize the MCS radiotap header.
802
*
803
* @param start An iterator which points to where the header should be written.
804
*/
805
void
SerializeMcs
(
Buffer::Iterator
& start)
const
;
806
807
/**
808
* Deserialize the MCS radiotap header.
809
*
810
* @param start An iterator which points to where the header should be read.
811
* @param bytesRead the number of bytes already read.
812
813
* @returns The number of bytes read.
814
*/
815
uint32_t
DeserializeMcs
(
Buffer::Iterator
start,
uint32_t
bytesRead);
816
817
/**
818
* Add MCS subfield/value pairs to the output stream.
819
*
820
* @param os The output stream
821
*/
822
void
PrintMcs
(std::ostream& os)
const
;
823
824
/**
825
* Serialize the A-MPDU Status radiotap header.
826
*
827
* @param start An iterator which points to where the header should be written.
828
*/
829
void
SerializeAmpduStatus
(
Buffer::Iterator
& start)
const
;
830
831
/**
832
* Deserialize the A-MPDU Status radiotap header.
833
*
834
* @param start An iterator which points to where the header should be read.
835
* @param bytesRead the number of bytes already read.
836
837
* @returns The number of bytes read.
838
*/
839
uint32_t
DeserializeAmpduStatus
(
Buffer::Iterator
start,
uint32_t
bytesRead);
840
841
/**
842
* Add A-MPDU Status subfield/value pairs to the output stream.
843
*
844
* @param os The output stream
845
*/
846
void
PrintAmpduStatus
(std::ostream& os)
const
;
847
848
/**
849
* Serialize the VHT radiotap header.
850
*
851
* @param start An iterator which points to where the header should be written.
852
*/
853
void
SerializeVht
(
Buffer::Iterator
& start)
const
;
854
855
/**
856
* Deserialize the VHT radiotap header.
857
*
858
* @param start An iterator which points to where the header should be read.
859
* @param bytesRead the number of bytes already read.
860
861
* @returns The number of bytes read.
862
*/
863
uint32_t
DeserializeVht
(
Buffer::Iterator
start,
uint32_t
bytesRead);
864
865
/**
866
* Add VHT subfield/value pairs to the output stream.
867
*
868
* @param os The output stream
869
*/
870
void
PrintVht
(std::ostream& os)
const
;
871
872
/**
873
* Serialize the HE radiotap header.
874
*
875
* @param start An iterator which points to where the header should be written.
876
*/
877
void
SerializeHe
(
Buffer::Iterator
& start)
const
;
878
879
/**
880
* Deserialize the HE radiotap header.
881
*
882
* @param start An iterator which points to where the header should be read.
883
* @param bytesRead the number of bytes already read.
884
885
* @returns The number of bytes read.
886
*/
887
uint32_t
DeserializeHe
(
Buffer::Iterator
start,
uint32_t
bytesRead);
888
889
/**
890
* Add HE subfield/value pairs to the output stream.
891
*
892
* @param os The output stream
893
*/
894
void
PrintHe
(std::ostream& os)
const
;
895
896
/**
897
* Serialize the HE-MU radiotap header.
898
*
899
* @param start An iterator which points to where the header should be written.
900
*/
901
void
SerializeHeMu
(
Buffer::Iterator
& start)
const
;
902
903
/**
904
* Deserialize the HE-MU radiotap header.
905
*
906
* @param start An iterator which points to where the header should be read.
907
* @param bytesRead the number of bytes already read.
908
909
* @returns The number of bytes read.
910
*/
911
uint32_t
DeserializeHeMu
(
Buffer::Iterator
start,
uint32_t
bytesRead);
912
913
/**
914
* Add HE-MU subfield/value pairs to the output stream.
915
*
916
* @param os The output stream
917
*/
918
void
PrintHeMu
(std::ostream& os)
const
;
919
920
/**
921
* Serialize the HE-MU-other-user radiotap header.
922
*
923
* @param start An iterator which points to where the header should be written.
924
*/
925
void
SerializeHeMuOtherUser
(
Buffer::Iterator
& start)
const
;
926
927
/**
928
* Deserialize the HE-MU-other-user radiotap header.
929
*
930
* @param start An iterator which points to where the header should be read.
931
* @param bytesRead the number of bytes already read.
932
933
* @returns The number of bytes read.
934
*/
935
uint32_t
DeserializeHeMuOtherUser
(
Buffer::Iterator
start,
uint32_t
bytesRead);
936
937
/**
938
* Add HE-MU-other-user subfield/value pairs to the output stream.
939
*
940
* @param os The output stream
941
*/
942
void
PrintHeMuOtherUser
(std::ostream& os)
const
;
943
944
/**
945
* Serialize the U-SIG radiotap header.
946
*
947
* @param start An iterator which points to where the header should be written.
948
*/
949
void
SerializeUsig
(
Buffer::Iterator
& start)
const
;
950
951
/**
952
* Deserialize the U-SIG radiotap header.
953
*
954
* @param start An iterator which points to where the header should be read.
955
* @param bytesRead the number of bytes already read.
956
957
* @returns The number of bytes read.
958
*/
959
uint32_t
DeserializeUsig
(
Buffer::Iterator
start,
uint32_t
bytesRead);
960
961
/**
962
* Add U-SIG subfield/value pairs to the output stream.
963
*
964
* @param os The output stream
965
*/
966
void
PrintUsig
(std::ostream& os)
const
;
967
968
/**
969
* Serialize the EHT radiotap header.
970
*
971
* @param start An iterator which points to where the header should be written.
972
*/
973
void
SerializeEht
(
Buffer::Iterator
& start)
const
;
974
975
/**
976
* Deserialize the EHT radiotap header.
977
*
978
* @param start An iterator which points to where the header should be read.
979
* @param bytesRead the number of bytes already read.
980
981
* @returns The number of bytes read.
982
*/
983
uint32_t
DeserializeEht
(
Buffer::Iterator
start,
uint32_t
bytesRead);
984
985
/**
986
* Add EHT subfield/value pairs to the output stream.
987
*
988
* @param os The output stream
989
*/
990
void
PrintEht
(std::ostream& os)
const
;
991
992
/**
993
* @brief Radiotap flags.
994
*/
995
enum
RadiotapFlags
:
uint32_t
996
{
997
RADIOTAP_TSFT
= 0x00000001,
998
RADIOTAP_FLAGS
= 0x00000002,
999
RADIOTAP_RATE
= 0x00000004,
1000
RADIOTAP_CHANNEL
= 0x00000008,
1001
RADIOTAP_FHSS
= 0x00000010,
1002
RADIOTAP_DBM_ANTSIGNAL
= 0x00000020,
1003
RADIOTAP_DBM_ANTNOISE
= 0x00000040,
1004
RADIOTAP_LOCK_QUALITY
= 0x00000080,
1005
RADIOTAP_TX_ATTENUATION
= 0x00000100,
1006
RADIOTAP_DB_TX_ATTENUATION
= 0x00000200,
1007
RADIOTAP_DBM_TX_POWER
= 0x00000400,
1008
RADIOTAP_ANTENNA
= 0x00000800,
1009
RADIOTAP_DB_ANTSIGNAL
= 0x00001000,
1010
RADIOTAP_DB_ANTNOISE
= 0x00002000,
1011
RADIOTAP_RX_FLAGS
= 0x00004000,
1012
RADIOTAP_MCS
= 0x00080000,
1013
RADIOTAP_AMPDU_STATUS
= 0x00100000,
1014
RADIOTAP_VHT
= 0x00200000,
1015
RADIOTAP_HE
= 0x00800000,
1016
RADIOTAP_HE_MU
= 0x01000000,
1017
RADIOTAP_HE_MU_OTHER_USER
= 0x02000000,
1018
RADIOTAP_ZERO_LEN_PSDU
= 0x04000000,
1019
RADIOTAP_LSIG
= 0x08000000,
1020
RADIOTAP_TLV
= 0x10000000,
1021
RADIOTAP_EXT
= 0x80000000
1022
};
1023
1024
/**
1025
* @brief Radiotap extended flags.
1026
*/
1027
enum
RadiotapExtFlags
:
uint32_t
1028
{
1029
RADIOTAP_S1G
= 0x00000001,
1030
RADIOTAP_USIG
= 0x00000002,
1031
RADIOTAP_EHT_SIG
= 0x00000004
1032
};
1033
1034
uint16_t
m_length
{8};
//!< entire length of radiotap data + header
1035
uint32_t
m_present
{0};
//!< bits describing which fields follow header
1036
std::optional<uint32_t>
m_presentExt
{};
//!< optional extended present bitmask
1037
1038
uint64_t
m_tsft
{0};
//!< Time Synchronization Function Timer (when the first bit of the MPDU
1039
//!< arrived at the MAC)
1040
1041
uint8_t
m_flags
{
FRAME_FLAG_NONE
};
//!< Properties of transmitted and received frames.
1042
1043
uint8_t
m_rate
{0};
//!< TX/RX data rate in units of 500 kbps
1044
1045
uint8_t
m_channelPad
{0};
//!< Channel padding.
1046
ChannelFields
m_channelFields
{};
//!< Channel fields.
1047
1048
int8_t
m_antennaSignal
{
1049
0};
//!< RF signal power at the antenna, dB difference from an arbitrary, fixed reference.
1050
int8_t
m_antennaNoise
{
1051
0};
//!< RF noise power at the antenna, dB difference from an arbitrary, fixed reference.
1052
1053
McsFields
m_mcsFields
{};
//!< MCS fields.
1054
1055
uint8_t
m_ampduStatusPad
{0};
//!< A-MPDU Status Flags, padding before A-MPDU Status Field.
1056
AmpduStatusFields
m_ampduStatusFields
{};
//!< A-MPDU Status fields.
1057
1058
uint8_t
m_vhtPad
{0};
//!< VHT padding.
1059
VhtFields
m_vhtFields
{};
//!< VHT fields.
1060
1061
uint8_t
m_hePad
{0};
//!< HE padding.
1062
HeFields
m_heFields
{};
//!< HE fields.
1063
1064
uint8_t
m_heMuPad
{0};
//!< HE MU padding.
1065
HeMuFields
m_heMuFields
{};
//!< HE MU fields.
1066
1067
uint8_t
m_heMuOtherUserPad
{0};
//!< HE MU other user padding.
1068
HeMuOtherUserFields
m_heMuOtherUserFields
{};
//!< HE MU other user fields.
1069
1070
uint8_t
m_usigTlvPad
{0};
//!< U-SIG TLV padding.
1071
TlvFields
m_usigTlv
{};
//!< U-SIG TLV fields.
1072
uint8_t
m_usigPad
{0};
//!< U-SIG padding.
1073
UsigFields
m_usigFields
{};
//!< U-SIG fields.
1074
1075
uint8_t
m_ehtTlvPad
{0};
//!< EHT TLV padding.
1076
TlvFields
m_ehtTlv
{};
//!< EHT TLV fields.
1077
uint8_t
m_ehtPad
{0};
//!< EHT padding.
1078
EhtFields
m_ehtFields
{};
//!< EHT fields.
1079
};
1080
1081
}
// namespace ns3
1082
1083
#endif
/* RADIOTAP_HEADER_H */
int8_t
ns3::Buffer::Iterator
iterator in a Buffer instance
Definition
buffer.h:89
ns3::Header
Protocol header serialization and deserialization.
Definition
header.h:33
ns3::RadiotapHeader
Radiotap header implementation.
Definition
radiotap-header.h:31
ns3::RadiotapHeader::SerializeMcs
void SerializeMcs(Buffer::Iterator &start) const
Serialize the MCS radiotap header.
Definition
radiotap-header.cc:741
ns3::RadiotapHeader::m_presentExt
std::optional< uint32_t > m_presentExt
optional extended present bitmask
Definition
radiotap-header.h:1036
ns3::RadiotapHeader::m_heMuFields
HeMuFields m_heMuFields
HE MU fields.
Definition
radiotap-header.h:1065
ns3::RadiotapHeader::DeserializeHe
uint32_t DeserializeHe(Buffer::Iterator start, uint32_t bytesRead)
Deserialize the HE radiotap header.
Definition
radiotap-header.cc:901
ns3::RadiotapHeader::PrintHeMu
void PrintHeMu(std::ostream &os) const
Add HE-MU subfield/value pairs to the output stream.
Definition
radiotap-header.cc:973
ns3::RadiotapHeader::SerializeHe
void SerializeHe(Buffer::Iterator &start) const
Serialize the HE radiotap header.
Definition
radiotap-header.cc:889
ns3::RadiotapHeader::m_rate
uint8_t m_rate
TX/RX data rate in units of 500 kbps.
Definition
radiotap-header.h:1043
ns3::RadiotapHeader::PrintMcs
void PrintMcs(std::ostream &os) const
Add MCS subfield/value pairs to the output stream.
Definition
radiotap-header.cc:758
ns3::RadiotapHeader::SetAmpduStatus
void SetAmpduStatus(const AmpduStatusFields &duStatusFields)
Set the subfields of the A-MPDU status field.
Definition
radiotap-header.cc:765
ns3::RadiotapHeader::DeserializeUsig
uint32_t DeserializeUsig(Buffer::Iterator start, uint32_t bytesRead)
Deserialize the U-SIG radiotap header.
Definition
radiotap-header.cc:1069
ns3::RadiotapHeader::PrintEht
void PrintEht(std::ostream &os) const
Add EHT subfield/value pairs to the output stream.
Definition
radiotap-header.cc:1175
ns3::RadiotapHeader::GetTypeId
static TypeId GetTypeId()
Get the type ID.
Definition
radiotap-header.cc:31
ns3::RadiotapHeader::ChannelFlags
ChannelFlags
Channel flags.
Definition
radiotap-header.h:128
ns3::RadiotapHeader::CHANNEL_FLAG_GFSK
@ CHANNEL_FLAG_GFSK
GFSK channel (FHSS PHY)
Definition
radiotap-header.h:137
ns3::RadiotapHeader::CHANNEL_FLAG_TURBO
@ CHANNEL_FLAG_TURBO
Turbo Channel.
Definition
radiotap-header.h:130
ns3::RadiotapHeader::CHANNEL_FLAG_DYNAMIC
@ CHANNEL_FLAG_DYNAMIC
Dynamic CCK-OFDM channel.
Definition
radiotap-header.h:136
ns3::RadiotapHeader::CHANNEL_FLAG_PASSIVE
@ CHANNEL_FLAG_PASSIVE
Only passive scan allowed.
Definition
radiotap-header.h:135
ns3::RadiotapHeader::CHANNEL_FLAG_OFDM
@ CHANNEL_FLAG_OFDM
OFDM channel.
Definition
radiotap-header.h:132
ns3::RadiotapHeader::CHANNEL_FLAG_CCK
@ CHANNEL_FLAG_CCK
CCK channel.
Definition
radiotap-header.h:131
ns3::RadiotapHeader::CHANNEL_FLAG_NONE
@ CHANNEL_FLAG_NONE
No flags set.
Definition
radiotap-header.h:129
ns3::RadiotapHeader::CHANNEL_FLAG_SPECTRUM_5GHZ
@ CHANNEL_FLAG_SPECTRUM_5GHZ
5 GHz spectrum channel
Definition
radiotap-header.h:134
ns3::RadiotapHeader::CHANNEL_FLAG_SPECTRUM_2GHZ
@ CHANNEL_FLAG_SPECTRUM_2GHZ
2 GHz spectrum channel
Definition
radiotap-header.h:133
ns3::RadiotapHeader::m_ampduStatusPad
uint8_t m_ampduStatusPad
A-MPDU Status Flags, padding before A-MPDU Status Field.
Definition
radiotap-header.h:1055
ns3::RadiotapHeader::PrintHeMuOtherUser
void PrintHeMuOtherUser(std::ostream &os) const
Add HE-MU-other-user subfield/value pairs to the output stream.
Definition
radiotap-header.cc:1020
ns3::RadiotapHeader::SetHeMuOtherUserFields
void SetHeMuOtherUserFields(const HeMuOtherUserFields &heMuOtherUserFields)
Set the subfields of the HE-MU-other-user field.
Definition
radiotap-header.cc:980
ns3::RadiotapHeader::UsigTb
UsigTb
EHT TB PPDU U-SIG contents.
Definition
radiotap-header.h:576
ns3::RadiotapHeader::USIG2_TB_B11_B15_DISREGARD
@ USIG2_TB_B11_B15_DISREGARD
Definition
radiotap-header.h:584
ns3::RadiotapHeader::USIG1_TB_B20_B25_DISREGARD
@ USIG1_TB_B20_B25_DISREGARD
Definition
radiotap-header.h:578
ns3::RadiotapHeader::USIG2_TB_B16_B19_CRC
@ USIG2_TB_B16_B19_CRC
Definition
radiotap-header.h:585
ns3::RadiotapHeader::USIG2_TB_B7_B10_SPATIAL_REUSE_2
@ USIG2_TB_B7_B10_SPATIAL_REUSE_2
Definition
radiotap-header.h:583
ns3::RadiotapHeader::USIG2_TB_B20_B25_TAIL
@ USIG2_TB_B20_B25_TAIL
Definition
radiotap-header.h:586
ns3::RadiotapHeader::USIG2_TB_B2_VALIDATE
@ USIG2_TB_B2_VALIDATE
Definition
radiotap-header.h:581
ns3::RadiotapHeader::USIG2_TB_B0_B1_PPDU_TYPE
@ USIG2_TB_B0_B1_PPDU_TYPE
Definition
radiotap-header.h:580
ns3::RadiotapHeader::USIG2_TB_B3_B6_SPATIAL_REUSE_1
@ USIG2_TB_B3_B6_SPATIAL_REUSE_1
Definition
radiotap-header.h:582
ns3::RadiotapHeader::HeMuFlags1
HeMuFlags1
HE MU flags1.
Definition
radiotap-header.h:418
ns3::RadiotapHeader::HE_MU_FLAGS1_SIGB_DCM_KNOWN
@ HE_MU_FLAGS1_SIGB_DCM_KNOWN
SIG-B DCM known.
Definition
radiotap-header.h:422
ns3::RadiotapHeader::HE_MU_FLAGS1_NUM_SIGB_SYMBOLS_KNOWN
@ HE_MU_FLAGS1_NUM_SIGB_SYMBOLS_KNOWN
Definition
radiotap-header.h:429
ns3::RadiotapHeader::HE_MU_FLAGS1_SIGB_MCS_KNOWN
@ HE_MU_FLAGS1_SIGB_MCS_KNOWN
SIG-B MCS known.
Definition
radiotap-header.h:420
ns3::RadiotapHeader::HE_MU_FLAGS1_CH1_RUS_KNOWN
@ HE_MU_FLAGS1_CH1_RUS_KNOWN
Channel 1 RUs known (which depends on BW)
Definition
radiotap-header.h:424
ns3::RadiotapHeader::HE_MU_FLAGS1_SIGB_DCM
@ HE_MU_FLAGS1_SIGB_DCM
SIG-B DCM (from SIG-A)
Definition
radiotap-header.h:421
ns3::RadiotapHeader::HE_MU_FLAGS1_CH2_RUS_KNOWN
@ HE_MU_FLAGS1_CH2_RUS_KNOWN
Channel 2 RUs known (which depends on BW)
Definition
radiotap-header.h:425
ns3::RadiotapHeader::HE_MU_FLAGS1_CH1_CENTER_26T_RU_KNOWN
@ HE_MU_FLAGS1_CH1_CENTER_26T_RU_KNOWN
(Channel 1) Center 26-tone RU bit known
Definition
radiotap-header.h:426
ns3::RadiotapHeader::HE_MU_FLAGS1_CH2_CENTER_26T_RU_KNOWN
@ HE_MU_FLAGS1_CH2_CENTER_26T_RU_KNOWN
(Channel 2) Center 26-tone RU bit known
Definition
radiotap-header.h:423
ns3::RadiotapHeader::HE_MU_FLAGS1_CH1_CENTER_26T_RU
@ HE_MU_FLAGS1_CH1_CENTER_26T_RU
(Channel 1) Center 26-tone RU value
Definition
radiotap-header.h:427
ns3::RadiotapHeader::HE_MU_FLAGS1_SIGB_COMPRESSION_KNOWN
@ HE_MU_FLAGS1_SIGB_COMPRESSION_KNOWN
SIG-B Compression known.
Definition
radiotap-header.h:428
ns3::RadiotapHeader::HE_MU_FLAGS1_SIGB_MCS
@ HE_MU_FLAGS1_SIGB_MCS
SIG-B MCS (from SIG-A)
Definition
radiotap-header.h:419
ns3::RadiotapHeader::m_ehtPad
uint8_t m_ehtPad
EHT padding.
Definition
radiotap-header.h:1077
ns3::RadiotapHeader::m_heFields
HeFields m_heFields
HE fields.
Definition
radiotap-header.h:1062
ns3::RadiotapHeader::m_heMuPad
uint8_t m_heMuPad
HE MU padding.
Definition
radiotap-header.h:1064
ns3::RadiotapHeader::Print
void Print(std::ostream &os) const override
This method is used by Packet::Print to print the content of the header as ascii data to a C++ output...
Definition
radiotap-header.cc:547
ns3::RadiotapHeader::m_usigPad
uint8_t m_usigPad
U-SIG padding.
Definition
radiotap-header.h:1072
ns3::RadiotapHeader::m_heMuOtherUserPad
uint8_t m_heMuOtherUserPad
HE MU other user padding.
Definition
radiotap-header.h:1067
ns3::RadiotapHeader::SetHeFields
void SetHeFields(const HeFields &heFields)
Set the subfields of the HE field.
Definition
radiotap-header.cc:873
ns3::RadiotapHeader::m_hePad
uint8_t m_hePad
HE padding.
Definition
radiotap-header.h:1061
ns3::RadiotapHeader::SerializeHeMuOtherUser
void SerializeHeMuOtherUser(Buffer::Iterator &start) const
Serialize the HE-MU-other-user radiotap header.
Definition
radiotap-header.cc:998
ns3::RadiotapHeader::m_ehtFields
EhtFields m_ehtFields
EHT fields.
Definition
radiotap-header.h:1078
ns3::RadiotapHeader::HeMuPerUserKnown
HeMuPerUserKnown
HE MU per_user_known.
Definition
radiotap-header.h:472
ns3::RadiotapHeader::HE_MU_PER_USER_CODING_KNOWN
@ HE_MU_PER_USER_CODING_KNOWN
Coding known.
Definition
radiotap-header.h:480
ns3::RadiotapHeader::HE_MU_PER_USER_POSITION_KNOWN
@ HE_MU_PER_USER_POSITION_KNOWN
User field position known.
Definition
radiotap-header.h:473
ns3::RadiotapHeader::HE_MU_PER_USER_SPATIAL_CONFIGURATION_KNOWN
@ HE_MU_PER_USER_SPATIAL_CONFIGURATION_KNOWN
Spatial Configuration known.
Definition
radiotap-header.h:477
ns3::RadiotapHeader::HE_MU_PER_USER_MCS_KNOWN
@ HE_MU_PER_USER_MCS_KNOWN
MCS known.
Definition
radiotap-header.h:478
ns3::RadiotapHeader::HE_MU_PER_USER_TX_BF_KNOWN
@ HE_MU_PER_USER_TX_BF_KNOWN
Tx Beamforming known.
Definition
radiotap-header.h:476
ns3::RadiotapHeader::HE_MU_PER_USER_NSTS_KNOWN
@ HE_MU_PER_USER_NSTS_KNOWN
NSTS known.
Definition
radiotap-header.h:475
ns3::RadiotapHeader::HE_MU_PER_USER_STA_ID_KNOWN
@ HE_MU_PER_USER_STA_ID_KNOWN
STA-ID known.
Definition
radiotap-header.h:474
ns3::RadiotapHeader::HE_MU_PER_USER_DCM_KNOWN
@ HE_MU_PER_USER_DCM_KNOWN
DCM known.
Definition
radiotap-header.h:479
ns3::RadiotapHeader::SetMcsFields
void SetMcsFields(const McsFields &mcsFields)
Set the subfields of the MCS field.
Definition
radiotap-header.cc:727
ns3::RadiotapHeader::SetRate
void SetRate(uint8_t rate)
Set the transmit/receive channel frequency in units of megahertz.
Definition
radiotap-header.cc:619
ns3::RadiotapHeader::m_ehtTlvPad
uint8_t m_ehtTlvPad
EHT TLV padding.
Definition
radiotap-header.h:1075
ns3::RadiotapHeader::m_antennaSignal
int8_t m_antennaSignal
RF signal power at the antenna, dB difference from an arbitrary, fixed reference.
Definition
radiotap-header.h:1048
ns3::RadiotapHeader::SetAntennaSignalPower
void SetAntennaSignalPower(double signal)
Set the RF signal power at the antenna as a decibel difference from an arbitrary, fixed reference.
Definition
radiotap-header.cc:673
ns3::RadiotapHeader::VhtFlags
VhtFlags
VHT flags.
Definition
radiotap-header.h:285
ns3::RadiotapHeader::VHT_FLAGS_LDPC_EXTRA_OFDM_SYMBOL
@ VHT_FLAGS_LDPC_EXTRA_OFDM_SYMBOL
Set if one or more users are using LDPC and the encoding process resulted in extra OFDM symbol(s)
Definition
radiotap-header.h:294
ns3::RadiotapHeader::VHT_FLAGS_TXOP_PS_NOT_ALLOWED
@ VHT_FLAGS_TXOP_PS_NOT_ALLOWED
Set if STAs may not doze during TXOP (valid only for AP transmitters).
Definition
radiotap-header.h:289
ns3::RadiotapHeader::VHT_FLAGS_NONE
@ VHT_FLAGS_NONE
No flags set.
Definition
radiotap-header.h:286
ns3::RadiotapHeader::VHT_FLAGS_STBC
@ VHT_FLAGS_STBC
Set if all spatial streams of all users have space-time block coding.
Definition
radiotap-header.h:287
ns3::RadiotapHeader::VHT_FLAGS_BEAMFORMED
@ VHT_FLAGS_BEAMFORMED
Set if beamforming is used (valid for SU PPDUs only).
Definition
radiotap-header.h:297
ns3::RadiotapHeader::VHT_FLAGS_GUARD_INTERVAL
@ VHT_FLAGS_GUARD_INTERVAL
Short guard interval.
Definition
radiotap-header.h:291
ns3::RadiotapHeader::VHT_FLAGS_SHORT_GI_NSYM_DISAMBIGUATION
@ VHT_FLAGS_SHORT_GI_NSYM_DISAMBIGUATION
Set if NSYM mod 10 = 9 (valid only if short GI is used).
Definition
radiotap-header.h:292
ns3::RadiotapHeader::EhtData1RuSize
EhtData1RuSize
Possible RU/MRU Size values in EHT data subfield.
Definition
radiotap-header.h:729
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_242
@ EHT_DATA1_RU_MRU_SIZE_242
Definition
radiotap-header.h:733
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_484
@ EHT_DATA1_RU_MRU_SIZE_484
Definition
radiotap-header.h:734
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_996_484
@ EHT_DATA1_RU_MRU_SIZE_996_484
Definition
radiotap-header.h:741
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_2x996
@ EHT_DATA1_RU_MRU_SIZE_2x996
Definition
radiotap-header.h:736
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_106
@ EHT_DATA1_RU_MRU_SIZE_106
Definition
radiotap-header.h:732
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_3x996
@ EHT_DATA1_RU_MRU_SIZE_3x996
Definition
radiotap-header.h:744
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_26
@ EHT_DATA1_RU_MRU_SIZE_26
Definition
radiotap-header.h:730
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_3x996_484
@ EHT_DATA1_RU_MRU_SIZE_3x996_484
Definition
radiotap-header.h:745
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_52_26
@ EHT_DATA1_RU_MRU_SIZE_52_26
Definition
radiotap-header.h:738
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_996
@ EHT_DATA1_RU_MRU_SIZE_996
Definition
radiotap-header.h:735
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_2x996_484
@ EHT_DATA1_RU_MRU_SIZE_2x996_484
Definition
radiotap-header.h:743
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_52
@ EHT_DATA1_RU_MRU_SIZE_52
Definition
radiotap-header.h:731
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_484_242
@ EHT_DATA1_RU_MRU_SIZE_484_242
Definition
radiotap-header.h:740
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_996_484_242
@ EHT_DATA1_RU_MRU_SIZE_996_484_242
Definition
radiotap-header.h:742
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_106_26
@ EHT_DATA1_RU_MRU_SIZE_106_26
Definition
radiotap-header.h:739
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE_4x996
@ EHT_DATA1_RU_MRU_SIZE_4x996
Definition
radiotap-header.h:737
ns3::RadiotapHeader::DeserializeAmpduStatus
uint32_t DeserializeAmpduStatus(Buffer::Iterator start, uint32_t bytesRead)
Deserialize the A-MPDU Status radiotap header.
Definition
radiotap-header.cc:791
ns3::RadiotapHeader::DeserializeVht
uint32_t DeserializeVht(Buffer::Iterator start, uint32_t bytesRead)
Deserialize the VHT radiotap header.
Definition
radiotap-header.cc:843
ns3::RadiotapHeader::DeserializeHeMuOtherUser
uint32_t DeserializeHeMuOtherUser(Buffer::Iterator start, uint32_t bytesRead)
Deserialize the HE-MU-other-user radiotap header.
Definition
radiotap-header.cc:1008
ns3::RadiotapHeader::SetTsft
void SetTsft(uint64_t tsft)
Set the Time Synchronization Function Timer (TSFT) value.
Definition
radiotap-header.cc:591
ns3::RadiotapHeader::PrintHe
void PrintHe(std::ostream &os) const
Add HE subfield/value pairs to the output stream.
Definition
radiotap-header.cc:915
ns3::RadiotapHeader::m_usigTlv
TlvFields m_usigTlv
U-SIG TLV fields.
Definition
radiotap-header.h:1071
ns3::RadiotapHeader::m_length
uint16_t m_length
entire length of radiotap data + header
Definition
radiotap-header.h:1034
ns3::RadiotapHeader::Serialize
void Serialize(Buffer::Iterator start) const override
This method is used by Packet::AddHeader to store the header into the byte buffer of a packet.
Definition
radiotap-header.cc:55
ns3::RadiotapHeader::EhtUserInfo
EhtUserInfo
EHT user_info subfield.
Definition
radiotap-header.h:752
ns3::RadiotapHeader::EHT_USER_INFO_BEAMFORMING_O
@ EHT_USER_INFO_BEAMFORMING_O
Definition
radiotap-header.h:764
ns3::RadiotapHeader::EHT_USER_INFO_STA_ID_KNOWN
@ EHT_USER_INFO_STA_ID_KNOWN
Definition
radiotap-header.h:753
ns3::RadiotapHeader::EHT_USER_INFO_NSS_O
@ EHT_USER_INFO_NSS_O
Definition
radiotap-header.h:763
ns3::RadiotapHeader::EHT_USER_INFO_BEAMFORMING_KNOWN_O
@ EHT_USER_INFO_BEAMFORMING_KNOWN_O
Definition
radiotap-header.h:757
ns3::RadiotapHeader::EHT_USER_INFO_CODING
@ EHT_USER_INFO_CODING
Definition
radiotap-header.h:761
ns3::RadiotapHeader::EHT_USER_INFO_NSS_KNOWN_O
@ EHT_USER_INFO_NSS_KNOWN_O
Definition
radiotap-header.h:756
ns3::RadiotapHeader::EHT_USER_INFO_CODING_KNOWN
@ EHT_USER_INFO_CODING_KNOWN
Definition
radiotap-header.h:755
ns3::RadiotapHeader::EHT_USER_INFO_STA_ID
@ EHT_USER_INFO_STA_ID
Definition
radiotap-header.h:760
ns3::RadiotapHeader::EHT_USER_INFO_SPATIAL_CONFIG_M
@ EHT_USER_INFO_SPATIAL_CONFIG_M
Definition
radiotap-header.h:765
ns3::RadiotapHeader::EHT_USER_INFO_MCS_KNOWN
@ EHT_USER_INFO_MCS_KNOWN
Definition
radiotap-header.h:754
ns3::RadiotapHeader::EHT_USER_INFO_MCS
@ EHT_USER_INFO_MCS
Definition
radiotap-header.h:762
ns3::RadiotapHeader::EHT_USER_INFO_SPATIAL_CONFIG_KNOWN_M
@ EHT_USER_INFO_SPATIAL_CONFIG_KNOWN_M
Definition
radiotap-header.h:758
ns3::RadiotapHeader::EHT_USER_INFO_DATA_FOR_USER
@ EHT_USER_INFO_DATA_FOR_USER
Definition
radiotap-header.h:759
ns3::RadiotapHeader::UsigCommonBw
UsigCommonBw
Possible BW values in U-SIG common subfield.
Definition
radiotap-header.h:544
ns3::RadiotapHeader::USIG_COMMON_BW_80MHZ
@ USIG_COMMON_BW_80MHZ
Definition
radiotap-header.h:547
ns3::RadiotapHeader::USIG_COMMON_BW_160MHZ
@ USIG_COMMON_BW_160MHZ
Definition
radiotap-header.h:548
ns3::RadiotapHeader::USIG_COMMON_BW_40MHZ
@ USIG_COMMON_BW_40MHZ
Definition
radiotap-header.h:546
ns3::RadiotapHeader::USIG_COMMON_BW_20MHZ
@ USIG_COMMON_BW_20MHZ
Definition
radiotap-header.h:545
ns3::RadiotapHeader::USIG_COMMON_BW_320MHZ_1
@ USIG_COMMON_BW_320MHZ_1
Definition
radiotap-header.h:549
ns3::RadiotapHeader::USIG_COMMON_BW_320MHZ_2
@ USIG_COMMON_BW_320MHZ_2
Definition
radiotap-header.h:550
ns3::RadiotapHeader::m_present
uint32_t m_present
bits describing which fields follow header
Definition
radiotap-header.h:1035
ns3::RadiotapHeader::SetUsigFields
void SetUsigFields(const UsigFields &usigFields)
Set the subfields of the U-SIG field.
Definition
radiotap-header.cc:1030
ns3::RadiotapHeader::HeData
HeData
bits of the HE data fields.
Definition
radiotap-header.h:325
ns3::RadiotapHeader::HE_DATA5_TXBF
@ HE_DATA5_TXBF
TxBF.
Definition
radiotap-header.h:390
ns3::RadiotapHeader::HE_DATA3_BEAM_CHANGE
@ HE_DATA3_BEAM_CHANGE
Definition
radiotap-header.h:360
ns3::RadiotapHeader::HE_DATA5_PE_DISAMBIG
@ HE_DATA5_PE_DISAMBIG
PE Disambiguity.
Definition
radiotap-header.h:391
ns3::RadiotapHeader::HE_DATA2_PRISEC_80_SEC
@ HE_DATA2_PRISEC_80_SEC
pri/sec 80 MHz
Definition
radiotap-header.h:357
ns3::RadiotapHeader::HE_DATA1_SPTL_REUSE_KNOWN
@ HE_DATA1_SPTL_REUSE_KNOWN
Spatial Reuse known (Spatial Reuse 1 for HE TRIG PPDU format)
Definition
radiotap-header.h:338
ns3::RadiotapHeader::HE_DATA1_DATA_DCM_KNOWN
@ HE_DATA1_DATA_DCM_KNOWN
data DCM known
Definition
radiotap-header.h:334
ns3::RadiotapHeader::HE_DATA1_CODING_KNOWN
@ HE_DATA1_CODING_KNOWN
Coding known.
Definition
radiotap-header.h:335
ns3::RadiotapHeader::HE_DATA2_PRE_FEC_PAD_KNOWN
@ HE_DATA2_PRE_FEC_PAD_KNOWN
Pre-FEC Padding Factor known.
Definition
radiotap-header.h:350
ns3::RadiotapHeader::HE_DATA5_GI_1_6
@ HE_DATA5_GI_1_6
1.6us GI
Definition
radiotap-header.h:385
ns3::RadiotapHeader::HE_DATA5_DATA_BW_RU_ALLOC_26T
@ HE_DATA5_DATA_BW_RU_ALLOC_26T
26-tone RU allocation
Definition
radiotap-header.h:378
ns3::RadiotapHeader::HE_DATA1_FORMAT_TRIG
@ HE_DATA1_FORMAT_TRIG
HE TRIG PPDU format.
Definition
radiotap-header.h:329
ns3::RadiotapHeader::HE_DATA4_TB_SPTL_REUSE2
@ HE_DATA4_TB_SPTL_REUSE2
Definition
radiotap-header.h:371
ns3::RadiotapHeader::HE_DATA5_DATA_BW_RU_ALLOC_484T
@ HE_DATA5_DATA_BW_RU_ALLOC_484T
484-tone RU allocation
Definition
radiotap-header.h:382
ns3::RadiotapHeader::HE_DATA1_STBC_KNOWN
@ HE_DATA1_STBC_KNOWN
STBC known.
Definition
radiotap-header.h:337
ns3::RadiotapHeader::HE_DATA5_GI_3_2
@ HE_DATA5_GI_3_2
3.2us GI
Definition
radiotap-header.h:386
ns3::RadiotapHeader::HE_DATA4_SU_MU_SPTL_REUSE
@ HE_DATA4_SU_MU_SPTL_REUSE
Definition
radiotap-header.h:368
ns3::RadiotapHeader::HE_DATA2_TXOP_KNOWN
@ HE_DATA2_TXOP_KNOWN
TXOP known.
Definition
radiotap-header.h:353
ns3::RadiotapHeader::HE_DATA3_DATA_DCM
@ HE_DATA3_DATA_DCM
Definition
radiotap-header.h:363
ns3::RadiotapHeader::HE_DATA3_BSS_COLOR
@ HE_DATA3_BSS_COLOR
Definition
radiotap-header.h:359
ns3::RadiotapHeader::HE_DATA1_SPTL_REUSE4_KNOWN
@ HE_DATA1_SPTL_REUSE4_KNOWN
Spatial Reuse 4 known (HE TRIG PPDU format)
Definition
radiotap-header.h:343
ns3::RadiotapHeader::HE_DATA1_FORMAT_MU
@ HE_DATA1_FORMAT_MU
HE MU PPDU format.
Definition
radiotap-header.h:328
ns3::RadiotapHeader::HE_DATA3_UL_DL
@ HE_DATA3_UL_DL
Definition
radiotap-header.h:361
ns3::RadiotapHeader::HE_DATA1_BSS_COLOR_KNOWN
@ HE_DATA1_BSS_COLOR_KNOWN
BSS Color known.
Definition
radiotap-header.h:330
ns3::RadiotapHeader::HE_DATA2_GI_KNOWN
@ HE_DATA2_GI_KNOWN
GI known.
Definition
radiotap-header.h:348
ns3::RadiotapHeader::HE_DATA5_DATA_BW_RU_ALLOC_40MHZ
@ HE_DATA5_DATA_BW_RU_ALLOC_40MHZ
40 MHz data Bandwidth
Definition
radiotap-header.h:375
ns3::RadiotapHeader::HE_DATA2_PE_DISAMBIG_KNOWN
@ HE_DATA2_PE_DISAMBIG_KNOWN
PE Disambiguity known.
Definition
radiotap-header.h:352
ns3::RadiotapHeader::HE_DATA4_TB_SPTL_REUSE3
@ HE_DATA4_TB_SPTL_REUSE3
Definition
radiotap-header.h:372
ns3::RadiotapHeader::HE_DATA5_DATA_BW_RU_ALLOC_2x996T
@ HE_DATA5_DATA_BW_RU_ALLOC_2x996T
2x996-tone RU allocation
Definition
radiotap-header.h:384
ns3::RadiotapHeader::HE_DATA5_DATA_BW_RU_ALLOC_242T
@ HE_DATA5_DATA_BW_RU_ALLOC_242T
242-tone RU allocation
Definition
radiotap-header.h:381
ns3::RadiotapHeader::HE_DATA1_LDPC_XSYMSEG_KNOWN
@ HE_DATA1_LDPC_XSYMSEG_KNOWN
LDPC extra symbol segment known.
Definition
radiotap-header.h:336
ns3::RadiotapHeader::HE_DATA5_NUM_LTF_SYMS
@ HE_DATA5_NUM_LTF_SYMS
number of LTF symbols
Definition
radiotap-header.h:388
ns3::RadiotapHeader::HE_DATA5_DATA_BW_RU_ALLOC_52T
@ HE_DATA5_DATA_BW_RU_ALLOC_52T
52-tone RU allocation
Definition
radiotap-header.h:379
ns3::RadiotapHeader::HE_DATA4_TB_SPTL_REUSE4
@ HE_DATA4_TB_SPTL_REUSE4
Definition
radiotap-header.h:373
ns3::RadiotapHeader::HE_DATA5_PRE_FEC_PAD
@ HE_DATA5_PRE_FEC_PAD
Pre-FEC Padding Factor.
Definition
radiotap-header.h:389
ns3::RadiotapHeader::HE_DATA2_RU_OFFSET
@ HE_DATA2_RU_OFFSET
RU allocation offset.
Definition
radiotap-header.h:355
ns3::RadiotapHeader::HE_DATA1_FORMAT_EXT_SU
@ HE_DATA1_FORMAT_EXT_SU
HE EXT SU PPDU format.
Definition
radiotap-header.h:327
ns3::RadiotapHeader::HE_DATA3_CODING
@ HE_DATA3_CODING
Definition
radiotap-header.h:364
ns3::RadiotapHeader::HE_DATA3_LDPC_XSYMSEG
@ HE_DATA3_LDPC_XSYMSEG
Definition
radiotap-header.h:365
ns3::RadiotapHeader::HE_DATA2_NUM_LTF_SYMS_KNOWN
@ HE_DATA2_NUM_LTF_SYMS_KNOWN
number of LTF symbols known
Definition
radiotap-header.h:349
ns3::RadiotapHeader::HE_DATA2_TXBF_KNOWN
@ HE_DATA2_TXBF_KNOWN
TxBF known.
Definition
radiotap-header.h:351
ns3::RadiotapHeader::HE_DATA1_SPTL_REUSE3_KNOWN
@ HE_DATA1_SPTL_REUSE3_KNOWN
Spatial Reuse 3 known (HE TRIG PPDU format)
Definition
radiotap-header.h:342
ns3::RadiotapHeader::HE_DATA5_LTF_SYM_SIZE
@ HE_DATA5_LTF_SYM_SIZE
LTF symbol size.
Definition
radiotap-header.h:387
ns3::RadiotapHeader::HE_DATA3_DATA_MCS
@ HE_DATA3_DATA_MCS
Definition
radiotap-header.h:362
ns3::RadiotapHeader::HE_DATA1_BEAM_CHANGE_KNOWN
@ HE_DATA1_BEAM_CHANGE_KNOWN
Beam Change known.
Definition
radiotap-header.h:331
ns3::RadiotapHeader::HE_DATA1_DATA_MCS_KNOWN
@ HE_DATA1_DATA_MCS_KNOWN
data MCS known
Definition
radiotap-header.h:333
ns3::RadiotapHeader::HE_DATA5_DATA_BW_RU_ALLOC_160MHZ
@ HE_DATA5_DATA_BW_RU_ALLOC_160MHZ
160 MHz data Bandwidth
Definition
radiotap-header.h:377
ns3::RadiotapHeader::HE_DATA5_DATA_BW_RU_ALLOC_106T
@ HE_DATA5_DATA_BW_RU_ALLOC_106T
106-tone RU allocation
Definition
radiotap-header.h:380
ns3::RadiotapHeader::HE_DATA2_RU_OFFSET_KNOWN
@ HE_DATA2_RU_OFFSET_KNOWN
RU allocation offset known.
Definition
radiotap-header.h:356
ns3::RadiotapHeader::HE_DATA1_SPTL_REUSE2_KNOWN
@ HE_DATA1_SPTL_REUSE2_KNOWN
Spatial Reuse 2 known (HE TRIG PPDU format), STA-ID known (HE MU PPDU format)
Definition
radiotap-header.h:340
ns3::RadiotapHeader::HE_DATA2_MIDAMBLE_KNOWN
@ HE_DATA2_MIDAMBLE_KNOWN
midamble periodicity known
Definition
radiotap-header.h:354
ns3::RadiotapHeader::HE_DATA3_STBC
@ HE_DATA3_STBC
Definition
radiotap-header.h:366
ns3::RadiotapHeader::HE_DATA5_DATA_BW_RU_ALLOC_996T
@ HE_DATA5_DATA_BW_RU_ALLOC_996T
996-tone RU allocation
Definition
radiotap-header.h:383
ns3::RadiotapHeader::HE_DATA4_TB_SPTL_REUSE1
@ HE_DATA4_TB_SPTL_REUSE1
Definition
radiotap-header.h:370
ns3::RadiotapHeader::HE_DATA1_BW_RU_ALLOC_KNOWN
@ HE_DATA1_BW_RU_ALLOC_KNOWN
data BW/RU allocation known
Definition
radiotap-header.h:344
ns3::RadiotapHeader::HE_DATA1_UL_DL_KNOWN
@ HE_DATA1_UL_DL_KNOWN
UL/DL known.
Definition
radiotap-header.h:332
ns3::RadiotapHeader::HE_DATA5_DATA_BW_RU_ALLOC_80MHZ
@ HE_DATA5_DATA_BW_RU_ALLOC_80MHZ
80 MHz data Bandwidth
Definition
radiotap-header.h:376
ns3::RadiotapHeader::HE_DATA2_PRISEC_80_KNOWN
@ HE_DATA2_PRISEC_80_KNOWN
pri/sec 80 MHz known
Definition
radiotap-header.h:347
ns3::RadiotapHeader::HE_DATA4_MU_STA_ID
@ HE_DATA4_MU_STA_ID
Definition
radiotap-header.h:369
ns3::RadiotapHeader::HE_DATA1_DOPPLER_KNOWN
@ HE_DATA1_DOPPLER_KNOWN
Doppler known.
Definition
radiotap-header.h:345
ns3::RadiotapHeader::SerializeUsig
void SerializeUsig(Buffer::Iterator &start) const
Serialize the U-SIG radiotap header.
Definition
radiotap-header.cc:1057
ns3::RadiotapHeader::Deserialize
uint32_t Deserialize(Buffer::Iterator start) override
This method is used by Packet::RemoveHeader to re-create a header from the byte buffer of a packet.
Definition
radiotap-header.cc:285
ns3::RadiotapHeader::PrintUsig
void PrintUsig(std::ostream &os) const
Add U-SIG subfield/value pairs to the output stream.
Definition
radiotap-header.cc:1089
ns3::RadiotapHeader::PrintChannel
void PrintChannel(std::ostream &os) const
Add Channel subfield/value pairs to the output stream.
Definition
radiotap-header.cc:666
ns3::RadiotapHeader::GetInstanceTypeId
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
Definition
radiotap-header.cc:42
ns3::RadiotapHeader::McsKnown
McsKnown
MCS known bits.
Definition
radiotap-header.h:178
ns3::RadiotapHeader::MCS_KNOWN_FEC_TYPE
@ MCS_KNOWN_FEC_TYPE
FEC type.
Definition
radiotap-header.h:184
ns3::RadiotapHeader::MCS_KNOWN_GUARD_INTERVAL
@ MCS_KNOWN_GUARD_INTERVAL
Guard interval.
Definition
radiotap-header.h:182
ns3::RadiotapHeader::MCS_KNOWN_NONE
@ MCS_KNOWN_NONE
No flags set.
Definition
radiotap-header.h:179
ns3::RadiotapHeader::MCS_KNOWN_BANDWIDTH
@ MCS_KNOWN_BANDWIDTH
Bandwidth.
Definition
radiotap-header.h:180
ns3::RadiotapHeader::MCS_KNOWN_NESS_BIT_1
@ MCS_KNOWN_NESS_BIT_1
Ness data - bit 1 (MSB) of Number of extension spatial streams.
Definition
radiotap-header.h:187
ns3::RadiotapHeader::MCS_KNOWN_HT_FORMAT
@ MCS_KNOWN_HT_FORMAT
HT format.
Definition
radiotap-header.h:183
ns3::RadiotapHeader::MCS_KNOWN_NESS
@ MCS_KNOWN_NESS
Ness known (Number of extension spatial streams)
Definition
radiotap-header.h:186
ns3::RadiotapHeader::MCS_KNOWN_INDEX
@ MCS_KNOWN_INDEX
MCS index known.
Definition
radiotap-header.h:181
ns3::RadiotapHeader::MCS_KNOWN_STBC
@ MCS_KNOWN_STBC
STBC known.
Definition
radiotap-header.h:185
ns3::RadiotapHeader::DeserializeMcs
uint32_t DeserializeMcs(Buffer::Iterator start, uint32_t bytesRead)
Deserialize the MCS radiotap header.
Definition
radiotap-header.cc:749
ns3::RadiotapHeader::FrameFlag
FrameFlag
Frame flags.
Definition
radiotap-header.h:99
ns3::RadiotapHeader::FRAME_FLAG_FRAGMENTED
@ FRAME_FLAG_FRAGMENTED
Frame sent/received with fragmentation.
Definition
radiotap-header.h:104
ns3::RadiotapHeader::FRAME_FLAG_BAD_FCS
@ FRAME_FLAG_BAD_FCS
Frame failed FCS check.
Definition
radiotap-header.h:108
ns3::RadiotapHeader::FRAME_FLAG_SHORT_PREAMBLE
@ FRAME_FLAG_SHORT_PREAMBLE
Frame sent/received with short preamble.
Definition
radiotap-header.h:102
ns3::RadiotapHeader::FRAME_FLAG_SHORT_GUARD
@ FRAME_FLAG_SHORT_GUARD
Frame used short guard interval (HT)
Definition
radiotap-header.h:109
ns3::RadiotapHeader::FRAME_FLAG_CFP
@ FRAME_FLAG_CFP
Frame sent/received during CFP.
Definition
radiotap-header.h:101
ns3::RadiotapHeader::FRAME_FLAG_WEP
@ FRAME_FLAG_WEP
Frame sent/received with WEP encryption.
Definition
radiotap-header.h:103
ns3::RadiotapHeader::FRAME_FLAG_DATA_PADDING
@ FRAME_FLAG_DATA_PADDING
Frame has padding between 802.11 header and payload (to 32-bit boundary)
Definition
radiotap-header.h:106
ns3::RadiotapHeader::FRAME_FLAG_FCS_INCLUDED
@ FRAME_FLAG_FCS_INCLUDED
Frame includes FCS.
Definition
radiotap-header.h:105
ns3::RadiotapHeader::FRAME_FLAG_NONE
@ FRAME_FLAG_NONE
No flags set.
Definition
radiotap-header.h:100
ns3::RadiotapHeader::HeMuFlags2
HeMuFlags2
HE MU flags2.
Definition
radiotap-header.h:436
ns3::RadiotapHeader::HE_MU_FLAGS2_BW_FROM_SIGA_KNOWN
@ HE_MU_FLAGS2_BW_FROM_SIGA_KNOWN
Bandwidth from Bandwidth field in HE-SIG-A known.
Definition
radiotap-header.h:438
ns3::RadiotapHeader::HE_MU_FLAGS2_CH2_CENTER_26T_RU
@ HE_MU_FLAGS2_CH2_CENTER_26T_RU
(Channel 2) Center 26-tone RU value
Definition
radiotap-header.h:447
ns3::RadiotapHeader::HE_MU_FLAGS2_NUM_SIGB_SYMBOLS_FROM_SIGA
@ HE_MU_FLAGS2_NUM_SIGB_SYMBOLS_FROM_SIGA
Definition
radiotap-header.h:441
ns3::RadiotapHeader::HE_MU_FLAGS2_BW_FROM_SIGA
@ HE_MU_FLAGS2_BW_FROM_SIGA
Bandwidth from Bandwidth field in HE-SIG-A.
Definition
radiotap-header.h:437
ns3::RadiotapHeader::HE_MU_FLAGS2_PREAMBLE_PUNCTURING_FROM_SIGA_BW_FIELD_KNOWN
@ HE_MU_FLAGS2_PREAMBLE_PUNCTURING_FROM_SIGA_BW_FIELD_KNOWN
Preamble puncturing from Bandwidth field in HE-SIG-A known.
Definition
radiotap-header.h:445
ns3::RadiotapHeader::HE_MU_FLAGS2_PREAMBLE_PUNCTURING_FROM_SIGA_BW_FIELD
@ HE_MU_FLAGS2_PREAMBLE_PUNCTURING_FROM_SIGA_BW_FIELD
Preamble puncturing from Bandwidth field in HE-SIG-A.
Definition
radiotap-header.h:443
ns3::RadiotapHeader::HE_MU_FLAGS2_SIGB_COMPRESSION_FROM_SIGA
@ HE_MU_FLAGS2_SIGB_COMPRESSION_FROM_SIGA
SIG-B compression from SIG-A.
Definition
radiotap-header.h:440
ns3::RadiotapHeader::SerializeHeMu
void SerializeHeMu(Buffer::Iterator &start) const
Serialize the HE-MU radiotap header.
Definition
radiotap-header.cc:939
ns3::RadiotapHeader::m_mcsFields
McsFields m_mcsFields
MCS fields.
Definition
radiotap-header.h:1053
ns3::RadiotapHeader::SerializeAmpduStatus
void SerializeAmpduStatus(Buffer::Iterator &start) const
Serialize the A-MPDU Status radiotap header.
Definition
radiotap-header.cc:781
ns3::RadiotapHeader::SetVhtFields
void SetVhtFields(const VhtFields &vhtFields)
Set the subfields of the VHT field.
Definition
radiotap-header.cc:809
ns3::RadiotapHeader::SerializeEht
void SerializeEht(Buffer::Iterator &start) const
Serialize the EHT radiotap header.
Definition
radiotap-header.cc:1123
ns3::RadiotapHeader::DeserializeChannel
uint32_t DeserializeChannel(Buffer::Iterator start, uint32_t bytesRead)
Deserialize the Channel radiotap header.
Definition
radiotap-header.cc:656
ns3::RadiotapHeader::m_usigFields
UsigFields m_usigFields
U-SIG fields.
Definition
radiotap-header.h:1073
ns3::RadiotapHeader::RadiotapExtFlags
RadiotapExtFlags
Radiotap extended flags.
Definition
radiotap-header.h:1028
ns3::RadiotapHeader::RADIOTAP_USIG
@ RADIOTAP_USIG
Definition
radiotap-header.h:1030
ns3::RadiotapHeader::RADIOTAP_S1G
@ RADIOTAP_S1G
Definition
radiotap-header.h:1029
ns3::RadiotapHeader::RADIOTAP_EHT_SIG
@ RADIOTAP_EHT_SIG
Definition
radiotap-header.h:1031
ns3::RadiotapHeader::UsigCommon
UsigCommon
U-SIG common subfield.
Definition
radiotap-header.h:524
ns3::RadiotapHeader::USIG_COMMON_BSS_COLOR
@ USIG_COMMON_BSS_COLOR
Definition
radiotap-header.h:536
ns3::RadiotapHeader::USIG_COMMON_BAD_USIG_CRC
@ USIG_COMMON_BAD_USIG_CRC
Definition
radiotap-header.h:530
ns3::RadiotapHeader::USIG_COMMON_VALIDATE_BITS_CHECKED
@ USIG_COMMON_VALIDATE_BITS_CHECKED
Definition
radiotap-header.h:531
ns3::RadiotapHeader::USIG_COMMON_BSS_COLOR_KNOWN
@ USIG_COMMON_BSS_COLOR_KNOWN
Definition
radiotap-header.h:528
ns3::RadiotapHeader::USIG_COMMON_UL_DL
@ USIG_COMMON_UL_DL
Definition
radiotap-header.h:535
ns3::RadiotapHeader::USIG_COMMON_UL_DL_KNOWN
@ USIG_COMMON_UL_DL_KNOWN
Definition
radiotap-header.h:527
ns3::RadiotapHeader::USIG_COMMON_BW
@ USIG_COMMON_BW
Definition
radiotap-header.h:534
ns3::RadiotapHeader::USIG_COMMON_TXOP
@ USIG_COMMON_TXOP
Definition
radiotap-header.h:537
ns3::RadiotapHeader::USIG_COMMON_VALIDATE_BITS_OK
@ USIG_COMMON_VALIDATE_BITS_OK
Definition
radiotap-header.h:532
ns3::RadiotapHeader::USIG_COMMON_PHY_VER
@ USIG_COMMON_PHY_VER
Definition
radiotap-header.h:533
ns3::RadiotapHeader::USIG_COMMON_TXOP_KNOWN
@ USIG_COMMON_TXOP_KNOWN
Definition
radiotap-header.h:529
ns3::RadiotapHeader::USIG_COMMON_BW_KNOWN
@ USIG_COMMON_BW_KNOWN
Definition
radiotap-header.h:526
ns3::RadiotapHeader::USIG_COMMON_PHY_VER_KNOWN
@ USIG_COMMON_PHY_VER_KNOWN
Definition
radiotap-header.h:525
ns3::RadiotapHeader::McsFlags
McsFlags
MCS flags.
Definition
radiotap-header.h:195
ns3::RadiotapHeader::MCS_FLAGS_BANDWIDTH_20L
@ MCS_FLAGS_BANDWIDTH_20L
20L (20 MHz in lower half of 40 MHz channel)
Definition
radiotap-header.h:199
ns3::RadiotapHeader::MCS_FLAGS_NESS_BIT_0
@ MCS_FLAGS_NESS_BIT_0
Ness - bit 0 (LSB) of Number of extension spatial streams.
Definition
radiotap-header.h:205
ns3::RadiotapHeader::MCS_FLAGS_NONE
@ MCS_FLAGS_NONE
Default: 20 MHz, long guard interval, mixed HT format and BCC FEC type.
Definition
radiotap-header.h:196
ns3::RadiotapHeader::MCS_FLAGS_STBC_STREAMS
@ MCS_FLAGS_STBC_STREAMS
STBC enabled.
Definition
radiotap-header.h:204
ns3::RadiotapHeader::MCS_FLAGS_FEC_TYPE
@ MCS_FLAGS_FEC_TYPE
LDPC FEC type.
Definition
radiotap-header.h:203
ns3::RadiotapHeader::MCS_FLAGS_BANDWIDTH_40
@ MCS_FLAGS_BANDWIDTH_40
40 MHz
Definition
radiotap-header.h:198
ns3::RadiotapHeader::MCS_FLAGS_HT_GREENFIELD
@ MCS_FLAGS_HT_GREENFIELD
Greenfield HT format.
Definition
radiotap-header.h:202
ns3::RadiotapHeader::MCS_FLAGS_GUARD_INTERVAL
@ MCS_FLAGS_GUARD_INTERVAL
Short guard interval.
Definition
radiotap-header.h:201
ns3::RadiotapHeader::MCS_FLAGS_BANDWIDTH_20U
@ MCS_FLAGS_BANDWIDTH_20U
20U (20 MHz in upper half of 40 MHz channel)
Definition
radiotap-header.h:200
ns3::RadiotapHeader::SerializeChannel
void SerializeChannel(Buffer::Iterator &start) const
Serialize the Channel radiotap header.
Definition
radiotap-header.cc:648
ns3::RadiotapHeader::RadiotapFlags
RadiotapFlags
Radiotap flags.
Definition
radiotap-header.h:996
ns3::RadiotapHeader::RADIOTAP_DB_ANTNOISE
@ RADIOTAP_DB_ANTNOISE
Definition
radiotap-header.h:1010
ns3::RadiotapHeader::RADIOTAP_HE_MU_OTHER_USER
@ RADIOTAP_HE_MU_OTHER_USER
Definition
radiotap-header.h:1017
ns3::RadiotapHeader::RADIOTAP_AMPDU_STATUS
@ RADIOTAP_AMPDU_STATUS
Definition
radiotap-header.h:1013
ns3::RadiotapHeader::RADIOTAP_DBM_ANTSIGNAL
@ RADIOTAP_DBM_ANTSIGNAL
Definition
radiotap-header.h:1002
ns3::RadiotapHeader::RADIOTAP_RX_FLAGS
@ RADIOTAP_RX_FLAGS
Definition
radiotap-header.h:1011
ns3::RadiotapHeader::RADIOTAP_VHT
@ RADIOTAP_VHT
Definition
radiotap-header.h:1014
ns3::RadiotapHeader::RADIOTAP_RATE
@ RADIOTAP_RATE
Definition
radiotap-header.h:999
ns3::RadiotapHeader::RADIOTAP_HE
@ RADIOTAP_HE
Definition
radiotap-header.h:1015
ns3::RadiotapHeader::RADIOTAP_HE_MU
@ RADIOTAP_HE_MU
Definition
radiotap-header.h:1016
ns3::RadiotapHeader::RADIOTAP_CHANNEL
@ RADIOTAP_CHANNEL
Definition
radiotap-header.h:1000
ns3::RadiotapHeader::RADIOTAP_TSFT
@ RADIOTAP_TSFT
Definition
radiotap-header.h:997
ns3::RadiotapHeader::RADIOTAP_DBM_TX_POWER
@ RADIOTAP_DBM_TX_POWER
Definition
radiotap-header.h:1007
ns3::RadiotapHeader::RADIOTAP_FLAGS
@ RADIOTAP_FLAGS
Definition
radiotap-header.h:998
ns3::RadiotapHeader::RADIOTAP_DB_ANTSIGNAL
@ RADIOTAP_DB_ANTSIGNAL
Definition
radiotap-header.h:1009
ns3::RadiotapHeader::RADIOTAP_DB_TX_ATTENUATION
@ RADIOTAP_DB_TX_ATTENUATION
Definition
radiotap-header.h:1006
ns3::RadiotapHeader::RADIOTAP_ANTENNA
@ RADIOTAP_ANTENNA
Definition
radiotap-header.h:1008
ns3::RadiotapHeader::RADIOTAP_TLV
@ RADIOTAP_TLV
Definition
radiotap-header.h:1020
ns3::RadiotapHeader::RADIOTAP_TX_ATTENUATION
@ RADIOTAP_TX_ATTENUATION
Definition
radiotap-header.h:1005
ns3::RadiotapHeader::RADIOTAP_ZERO_LEN_PSDU
@ RADIOTAP_ZERO_LEN_PSDU
Definition
radiotap-header.h:1018
ns3::RadiotapHeader::RADIOTAP_MCS
@ RADIOTAP_MCS
Definition
radiotap-header.h:1012
ns3::RadiotapHeader::RADIOTAP_LSIG
@ RADIOTAP_LSIG
Definition
radiotap-header.h:1019
ns3::RadiotapHeader::RADIOTAP_FHSS
@ RADIOTAP_FHSS
Definition
radiotap-header.h:1001
ns3::RadiotapHeader::RADIOTAP_DBM_ANTNOISE
@ RADIOTAP_DBM_ANTNOISE
Definition
radiotap-header.h:1003
ns3::RadiotapHeader::RADIOTAP_EXT
@ RADIOTAP_EXT
Definition
radiotap-header.h:1021
ns3::RadiotapHeader::RADIOTAP_LOCK_QUALITY
@ RADIOTAP_LOCK_QUALITY
Definition
radiotap-header.h:1004
ns3::RadiotapHeader::SetAntennaNoisePower
void SetAntennaNoisePower(double noise)
Set the RF noise power at the antenna as a decibel difference from an arbitrary, fixed reference.
Definition
radiotap-header.cc:700
ns3::RadiotapHeader::RadiotapHeader
RadiotapHeader()
Definition
radiotap-header.cc:25
ns3::RadiotapHeader::AmpduFlags
AmpduFlags
A-MPDU status flags.
Definition
radiotap-header.h:230
ns3::RadiotapHeader::A_MPDU_STATUS_IS_ZERO_LENGTH
@ A_MPDU_STATUS_IS_ZERO_LENGTH
Frame is 0-length subframe (valid only if 0x0001 is set)
Definition
radiotap-header.h:233
ns3::RadiotapHeader::A_MPDU_STATUS_NONE
@ A_MPDU_STATUS_NONE
No flags set.
Definition
radiotap-header.h:231
ns3::RadiotapHeader::A_MPDU_STATUS_REPORT_ZERO_LENGTH
@ A_MPDU_STATUS_REPORT_ZERO_LENGTH
Driver reports 0-length subframes.
Definition
radiotap-header.h:232
ns3::RadiotapHeader::A_MPDU_STATUS_DELIMITER_CRC_KNOWN
@ A_MPDU_STATUS_DELIMITER_CRC_KNOWN
Delimiter CRC value known: the delimiter CRC value field is valid.
Definition
radiotap-header.h:239
ns3::RadiotapHeader::A_MPDU_STATUS_DELIMITER_CRC_ERROR
@ A_MPDU_STATUS_DELIMITER_CRC_ERROR
Delimiter CRC error.
Definition
radiotap-header.h:238
ns3::RadiotapHeader::A_MPDU_STATUS_LAST_KNOWN
@ A_MPDU_STATUS_LAST_KNOWN
Last subframe is known (should be set for all subframes in an A-MPDU)
Definition
radiotap-header.h:235
ns3::RadiotapHeader::A_MPDU_STATUS_LAST
@ A_MPDU_STATUS_LAST
This frame is the last subframe.
Definition
radiotap-header.h:237
ns3::RadiotapHeader::PrintVht
void PrintVht(std::ostream &os) const
Add VHT subfield/value pairs to the output stream.
Definition
radiotap-header.cc:861
ns3::RadiotapHeader::UsigMu
UsigMu
EHT MU PPDU U-SIG contents.
Definition
radiotap-header.h:557
ns3::RadiotapHeader::USIG2_MU_B16_B19_CRC
@ USIG2_MU_B16_B19_CRC
Definition
radiotap-header.h:568
ns3::RadiotapHeader::USIG2_MU_B0_B1_PPDU_TYPE
@ USIG2_MU_B0_B1_PPDU_TYPE
Definition
radiotap-header.h:562
ns3::RadiotapHeader::USIG2_MU_B11_B15_EHT_SYMBOLS
@ USIG2_MU_B11_B15_EHT_SYMBOLS
Definition
radiotap-header.h:567
ns3::RadiotapHeader::USIG2_MU_B9_B10_SIG_MCS
@ USIG2_MU_B9_B10_SIG_MCS
Definition
radiotap-header.h:566
ns3::RadiotapHeader::USIG2_MU_B2_VALIDATE
@ USIG2_MU_B2_VALIDATE
Definition
radiotap-header.h:563
ns3::RadiotapHeader::USIG2_MU_B3_B7_PUNCTURED_INFO
@ USIG2_MU_B3_B7_PUNCTURED_INFO
Definition
radiotap-header.h:564
ns3::RadiotapHeader::USIG1_MU_B25_VALIDATE
@ USIG1_MU_B25_VALIDATE
Definition
radiotap-header.h:560
ns3::RadiotapHeader::USIG2_MU_B8_VALIDATE
@ USIG2_MU_B8_VALIDATE
Definition
radiotap-header.h:565
ns3::RadiotapHeader::USIG2_MU_B20_B25_TAIL
@ USIG2_MU_B20_B25_TAIL
Definition
radiotap-header.h:569
ns3::RadiotapHeader::USIG1_MU_B20_B24_DISREGARD
@ USIG1_MU_B20_B24_DISREGARD
Definition
radiotap-header.h:559
ns3::RadiotapHeader::GetSerializedSize
uint32_t GetSerializedSize() const override
This method is used by Packet::AddHeader to store the header into the byte buffer of a packet.
Definition
radiotap-header.cc:48
ns3::RadiotapHeader::m_ehtTlv
TlvFields m_ehtTlv
EHT TLV fields.
Definition
radiotap-header.h:1076
ns3::RadiotapHeader::SetEhtFields
void SetEhtFields(const EhtFields &ehtFields)
Set the subfields of the EHT-SIG field.
Definition
radiotap-header.cc:1096
ns3::RadiotapHeader::m_channelFields
ChannelFields m_channelFields
Channel fields.
Definition
radiotap-header.h:1046
ns3::RadiotapHeader::m_usigTlvPad
uint8_t m_usigTlvPad
U-SIG TLV padding.
Definition
radiotap-header.h:1070
ns3::RadiotapHeader::EhtData0Gi
EhtData0Gi
Possible GI values in EHT data subfield.
Definition
radiotap-header.h:710
ns3::RadiotapHeader::EHT_DATA0_GI_3200_NS
@ EHT_DATA0_GI_3200_NS
Definition
radiotap-header.h:713
ns3::RadiotapHeader::EHT_DATA0_GI_1600_NS
@ EHT_DATA0_GI_1600_NS
Definition
radiotap-header.h:712
ns3::RadiotapHeader::EHT_DATA0_GI_800_NS
@ EHT_DATA0_GI_800_NS
Definition
radiotap-header.h:711
ns3::RadiotapHeader::EhtKnown
EhtKnown
EHT known subfield.
Definition
radiotap-header.h:610
ns3::RadiotapHeader::EHT_KNOWN_NR_NON_OFDMA_USERS_M
@ EHT_KNOWN_NR_NON_OFDMA_USERS_M
Definition
radiotap-header.h:625
ns3::RadiotapHeader::EHT_KNOWN_DISREGARD_S
@ EHT_KNOWN_DISREGARD_S
Definition
radiotap-header.h:618
ns3::RadiotapHeader::EHT_KNOWN_ENCODING_BLOCK_CRC_M
@ EHT_KNOWN_ENCODING_BLOCK_CRC_M
Definition
radiotap-header.h:626
ns3::RadiotapHeader::EHT_KNOWN_RU_ALLOC_TB_OM
@ EHT_KNOWN_RU_ALLOC_TB_OM
Definition
radiotap-header.h:630
ns3::RadiotapHeader::EHT_KNOWN_EHT_LTF
@ EHT_KNOWN_EHT_LTF
Definition
radiotap-header.h:613
ns3::RadiotapHeader::EHT_KNOWN_PE_DISAMBIGUITY_OM
@ EHT_KNOWN_PE_DISAMBIGUITY_OM
Definition
radiotap-header.h:616
ns3::RadiotapHeader::EHT_KNOWN_DISREGARD_O
@ EHT_KNOWN_DISREGARD_O
Definition
radiotap-header.h:617
ns3::RadiotapHeader::EHT_KNOWN_LDPC_EXTRA_SYM_OM
@ EHT_KNOWN_LDPC_EXTRA_SYM_OM
Definition
radiotap-header.h:614
ns3::RadiotapHeader::EHT_KNOWN_GI
@ EHT_KNOWN_GI
Definition
radiotap-header.h:612
ns3::RadiotapHeader::EHT_KNOWN_NSS_S
@ EHT_KNOWN_NSS_S
Definition
radiotap-header.h:623
ns3::RadiotapHeader::EHT_KNOWN_PRE_PADD_FACOR_OM
@ EHT_KNOWN_PRE_PADD_FACOR_OM
Definition
radiotap-header.h:615
ns3::RadiotapHeader::EHT_KNOWN_CRC2_O
@ EHT_KNOWN_CRC2_O
Definition
radiotap-header.h:621
ns3::RadiotapHeader::EHT_KNOWN_RU_MRU_SIZE_OM
@ EHT_KNOWN_RU_MRU_SIZE_OM
Definition
radiotap-header.h:628
ns3::RadiotapHeader::EHT_KNOWN_BEAMFORMED_S
@ EHT_KNOWN_BEAMFORMED_S
Definition
radiotap-header.h:624
ns3::RadiotapHeader::EHT_KNOWN_TAIL2_O
@ EHT_KNOWN_TAIL2_O
Definition
radiotap-header.h:622
ns3::RadiotapHeader::EHT_KNOWN_CRC1
@ EHT_KNOWN_CRC1
Definition
radiotap-header.h:619
ns3::RadiotapHeader::EHT_KNOWN_RU_MRU_INDEX_OM
@ EHT_KNOWN_RU_MRU_INDEX_OM
Definition
radiotap-header.h:629
ns3::RadiotapHeader::EHT_KNOWN_ENCODING_BLOCK_TAIL_M
@ EHT_KNOWN_ENCODING_BLOCK_TAIL_M
Definition
radiotap-header.h:627
ns3::RadiotapHeader::EHT_KNOWN_TAIL1
@ EHT_KNOWN_TAIL1
Definition
radiotap-header.h:620
ns3::RadiotapHeader::EHT_KNOWN_SPATIAL_REUSE
@ EHT_KNOWN_SPATIAL_REUSE
Definition
radiotap-header.h:611
ns3::RadiotapHeader::EHT_KNOWN_PRIMARY_80
@ EHT_KNOWN_PRIMARY_80
Definition
radiotap-header.h:631
ns3::RadiotapHeader::m_channelPad
uint8_t m_channelPad
Channel padding.
Definition
radiotap-header.h:1045
ns3::RadiotapHeader::VhtKnown
VhtKnown
VHT known bits.
Definition
radiotap-header.h:266
ns3::RadiotapHeader::VHT_KNOWN_GROUP_ID
@ VHT_KNOWN_GROUP_ID
Group ID known.
Definition
radiotap-header.h:277
ns3::RadiotapHeader::VHT_KNOWN_NONE
@ VHT_KNOWN_NONE
No flags set.
Definition
radiotap-header.h:267
ns3::RadiotapHeader::VHT_KNOWN_BANDWIDTH
@ VHT_KNOWN_BANDWIDTH
Bandwidth known.
Definition
radiotap-header.h:276
ns3::RadiotapHeader::VHT_KNOWN_STBC
@ VHT_KNOWN_STBC
Space-time block coding (1 if all spatial streams of all users have STBC, 0 otherwise).
Definition
radiotap-header.h:268
ns3::RadiotapHeader::VHT_KNOWN_GUARD_INTERVAL
@ VHT_KNOWN_GUARD_INTERVAL
Guard interval.
Definition
radiotap-header.h:271
ns3::RadiotapHeader::VHT_KNOWN_LDPC_EXTRA_OFDM_SYMBOL
@ VHT_KNOWN_LDPC_EXTRA_OFDM_SYMBOL
LDPC extra OFDM symbol known.
Definition
radiotap-header.h:273
ns3::RadiotapHeader::VHT_KNOWN_PARTIAL_AID
@ VHT_KNOWN_PARTIAL_AID
Partial AID known/applicable.
Definition
radiotap-header.h:278
ns3::RadiotapHeader::VHT_KNOWN_BEAMFORMED
@ VHT_KNOWN_BEAMFORMED
Beamformed known/applicable (this flag should be set to zero for MU PPDUs).
Definition
radiotap-header.h:274
ns3::RadiotapHeader::VHT_KNOWN_SHORT_GI_NSYM_DISAMBIGUATION
@ VHT_KNOWN_SHORT_GI_NSYM_DISAMBIGUATION
Short GI NSYM disambiguation known.
Definition
radiotap-header.h:272
ns3::RadiotapHeader::VHT_KNOWN_TXOP_PS_NOT_ALLOWED
@ VHT_KNOWN_TXOP_PS_NOT_ALLOWED
TXOP_PS_NOT_ALLOWED known.
Definition
radiotap-header.h:270
ns3::RadiotapHeader::DeserializeHeMu
uint32_t DeserializeHeMu(Buffer::Iterator start, uint32_t bytesRead)
Deserialize the HE-MU radiotap header.
Definition
radiotap-header.cc:955
ns3::RadiotapHeader::m_vhtPad
uint8_t m_vhtPad
VHT padding.
Definition
radiotap-header.h:1058
ns3::RadiotapHeader::m_ampduStatusFields
AmpduStatusFields m_ampduStatusFields
A-MPDU Status fields.
Definition
radiotap-header.h:1056
ns3::RadiotapHeader::SerializeVht
void SerializeVht(Buffer::Iterator &start) const
Serialize the VHT radiotap header.
Definition
radiotap-header.cc:827
ns3::RadiotapHeader::PrintAmpduStatus
void PrintAmpduStatus(std::ostream &os) const
Add A-MPDU Status subfield/value pairs to the output stream.
Definition
radiotap-header.cc:803
ns3::RadiotapHeader::m_flags
uint8_t m_flags
Properties of transmitted and received frames.
Definition
radiotap-header.h:1041
ns3::RadiotapHeader::EhtData
EhtData
EHT data subfield.
Definition
radiotap-header.h:638
ns3::RadiotapHeader::EHT_DATA2_RU_ALLOC_CC_2_1_2
@ EHT_DATA2_RU_ALLOC_CC_2_1_2
Definition
radiotap-header.h:662
ns3::RadiotapHeader::EHT_DATA6_RU_ALLOC_CC_2_2_5_KNOWN
@ EHT_DATA6_RU_ALLOC_CC_2_2_5_KNOWN
Definition
radiotap-header.h:687
ns3::RadiotapHeader::EHT_DATA4_RU_ALLOC_CC_2_2_2_KNOWN
@ EHT_DATA4_RU_ALLOC_CC_2_2_2_KNOWN
Definition
radiotap-header.h:673
ns3::RadiotapHeader::EHT_DATA1_RU_ALLOC_CC_1_1_1
@ EHT_DATA1_RU_ALLOC_CC_1_1_1
Definition
radiotap-header.h:654
ns3::RadiotapHeader::EHT_DATA7_USER_ENCODING_BLOCK_TAIL
@ EHT_DATA7_USER_ENCODING_BLOCK_TAIL
Definition
radiotap-header.h:699
ns3::RadiotapHeader::EHT_DATA0_LDPC_EXTRA_SYM_OM
@ EHT_DATA0_LDPC_EXTRA_SYM_OM
Definition
radiotap-header.h:644
ns3::RadiotapHeader::EHT_DATA0_TAIL1_O
@ EHT_DATA0_TAIL1_O
Definition
radiotap-header.h:650
ns3::RadiotapHeader::EHT_DATA2_RU_ALLOC_CC_1_1_2
@ EHT_DATA2_RU_ALLOC_CC_1_1_2
Definition
radiotap-header.h:660
ns3::RadiotapHeader::EHT_DATA1_PRIMARY_80
@ EHT_DATA1_PRIMARY_80
Definition
radiotap-header.h:656
ns3::RadiotapHeader::EHT_DATA4_RU_ALLOC_CC_1_2_3_KNOWN
@ EHT_DATA4_RU_ALLOC_CC_1_2_3_KNOWN
Definition
radiotap-header.h:675
ns3::RadiotapHeader::EHT_DATA4_RU_ALLOC_CC_2_2_3
@ EHT_DATA4_RU_ALLOC_CC_2_2_3
Definition
radiotap-header.h:676
ns3::RadiotapHeader::EHT_DATA8_RU_ALLOC_TB_FMT_B7_B1
@ EHT_DATA8_RU_ALLOC_TB_FMT_B7_B1
Definition
radiotap-header.h:703
ns3::RadiotapHeader::EHT_DATA4_RU_ALLOC_CC_2_2_3_KNOWN
@ EHT_DATA4_RU_ALLOC_CC_2_2_3_KNOWN
Definition
radiotap-header.h:677
ns3::RadiotapHeader::EHT_DATA5_RU_ALLOC_CC_2_2_4_KNOWN
@ EHT_DATA5_RU_ALLOC_CC_2_2_4_KNOWN
Definition
radiotap-header.h:682
ns3::RadiotapHeader::EHT_DATA7_BEAMFORMED_S
@ EHT_DATA7_BEAMFORMED_S
Definition
radiotap-header.h:696
ns3::RadiotapHeader::EHT_DATA5_RU_ALLOC_CC_1_2_4
@ EHT_DATA5_RU_ALLOC_CC_1_2_4
Definition
radiotap-header.h:679
ns3::RadiotapHeader::EHT_DATA0_CRC1_O
@ EHT_DATA0_CRC1_O
Definition
radiotap-header.h:649
ns3::RadiotapHeader::EHT_DATA5_RU_ALLOC_CC_1_2_4_KNOWN
@ EHT_DATA5_RU_ALLOC_CC_1_2_4_KNOWN
Definition
radiotap-header.h:680
ns3::RadiotapHeader::EHT_DATA6_RU_ALLOC_CC_2_2_5
@ EHT_DATA6_RU_ALLOC_CC_2_2_5
Definition
radiotap-header.h:686
ns3::RadiotapHeader::EHT_DATA8_RU_ALLOC_TB_FMT_B0
@ EHT_DATA8_RU_ALLOC_TB_FMT_B0
Definition
radiotap-header.h:702
ns3::RadiotapHeader::EHT_DATA3_RU_ALLOC_CC_2_2_1
@ EHT_DATA3_RU_ALLOC_CC_2_2_1
Definition
radiotap-header.h:667
ns3::RadiotapHeader::EHT_DATA3_RU_ALLOC_CC_2_2_1_KNOWN
@ EHT_DATA3_RU_ALLOC_CC_2_2_1_KNOWN
Definition
radiotap-header.h:668
ns3::RadiotapHeader::EHT_DATA2_RU_ALLOC_CC_2_1_1_KNOWN
@ EHT_DATA2_RU_ALLOC_CC_2_1_1_KNOWN
Definition
radiotap-header.h:659
ns3::RadiotapHeader::EHT_DATA1_RU_ALLOC_CC_1_1_1_KNOWN
@ EHT_DATA1_RU_ALLOC_CC_1_1_1_KNOWN
Definition
radiotap-header.h:655
ns3::RadiotapHeader::EHT_DATA0_PE_DISAMBIGUITY_OM
@ EHT_DATA0_PE_DISAMBIGUITY_OM
Definition
radiotap-header.h:646
ns3::RadiotapHeader::EHT_DATA7_TAIL_2_O
@ EHT_DATA7_TAIL_2_O
Definition
radiotap-header.h:694
ns3::RadiotapHeader::EHT_DATA7_NSS_S
@ EHT_DATA7_NSS_S
Definition
radiotap-header.h:695
ns3::RadiotapHeader::EHT_DATA0_DISREGARD_O
@ EHT_DATA0_DISREGARD_O
Definition
radiotap-header.h:648
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_INDEX
@ EHT_DATA1_RU_MRU_INDEX
Definition
radiotap-header.h:653
ns3::RadiotapHeader::EHT_DATA2_RU_ALLOC_CC_1_1_2_KNOWN
@ EHT_DATA2_RU_ALLOC_CC_1_1_2_KNOWN
Definition
radiotap-header.h:661
ns3::RadiotapHeader::EHT_DATA7_USER_ENCODING_BLOCK_CRC
@ EHT_DATA7_USER_ENCODING_BLOCK_CRC
Definition
radiotap-header.h:698
ns3::RadiotapHeader::EHT_DATA3_RU_ALLOC_CC_1_2_1
@ EHT_DATA3_RU_ALLOC_CC_1_2_1
Definition
radiotap-header.h:665
ns3::RadiotapHeader::EHT_DATA2_RU_ALLOC_CC_2_1_1
@ EHT_DATA2_RU_ALLOC_CC_2_1_1
Definition
radiotap-header.h:658
ns3::RadiotapHeader::EHT_DATA6_RU_ALLOC_CC_2_2_6
@ EHT_DATA6_RU_ALLOC_CC_2_2_6
Definition
radiotap-header.h:690
ns3::RadiotapHeader::EHT_DATA2_RU_ALLOC_CC_2_1_2_KNOWN
@ EHT_DATA2_RU_ALLOC_CC_2_1_2_KNOWN
Definition
radiotap-header.h:663
ns3::RadiotapHeader::EHT_DATA5_RU_ALLOC_CC_1_2_5
@ EHT_DATA5_RU_ALLOC_CC_1_2_5
Definition
radiotap-header.h:683
ns3::RadiotapHeader::EHT_DATA0_SPATIAL_REUSE
@ EHT_DATA0_SPATIAL_REUSE
Definition
radiotap-header.h:640
ns3::RadiotapHeader::EHT_DATA0_LTF
@ EHT_DATA0_LTF
Definition
radiotap-header.h:642
ns3::RadiotapHeader::EHT_DATA6_RU_ALLOC_CC_1_2_6_KNOWN
@ EHT_DATA6_RU_ALLOC_CC_1_2_6_KNOWN
Definition
radiotap-header.h:689
ns3::RadiotapHeader::EHT_DATA8_RU_ALLOC_TB_FMT_PS_160
@ EHT_DATA8_RU_ALLOC_TB_FMT_PS_160
Definition
radiotap-header.h:701
ns3::RadiotapHeader::EHT_DATA0_PRE_PADD_FACOR_OM
@ EHT_DATA0_PRE_PADD_FACOR_OM
Definition
radiotap-header.h:645
ns3::RadiotapHeader::EHT_DATA3_RU_ALLOC_CC_1_2_1_KNOWN
@ EHT_DATA3_RU_ALLOC_CC_1_2_1_KNOWN
Definition
radiotap-header.h:666
ns3::RadiotapHeader::EHT_DATA4_RU_ALLOC_CC_2_2_2
@ EHT_DATA4_RU_ALLOC_CC_2_2_2
Definition
radiotap-header.h:672
ns3::RadiotapHeader::EHT_DATA3_RU_ALLOC_CC_1_2_2
@ EHT_DATA3_RU_ALLOC_CC_1_2_2
Definition
radiotap-header.h:669
ns3::RadiotapHeader::EHT_DATA5_RU_ALLOC_CC_2_2_4
@ EHT_DATA5_RU_ALLOC_CC_2_2_4
Definition
radiotap-header.h:681
ns3::RadiotapHeader::EHT_DATA1_RU_MRU_SIZE
@ EHT_DATA1_RU_MRU_SIZE
Definition
radiotap-header.h:652
ns3::RadiotapHeader::EHT_DATA6_RU_ALLOC_CC_1_2_6
@ EHT_DATA6_RU_ALLOC_CC_1_2_6
Definition
radiotap-header.h:688
ns3::RadiotapHeader::EHT_DATA7_CRC2_O
@ EHT_DATA7_CRC2_O
Definition
radiotap-header.h:693
ns3::RadiotapHeader::EHT_DATA3_RU_ALLOC_CC_1_2_2_KNOWN
@ EHT_DATA3_RU_ALLOC_CC_1_2_2_KNOWN
Definition
radiotap-header.h:670
ns3::RadiotapHeader::EHT_DATA7_NUM_OF_NON_OFDMA_USERS
@ EHT_DATA7_NUM_OF_NON_OFDMA_USERS
Definition
radiotap-header.h:697
ns3::RadiotapHeader::EHT_DATA0_GI
@ EHT_DATA0_GI
Definition
radiotap-header.h:641
ns3::RadiotapHeader::EHT_DATA0_DISREGARD_S
@ EHT_DATA0_DISREGARD_S
Definition
radiotap-header.h:647
ns3::RadiotapHeader::EHT_DATA5_RU_ALLOC_CC_1_2_5_KNOWN
@ EHT_DATA5_RU_ALLOC_CC_1_2_5_KNOWN
Definition
radiotap-header.h:684
ns3::RadiotapHeader::EHT_DATA6_RU_ALLOC_CC_2_2_6_KNOWN
@ EHT_DATA6_RU_ALLOC_CC_2_2_6_KNOWN
Definition
radiotap-header.h:691
ns3::RadiotapHeader::EHT_DATA4_RU_ALLOC_CC_1_2_3
@ EHT_DATA4_RU_ALLOC_CC_1_2_3
Definition
radiotap-header.h:674
ns3::RadiotapHeader::EHT_DATA0_EHT_LTF
@ EHT_DATA0_EHT_LTF
Definition
radiotap-header.h:643
ns3::RadiotapHeader::SetHeMuFields
void SetHeMuFields(const HeMuFields &heMuFields)
Set the subfields of the HE-MU field.
Definition
radiotap-header.cc:924
ns3::RadiotapHeader::SetChannelFields
void SetChannelFields(const ChannelFields &channelFields)
Set the subfields of the Channel field.
Definition
radiotap-header.cc:633
ns3::RadiotapHeader::m_heMuOtherUserFields
HeMuOtherUserFields m_heMuOtherUserFields
HE MU other user fields.
Definition
radiotap-header.h:1068
ns3::RadiotapHeader::SetFrameFlags
void SetFrameFlags(uint8_t flags)
Set the frame flags of the transmitted or received frame.
Definition
radiotap-header.cc:605
ns3::RadiotapHeader::EhtData1Primary80
EhtData1Primary80
Possible Primary 80 MHz Channel Position values in EHT data subfield.
Definition
radiotap-header.h:720
ns3::RadiotapHeader::EHT_DATA1_PRIMARY_80_HIGHEST
@ EHT_DATA1_PRIMARY_80_HIGHEST
Definition
radiotap-header.h:722
ns3::RadiotapHeader::EHT_DATA1_PRIMARY_80_LOWEST
@ EHT_DATA1_PRIMARY_80_LOWEST
Definition
radiotap-header.h:721
ns3::RadiotapHeader::m_vhtFields
VhtFields m_vhtFields
VHT fields.
Definition
radiotap-header.h:1059
ns3::RadiotapHeader::m_tsft
uint64_t m_tsft
Time Synchronization Function Timer (when the first bit of the MPDU arrived at the MAC)
Definition
radiotap-header.h:1038
ns3::RadiotapHeader::DeserializeEht
uint32_t DeserializeEht(Buffer::Iterator start, uint32_t bytesRead)
Deserialize the EHT radiotap header.
Definition
radiotap-header.cc:1141
ns3::RadiotapHeader::m_antennaNoise
int8_t m_antennaNoise
RF noise power at the antenna, dB difference from an arbitrary, fixed reference.
Definition
radiotap-header.h:1050
ns3::TypeId
a unique identifier for an interface.
Definition
type-id.h:49
uint32_t
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::RadiotapHeader::AmpduStatusFields
structure that contains the subfields of the A-MPDU status field.
Definition
radiotap-header.h:247
ns3::RadiotapHeader::AmpduStatusFields::referenceNumber
uint32_t referenceNumber
A-MPDU reference number to identify all subframes belonging to the same A-MPDU.
Definition
radiotap-header.h:248
ns3::RadiotapHeader::AmpduStatusFields::crc
uint8_t crc
CRC field.
Definition
radiotap-header.h:251
ns3::RadiotapHeader::AmpduStatusFields::reserved
uint8_t reserved
Reserved field.
Definition
radiotap-header.h:252
ns3::RadiotapHeader::AmpduStatusFields::flags
uint16_t flags
flags field
Definition
radiotap-header.h:250
ns3::RadiotapHeader::ChannelFields
structure that contains the subfields of the Channel field.
Definition
radiotap-header.h:144
ns3::RadiotapHeader::ChannelFields::flags
uint16_t flags
flags field (
Definition
radiotap-header.h:146
ns3::RadiotapHeader::ChannelFields::frequency
uint16_t frequency
Tx/Rx frequency in MHz.
Definition
radiotap-header.h:145
ns3::RadiotapHeader::EhtFields
structure that contains the subfields of the EHT field.
Definition
radiotap-header.h:600
ns3::RadiotapHeader::EhtFields::userInfo
std::vector< uint32_t > userInfo
user info fields.
Definition
radiotap-header.h:603
ns3::RadiotapHeader::EhtFields::data
std::array< uint32_t, 9 > data
data fields.
Definition
radiotap-header.h:602
ns3::RadiotapHeader::EhtFields::known
uint32_t known
known field.
Definition
radiotap-header.h:601
ns3::RadiotapHeader::HeFields
structure that contains the subfields of the HE field.
Definition
radiotap-header.h:398
ns3::RadiotapHeader::HeFields::data1
uint16_t data1
data1 field
Definition
radiotap-header.h:399
ns3::RadiotapHeader::HeFields::data6
uint16_t data6
data6 field
Definition
radiotap-header.h:404
ns3::RadiotapHeader::HeFields::data4
uint16_t data4
data4 field
Definition
radiotap-header.h:402
ns3::RadiotapHeader::HeFields::data2
uint16_t data2
data2 field
Definition
radiotap-header.h:400
ns3::RadiotapHeader::HeFields::data3
uint16_t data3
data3 field
Definition
radiotap-header.h:401
ns3::RadiotapHeader::HeFields::data5
uint16_t data5
data5 field
Definition
radiotap-header.h:403
ns3::RadiotapHeader::HeMuFields
structure that contains the subfields of the HE-MU field.
Definition
radiotap-header.h:454
ns3::RadiotapHeader::HeMuFields::flags1
uint16_t flags1
flags1 field
Definition
radiotap-header.h:455
ns3::RadiotapHeader::HeMuFields::ruChannel2
std::array< uint8_t, 4 > ruChannel2
RU_channel2 field.
Definition
radiotap-header.h:458
ns3::RadiotapHeader::HeMuFields::flags2
uint16_t flags2
flags2 field
Definition
radiotap-header.h:456
ns3::RadiotapHeader::HeMuFields::ruChannel1
std::array< uint8_t, 4 > ruChannel1
RU_channel1 field.
Definition
radiotap-header.h:457
ns3::RadiotapHeader::HeMuOtherUserFields
structure that contains the subfields of the HE-MU-other-user field.
Definition
radiotap-header.h:487
ns3::RadiotapHeader::HeMuOtherUserFields::perUserKnown
uint8_t perUserKnown
per_user_known field
Definition
radiotap-header.h:491
ns3::RadiotapHeader::HeMuOtherUserFields::perUser2
uint16_t perUser2
per_user_2 field
Definition
radiotap-header.h:489
ns3::RadiotapHeader::HeMuOtherUserFields::perUserPosition
uint8_t perUserPosition
per_user_position field
Definition
radiotap-header.h:490
ns3::RadiotapHeader::HeMuOtherUserFields::perUser1
uint16_t perUser1
per_user_1 field
Definition
radiotap-header.h:488
ns3::RadiotapHeader::McsFields
structure that contains the subfields of the MCS field.
Definition
radiotap-header.h:213
ns3::RadiotapHeader::McsFields::flags
uint8_t flags
flags field
Definition
radiotap-header.h:215
ns3::RadiotapHeader::McsFields::mcs
uint8_t mcs
MCS index value.
Definition
radiotap-header.h:216
ns3::RadiotapHeader::McsFields::known
uint8_t known
known flags
Definition
radiotap-header.h:214
ns3::RadiotapHeader::TlvFields
structure that contains the subfields of the TLV fields.
Definition
radiotap-header.h:505
ns3::RadiotapHeader::TlvFields::length
uint16_t length
length field.
Definition
radiotap-header.h:507
ns3::RadiotapHeader::TlvFields::type
uint16_t type
type field.
Definition
radiotap-header.h:506
ns3::RadiotapHeader::UsigFields
structure that contains the subfields of the U-SIG field.
Definition
radiotap-header.h:514
ns3::RadiotapHeader::UsigFields::mask
uint32_t mask
mask field.
Definition
radiotap-header.h:517
ns3::RadiotapHeader::UsigFields::value
uint32_t value
value field.
Definition
radiotap-header.h:516
ns3::RadiotapHeader::UsigFields::common
uint32_t common
common field.
Definition
radiotap-header.h:515
ns3::RadiotapHeader::VhtFields
structure that contains the subfields of the VHT field.
Definition
radiotap-header.h:304
ns3::RadiotapHeader::VhtFields::coding
uint8_t coding
coding field
Definition
radiotap-header.h:309
ns3::RadiotapHeader::VhtFields::flags
uint8_t flags
flags field
Definition
radiotap-header.h:306
ns3::RadiotapHeader::VhtFields::groupId
uint8_t groupId
group_id field
Definition
radiotap-header.h:310
ns3::RadiotapHeader::VhtFields::bandwidth
uint8_t bandwidth
bandwidth field
Definition
radiotap-header.h:307
ns3::RadiotapHeader::VhtFields::mcsNss
std::array< uint8_t, 4 > mcsNss
mcs_nss field
Definition
radiotap-header.h:308
ns3::RadiotapHeader::VhtFields::partialAid
uint16_t partialAid
partial_aid field
Definition
radiotap-header.h:311
ns3::RadiotapHeader::VhtFields::known
uint16_t known
known flags field
Definition
radiotap-header.h:305
src
network
utils
radiotap-header.h
Generated on Mon Feb 10 2025 18:23:13 for ns-3 by
1.11.0