304 * |
304 * |
305 * @returns The A-MPDU status flags. |
305 * @returns The A-MPDU status flags. |
306 */ |
306 */ |
307 uint16_t GetAmpduStatusFlags (void) const; |
307 uint16_t GetAmpduStatusFlags (void) const; |
308 |
308 |
|
309 enum |
|
310 { |
|
311 VHT_KNOWN_NONE = 0x0000, /**< No flags set */ |
|
312 VHT_KNOWN_STBC = 0x0001, /**< Space-time block coding (1 if all spatial streams of all users have STBC, 0 otherwise). */ |
|
313 VHT_KNOWN_TXOP_PS_NOT_ALLOWED = 0x0002, /**< TXOP_PS_NOT_ALLOWED known */ |
|
314 VHT_KNOWN_GUARD_INTERVAL = 0x0004, /**< Guard interval */ |
|
315 VHT_KNOWN_SHORT_GI_NSYM_DISAMBIGUATION = 0x0008, /**< Short GI NSYM disambiguation known */ |
|
316 VHT_KNOWN_LDPC_EXTRA_OFDM_SYMBOL = 0x0010, /**< LDPC extra OFDM symbol known */ |
|
317 VHT_KNOWN_BEAMFORMED = 0x0020, /**< Beamformed known/applicable (this flag should be set to zero for MU PPDUs). */ |
|
318 VHT_KNOWN_BANDWIDTH = 0x0040, /**< Bandwidth known */ |
|
319 VHT_KNOWN_GROUP_ID = 0x0080, /**< Group ID known */ |
|
320 VHT_KNOWN_PARTIAL_AID = 0x0100, /**< Partial AID known/applicable */ |
|
321 }; |
|
322 |
|
323 enum |
|
324 { |
|
325 VHT_FLAGS_NONE = 0x00, /**< No flags set */ |
|
326 VHT_FLAGS_STBC = 0x01, /**< Set if all spatial streams of all users have space-time block coding */ |
|
327 VHT_FLAGS_TXOP_PS_NOT_ALLOWED = 0x02, /**< Set if STAs may not doze during TXOP (valid only for AP transmitters). */ |
|
328 VHT_FLAGS_GUARD_INTERVAL = 0x04, /**< Short guard interval */ |
|
329 VHT_FLAGS_SHORT_GI_NSYM_DISAMBIGUATION = 0x08, /**< Set if NSYM mod 10 = 9 (valid only if short GI is used).*/ |
|
330 VHT_FLAGS__LDPC_EXTRA_OFDM_SYMBOL = 0x10, /**< Set if one or more users are using LDPC and the encoding process resulted in extra OFDM symbol(s) */ |
|
331 VHT_FLAGS_BEAMFORMED = 0x20, /**< Set if beamforming is used (valid for SU PPDUs only). */ |
|
332 }; |
|
333 |
|
334 /** |
|
335 * @brief Set the VHT fields |
|
336 * |
|
337 * @param known The kwown flags. |
|
338 * @param flags The flags to set. |
|
339 * @param bandwidth The bandwidth value. |
|
340 * @param mcs_nss The mcs_nss value. |
|
341 * @param coding The coding value. |
|
342 * @param group_id The group_id value. |
|
343 * @param partial_aid The partial_aid value. |
|
344 */ |
|
345 void SetVhtFields (uint16_t known, uint8_t flags, |
|
346 uint8_t bandwidth, uint8_t mcs_nss [4], |
|
347 uint8_t coding, uint8_t group_id, |
|
348 uint16_t partial_aid); |
|
349 |
|
350 /** |
|
351 * @brief Get the VHT known bitmap. |
|
352 * |
|
353 * @returns The MCS known bitmap. |
|
354 */ |
|
355 uint16_t GetVhtKnown (void) const; |
|
356 /** |
|
357 * @brief Get the VHT flags. |
|
358 * |
|
359 * @returns The VHT flags. |
|
360 */ |
|
361 uint8_t GetVhtFlags (void) const; |
|
362 /** |
|
363 * @brief Get the VHT bandwidth field value. |
|
364 * |
|
365 * @returns The VHT bandwidth field value. |
|
366 */ |
|
367 uint8_t GetVhtBandwidth (void) const; |
|
368 /** |
|
369 * @brief Get the VHT mcs_nss field value for user 1. |
|
370 * |
|
371 * @returns The VHT mcs_nss field value for user 1. |
|
372 */ |
|
373 uint8_t GetVhtMcsNssUser1 () const; |
|
374 /** |
|
375 * @brief Get the VHT mcs_nss field value for user 2. |
|
376 * |
|
377 * @returns The VHT mcs_nss field value for user 2. |
|
378 */ |
|
379 uint8_t GetVhtMcsNssUser2 () const; |
|
380 /** |
|
381 * @brief Get the VHT mcs_nss field value for user 3. |
|
382 * |
|
383 * @returns The VHT mcs_nss field value for user 3. |
|
384 */ |
|
385 uint8_t GetVhtMcsNssUser3 () const; |
|
386 /** |
|
387 * @brief Get the VHT mcs_nss field value for user 4. |
|
388 * |
|
389 * @returns The VHT mcs_nss field value for user 4. |
|
390 */ |
|
391 uint8_t GetVhtMcsNssUser4 () const; |
|
392 /** |
|
393 * @brief Get the VHT coding field value. |
|
394 * |
|
395 * @returns The VHT coding field value. |
|
396 */ |
|
397 uint8_t GetVhtCoding (void) const; |
|
398 /** |
|
399 * @brief Get the VHT group_id field value. |
|
400 * |
|
401 * @returns The VHT group_id field value. |
|
402 */ |
|
403 uint8_t GetVhtGroupId (void) const; |
|
404 /** |
|
405 * @brief Get the VHT partial_aid field value. |
|
406 * |
|
407 * @returns The VHT partial_aid field value. |
|
408 */ |
|
409 uint8_t GetVhtPartialAid (void) const; |
|
410 |
309 |
411 |
310 private: |
412 private: |
311 enum |
413 enum |
312 { |
414 { |
313 RADIOTAP_TSFT = 0x00000001, |
415 RADIOTAP_TSFT = 0x00000001, |
349 |
451 |
350 uint8_t m_ampduStatusPad; //!< A-MPDU Status Flags, padding before A-MPDU Status Field. |
452 uint8_t m_ampduStatusPad; //!< A-MPDU Status Flags, padding before A-MPDU Status Field. |
351 uint32_t m_ampduStatusRef; //!< A-MPDU Status Flags, reference number. |
453 uint32_t m_ampduStatusRef; //!< A-MPDU Status Flags, reference number. |
352 uint16_t m_ampduStatusFlags; //!< A-MPDU Status Flags, information about the received A-MPDU. |
454 uint16_t m_ampduStatusFlags; //!< A-MPDU Status Flags, information about the received A-MPDU. |
353 uint8_t m_ampduStatusCRC; //!< A-MPDU Status Flags, delimiter CRC value. |
455 uint8_t m_ampduStatusCRC; //!< A-MPDU Status Flags, delimiter CRC value. |
|
456 |
|
457 uint8_t m_vhtPad; //!< VHT padding. |
|
458 uint16_t m_vhtKnown; //!< VHT known field. |
|
459 uint8_t m_vhtFlags; //!< VHT flags field. |
|
460 uint8_t m_vhtBandwidth; //!< VHT bandwidth field. |
|
461 uint8_t m_vhtMcsNss[4]; //!< VHT mcs_nss field. |
|
462 uint8_t m_vhtCoding; //!< VHT coding field. |
|
463 uint8_t m_vhtGroupId; //!< VHT group_id field. |
|
464 uint16_t m_vhtPartialAid; //!< VHT partial_aid field. |
354 }; |
465 }; |
355 |
466 |
356 } // namespace ns3 |
467 } // namespace ns3 |
357 |
468 |
358 #endif /* RADIOTAP_HEADER_H */ |
469 #endif /* RADIOTAP_HEADER_H */ |