diff --git a/src/core/mac/mac.cpp b/src/core/mac/mac.cpp index 2d1fdd484..40164faf8 100644 --- a/src/core/mac/mac.cpp +++ b/src/core/mac/mac.cpp @@ -2377,56 +2377,39 @@ void Mac::ResetRetrySuccessHistogram() const char *Mac::OperationToString(Operation aOperation) { - const char *retval = ""; - - switch (aOperation) - { - case kOperationIdle: - retval = "Idle"; - break; - - case kOperationActiveScan: - retval = "ActiveScan"; - break; - - case kOperationEnergyScan: - retval = "EnergyScan"; - break; - - case kOperationTransmitBeacon: - retval = "TransmitBeacon"; - break; - - case kOperationTransmitDataDirect: - retval = "TransmitDataDirect"; - break; - + static const char *const kOperationStrings[] = { + "Idle", // (0) kOperationIdle + "ActiveScan", // (1) kOperationActiveScan + "EnergyScan", // (2) kOperationEnergyScan + "TransmitBeacon", // (3) kOperationTransmitBeacon + "TransmitDataDirect", // (4) kOperationTransmitDataDirect + "TransmitPoll", // (5) kOperationTransmitPoll + "WaitingForData", // (6) kOperationWaitingForData + "TransmitOobFrame", // (7) kOperationTransmitOutOfBandFrame #if OPENTHREAD_FTD - case kOperationTransmitDataIndirect: - retval = "TransmitDataIndirect"; - break; + "TransmitDataIndirect", // (8) kOperationTransmitDataIndirect +#if OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE + "TransmitDataCsl", // (9) kOperationTransmitDataCsl +#endif +#endif + }; -#if OPENTHREAD_FTD && OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE - case kOperationTransmitDataCsl: - retval = "TransmitDataCsl"; - break; + static_assert(kOperationIdle == 0, "kOperationIdle value is incorrect"); + static_assert(kOperationActiveScan == 1, "kOperationActiveScan value is incorrect"); + static_assert(kOperationEnergyScan == 2, "kOperationEnergyScan value is incorrect"); + static_assert(kOperationTransmitBeacon == 3, "kOperationTransmitBeacon value is incorrect"); + static_assert(kOperationTransmitDataDirect == 4, "kOperationTransmitDataDirect value is incorrect"); + static_assert(kOperationTransmitPoll == 5, "kOperationTransmitPoll value is incorrect"); + static_assert(kOperationWaitingForData == 6, "kOperationWaitingForData value is incorrect"); + static_assert(kOperationTransmitOutOfBandFrame == 7, "kOperationTransmitOutOfBandFrame value is incorrect"); +#if OPENTHREAD_FTD + static_assert(kOperationTransmitDataIndirect == 8, "kOperationTransmitDataIndirect value is incorrect"); +#if OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE + static_assert(kOperationTransmitDataCsl == 9, "TransmitDataCsl value is incorrect"); #endif #endif - case kOperationTransmitPoll: - retval = "TransmitPoll"; - break; - - case kOperationWaitingForData: - retval = "WaitingForData"; - break; - - case kOperationTransmitOutOfBandFrame: - retval = "TransmitOobFrame"; - break; - } - - return retval; + return kOperationStrings[aOperation]; } void Mac::LogFrameRxFailure(const RxFrame *aFrame, otError aError) const diff --git a/src/core/mac/mac.hpp b/src/core/mac/mac.hpp index a169eecce..5811a5f0c 100644 --- a/src/core/mac/mac.hpp +++ b/src/core/mac/mac.hpp @@ -754,22 +754,22 @@ private: kMaxAcquisitionId = 0xffff, }; - enum Operation + enum Operation : uint8_t { kOperationIdle = 0, kOperationActiveScan, kOperationEnergyScan, kOperationTransmitBeacon, kOperationTransmitDataDirect, + kOperationTransmitPoll, + kOperationWaitingForData, + kOperationTransmitOutOfBandFrame, #if OPENTHREAD_FTD kOperationTransmitDataIndirect, #if OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE kOperationTransmitDataCsl, #endif #endif - kOperationTransmitPoll, - kOperationWaitingForData, - kOperationTransmitOutOfBandFrame, }; #if OPENTHREAD_CONFIG_MAC_RETRY_SUCCESS_HISTOGRAM_ENABLE diff --git a/src/core/mac/sub_mac.cpp b/src/core/mac/sub_mac.cpp index 3f94674c8..a7128ab13 100644 --- a/src/core/mac/sub_mac.cpp +++ b/src/core/mac/sub_mac.cpp @@ -859,66 +859,57 @@ exit: const char *SubMac::StateToString(State aState) { - const char *str = "Unknown"; - - switch (aState) - { - case kStateDisabled: - str = "Disabled"; - break; - case kStateSleep: - str = "Sleep"; - break; - case kStateReceive: - str = "Receive"; - break; - case kStateCsmaBackoff: - str = "CsmaBackoff"; - break; - case kStateTransmit: - str = "Transmit"; - break; - case kStateEnergyScan: - str = "EnergyScan"; - break; + static const char *const kStateStrings[] = { + "Disabled", // (0) kStateDisabled + "Sleep", // (1) kStateSleep + "Receive", // (2) kStateReceive + "CsmaBackoff", // (3) kStateCsmaBackoff + "Transmit", // (4) kStateTransmit + "EnergyScan", // (5) kStateEnergyScan #if !OPENTHREAD_MTD && OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE - case kStateCslTransmit: - str = "CslTransmit"; - break; + "CslTransmit", // (6) kStateCslTransmit #endif #if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE - case kStateCslSample: - str = "CslSample"; - break; + "CslSample", // (7) kStateCslSample #endif - } + }; - return str; + static_assert(kStateDisabled == 0, "kStateDisabled value is not correct"); + static_assert(kStateSleep == 1, "kStateSleep value is not correct"); + static_assert(kStateReceive == 2, "kStateReceive value is not correct"); + static_assert(kStateCsmaBackoff == 3, "kStateCsmaBackoff value is not correct"); + static_assert(kStateTransmit == 4, "kStateTransmit value is not correct"); + static_assert(kStateEnergyScan == 5, "kStateEnergyScan value is not correct"); +#if !OPENTHREAD_MTD && OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE + static_assert(kStateCslTransmit == 6, "kStateCslTransmit value is not correct"); +#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE + static_assert(kStateCslSample == 7, "kStateCslSample value is not correct"); +#endif +#else +#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE + static_assert(kStateCslSample == 6, "kStateCslSample value is not correct"); +#endif +#endif + + return kStateStrings[aState]; } #if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE const char *SubMac::CslStateToString(CslState aCslState) { - const char *str = "Unknown"; + static const char *const kCslStateStrings[] = { + "CslIdle", // (0) kCslIdle + "CslSample", // (1) kCslSample + "CslSleep", // (2) kCslSleep + }; - switch (aCslState) - { - case kCslIdle: - str = "CslIdle"; - break; - case kCslSample: - str = "CslSample"; - break; - case kCslSleep: - str = "kCslSleep"; - break; - default: - break; - } + static_assert(kCslIdle == 0, "kCslIdle value is incorrect"); + static_assert(kCslSample == 1, "kCslSample value is incorrect"); + static_assert(kCslSleep == 2, "kCslSleep value is incorrect"); - return str; + return kCslStateStrings[aCslState]; } -#endif // OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE +#endif // LCOV_EXCL_STOP diff --git a/src/core/mac/sub_mac.hpp b/src/core/mac/sub_mac.hpp index 228a8c885..85569fc0d 100644 --- a/src/core/mac/sub_mac.hpp +++ b/src/core/mac/sub_mac.hpp @@ -523,7 +523,7 @@ private: #endif }; - enum State + enum State : uint8_t { kStateDisabled, ///< Radio is disabled. kStateSleep, ///< Radio is in sleep.