src/network/utils/radiotap-header.h
changeset 11628 243b71de25a0
parent 11479 a3dcf66928f3
equal deleted inserted replaced
11627:01fcacb5eedf 11628:243b71de25a0
   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 */