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