diff --git a/CHANGES.md b/CHANGES.md index 9313bcf51..88444b03e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -54,6 +54,7 @@ Changes from ns-3.38 to ns-3-dev * (wifi) The QosBlockedDestinations class has been removed and its functionality is now provided via a new framework for blocking/unblocking packets that is based on the queue scheduler. * (internet) The function signature of `Ipv4RoutingProtocol::RouteInput` and `Ipv6RoutingProtocol::RouteInput` have changed. The `UnicastForwardCallback` (ucb), `MulticastForwardCallback` (mcb), `LocalDeliverCallback` (lcb) and `ErrorCallback` (ecb) should now be passed as const references. * (olsr) The defines `OLSR_WILL_*` have been replaced by enum `Willingness`. +* (wifi) The `WifiCodeRate` typedef was converted to an enum. ### Changes to build system diff --git a/src/wifi/model/wifi-phy-common.h b/src/wifi/model/wifi-phy-common.h index f48476f41..9f053dbc4 100644 --- a/src/wifi/model/wifi-phy-common.h +++ b/src/wifi/model/wifi-phy-common.h @@ -48,28 +48,73 @@ class WifiMode; class Time; /** + * \ingroup wifi * These constants define the various convolutional coding rates * used for the OFDM transmission modes in the IEEE 802.11 * standard. DSSS (for example) rates which do not have an explicit * coding stage in their generation should have this parameter set to * WIFI_CODE_RATE_UNDEFINED. - * \note This typedef and constants could be converted to an enum or scoped - * enum if pybindgen is upgraded to support Callback */ -typedef uint16_t WifiCodeRate; -const uint16_t WIFI_CODE_RATE_UNDEFINED = 0; //!< undefined coding rate -const uint16_t WIFI_CODE_RATE_1_2 = 1; //!< 1/2 coding rate -const uint16_t WIFI_CODE_RATE_2_3 = 2; //!< 2/3 coding rate -const uint16_t WIFI_CODE_RATE_3_4 = 3; //!< 3/4 coding rate -const uint16_t WIFI_CODE_RATE_5_6 = 4; //!< 5/6 coding rate -const uint16_t WIFI_CODE_RATE_5_8 = 5; //!< 5/8 coding rate -const uint16_t WIFI_CODE_RATE_13_16 = 6; //!< 13/16 coding rate -const uint16_t WIFI_CODE_RATE_1_4 = 7; //!< 1/4 coding rate -const uint16_t WIFI_CODE_RATE_13_28 = 8; //!< 13/28 coding rate -const uint16_t WIFI_CODE_RATE_13_21 = 9; //!< 13/21 coding rate -const uint16_t WIFI_CODE_RATE_52_63 = 10; //!< 52/63 coding rate -const uint16_t WIFI_CODE_RATE_13_14 = 11; //!< 13/14 coding rate -const uint16_t WIFI_CODE_RATE_7_8 = 12; //!< 7/8 coding rate +enum WifiCodeRate : uint16_t +{ + WIFI_CODE_RATE_UNDEFINED, //!< undefined coding rate + WIFI_CODE_RATE_1_2, //!< 1/2 coding rate + WIFI_CODE_RATE_2_3, //!< 2/3 coding rate + WIFI_CODE_RATE_3_4, //!< 3/4 coding rate + WIFI_CODE_RATE_5_6, //!< 5/6 coding rate + WIFI_CODE_RATE_5_8, //!< 5/8 coding rate + WIFI_CODE_RATE_13_16, //!< 13/16 coding rate + WIFI_CODE_RATE_1_4, //!< 1/4 coding rate + WIFI_CODE_RATE_13_28, //!< 13/28 coding rate + WIFI_CODE_RATE_13_21, //!< 13/21 coding rate + WIFI_CODE_RATE_52_63, //!< 52/63 coding rate + WIFI_CODE_RATE_13_14, //!< 13/14 coding rate + WIFI_CODE_RATE_7_8, //!< 7/8 coding rate +}; + +/** + * \brief Stream insertion operator. + * + * \param os the stream + * \param codeRate the code rate + * \returns a reference to the stream + */ +inline std::ostream& +operator<<(std::ostream& os, const WifiCodeRate& codeRate) +{ + switch (codeRate) + { + case WIFI_CODE_RATE_UNDEFINED: + return (os << "Code rate undefined"); + case WIFI_CODE_RATE_1_2: + return (os << "Code rate 1/2"); + case WIFI_CODE_RATE_2_3: + return (os << "Code rate 2/3"); + case WIFI_CODE_RATE_3_4: + return (os << "Code rate 3/4"); + case WIFI_CODE_RATE_5_6: + return (os << "Code rate 5/6"); + case WIFI_CODE_RATE_5_8: + return (os << "Code rate 5/8"); + case WIFI_CODE_RATE_13_16: + return (os << "Code rate 13/16"); + case WIFI_CODE_RATE_1_4: + return (os << "Code rate 1/4"); + case WIFI_CODE_RATE_13_28: + return (os << "Code rate 13/28"); + case WIFI_CODE_RATE_13_21: + return (os << "Code rate 13/21"); + case WIFI_CODE_RATE_52_63: + return (os << "Code rate 52/63"); + case WIFI_CODE_RATE_13_14: + return (os << "Code rate 13/14"); + case WIFI_CODE_RATE_7_8: + return (os << "Code rate 7/8"); + default: + NS_FATAL_ERROR("Unknown code rate"); + return (os << "Unknown"); + } +} /** * \ingroup wifi