Add state checks to otBecomeRouter(). (#1288)

This commit is contained in:
Jonathan Hui
2017-02-09 06:26:16 -08:00
committed by GitHub
parent b39eaad75d
commit fdf7c46330
+19 -1
View File
@@ -619,7 +619,25 @@ ThreadError otBecomeChild(otInstance *aInstance, otMleAttachFilter aFilter)
ThreadError otBecomeRouter(otInstance *aInstance)
{
return aInstance->mThreadNetif.GetMle().BecomeRouter(ThreadStatusTlv::kHaveChildIdRequest);
ThreadError error = kThreadError_InvalidState;
switch (aInstance->mThreadNetif.GetMle().GetDeviceState())
{
case Mle::kDeviceStateDisabled:
case Mle::kDeviceStateDetached:
break;
case Mle::kDeviceStateChild:
error = aInstance->mThreadNetif.GetMle().BecomeRouter(ThreadStatusTlv::kHaveChildIdRequest);
break;
case Mle::kDeviceStateRouter:
case Mle::kDeviceStateLeader:
error = kThreadError_None;
break;
}
return error;
}
ThreadError otBecomeLeader(otInstance *aInstance)