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