From 427ef53900f4e16798877dc377f007bfb2776d78 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Thu, 25 May 2017 15:36:43 -0700 Subject: [PATCH] Cleanup device role names. (#1820) --- examples/drivers/windows/include/otLwfIoctl.h | 2 +- examples/drivers/windows/otApi/otApi.cpp | 10 +- .../drivers/windows/otLwf/eventprocessing.c | 2 +- examples/drivers/windows/otLwf/iocontrol.c | 24 +- examples/drivers/windows/otLwf/radio.c | 2 +- examples/drivers/windows/otLwf/thread.h | 2 +- .../drivers/windows/otNodeApi/otNodeApi.cpp | 15 +- examples/platforms/da15000/platform.c | 6 +- include/openthread/thread.h | 10 +- include/openthread/types.h | 11 +- src/cli/cli.cpp | 14 +- src/core/api/instance_api.cpp | 2 +- src/core/api/link_api.cpp | 6 +- src/core/api/thread_api.cpp | 35 +-- src/core/api/thread_ftd_api.cpp | 14 +- src/core/common/settings.hpp | 2 +- src/core/meshcop/dataset_manager.cpp | 14 +- src/core/meshcop/leader.cpp | 2 +- src/core/thread/mesh_forwarder.cpp | 16 +- src/core/thread/mle.cpp | 129 +++++----- src/core/thread/mle.hpp | 17 +- src/core/thread/mle_router.cpp | 227 +++++++++--------- src/core/thread/network_data_leader_ftd.cpp | 8 +- src/core/thread/network_data_local.cpp | 2 +- src/core/utils/child_supervision.cpp | 6 +- src/ncp/ncp_base.cpp | 23 +- 26 files changed, 278 insertions(+), 323 deletions(-) diff --git a/examples/drivers/windows/include/otLwfIoctl.h b/examples/drivers/windows/include/otLwfIoctl.h index 5bd6cebfe..bf4f78d1f 100644 --- a/examples/drivers/windows/include/otLwfIoctl.h +++ b/examples/drivers/windows/include/otLwfIoctl.h @@ -364,7 +364,7 @@ typedef enum _OTLWF_NOTIF_TYPE OTLWF_CTL_CODE(139, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) // GUID - InterfaceGuid // otDeviceRole - aRole - // otMleAttachFilter - aFilter (only for kDeviceRoleChild) + // otMleAttachFilter - aFilter (only for OT_DEVICE_ROLE_CHILD) #define IOCTL_OTLWF_OT_CHILD_INFO_BY_ID \ OTLWF_CTL_CODE(140, METHOD_BUFFERED, FILE_READ_DATA) diff --git a/examples/drivers/windows/otApi/otApi.cpp b/examples/drivers/windows/otApi/otApi.cpp index b19db0f6c..f54928cd3 100644 --- a/examples/drivers/windows/otApi/otApi.cpp +++ b/examples/drivers/windows/otApi/otApi.cpp @@ -2788,7 +2788,7 @@ otThreadBecomeDetached( ) { if (aInstance == nullptr) return OT_ERROR_INVALID_ARGS; - return DwordToThreadError(SetIOCTL(aInstance, IOCTL_OTLWF_OT_DEVICE_ROLE, (uint8_t)kDeviceRoleDetached)); + return DwordToThreadError(SetIOCTL(aInstance, IOCTL_OTLWF_OT_DEVICE_ROLE, (uint8_t)OT_DEVICE_ROLE_DETACHED)); } OTAPI @@ -2799,7 +2799,7 @@ otThreadBecomeChild( ) { if (aInstance == nullptr) return OT_ERROR_INVALID_ARGS; - return DwordToThreadError(SetIOCTL(aInstance, IOCTL_OTLWF_OT_DEVICE_ROLE, (uint8_t)kDeviceRoleChild)); + return DwordToThreadError(SetIOCTL(aInstance, IOCTL_OTLWF_OT_DEVICE_ROLE, (uint8_t)OT_DEVICE_ROLE_CHILD)); } OTAPI @@ -2810,7 +2810,7 @@ otThreadBecomeRouter( ) { if (aInstance == nullptr) return OT_ERROR_INVALID_ARGS; - return DwordToThreadError(SetIOCTL(aInstance, IOCTL_OTLWF_OT_DEVICE_ROLE, (uint8_t)kDeviceRoleRouter)); + return DwordToThreadError(SetIOCTL(aInstance, IOCTL_OTLWF_OT_DEVICE_ROLE, (uint8_t)OT_DEVICE_ROLE_ROUTER)); } OTAPI @@ -2821,7 +2821,7 @@ otThreadBecomeLeader( ) { if (aInstance == nullptr) return OT_ERROR_INVALID_ARGS; - return DwordToThreadError(SetIOCTL(aInstance, IOCTL_OTLWF_OT_DEVICE_ROLE, (uint8_t)kDeviceRoleLeader)); + return DwordToThreadError(SetIOCTL(aInstance, IOCTL_OTLWF_OT_DEVICE_ROLE, (uint8_t)OT_DEVICE_ROLE_LEADER)); } OTAPI @@ -2988,7 +2988,7 @@ otThreadGetDeviceRole( _In_ otInstance *aInstance ) { - uint8_t Result = kDeviceRoleOffline; + uint8_t Result = OT_DEVICE_ROLE_DISABLED; if (aInstance) (void)QueryIOCTL(aInstance, IOCTL_OTLWF_OT_DEVICE_ROLE, &Result); return (otDeviceRole)Result; } diff --git a/examples/drivers/windows/otLwf/eventprocessing.c b/examples/drivers/windows/otLwf/eventprocessing.c index a7dbaa95d..a6b3db404 100644 --- a/examples/drivers/windows/otLwf/eventprocessing.c +++ b/examples/drivers/windows/otLwf/eventprocessing.c @@ -773,7 +773,7 @@ otLwfEventWorkerThread( pFilter->otInstanceSize -= sizeof(PMS_FILTER); // Initialize the OpenThread library - pFilter->otCachedRole = kDeviceRoleDisabled; + pFilter->otCachedRole = OT_DEVICE_ROLE_DISABLED; pFilter->otCtx = otInstanceInit(pFilter->otInstanceBuffer + sizeof(PMS_FILTER), &pFilter->otInstanceSize); NT_ASSERT(pFilter->otCtx); if (pFilter->otCtx == NULL) diff --git a/examples/drivers/windows/otLwf/iocontrol.c b/examples/drivers/windows/otLwf/iocontrol.c index dbf629d59..72104f43f 100644 --- a/examples/drivers/windows/otLwf/iocontrol.c +++ b/examples/drivers/windows/otLwf/iocontrol.c @@ -574,7 +574,7 @@ otLwfIoCtl_otThread( } else if (*OutBufferLength >= sizeof(BOOLEAN)) { - *(BOOLEAN*)OutBuffer = (otThreadGetDeviceRole(pFilter->otCtx) > kDeviceRoleDisabled) ? TRUE : FALSE; + *(BOOLEAN*)OutBuffer = (otThreadGetDeviceRole(pFilter->otCtx) > OT_DEVICE_ROLE_DISABLED) ? TRUE : FALSE; *OutBufferLength = sizeof(BOOLEAN); status = STATUS_SUCCESS; } @@ -3759,25 +3759,25 @@ otLwfIoCtl_otDeviceRole( InBufferLength -= sizeof(uint8_t); InBuffer = InBuffer + sizeof(uint8_t); - if (role == kDeviceRoleLeader) + if (role == OT_DEVICE_ROLE_LEADER) { status = ThreadErrorToNtstatus( otThreadBecomeLeader(pFilter->otCtx) ); } - else if (role == kDeviceRoleRouter) + else if (role == OT_DEVICE_ROLE_ROUTER) { status = ThreadErrorToNtstatus( otThreadBecomeRouter(pFilter->otCtx) ); } - else if (role == kDeviceRoleChild) + else if (role == OT_DEVICE_ROLE_CHILD) { status = ThreadErrorToNtstatus( otThreadBecomeChild(pFilter->otCtx) ); } - else if (role == kDeviceRoleDetached) + else if (role == OT_DEVICE_ROLE_DETACHED) { status = ThreadErrorToNtstatus( otThreadBecomeDetached(pFilter->otCtx) @@ -3819,13 +3819,13 @@ otLwfTunIoCtl_otDeviceRole( switch (role) { - case kDeviceRoleChild: + case OT_DEVICE_ROLE_CHILD: spinel_role = SPINEL_NET_ROLE_CHILD; break; - case kDeviceRoleRouter: + case OT_DEVICE_ROLE_ROUTER: spinel_role = SPINEL_NET_ROLE_ROUTER; break; - case kDeviceRoleLeader: + case OT_DEVICE_ROLE_LEADER: spinel_role = SPINEL_NET_ROLE_LEADER; break; } @@ -3878,16 +3878,16 @@ otLwfTunIoCtl_otDeviceRole_Handler( { default: case SPINEL_NET_ROLE_DETACHED: - *(uint8_t*)OutBuffer = kDeviceRoleDetached; + *(uint8_t*)OutBuffer = OT_DEVICE_ROLE_DETACHED; break; case SPINEL_NET_ROLE_CHILD: - *(uint8_t*)OutBuffer = kDeviceRoleChild; + *(uint8_t*)OutBuffer = OT_DEVICE_ROLE_CHILD; break; case SPINEL_NET_ROLE_ROUTER: - *(uint8_t*)OutBuffer = kDeviceRoleRouter; + *(uint8_t*)OutBuffer = OT_DEVICE_ROLE_ROUTER; break; case SPINEL_NET_ROLE_LEADER: - *(uint8_t*)OutBuffer = kDeviceRoleLeader; + *(uint8_t*)OutBuffer = OT_DEVICE_ROLE_LEADER; break; } diff --git a/examples/drivers/windows/otLwf/radio.c b/examples/drivers/windows/otLwf/radio.c index f7067355b..6bfa91228 100644 --- a/examples/drivers/windows/otLwf/radio.c +++ b/examples/drivers/windows/otLwf/radio.c @@ -74,7 +74,7 @@ otPlatReset( pFilter->otPendingMacOffloadEnabled = FALSE; // Reinitialize the OpenThread library - pFilter->otCachedRole = kDeviceRoleDisabled; + pFilter->otCachedRole = OT_DEVICE_ROLE_DISABLED; pFilter->otCtx = otInstanceInit(pFilter->otInstanceBuffer + sizeof(PMS_FILTER), &pFilter->otInstanceSize); ASSERT(pFilter->otCtx); diff --git a/examples/drivers/windows/otLwf/thread.h b/examples/drivers/windows/otLwf/thread.h index ee86fd40d..4621b343b 100644 --- a/examples/drivers/windows/otLwf/thread.h +++ b/examples/drivers/windows/otLwf/thread.h @@ -44,7 +44,7 @@ __inline PMS_FILTER otCtxToFilter(_In_ otInstance* otCtx) // Helper function to indicate if a role means it is attached or not _inline BOOLEAN IsAttached(_In_ otDeviceRole role) { - return role > kDeviceRoleDetached; + return role > OT_DEVICE_ROLE_DETACHED; } // diff --git a/examples/drivers/windows/otNodeApi/otNodeApi.cpp b/examples/drivers/windows/otNodeApi/otNodeApi.cpp index 56df95b48..82fea3be2 100644 --- a/examples/drivers/windows/otNodeApi/otNodeApi.cpp +++ b/examples/drivers/windows/otNodeApi/otNodeApi.cpp @@ -332,13 +332,12 @@ const char* otDeviceRoleToString(otDeviceRole role) { switch (role) { - case kDeviceRoleOffline: return "offline"; - case kDeviceRoleDisabled: return "disabled"; - case kDeviceRoleDetached: return "detached"; - case kDeviceRoleChild: return "child"; - case kDeviceRoleRouter: return "router"; - case kDeviceRoleLeader: return "leader"; - default: return "invalid"; + case OT_DEVICE_ROLE_DISABLED: return "disabled"; + case OT_DEVICE_ROLE_DETACHED: return "detached"; + case OT_DEVICE_ROLE_CHILD: return "child"; + case OT_DEVICE_ROLE_ROUTER: return "router"; + case OT_DEVICE_ROLE_LEADER: return "leader"; + default: return "invalid"; } } @@ -392,7 +391,7 @@ PingHandlerRecvCallback( memcmp(RecvDest, &RealmLocalAllRoutersAddress, sizeof(IN6_ADDR)) == 0) { auto Role = otThreadGetDeviceRole(aPingHandler->mParentNode->mInstance); - if (Role != kDeviceRoleLeader && Role != kDeviceRoleRouter) + if (Role != OT_DEVICE_ROLE_LEADER && Role != OT_DEVICE_ROLE_ROUTER) shouldReply = false; } diff --git a/examples/platforms/da15000/platform.c b/examples/platforms/da15000/platform.c index f29d43ec5..d75ff858e 100644 --- a/examples/platforms/da15000/platform.c +++ b/examples/platforms/da15000/platform.c @@ -106,15 +106,15 @@ void ExampleProcess(otInstance *aInstance) switch (devRole) { - case kDeviceRoleLeader: + case OT_DEVICE_ROLE_LEADER: thrValue = LEADER_BLINK_TIME; break; - case kDeviceRoleRouter: + case OT_DEVICE_ROLE_ROUTER: thrValue = ROUTER_BLINK_TIME; break; - case kDeviceRoleChild: + case OT_DEVICE_ROLE_CHILD: thrValue = CHILD_BLINK_TIME; break; diff --git a/include/openthread/thread.h b/include/openthread/thread.h index 2757a87fe..d11c3b96d 100644 --- a/include/openthread/thread.h +++ b/include/openthread/thread.h @@ -387,11 +387,11 @@ OTAPI otError OTCALL otThreadGetNextNeighborInfo(otInstance *aInstance, otNeighb * * @param[in] aInstance A pointer to an OpenThread instance. * - * @retval ::kDeviceRoleDisabled The Thread stack is disabled. - * @retval ::kDeviceRoleDetached The device is not currently participating in a Thread network/partition. - * @retval ::kDeviceRoleChild The device is currently operating as a Thread Child. - * @retval ::kDeviceRoleRouter The device is currently operating as a Thread Router. - * @retval ::kDeviceRoleLeader The device is currently operating as a Thread Leader. + * @retval OT_DEVICE_ROLE_DISABLED The Thread stack is disabled. + * @retval OT_DEVICE_ROLE_DETACHED The device is not currently participating in a Thread network/partition. + * @retval OT_DEVICE_ROLE_CHILD The device is currently operating as a Thread Child. + * @retval OT_DEVICE_ROLE_ROUTER The device is currently operating as a Thread Router. + * @retval OT_DEVICE_ROLE_LEADER The device is currently operating as a Thread Leader. */ OTAPI otDeviceRole OTCALL otThreadGetDeviceRole(otInstance *aInstance); diff --git a/include/openthread/types.h b/include/openthread/types.h index 77a989b47..95e84cfa5 100644 --- a/include/openthread/types.h +++ b/include/openthread/types.h @@ -782,12 +782,11 @@ typedef struct otMacBlacklistEntry */ typedef enum { - kDeviceRoleOffline, ///< The Thread device is offline and unavailable. - kDeviceRoleDisabled, ///< The Thread stack is disabled. - kDeviceRoleDetached, ///< Not currently participating in a Thread network/partition. - kDeviceRoleChild, ///< The Thread Child role. - kDeviceRoleRouter, ///< The Thread Router role. - kDeviceRoleLeader, ///< The Thread Leader role. + OT_DEVICE_ROLE_DISABLED = 0, ///< The Thread stack is disabled. + OT_DEVICE_ROLE_DETACHED = 1, ///< Not currently participating in a Thread network/partition. + OT_DEVICE_ROLE_CHILD = 2, ///< The Thread Child role. + OT_DEVICE_ROLE_ROUTER = 3, ///< The Thread Router role. + OT_DEVICE_ROLE_LEADER = 4, ///< The Thread Leader role. } otDeviceRole; /** diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index 01dd5f908..fea00c59e 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -2412,29 +2412,25 @@ void Interpreter::ProcessState(int argc, char *argv[]) { switch (otThreadGetDeviceRole(mInstance)) { - case kDeviceRoleOffline: - sServer->OutputFormat("offline\r\n"); - break; - - case kDeviceRoleDisabled: + case OT_DEVICE_ROLE_DISABLED: sServer->OutputFormat("disabled\r\n"); break; - case kDeviceRoleDetached: + case OT_DEVICE_ROLE_DETACHED: sServer->OutputFormat("detached\r\n"); break; - case kDeviceRoleChild: + case OT_DEVICE_ROLE_CHILD: sServer->OutputFormat("child\r\n"); break; #if OPENTHREAD_FTD - case kDeviceRoleRouter: + case OT_DEVICE_ROLE_ROUTER: sServer->OutputFormat("router\r\n"); break; - case kDeviceRoleLeader: + case OT_DEVICE_ROLE_LEADER: sServer->OutputFormat("leader\r\n"); break; #endif // OPENTHREAD_FTD diff --git a/src/core/api/instance_api.cpp b/src/core/api/instance_api.cpp index 72e9ee1fd..dffbd36b9 100644 --- a/src/core/api/instance_api.cpp +++ b/src/core/api/instance_api.cpp @@ -211,7 +211,7 @@ otError otInstanceErasePersistentInfo(otInstance *aInstance) { otError error = OT_ERROR_NONE; - VerifyOrExit(otThreadGetDeviceRole(aInstance) == kDeviceRoleDisabled, error = OT_ERROR_INVALID_STATE); + VerifyOrExit(otThreadGetDeviceRole(aInstance) == OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); otPlatSettingsWipe(aInstance); exit: diff --git a/src/core/api/link_api.cpp b/src/core/api/link_api.cpp index 5b027e154..489185a14 100644 --- a/src/core/api/link_api.cpp +++ b/src/core/api/link_api.cpp @@ -49,7 +49,7 @@ otError otLinkSetChannel(otInstance *aInstance, uint8_t aChannel) { otError error; - VerifyOrExit(aInstance->mThreadNetif.GetMle().GetDeviceState() == Mle::kDeviceStateDisabled, + VerifyOrExit(aInstance->mThreadNetif.GetMle().GetRole() == OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); error = aInstance->mThreadNetif.GetMac().SetChannel(aChannel); @@ -70,7 +70,7 @@ otError otLinkSetExtendedAddress(otInstance *aInstance, const otExtAddress *aExt otError error = OT_ERROR_NONE; VerifyOrExit(aExtAddress != NULL, error = OT_ERROR_INVALID_ARGS); - VerifyOrExit(aInstance->mThreadNetif.GetMle().GetDeviceState() == Mle::kDeviceStateDisabled, + VerifyOrExit(aInstance->mThreadNetif.GetMle().GetRole() == OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); aInstance->mThreadNetif.GetMac().SetExtAddress(*static_cast(aExtAddress)); @@ -111,7 +111,7 @@ otError otLinkSetPanId(otInstance *aInstance, otPanId aPanId) { otError error = OT_ERROR_NONE; - VerifyOrExit(aInstance->mThreadNetif.GetMle().GetDeviceState() == Mle::kDeviceStateDisabled, + VerifyOrExit(aInstance->mThreadNetif.GetMle().GetRole() == OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); error = aInstance->mThreadNetif.GetMac().SetPanId(aPanId); diff --git a/src/core/api/thread_api.cpp b/src/core/api/thread_api.cpp index 3fc119995..653b0f489 100644 --- a/src/core/api/thread_api.cpp +++ b/src/core/api/thread_api.cpp @@ -62,7 +62,7 @@ otError otThreadSetExtendedPanId(otInstance *aInstance, const uint8_t *aExtended otError error = OT_ERROR_NONE; uint8_t mlPrefix[8]; - VerifyOrExit(aInstance->mThreadNetif.GetMle().GetDeviceState() == Mle::kDeviceStateDisabled, + VerifyOrExit(aInstance->mThreadNetif.GetMle().GetRole() == OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); aInstance->mThreadNetif.GetMac().SetExtendedPanId(aExtendedPanId); @@ -159,7 +159,7 @@ otError otThreadSetMasterKey(otInstance *aInstance, const otMasterKey *aKey) otError error = OT_ERROR_NONE; VerifyOrExit(aKey != NULL, error = OT_ERROR_INVALID_ARGS); - VerifyOrExit(aInstance->mThreadNetif.GetMle().GetDeviceState() == Mle::kDeviceStateDisabled, + VerifyOrExit(aInstance->mThreadNetif.GetMle().GetRole() == OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); error = aInstance->mThreadNetif.GetKeyManager().SetMasterKey(*aKey); @@ -184,7 +184,7 @@ otError otThreadSetMeshLocalPrefix(otInstance *aInstance, const uint8_t *aMeshLo { otError error = OT_ERROR_NONE; - VerifyOrExit(aInstance->mThreadNetif.GetMle().GetDeviceState() == Mle::kDeviceStateDisabled, + VerifyOrExit(aInstance->mThreadNetif.GetMle().GetRole() == OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); error = aInstance->mThreadNetif.GetMle().SetMeshLocalPrefix(aMeshLocalPrefix); @@ -204,7 +204,7 @@ otError otThreadSetNetworkName(otInstance *aInstance, const char *aNetworkName) { otError error = OT_ERROR_NONE; - VerifyOrExit(aInstance->mThreadNetif.GetMle().GetDeviceState() == Mle::kDeviceStateDisabled, + VerifyOrExit(aInstance->mThreadNetif.GetMle().GetRole() == OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); error = aInstance->mThreadNetif.GetMac().SetNetworkName(aNetworkName); @@ -259,32 +259,7 @@ exit: otDeviceRole otThreadGetDeviceRole(otInstance *aInstance) { - otDeviceRole rval = kDeviceRoleDisabled; - - switch (aInstance->mThreadNetif.GetMle().GetDeviceState()) - { - case Mle::kDeviceStateDisabled: - rval = kDeviceRoleDisabled; - break; - - case Mle::kDeviceStateDetached: - rval = kDeviceRoleDetached; - break; - - case Mle::kDeviceStateChild: - rval = kDeviceRoleChild; - break; - - case Mle::kDeviceStateRouter: - rval = kDeviceRoleRouter; - break; - - case Mle::kDeviceStateLeader: - rval = kDeviceRoleLeader; - break; - } - - return rval; + return static_cast(aInstance->mThreadNetif.GetMle().GetRole()); } otError otThreadGetLeaderData(otInstance *aInstance, otLeaderData *aLeaderData) diff --git a/src/core/api/thread_ftd_api.cpp b/src/core/api/thread_ftd_api.cpp index 537ddead7..a69376395 100644 --- a/src/core/api/thread_ftd_api.cpp +++ b/src/core/api/thread_ftd_api.cpp @@ -146,18 +146,18 @@ otError otThreadBecomeRouter(otInstance *aInstance) { otError error = OT_ERROR_INVALID_STATE; - switch (aInstance->mThreadNetif.GetMle().GetDeviceState()) + switch (aInstance->mThreadNetif.GetMle().GetRole()) { - case Mle::kDeviceStateDisabled: - case Mle::kDeviceStateDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: break; - case Mle::kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: error = aInstance->mThreadNetif.GetMle().BecomeRouter(ThreadStatusTlv::kHaveChildIdRequest); break; - case Mle::kDeviceStateRouter: - case Mle::kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: error = OT_ERROR_NONE; break; } @@ -267,7 +267,7 @@ otError otThreadSetPSKc(otInstance *aInstance, const uint8_t *aPSKc) { otError error = OT_ERROR_NONE; - VerifyOrExit(aInstance->mThreadNetif.GetMle().GetDeviceState() == Mle::kDeviceStateDisabled, + VerifyOrExit(aInstance->mThreadNetif.GetMle().GetRole() == OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); aInstance->mThreadNetif.GetKeyManager().SetPSKc(aPSKc); diff --git a/src/core/common/settings.hpp b/src/core/common/settings.hpp index 4d64c2e8d..df2431f30 100644 --- a/src/core/common/settings.hpp +++ b/src/core/common/settings.hpp @@ -81,7 +81,7 @@ enum */ struct NetworkInfo { - uint8_t mDeviceState; ///< Current Thread interface state. + uint8_t mRole; ///< Current Thread role. uint8_t mDeviceMode; ///< Device mode setting. uint16_t mRloc16; ///< RLOC16 uint32_t mKeySequence; ///< Key Sequence diff --git a/src/core/meshcop/dataset_manager.cpp b/src/core/meshcop/dataset_manager.cpp index dc041a89e..de80680f7 100644 --- a/src/core/meshcop/dataset_manager.cpp +++ b/src/core/meshcop/dataset_manager.cpp @@ -182,14 +182,14 @@ otError DatasetManager::Set(const otOperationalDataset &aDataset, uint8_t &aFlag mLocal.Store(); aFlags = kFlagLocalUpdated; - switch (mNetif.GetMle().GetDeviceState()) + switch (mNetif.GetMle().GetRole()) { - case Mle::kDeviceStateChild: - case Mle::kDeviceStateRouter: + case OT_DEVICE_ROLE_CHILD: + case OT_DEVICE_ROLE_ROUTER: mTimer.Start(1000); break; - case Mle::kDeviceStateLeader: + case OT_DEVICE_ROLE_LEADER: mNetwork = mLocal; aFlags |= kFlagNetworkUpdated; mNetif.GetNetworkDataLeader().IncrementVersion(); @@ -391,7 +391,7 @@ otError DatasetManager::Set(Coap::Header &aHeader, Message &aMessage, const Ip6: pendingTimestamp.SetLength(0); sessionId.SetLength(0); - VerifyOrExit(mNetif.GetMle().GetDeviceState() == Mle::kDeviceStateLeader, state = StateTlv::kReject); + VerifyOrExit(mNetif.GetMle().GetRole() == OT_DEVICE_ROLE_LEADER, state = StateTlv::kReject); // verify that TLV data size is less than maximum TLV value size while (offset < aMessage.GetLength()) @@ -578,7 +578,7 @@ otError DatasetManager::Set(Coap::Header &aHeader, Message &aMessage, const Ip6: exit: - if (mNetif.GetMle().GetDeviceState() == Mle::kDeviceStateLeader) + if (mNetif.GetMle().GetRole() == OT_DEVICE_ROLE_LEADER) { SendSetResponse(aHeader, aMessageInfo, state); } @@ -941,7 +941,7 @@ otError ActiveDatasetBase::Set(const Dataset &aDataset) SuccessOrExit(error = DatasetManager::Set(aDataset)); DatasetManager::ApplyConfiguration(); - if (mNetif.GetMle().GetDeviceState() == Mle::kDeviceStateLeader) + if (mNetif.GetMle().GetRole() == OT_DEVICE_ROLE_LEADER) { mNetif.GetNetworkDataLeader().IncrementVersion(); mNetif.GetNetworkDataLeader().IncrementStableVersion(); diff --git a/src/core/meshcop/leader.cpp b/src/core/meshcop/leader.cpp index a8609128b..d96841cda 100644 --- a/src/core/meshcop/leader.cpp +++ b/src/core/meshcop/leader.cpp @@ -293,7 +293,7 @@ void Leader::HandleTimer(void *aContext) void Leader::HandleTimer(void) { - VerifyOrExit(mNetif.GetMle().GetDeviceState() == Mle::kDeviceStateLeader); + VerifyOrExit(mNetif.GetMle().GetRole() == OT_DEVICE_ROLE_LEADER); ResignCommissioner(); diff --git a/src/core/thread/mesh_forwarder.cpp b/src/core/thread/mesh_forwarder.cpp index db93c93fb..b161b83c8 100644 --- a/src/core/thread/mesh_forwarder.cpp +++ b/src/core/thread/mesh_forwarder.cpp @@ -679,10 +679,10 @@ otError MeshForwarder::UpdateIp6Route(Message &aMessage) aMessage.Read(0, sizeof(ip6Header), &ip6Header); - switch (mNetif.GetMle().GetDeviceState()) + switch (mNetif.GetMle().GetRole()) { - case Mle::kDeviceStateDisabled: - case Mle::kDeviceStateDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: if (ip6Header.GetDestination().IsLinkLocal() || ip6Header.GetDestination().IsLinkLocalMulticast()) { GetMacDestinationAddress(ip6Header.GetDestination(), mMacDest); @@ -695,7 +695,7 @@ otError MeshForwarder::UpdateIp6Route(Message &aMessage) break; - case Mle::kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: if (aMessage.IsLinkSecurityEnabled()) { mMacDest.mLength = sizeof(mMacDest.mShortAddress); @@ -725,8 +725,8 @@ otError MeshForwarder::UpdateIp6Route(Message &aMessage) #if OPENTHREAD_FTD { - case Mle::kDeviceStateRouter: - case Mle::kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: uint16_t rloc16; uint16_t aloc16; Neighbor *neighbor; @@ -1224,7 +1224,7 @@ otError MeshForwarder::SendFragment(Message &aMessage, Mac::Frame &aFrame) // initialize Mesh header if (mAddMeshHeader) { - if (mNetif.GetMle().GetDeviceState() == Mle::kDeviceStateChild) + if (mNetif.GetMle().GetRole() == OT_DEVICE_ROLE_CHILD) { // REED sets hopsLeft to max (16) + 1. It does not know the route cost. hopsLeft = Mle::kMaxRouteCost + 1; @@ -2131,7 +2131,7 @@ void MeshForwarder::HandleDataRequest(const Mac::Address &aMacSource, const Thre // Security Check: only process secure Data Poll frames. VerifyOrExit(aMessageInfo.mLinkSecurity); - VerifyOrExit(mNetif.GetMle().GetDeviceState() != Mle::kDeviceStateDetached); + VerifyOrExit(mNetif.GetMle().GetRole() != OT_DEVICE_ROLE_DETACHED); VerifyOrExit((child = mNetif.GetMle().GetChild(aMacSource)) != NULL); child->SetLastHeard(Timer::GetNow()); diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index 70e5a805f..eed7eba98 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -68,7 +68,7 @@ namespace Mle { Mle::Mle(ThreadNetif &aThreadNetif) : mNetif(aThreadNetif), mRetrieveNewNetworkData(false), - mDeviceState(kDeviceStateDisabled), + mRole(OT_DEVICE_ROLE_DISABLED), mDeviceMode(ModeTlv::kModeRxOnWhenIdle | ModeTlv::kModeSecureDataRequest), isAssignLinkQuality(false), mAssignLinkQuality(0), @@ -219,7 +219,7 @@ otError Mle::Start(bool aEnableReattach, bool aAnnounceAttach) VerifyOrExit(otPlatRadioGetPromiscuous(mNetif.GetInstance()) == false, error = OT_ERROR_INVALID_STATE); VerifyOrExit(mNetif.IsUp(), error = OT_ERROR_INVALID_STATE); - mDeviceState = kDeviceStateDetached; + mRole = OT_DEVICE_ROLE_DETACHED; mNetif.SetStateChangedFlags(OT_NET_ROLE); SetStateDetached(); @@ -269,7 +269,7 @@ otError Mle::Stop(bool aClearNetworkDatasets) mNetif.GetPendingDataset().Clear(true); } - mDeviceState = kDeviceStateDisabled; + mRole = OT_DEVICE_ROLE_DISABLED; otLogFuncExit(); return OT_ERROR_NONE; } @@ -288,7 +288,7 @@ otError Mle::Restore(void) SuccessOrExit(error = otPlatSettingsGet(mNetif.GetInstance(), Settings::kKeyNetworkInfo, 0, reinterpret_cast(&networkInfo), &length)); VerifyOrExit(length == sizeof(networkInfo), error = OT_ERROR_NOT_FOUND); - VerifyOrExit(networkInfo.mDeviceState >= kDeviceStateChild, error = OT_ERROR_NOT_FOUND); + VerifyOrExit(networkInfo.mRole >= OT_DEVICE_ROLE_CHILD, error = OT_ERROR_NOT_FOUND); mDeviceMode = networkInfo.mDeviceMode; SetRloc16(networkInfo.mRloc16); @@ -302,7 +302,12 @@ otError Mle::Restore(void) networkInfo.mMlIid, OT_IP6_ADDRESS_SIZE - OT_IP6_PREFIX_SIZE); - if (networkInfo.mDeviceState == kDeviceStateChild) + if (networkInfo.mRloc16 == Mac::kShortAddrInvalid) + { + ExitNow(); + } + + if (!IsActiveRouter(networkInfo.mRloc16)) { length = sizeof(parentInfo); SuccessOrExit(error = otPlatSettingsGet(mNetif.GetInstance(), Settings::kKeyParentInfo, 0, @@ -316,7 +321,7 @@ otError Mle::Restore(void) mParent.SetRloc16(GetRloc16(GetRouterId(networkInfo.mRloc16))); mParent.SetState(Neighbor::kStateRestored); } - else if (networkInfo.mDeviceState == kDeviceStateRouter || networkInfo.mDeviceState == kDeviceStateLeader) + else { mNetif.GetMle().SetRouterId(GetRouterId(GetRloc16())); mNetif.GetMle().SetPreviousPartitionId(networkInfo.mPreviousPartitionId); @@ -360,7 +365,7 @@ otError Mle::Store(void) memset(&networkInfo, 0, sizeof(networkInfo)); networkInfo.mDeviceMode = mDeviceMode; - networkInfo.mDeviceState = mDeviceState; + networkInfo.mRole = mRole; networkInfo.mRloc16 = GetRloc16(); networkInfo.mKeySequence = mNetif.GetKeyManager().GetCurrentKeySequence(); networkInfo.mMleFrameCounter = mNetif.GetKeyManager().GetMleFrameCounter() + @@ -374,7 +379,7 @@ otError Mle::Store(void) OT_IP6_ADDRESS_SIZE - OT_IP6_PREFIX_SIZE); - if (mDeviceState == kDeviceStateChild) + if (mRole == OT_DEVICE_ROLE_CHILD) { memset(&parentInfo, 0, sizeof(parentInfo)); memcpy(&parentInfo.mExtAddress, &mParent.GetExtAddress(), sizeof(parentInfo.mExtAddress)); @@ -470,7 +475,7 @@ otError Mle::BecomeDetached(void) otLogFuncEntry(); - VerifyOrExit(mDeviceState != kDeviceStateDisabled, error = OT_ERROR_INVALID_STATE); + VerifyOrExit(mRole != OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); if (mReattachState == kReattachStop) { @@ -493,7 +498,7 @@ otError Mle::BecomeChild(AttachMode aMode) otLogFuncEntry(); - VerifyOrExit(mDeviceState != kDeviceStateDisabled, error = OT_ERROR_INVALID_STATE); + VerifyOrExit(mRole != OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); VerifyOrExit(mParentRequestState == kParentIdle, error = OT_ERROR_BUSY); if (mReattachState == kReattachStart) @@ -540,24 +545,22 @@ exit: bool Mle::IsAttached(void) const { - return (mDeviceState == kDeviceStateChild || - mDeviceState == kDeviceStateRouter || - mDeviceState == kDeviceStateLeader); + return (mRole == OT_DEVICE_ROLE_CHILD || mRole == OT_DEVICE_ROLE_ROUTER || mRole == OT_DEVICE_ROLE_LEADER); } otError Mle::SetStateDetached(void) { - if (mDeviceState != kDeviceStateDetached) + if (mRole != OT_DEVICE_ROLE_DETACHED) { mNetif.SetStateChangedFlags(OT_NET_ROLE); } - if (mDeviceState == kDeviceStateLeader) + if (mRole == OT_DEVICE_ROLE_LEADER) { mNetif.RemoveUnicastAddress(mLeaderAloc); } - mDeviceState = kDeviceStateDetached; + mRole = OT_DEVICE_ROLE_DETACHED; mParentRequestState = kParentIdle; mParentRequestTimer.Stop(); mNetif.GetMeshForwarder().SetRxOff(); @@ -572,18 +575,18 @@ otError Mle::SetStateDetached(void) otError Mle::SetStateChild(uint16_t aRloc16) { - if (mDeviceState != kDeviceStateChild) + if (mRole != OT_DEVICE_ROLE_CHILD) { mNetif.SetStateChangedFlags(OT_NET_ROLE); } - if (mDeviceState == kDeviceStateLeader) + if (mRole == OT_DEVICE_ROLE_LEADER) { mNetif.RemoveUnicastAddress(mLeaderAloc); } SetRloc16(aRloc16); - mDeviceState = kDeviceStateChild; + mRole = OT_DEVICE_ROLE_CHILD; mParentRequestState = kParentIdle; mChildUpdateAttempts = 0; mNetif.GetMac().SetBeaconEnabled(false); @@ -627,7 +630,7 @@ otError Mle::SetTimeout(uint32_t aTimeout) mNetif.GetMeshForwarder().GetDataPollManager().RecalculatePollPeriod(); - if (mDeviceState == kDeviceStateChild) + if (mRole == OT_DEVICE_ROLE_CHILD) { SendChildUpdateRequest(); } @@ -647,19 +650,19 @@ otError Mle::SetDeviceMode(uint8_t aDeviceMode) mDeviceMode = aDeviceMode; - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDisabled: - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: break; - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: SetStateChild(GetRloc16()); SendChildUpdateRequest(); break; - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: if ((oldMode & ModeTlv::kModeFFD) != 0 && (aDeviceMode & ModeTlv::kModeFFD) == 0) { BecomeDetached(); @@ -711,13 +714,13 @@ otError Mle::SetMeshLocalPrefix(const uint8_t *aMeshLocalPrefix) // Add the address back into the table. mNetif.AddUnicastAddress(mMeshLocal64); - if (mDeviceState >= kDeviceStateChild) + if (mRole >= OT_DEVICE_ROLE_CHILD) { mNetif.AddUnicastAddress(mMeshLocal16); } // update Leader ALOC - if (mDeviceState == kDeviceStateLeader) + if (mRole == OT_DEVICE_ROLE_LEADER) { mNetif.RemoveUnicastAddress(mLeaderAloc); AddLeaderAloc(); @@ -825,7 +828,7 @@ otError Mle::AddLeaderAloc(void) { otError error = OT_ERROR_NONE; - VerifyOrExit(mDeviceState == kDeviceStateLeader, error = OT_ERROR_INVALID_STATE); + VerifyOrExit(mRole == OT_DEVICE_ROLE_LEADER, error = OT_ERROR_INVALID_STATE); SuccessOrExit(error = GetLeaderAloc(mLeaderAloc.GetAddress())); @@ -847,8 +850,7 @@ otError Mle::GetLeaderData(otLeaderData &aLeaderData) const LeaderDataTlv &leaderData(GetLeaderDataTlv()); otError error = OT_ERROR_NONE; - VerifyOrExit(mDeviceState != kDeviceStateDisabled && mDeviceState != kDeviceStateDetached, - error = OT_ERROR_DETACHED); + VerifyOrExit(mRole != OT_DEVICE_ROLE_DISABLED && mRole != OT_DEVICE_ROLE_DETACHED, error = OT_ERROR_DETACHED); aLeaderData.mPartitionId = leaderData.GetPartitionId(); aLeaderData.mWeighting = leaderData.GetWeighting(); @@ -1224,7 +1226,7 @@ void Mle::HandleNetifStateChanged(uint32_t aFlags, void *aContext) void Mle::HandleNetifStateChanged(uint32_t aFlags) { - VerifyOrExit(mDeviceState != kDeviceStateDisabled); + VerifyOrExit(mRole != OT_DEVICE_ROLE_DISABLED); if ((aFlags & (OT_IP6_ADDRESS_ADDED | OT_IP6_ADDRESS_REMOVED)) != 0) { @@ -1240,7 +1242,7 @@ void Mle::HandleNetifStateChanged(uint32_t aFlags) mNetif.SetStateChangedFlags(OT_IP6_ML_ADDR_CHANGED); } - if (mDeviceState == kDeviceStateChild && (mDeviceMode & ModeTlv::kModeFFD) == 0) + if (mRole == OT_DEVICE_ROLE_CHILD && (mDeviceMode & ModeTlv::kModeFFD) == 0) { mSendChildUpdateRequest.Post(); } @@ -1389,7 +1391,7 @@ void Mle::HandleParentRequestTimer(void) case kAttachBetter: mParentRequestState = kParentIdle; - if (mDeviceState == kDeviceStateChild) + if (mRole == OT_DEVICE_ROLE_CHILD) { // Restart keep-alive timer as it was disturbed by attachment procedure. mParentRequestTimer.Start(0); @@ -1406,10 +1408,11 @@ void Mle::HandleParentRequestTimer(void) mParentRequestState = kParentIdle; ResetParentCandidate(); - if ((mParentRequestMode == kAttachBetter) || (mDeviceState == kDeviceStateRouter) || - (mDeviceState == kDeviceStateLeader)) + if ((mParentRequestMode == kAttachBetter) || + (mRole == OT_DEVICE_ROLE_ROUTER) || + (mRole == OT_DEVICE_ROLE_LEADER)) { - if (mDeviceState == kDeviceStateChild) + if (mRole == OT_DEVICE_ROLE_CHILD) { // Restart keep-alive timer as it was disturbed by attachment procedure. mParentRequestTimer.Start(0); @@ -1681,9 +1684,9 @@ otError Mle::SendChildUpdateRequest(void) SuccessOrExit(error = AppendAddressRegistration(*message)); } - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DETACHED: for (uint8_t i = 0; i < sizeof(mParentRequest.mChallenge); i++) { mParentRequest.mChallenge[i] = static_cast(otPlatRandomGet()); @@ -1693,15 +1696,15 @@ otError Mle::SendChildUpdateRequest(void) sizeof(mParentRequest.mChallenge))); break; - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: SuccessOrExit(error = AppendSourceAddress(*message)); SuccessOrExit(error = AppendLeaderData(*message)); SuccessOrExit(error = AppendTimeout(*message, mTimeout)); break; - case kDeviceStateDisabled: - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: assert(false); break; } @@ -2034,7 +2037,7 @@ void Mle::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageIn ExitNow(); } - VerifyOrExit(mDeviceState != kDeviceStateDisabled && header.GetSecuritySuite() == Header::k154Security); + VerifyOrExit(mRole != OT_DEVICE_ROLE_DISABLED && header.GetSecuritySuite() == Header::k154Security); keySequence = header.GetKeyId(); @@ -2089,15 +2092,15 @@ void Mle::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageIn aMessage.Read(aMessage.GetOffset(), sizeof(command), &command); aMessage.MoveOffset(sizeof(command)); - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDetached: - case kDeviceStateChild: + case OT_DEVICE_ROLE_DETACHED: + case OT_DEVICE_ROLE_CHILD: neighbor = GetNeighbor(macAddr); break; - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: if (command == Header::kCommandChildIdResponse) { neighbor = GetNeighbor(macAddr); @@ -2199,7 +2202,7 @@ void Mle::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageIn break; case Header::kCommandChildUpdateRequest: - if (mDeviceState == kDeviceStateLeader || mDeviceState == kDeviceStateRouter) + if (mRole == OT_DEVICE_ROLE_LEADER || mRole == OT_DEVICE_ROLE_ROUTER) { mNetif.GetMle().HandleChildUpdateRequest(aMessage, aMessageInfo); } @@ -2211,7 +2214,7 @@ void Mle::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageIn break; case Header::kCommandChildUpdateResponse: - if (mDeviceState == kDeviceStateLeader || mDeviceState == kDeviceStateRouter) + if (mRole == OT_DEVICE_ROLE_LEADER || mRole == OT_DEVICE_ROLE_ROUTER) { mNetif.GetMle().HandleChildUpdateResponse(aMessage, aMessageInfo, keySequence); } @@ -2253,7 +2256,7 @@ otError Mle::HandleAdvertisement(const Message &aMessage, const Ip6::MessageInfo otLogInfoMle(GetInstance(), "Received advertisement from %04x", sourceAddress.GetRloc16()); - if (mDeviceState != kDeviceStateDetached) + if (mRole != OT_DEVICE_ROLE_DETACHED) { SuccessOrExit(error = mNetif.GetMle().HandleAdvertisement(aMessage, aMessageInfo)); } @@ -2262,13 +2265,13 @@ otError Mle::HandleAdvertisement(const Message &aMessage, const Ip6::MessageInfo isNeighbor = false; - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDisabled: - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: break; - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: if (memcmp(&mParent.GetExtAddress(), &macAddr, sizeof(macAddr))) { break; @@ -2295,8 +2298,8 @@ otError Mle::HandleAdvertisement(const Message &aMessage, const Ip6::MessageInfo mParent.SetLastHeard(Timer::GetNow()); break; - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: if ((neighbor = mNetif.GetMle().GetNeighbor(macAddr)) != NULL && neighbor->GetState() == Neighbor::kStateValid) { @@ -2363,7 +2366,7 @@ otError Mle::HandleLeaderData(const Message &aMessage, const Ip6::MessageInfo &a (leaderData.GetWeighting() != mLeaderData.GetWeighting()) || (leaderData.GetLeaderRouterId() != GetLeaderId())) { - if (mDeviceState == kDeviceStateChild) + if (mRole == OT_DEVICE_ROLE_CHILD) { SetLeaderData(leaderData.GetPartitionId(), leaderData.GetWeighting(), leaderData.GetLeaderRouterId()); mRetrieveNewNetworkData = true; @@ -2593,7 +2596,7 @@ otError Mle::HandleParentResponse(const Message &aMessage, const Ip6::MessageInf SuccessOrExit(error = Tlv::GetTlv(aMessage, Tlv::kConnectivity, sizeof(connectivity), connectivity)); VerifyOrExit(connectivity.IsValid(), error = OT_ERROR_PARSE); - if ((mDeviceMode & ModeTlv::kModeFFD) && (mDeviceState != kDeviceStateDetached)) + if ((mDeviceMode & ModeTlv::kModeFFD) && (mRole != OT_DEVICE_ROLE_DETACHED)) { diff = static_cast(connectivity.GetIdSequence() - mNetif.GetMle().GetRouterIdSequence()); @@ -2909,9 +2912,9 @@ otError Mle::HandleChildUpdateResponse(const Message &aMessage, const Ip6::Messa VerifyOrExit(mode.IsValid(), error = OT_ERROR_PARSE); VerifyOrExit(mode.GetMode() == mDeviceMode, error = OT_ERROR_DROP); - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DETACHED: // Response SuccessOrExit(error = Tlv::GetTlv(aMessage, Tlv::kResponse, sizeof(response), response)); VerifyOrExit(response.IsValid(), error = OT_ERROR_PARSE); @@ -2941,7 +2944,7 @@ otError Mle::HandleChildUpdateResponse(const Message &aMessage, const Ip6::Messa // fall through - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: // Source Address SuccessOrExit(error = Tlv::GetTlv(aMessage, Tlv::kSourceAddress, sizeof(sourceAddress), sourceAddress)); VerifyOrExit(sourceAddress.IsValid(), error = OT_ERROR_PARSE); diff --git a/src/core/thread/mle.hpp b/src/core/thread/mle.hpp index 12e4cdb4c..3c94ff039 100644 --- a/src/core/thread/mle.hpp +++ b/src/core/thread/mle.hpp @@ -90,19 +90,6 @@ class MleRouter; * */ -/** - * MLE Device states - * - */ -enum DeviceState -{ - kDeviceStateDisabled = 0, ///< Thread interface is disabled. - kDeviceStateDetached = 1, ///< Thread interface is not attached to a partition. - kDeviceStateChild = 2, ///< Thread interface participating as a Child. - kDeviceStateRouter = 3, ///< Thread interface participating as a Router. - kDeviceStateLeader = 4, ///< Thread interface participating as a Leader. -}; - /** * MLE Attach modes * @@ -626,7 +613,7 @@ public: * @returns The current Thread interface state. * */ - DeviceState GetDeviceState(void) const { return mDeviceState; } + otDeviceRole GetRole(void) const { return mRole; } /** * This method returns the Device Mode as reported in the Mode TLV. @@ -1316,7 +1303,7 @@ protected: LeaderDataTlv mLeaderData; ///< Last received Leader Data TLV. bool mRetrieveNewNetworkData; ///< Indicating new Network Data is needed if set. - DeviceState mDeviceState; ///< Current Thread interface state. + otDeviceRole mRole; ///< Current Thread role. Router mParent; ///< Parent information. uint8_t mDeviceMode; ///< Device mode setting. diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index baae32704..2cf3d7173 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -100,18 +100,18 @@ void MleRouter::SetRouterRoleEnabled(bool aEnabled) { mRouterRoleEnabled = aEnabled; - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDisabled: - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: break; - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: mNetif.GetMac().SetBeaconEnabled(mRouterRoleEnabled); break; - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: if (!mRouterRoleEnabled) { BecomeDetached(); @@ -200,7 +200,7 @@ otError MleRouter::ReleaseRouterId(uint8_t aRouterId) Router *router = GetRouter(aRouterId); VerifyOrExit(router != NULL, error = OT_ERROR_INVALID_ARGS); - VerifyOrExit(mDeviceState == kDeviceStateLeader, error = OT_ERROR_INVALID_STATE); + VerifyOrExit(mRole == OT_DEVICE_ROLE_LEADER, error = OT_ERROR_INVALID_STATE); otLogInfoMle(GetInstance(), "delete router id %d", aRouterId); router->SetAllocated(false); @@ -236,8 +236,8 @@ otError MleRouter::BecomeRouter(ThreadStatusTlv::Status aStatus) { otError error = OT_ERROR_NONE; - VerifyOrExit(mDeviceState != kDeviceStateDisabled, error = OT_ERROR_INVALID_STATE); - VerifyOrExit(mDeviceState != kDeviceStateRouter, error = OT_ERROR_NONE); + VerifyOrExit(mRole != OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); + VerifyOrExit(mRole != OT_DEVICE_ROLE_ROUTER, error = OT_ERROR_NONE); VerifyOrExit(IsRouterRoleEnabled(), error = OT_ERROR_NOT_CAPABLE); for (int i = 0; i <= kMaxRouterId; i++) @@ -253,14 +253,14 @@ otError MleRouter::BecomeRouter(ThreadStatusTlv::Status aStatus) mNetif.GetMeshForwarder().SetRxOnWhenIdle(true); mRouterSelectionJitterTimeout = 0; - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DETACHED: SuccessOrExit(error = SendLinkRequest(NULL)); mStateUpdateTimer.Start(kStateUpdatePeriod); break; - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: SuccessOrExit(error = SendAddressSolicit(aStatus)); break; @@ -279,8 +279,8 @@ otError MleRouter::BecomeLeader(void) uint8_t routerId; Router *router; - VerifyOrExit(mDeviceState != kDeviceStateDisabled, error = OT_ERROR_INVALID_STATE); - VerifyOrExit(mDeviceState != kDeviceStateLeader, error = OT_ERROR_NONE); + VerifyOrExit(mRole != OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); + VerifyOrExit(mRole != OT_DEVICE_ROLE_LEADER, error = OT_ERROR_NONE); VerifyOrExit(IsRouterRoleEnabled(), error = OT_ERROR_NOT_CAPABLE); for (int i = 0; i <= kMaxRouterId; i++) @@ -417,13 +417,13 @@ exit: otError MleRouter::SetStateRouter(uint16_t aRloc16) { - if (mDeviceState != kDeviceStateRouter) + if (mRole != OT_DEVICE_ROLE_ROUTER) { mNetif.SetStateChangedFlags(OT_NET_ROLE); } SetRloc16(aRloc16); - mDeviceState = kDeviceStateRouter; + mRole = OT_DEVICE_ROLE_ROUTER; mParentRequestState = kParentIdle; mParentRequestTimer.Stop(); ResetAdvertiseInterval(); @@ -452,13 +452,13 @@ otError MleRouter::SetStateRouter(uint16_t aRloc16) otError MleRouter::SetStateLeader(uint16_t aRloc16) { - if (mDeviceState != kDeviceStateLeader) + if (mRole != OT_DEVICE_ROLE_LEADER) { mNetif.SetStateChangedFlags(OT_NET_ROLE); } SetRloc16(aRloc16); - mDeviceState = kDeviceStateLeader; + mRole = OT_DEVICE_ROLE_LEADER; mParentRequestState = kParentIdle; mParentRequestTimer.Stop(); ResetAdvertiseInterval(); @@ -517,7 +517,7 @@ void MleRouter::StopAdvertiseTimer(void) void MleRouter::ResetAdvertiseInterval(void) { - VerifyOrExit(mDeviceState == kDeviceStateRouter || mDeviceState == kDeviceStateLeader); + VerifyOrExit(mRole == OT_DEVICE_ROLE_ROUTER || mRole == OT_DEVICE_ROLE_LEADER); if (!mAdvertiseTimer.IsRunning()) { @@ -544,18 +544,18 @@ otError MleRouter::SendAdvertisement(void) SuccessOrExit(error = AppendSourceAddress(*message)); SuccessOrExit(error = AppendLeaderData(*message)); - switch (GetDeviceState()) + switch (mRole) { - case kDeviceStateDisabled: - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: assert(false); break; - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: break; - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: SuccessOrExit(error = AppendRoute(*message)); break; } @@ -591,23 +591,23 @@ otError MleRouter::SendLinkRequest(Neighbor *aNeighbor) SuccessOrExit(error = AppendHeader(*message, Header::kCommandLinkRequest)); SuccessOrExit(error = AppendVersion(*message)); - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDisabled: + case OT_DEVICE_ROLE_DISABLED: assert(false); break; - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DETACHED: SuccessOrExit(error = AppendTlvRequest(*message, detachedTlvs, sizeof(detachedTlvs))); break; - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: SuccessOrExit(error = AppendSourceAddress(*message)); SuccessOrExit(error = AppendLeaderData(*message)); break; - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: SuccessOrExit(error = AppendTlvRequest(*message, routerTlvs, sizeof(routerTlvs))); SuccessOrExit(error = AppendSourceAddress(*message)); SuccessOrExit(error = AppendLeaderData(*message)); @@ -665,8 +665,7 @@ otError MleRouter::HandleLinkRequest(const Message &aMessage, const Ip6::Message otLogInfoMle(GetInstance(), "Received link request"); - VerifyOrExit(GetDeviceState() == kDeviceStateRouter || - GetDeviceState() == kDeviceStateLeader, error = OT_ERROR_INVALID_STATE); + VerifyOrExit(mRole == OT_DEVICE_ROLE_ROUTER || mRole == OT_DEVICE_ROLE_LEADER, error = OT_ERROR_INVALID_STATE); VerifyOrExit(mParentRequestState == kParentIdle, error = OT_ERROR_INVALID_STATE); @@ -943,13 +942,13 @@ otError MleRouter::HandleLinkAccept(const Message &aMessage, const Ip6::MessageI ExitNow(error = OT_ERROR_INVALID_STATE); } - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDisabled: + case OT_DEVICE_ROLE_DISABLED: assert(false); break; - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DETACHED: // Address16 SuccessOrExit(error = Tlv::GetTlv(aMessage, Tlv::kAddress16, sizeof(address16), address16)); VerifyOrExit(address16.IsValid(), error = OT_ERROR_PARSE); @@ -979,14 +978,14 @@ otError MleRouter::HandleLinkAccept(const Message &aMessage, const Ip6::MessageI break; - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: SuccessOrExit(error = Tlv::GetTlv(aMessage, Tlv::kLinkMargin, sizeof(linkMargin), linkMargin)); VerifyOrExit(linkMargin.IsValid(), error = OT_ERROR_PARSE); router->SetLinkQualityOut(LinkQualityInfo::ConvertLinkMarginToLinkQuality(linkMargin.GetLinkMargin())); break; - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: // Leader Data SuccessOrExit(error = Tlv::GetTlv(aMessage, Tlv::kLeaderData, sizeof(leaderData), leaderData)); VerifyOrExit(leaderData.IsValid(), error = OT_ERROR_PARSE); @@ -1167,7 +1166,7 @@ otError MleRouter::ProcessRouteTlv(const RouteTlv &aRoute) } } - if (GetDeviceState() == kDeviceStateRouter && !mRouters[mRouterId].IsAllocated()) + if (mRole == OT_DEVICE_ROLE_ROUTER && !mRouters[mRouterId].IsAllocated()) { BecomeDetached(); ExitNow(error = OT_ERROR_NO_ROUTE); @@ -1181,22 +1180,22 @@ bool MleRouter::IsSingleton(void) { bool rval = true; - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDisabled: - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: ExitNow(rval = true); break; - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: ExitNow(rval = ((mDeviceMode & ModeTlv::kModeFFD) == 0)); break; - case kDeviceStateRouter: + case OT_DEVICE_ROLE_ROUTER: ExitNow(rval = false); break; - case kDeviceStateLeader: + case OT_DEVICE_ROLE_LEADER: // not a singleton if any other routers exist for (int i = 0; i <= kMaxRouterId; i++) @@ -1311,7 +1310,7 @@ otError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::Messa error = OT_ERROR_DROP); } - if (GetDeviceState() == kDeviceStateChild && + if (mRole == OT_DEVICE_ROLE_CHILD && (memcmp(&mParent.GetExtAddress(), &macAddr, sizeof(macAddr)) == 0 || !(mDeviceMode & ModeTlv::kModeFFD))) { ExitNow(); @@ -1337,7 +1336,7 @@ otError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::Messa } else if (leaderData.GetLeaderRouterId() != GetLeaderId()) { - if (GetDeviceState() != kDeviceStateChild) + if (mRole != OT_DEVICE_ROLE_CHILD) { BecomeDetached(); error = OT_ERROR_DROP; @@ -1356,13 +1355,13 @@ otError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::Messa { bool processRouteTlv = false; - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDisabled: - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: break; - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: if ((sourceAddress.GetRloc16() == mParent.GetRloc16()) || (router->GetState() == Neighbor::kStateValid)) { @@ -1371,8 +1370,8 @@ otError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::Messa break; - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: processRouteTlv = true; break; } @@ -1383,13 +1382,13 @@ otError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::Messa } } - switch (GetDeviceState()) + switch (mRole) { - case kDeviceStateDisabled: - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: ExitNow(); - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: if ((sourceAddress.GetRloc16() == mParent.GetRloc16() || router->GetState() == Neighbor::kStateValid) && (mDeviceMode & ModeTlv::kModeFFD) && (mRouterSelectionJitterTimeout == 0) && @@ -1454,7 +1453,7 @@ otError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::Messa ExitNow(); - case kDeviceStateRouter: + case OT_DEVICE_ROLE_ROUTER: // check current active router number routerCount = 0; @@ -1477,7 +1476,7 @@ otError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::Messa // fall through - case kDeviceStateLeader: + case OT_DEVICE_ROLE_LEADER: // router is not in list, reject if (!router->IsAllocated()) @@ -1659,9 +1658,9 @@ otError MleRouter::HandleParentRequest(const Message &aMessage, const Ip6::Messa VerifyOrExit(GetLeaderAge() < mNetworkIdTimeout, error = OT_ERROR_DROP); // 3. Its current routing path cost to the Leader is infinite. - VerifyOrExit(GetDeviceState() == kDeviceStateLeader || + VerifyOrExit(mRole == OT_DEVICE_ROLE_LEADER || GetLinkCost(GetLeaderId()) < kMaxRouteCost || - (GetDeviceState() == kDeviceStateChild && mRouters[GetLeaderId()].GetCost() + 1 < kMaxRouteCost) || + (mRole == OT_DEVICE_ROLE_CHILD && mRouters[GetLeaderId()].GetCost() + 1 < kMaxRouteCost) || (mRouters[GetLeaderId()].GetCost() + GetLinkCost(mRouters[GetLeaderId()].GetNextHop()) < kMaxRouteCost), error = OT_ERROR_DROP); @@ -1675,18 +1674,18 @@ otError MleRouter::HandleParentRequest(const Message &aMessage, const Ip6::Messa SuccessOrExit(error = Tlv::GetTlv(aMessage, Tlv::kScanMask, sizeof(scanMask), scanMask)); VerifyOrExit(scanMask.IsValid(), error = OT_ERROR_PARSE); - switch (GetDeviceState()) + switch (mRole) { - case kDeviceStateDisabled: - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: ExitNow(); - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: VerifyOrExit(scanMask.IsEndDeviceFlagSet()); break; - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: VerifyOrExit(scanMask.IsRouterFlagSet()); break; } @@ -1752,17 +1751,17 @@ void MleRouter::HandleStateUpdateTimer(void) } } - switch (GetDeviceState()) + switch (mRole) { - case kDeviceStateDisabled: + case OT_DEVICE_ROLE_DISABLED: assert(false); break; - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DETACHED: BecomeDetached(); ExitNow(); - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: if (routerStateUpdate) { if (GetActiveRouterCount() < mRouterUpgradeThreshold) @@ -1785,7 +1784,7 @@ void MleRouter::HandleStateUpdateTimer(void) // fall through - case kDeviceStateRouter: + case OT_DEVICE_ROLE_ROUTER: // verify path to leader otLogDebgMle(GetInstance(), "network id timeout = %d", GetLeaderAge()); @@ -1802,7 +1801,7 @@ void MleRouter::HandleStateUpdateTimer(void) break; - case kDeviceStateLeader: + case OT_DEVICE_ROLE_LEADER: // update router id sequence if (GetLeaderAge() >= kRouterIdSequencePeriod) @@ -1874,7 +1873,7 @@ void MleRouter::HandleStateUpdateTimer(void) } } - if (GetDeviceState() == kDeviceStateLeader) + if (mRole == OT_DEVICE_ROLE_LEADER) { if (mRouters[i].IsAllocated()) { @@ -2061,7 +2060,7 @@ otError MleRouter::HandleChildIdRequest(const Message &aMessage, const Ip6::Mess otLogInfoMle(GetInstance(), "Received Child ID Request"); // only process message when operating as a child, router, or leader - VerifyOrExit(mDeviceState >= kDeviceStateChild, error = OT_ERROR_INVALID_STATE); + VerifyOrExit(mRole >= OT_DEVICE_ROLE_CHILD, error = OT_ERROR_INVALID_STATE); // Find Child macAddr.Set(aMessageInfo.GetPeerAddr()); @@ -2194,20 +2193,20 @@ otError MleRouter::HandleChildIdRequest(const Message &aMessage, const Ip6::Mess child->SetRequestTlv(numTlvs++, Tlv::kPendingDataset); } - switch (GetDeviceState()) + switch (mRole) { - case kDeviceStateDisabled: - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: assert(false); break; - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: child->SetState(Neighbor::kStateChildIdRequest); BecomeRouter(ThreadStatusTlv::kHaveChildIdRequest); break; - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: SuccessOrExit(error = SendChildIdResponse(child)); break; } @@ -2472,13 +2471,13 @@ otError MleRouter::HandleNetworkDataUpdateRouter(void) Ip6::Address destination; uint16_t delay; - VerifyOrExit(mDeviceState == kDeviceStateRouter || mDeviceState == kDeviceStateLeader); + VerifyOrExit(mRole == OT_DEVICE_ROLE_ROUTER || mRole == OT_DEVICE_ROLE_LEADER); memset(&destination, 0, sizeof(destination)); destination.mFields.m16[0] = HostSwap16(0xff02); destination.mFields.m16[7] = HostSwap16(0x0001); - delay = (mDeviceState == kDeviceStateLeader) ? 0 : (otPlatRandomGet() % kUnsolicitedDataResponseJitter); + delay = (mRole == OT_DEVICE_ROLE_LEADER) ? 0 : (otPlatRandomGet() % kUnsolicitedDataResponseJitter); SendDataResponse(destination, tlvs, sizeof(tlvs), delay); for (uint8_t i = 0; i < mMaxChildrenAllowed; i++) @@ -3066,7 +3065,7 @@ otError MleRouter::SetMaxAllowedChildren(uint8_t aMaxChildren) VerifyOrExit(aMaxChildren > 0 && aMaxChildren <= kMaxChildren, error = OT_ERROR_INVALID_ARGS); // Do not allow setting max children if MLE is running - VerifyOrExit(GetDeviceState() == kDeviceStateDisabled, error = OT_ERROR_INVALID_STATE); + VerifyOrExit(mRole == OT_DEVICE_ROLE_DISABLED, error = OT_ERROR_INVALID_STATE); // Save the value mMaxChildrenAllowed = aMaxChildren; @@ -3089,13 +3088,13 @@ exit: otError MleRouter::RemoveNeighbor(Neighbor &aNeighbor) { - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDisabled: - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: break; - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: if (&aNeighbor == &mParent) { BecomeDetached(); @@ -3103,8 +3102,8 @@ otError MleRouter::RemoveNeighbor(Neighbor &aNeighbor) break; - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: if (aNeighbor.IsStateValidOrRestoring() && !IsActiveRouter(aNeighbor.GetRloc16())) { aNeighbor.SetState(Neighbor::kStateInvalid); @@ -3158,18 +3157,18 @@ Neighbor *MleRouter::GetNeighbor(uint16_t aAddress) ExitNow(); } - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDisabled: + case OT_DEVICE_ROLE_DISABLED: break; - case kDeviceStateDetached: - case kDeviceStateChild: + case OT_DEVICE_ROLE_DETACHED: + case OT_DEVICE_ROLE_CHILD: rval = Mle::GetNeighbor(aAddress); break; - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: for (int i = 0; i < mMaxChildrenAllowed; i++) { if (mChildren[i].IsStateValidOrRestoring() && mChildren[i].GetRloc16() == aAddress) @@ -3202,18 +3201,18 @@ Neighbor *MleRouter::GetNeighbor(const Mac::ExtAddress &aAddress) { Neighbor *rval = NULL; - switch (mDeviceState) + switch (mRole) { - case kDeviceStateDisabled: + case OT_DEVICE_ROLE_DISABLED: break; - case kDeviceStateDetached: - case kDeviceStateChild: + case OT_DEVICE_ROLE_DETACHED: + case OT_DEVICE_ROLE_CHILD: rval = Mle::GetNeighbor(aAddress); break; - case kDeviceStateRouter: - case kDeviceStateLeader: + case OT_DEVICE_ROLE_ROUTER: + case OT_DEVICE_ROLE_LEADER: for (int i = 0; i < mMaxChildrenAllowed; i++) { if (mChildren[i].IsStateValidOrRestoring() && @@ -3358,7 +3357,7 @@ uint16_t MleRouter::GetNextHop(uint16_t aDestination) const Router *router; const Router *nextHop; - if (mDeviceState == kDeviceStateChild) + if (mRole == OT_DEVICE_ROLE_CHILD) { ExitNow(rval = Mle::GetNextHop(aDestination)); } @@ -3429,10 +3428,8 @@ otError MleRouter::SetPreferredRouterId(uint8_t aRouterId) { otError error = OT_ERROR_NONE; - VerifyOrExit( - (mDeviceState == kDeviceStateDetached) || (mDeviceState == kDeviceStateDisabled), - error = OT_ERROR_INVALID_STATE - ); + VerifyOrExit((mRole == OT_DEVICE_ROLE_DETACHED) || (mRole == OT_DEVICE_ROLE_DISABLED), + error = OT_ERROR_INVALID_STATE); mPreviousRouterId = aRouterId; @@ -3749,7 +3746,7 @@ otError MleRouter::CheckReachability(uint16_t aMeshSource, uint16_t aMeshDest, I { Ip6::MessageInfo messageInfo; - if (mDeviceState == kDeviceStateChild) + if (mRole == OT_DEVICE_ROLE_CHILD) { return Mle::CheckReachability(aMeshSource, aMeshDest, aIp6Header); } @@ -4249,14 +4246,14 @@ void MleRouter::FillConnectivityTlv(ConnectivityTlv &aTlv) cost = mRouters[GetLeaderId()].GetCost(); - switch (GetDeviceState()) + switch (mRole) { - case kDeviceStateDisabled: - case kDeviceStateDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: assert(false); break; - case kDeviceStateChild: + case OT_DEVICE_ROLE_CHILD: switch (mParent.GetLinkInfo().GetLinkQuality(mNetif.GetMac().GetNoiseFloor())) { case 1: @@ -4275,7 +4272,7 @@ void MleRouter::FillConnectivityTlv(ConnectivityTlv &aTlv) cost += LqiToCost(mParent.GetLinkInfo().GetLinkQuality(mNetif.GetMac().GetNoiseFloor())); break; - case kDeviceStateRouter: + case OT_DEVICE_ROLE_ROUTER: cost += GetLinkCost(mRouters[GetLeaderId()].GetNextHop()); if (!IsRouterIdValid(mRouters[GetLeaderId()].GetNextHop()) || GetLinkCost(GetLeaderId()) < cost) @@ -4285,7 +4282,7 @@ void MleRouter::FillConnectivityTlv(ConnectivityTlv &aTlv) break; - case kDeviceStateLeader: + case OT_DEVICE_ROLE_LEADER: cost = 0; break; } diff --git a/src/core/thread/network_data_leader_ftd.cpp b/src/core/thread/network_data_leader_ftd.cpp index e0fad3cf8..96f596939 100644 --- a/src/core/thread/network_data_leader_ftd.cpp +++ b/src/core/thread/network_data_leader_ftd.cpp @@ -100,7 +100,7 @@ void Leader::Stop(void) void Leader::IncrementVersion(void) { - if (mNetif.GetMle().GetDeviceState() == Mle::kDeviceStateLeader) + if (mNetif.GetMle().GetRole() == OT_DEVICE_ROLE_LEADER) { mVersion++; mNetif.SetStateChangedFlags(OT_THREAD_NETDATA_UPDATED); @@ -109,7 +109,7 @@ void Leader::IncrementVersion(void) void Leader::IncrementStableVersion(void) { - if (mNetif.GetMle().GetDeviceState() == Mle::kDeviceStateLeader) + if (mNetif.GetMle().GetRole() == OT_DEVICE_ROLE_LEADER) { mStableVersion++; } @@ -203,7 +203,7 @@ void Leader::HandleCommissioningSet(Coap::Header &aHeader, Message &aMessage, co bool hasValidTlv = false; uint16_t sessionId = 0; - VerifyOrExit(mNetif.GetMle().GetDeviceState() == Mle::kDeviceStateLeader, state = MeshCoP::StateTlv::kReject); + VerifyOrExit(mNetif.GetMle().GetRole() == OT_DEVICE_ROLE_LEADER, state = MeshCoP::StateTlv::kReject); aMessage.Read(offset, length, tlvs); @@ -271,7 +271,7 @@ void Leader::HandleCommissioningSet(Coap::Header &aHeader, Message &aMessage, co exit: - if (mNetif.GetMle().GetDeviceState() == Mle::kDeviceStateLeader) + if (mNetif.GetMle().GetRole() == OT_DEVICE_ROLE_LEADER) { SendCommissioningSetResponse(aHeader, aMessageInfo, state); } diff --git a/src/core/thread/network_data_local.cpp b/src/core/thread/network_data_local.cpp index 273646eb2..b607a8c04 100644 --- a/src/core/thread/network_data_local.cpp +++ b/src/core/thread/network_data_local.cpp @@ -236,7 +236,7 @@ otError Local::SendServerDataNotification(void) if ((mNetif.GetMle().GetDeviceMode() & Mle::ModeTlv::kModeFFD) != 0 && (mNetif.GetMle().IsRouterRoleEnabled()) && - (mNetif.GetMle().GetDeviceState() < Mle::kDeviceStateRouter) && + (mNetif.GetMle().GetRole() < OT_DEVICE_ROLE_ROUTER) && (mNetif.GetMle().GetActiveRouterCount() < mNetif.GetMle().GetRouterUpgradeThreshold())) { ExitNow(error = OT_ERROR_INVALID_STATE); diff --git a/src/core/utils/child_supervision.cpp b/src/core/utils/child_supervision.cpp index 02d3fa53c..dafee22ea 100644 --- a/src/core/utils/child_supervision.cpp +++ b/src/core/utils/child_supervision.cpp @@ -194,7 +194,7 @@ void SupervisionListener::UpdateOnReceive(const Mac::Address &aSourceAddress, bo { // If listener is enabled and device is a child and it received a secure frame from its parent, restart the timer. - VerifyOrExit(mTimer.IsRunning() && aIsSecure && (mNetif.GetMle().GetDeviceState() == Mle::kDeviceStateChild) && + VerifyOrExit(mTimer.IsRunning() && aIsSecure && (mNetif.GetMle().GetRole() == OT_DEVICE_ROLE_CHILD) && (mNetif.GetMle().GetNeighbor(aSourceAddress) == mNetif.GetMle().GetParent())); RestartTimer(); @@ -207,7 +207,7 @@ void SupervisionListener::RestartTimer(void) { // Restart the timer, if the timeout value is non-zero and the device is a sleepy child. - if ((mTimeout != 0) && (mNetif.GetMle().GetDeviceState() == Mle::kDeviceStateChild) && + if ((mTimeout != 0) && (mNetif.GetMle().GetRole() == OT_DEVICE_ROLE_CHILD) && (mNetif.GetMeshForwarder().GetRxOnWhenIdle() == false)) { mTimer.Start(Timer::SecToMsec(mTimeout)); @@ -225,7 +225,7 @@ void SupervisionListener::HandleTimer(void *aContext) void SupervisionListener::HandleTimer(void) { - VerifyOrExit((mNetif.GetMle().GetDeviceState() == Mle::kDeviceStateChild) && + VerifyOrExit((mNetif.GetMle().GetRole() == OT_DEVICE_ROLE_CHILD) && (mNetif.GetMeshForwarder().GetRxOnWhenIdle() == false)); otLogWarnMle(mNetif.GetInstance(), "Supervision timeout. No frame from parent in %d sec", mTimeout); diff --git a/src/ncp/ncp_base.cpp b/src/ncp/ncp_base.cpp index b6f6d7139..7c91e0371 100644 --- a/src/ncp/ncp_base.cpp +++ b/src/ncp/ncp_base.cpp @@ -1129,8 +1129,8 @@ void NcpBase::UpdateChangedProps(void) { switch (otThreadGetDeviceRole(mInstance)) { - case kDeviceRoleDetached: - case kDeviceRoleDisabled: + case OT_DEVICE_ROLE_DETACHED: + case OT_DEVICE_ROLE_DISABLED: break; default: @@ -1138,7 +1138,7 @@ void NcpBase::UpdateChangedProps(void) break; } - if ( (otThreadGetDeviceRole(mInstance) == kDeviceRoleLeader) + if ( (otThreadGetDeviceRole(mInstance) == OT_DEVICE_ROLE_LEADER) && otThreadIsSingleton(mInstance) #if OPENTHREAD_ENABLE_LEGACY && !mLegacyNodeDidJoin @@ -2301,7 +2301,7 @@ otError NcpBase::GetPropertyHandler_NET_STACK_UP(uint8_t header, spinel_prop_key SPINEL_CMD_PROP_VALUE_IS, key, SPINEL_DATATYPE_BOOL_S, - otThreadGetDeviceRole(mInstance) != kDeviceRoleDisabled + otThreadGetDeviceRole(mInstance) != OT_DEVICE_ROLE_DISABLED ); } @@ -2311,21 +2311,20 @@ otError NcpBase::GetPropertyHandler_NET_ROLE(uint8_t header, spinel_prop_key_t k switch (otThreadGetDeviceRole(mInstance)) { - case kDeviceRoleOffline: - case kDeviceRoleDisabled: - case kDeviceRoleDetached: + case OT_DEVICE_ROLE_DISABLED: + case OT_DEVICE_ROLE_DETACHED: role = SPINEL_NET_ROLE_DETACHED; break; - case kDeviceRoleChild: + case OT_DEVICE_ROLE_CHILD: role = SPINEL_NET_ROLE_CHILD; break; - case kDeviceRoleRouter: + case OT_DEVICE_ROLE_ROUTER: role = SPINEL_NET_ROLE_ROUTER; break; - case kDeviceRoleLeader: + case OT_DEVICE_ROLE_LEADER: role = SPINEL_NET_ROLE_LEADER; break; } @@ -4516,7 +4515,7 @@ otError NcpBase::SetPropertyHandler_NET_STACK_UP(uint8_t header, spinel_prop_key if (parsedLength > 0) { // If the value has changed... - if ((value != false) != (otThreadGetDeviceRole(mInstance) != kDeviceRoleDisabled)) + if ((value != false) != (otThreadGetDeviceRole(mInstance) != OT_DEVICE_ROLE_DISABLED)) { if (value != false) { @@ -7220,7 +7219,7 @@ void NcpBase::RegisterLegacyHandlers(const otNcpLegacyHandlers *aHandlers) VerifyOrExit(mLegacyHandlers != NULL); - isEnabled = (otThreadGetDeviceRole(mInstance) != kDeviceRoleDisabled); + isEnabled = (otThreadGetDeviceRole(mInstance) != OT_DEVICE_ROLE_DISABLED); if (isEnabled) {