Cleanup to detach process. (#1236)

- Set radio to rx-off-when-idle when entering detached state.
- Set radio to rx-on-when-idle when entering router state.
- Prefer use of `BecomeDetached()` rather than `SetStateDetached()`.
This commit is contained in:
Jonathan Hui
2017-02-22 21:44:05 -08:00
committed by GitHub
parent d8ca7ac164
commit 63b78808c3
2 changed files with 5 additions and 8 deletions
+2 -5
View File
@@ -472,10 +472,7 @@ ThreadError Mle::BecomeChild(otMleAttachFilter aFilter)
mLastPartitionRouterIdSequence = mNetif.GetMle().GetRouterIdSequence();
}
if ((mDeviceMode & ModeTlv::kModeRxOnWhenIdle) == 0)
{
mNetif.GetMeshForwarder().SetRxOnWhenIdle(true);
}
mNetif.GetMeshForwarder().SetRxOnWhenIdle(true);
mParentRequestTimer.Start(kParentRequestRouterTimeout);
@@ -512,7 +509,7 @@ ThreadError Mle::SetStateDetached(void)
mDeviceState = kDeviceStateDetached;
mParentRequestState = kParentIdle;
mParentRequestTimer.Stop();
mNetif.GetMeshForwarder().SetRxOnWhenIdle(true);
mNetif.GetMeshForwarder().SetRxOnWhenIdle(false);
mNetif.GetMle().HandleDetachStart();
mNetif.GetIp6().SetForwardingEnabled(false);
mNetif.GetIp6().mMpl.SetTimerExpirations(0);
+3 -3
View File
@@ -222,6 +222,7 @@ ThreadError MleRouter::BecomeRouter(ThreadStatusTlv::Status aStatus)
mAdvertiseTimer.Stop();
mNetif.GetAddressResolver().Clear();
mNetif.GetMeshForwarder().SetRxOnWhenIdle(true);
mRouterSelectionJitterTimeout = 0;
switch (mDeviceState)
@@ -1385,7 +1386,7 @@ ThreadError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::M
if (mParent.mValid.mRloc16 != sourceAddress.GetRloc16())
{
SetStateDetached();
BecomeDetached();
ExitNow(error = kThreadError_NoRoute);
}
@@ -1738,8 +1739,7 @@ void MleRouter::HandleStateUpdateTimer(void)
break;
case kDeviceStateDetached:
SetStateDetached();
BecomeChild(kMleAttachAnyPartition);
BecomeDetached();
ExitNow();
case kDeviceStateChild: