mirror of
https://github.com/espressif/openthread.git
synced 2026-11-09 16:01:31 +00:00
Add state checks to otBecomeRouter(). (#1288)
This commit is contained in:
+19
-1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user