diff --git a/src/core/meshcop/commissioner.cpp b/src/core/meshcop/commissioner.cpp index 78bf2adb6..c6e522409 100644 --- a/src/core/meshcop/commissioner.cpp +++ b/src/core/meshcop/commissioner.cpp @@ -1221,22 +1221,17 @@ exit: const char *Commissioner::StateToString(State aState) { - const char *str = "Unknown"; + static const char *const kStateStrings[] = { + "disabled", // (0) kStateDisabled + "petition", // (1) kStatePetition + "active", // (2) kStateActive + }; - switch (aState) - { - case kStateDisabled: - str = "disabled"; - break; - case kStatePetition: - str = "petition"; - break; - case kStateActive: - str = "active"; - break; - } + static_assert(kStateDisabled == 0, "kStateDisabled value is incorrect"); + static_assert(kStatePetition == 1, "kStatePetition value is incorrect"); + static_assert(kStateActive == 2, "kStateActive value is incorrect"); - return str; + return kStateStrings[aState]; } void Commissioner::LogJoinerEntry(const char *aAction, const Joiner &aJoiner) const diff --git a/src/core/meshcop/joiner.cpp b/src/core/meshcop/joiner.cpp index 6ff590324..a62bb288f 100644 --- a/src/core/meshcop/joiner.cpp +++ b/src/core/meshcop/joiner.cpp @@ -653,31 +653,23 @@ void Joiner::HandleTimer(void) const char *Joiner::StateToString(State aState) { - const char *str = "Unknown"; + static const char *const kStateStrings[] = { + "Idle", // (0) kStateIdle + "Discover", // (1) kStateDiscover + "Connecting", // (2) kStateConnect + "Connected", // (3) kStateConnected + "Entrust", // (4) kStateEntrust + "Joined", // (5) kStateJoined + }; - switch (aState) - { - case kStateIdle: - str = "Idle"; - break; - case kStateDiscover: - str = "Discover"; - break; - case kStateConnect: - str = "Connecting"; - break; - case kStateConnected: - str = "Connected"; - break; - case kStateEntrust: - str = "Entrust"; - break; - case kStateJoined: - str = "Joined"; - break; - } + static_assert(kStateIdle == 0, "kStateIdle value is incorrect"); + static_assert(kStateDiscover == 1, "kStateDiscover value is incorrect"); + static_assert(kStateConnect == 2, "kStateConnect value is incorrect"); + static_assert(kStateConnected == 3, "kStateConnected value is incorrect"); + static_assert(kStateEntrust == 4, "kStateEntrust value is incorrect"); + static_assert(kStateJoined == 5, "kStateJoined value is incorrect"); - return str; + return kStateStrings[aState]; } #if OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE