mirror of
https://github.com/espressif/openthread.git
synced 2026-09-10 11:10:08 +00:00
Move GetRouterId, GetChildId, GetRloc16, IsActiveRouter to static methods. (#262)
This commit is contained in:
@@ -615,7 +615,7 @@ void Mac::SentFrame(bool aAcked)
|
||||
|
||||
if ((neighbor = mMle.GetNeighbor(destination)) != NULL)
|
||||
{
|
||||
if (neighbor->mState == Neighbor::kStateValid && mMle.GetChildId(neighbor->mValid.mRloc16) != 0)
|
||||
if (neighbor->mState == Neighbor::kStateValid && !mMle.IsActiveRouter(neighbor->mValid.mRloc16))
|
||||
{
|
||||
mNetif.SetStateChangedFlags(OT_THREAD_CHILD_REMOVED);
|
||||
}
|
||||
|
||||
+1
-16
@@ -156,7 +156,7 @@ ThreadError Mle::Start(void)
|
||||
{
|
||||
BecomeChild(kMleAttachAnyPartition);
|
||||
}
|
||||
else if (GetChildId(GetRloc16()) == 0)
|
||||
else if (IsActiveRouter(GetRloc16()))
|
||||
{
|
||||
mMleRouter.BecomeRouter();
|
||||
}
|
||||
@@ -372,21 +372,6 @@ ThreadError Mle::SetMeshLocalPrefix(const uint8_t *aMeshLocalPrefix)
|
||||
return kThreadError_None;
|
||||
}
|
||||
|
||||
const uint8_t Mle::GetChildId(uint16_t aRloc16) const
|
||||
{
|
||||
return aRloc16 & kMaxChildId;
|
||||
}
|
||||
|
||||
const uint8_t Mle::GetRouterId(uint16_t aRloc16) const
|
||||
{
|
||||
return aRloc16 >> kRouterIdOffset;
|
||||
}
|
||||
|
||||
const uint16_t Mle::GetRloc16(uint8_t aRouterId) const
|
||||
{
|
||||
return static_cast<uint16_t>(aRouterId) << kRouterIdOffset;
|
||||
}
|
||||
|
||||
const Ip6::Address *Mle::GetLinkLocalAllThreadNodesAddress(void) const
|
||||
{
|
||||
return &mLinkLocalAllThreadNodes.GetAddress();
|
||||
|
||||
+41
-30
@@ -406,36 +406,6 @@ public:
|
||||
*/
|
||||
ThreadError SetMeshLocalPrefix(const uint8_t *aPrefix);
|
||||
|
||||
/**
|
||||
* This method returns the Child ID portion of an RLOC16.
|
||||
*
|
||||
* @param[in] aRloc16 The RLOC16 value.
|
||||
*
|
||||
* @returns The Child ID portion of an RLOC16.
|
||||
*
|
||||
*/
|
||||
const uint8_t GetChildId(uint16_t aRloc16) const;
|
||||
|
||||
/**
|
||||
* This method returns the Router ID portion of an RLOC16.
|
||||
*
|
||||
* @param[in] aRloc16 The RLOC16 value.
|
||||
*
|
||||
* @returns The Router ID portion of an RLOC16.
|
||||
*
|
||||
*/
|
||||
const uint8_t GetRouterId(uint16_t aRloc16) const;
|
||||
|
||||
/**
|
||||
* This method returns the RLOC16 of a given Router ID.
|
||||
*
|
||||
* @param[in] aRouterId The Router ID value..
|
||||
*
|
||||
* @returns The RLOC16 of the given Router ID.
|
||||
*
|
||||
*/
|
||||
const uint16_t GetRloc16(uint8_t aRouterId) const;
|
||||
|
||||
/**
|
||||
* This method returns a pointer to the link-local all Thread nodes multicast address.
|
||||
*
|
||||
@@ -551,6 +521,47 @@ public:
|
||||
*/
|
||||
ThreadError GetLeaderData(otLeaderData &aLeaderData);
|
||||
|
||||
/**
|
||||
* This method returns the Child ID portion of an RLOC16.
|
||||
*
|
||||
* @param[in] aRloc16 The RLOC16 value.
|
||||
*
|
||||
* @returns The Child ID portion of an RLOC16.
|
||||
*
|
||||
*/
|
||||
static uint8_t GetChildId(uint16_t aRloc16) { return aRloc16 & kMaxChildId; }
|
||||
|
||||
/**
|
||||
* This method returns the Router ID portion of an RLOC16.
|
||||
*
|
||||
* @param[in] aRloc16 The RLOC16 value.
|
||||
*
|
||||
* @returns The Router ID portion of an RLOC16.
|
||||
*
|
||||
*/
|
||||
static uint8_t GetRouterId(uint16_t aRloc16) { return aRloc16 >> kRouterIdOffset; }
|
||||
|
||||
/**
|
||||
* This method returns the RLOC16 of a given Router ID.
|
||||
*
|
||||
* @param[in] aRouterId The Router ID value.
|
||||
*
|
||||
* @returns The RLOC16 of the given Router ID.
|
||||
*
|
||||
*/
|
||||
static uint16_t GetRloc16(uint8_t aRouterId) { return static_cast<uint16_t>(aRouterId) << kRouterIdOffset; }
|
||||
|
||||
/**
|
||||
* This method indicates whether or not @p aRloc16 refers to an active router.
|
||||
*
|
||||
* @param[in] aRloc16 The RLOC16 value.
|
||||
*
|
||||
* @retval TRUE If @p aRloc16 refers to an active router.
|
||||
* @retval FALSE If @p aRloc16 does not refer to an active router.
|
||||
*
|
||||
*/
|
||||
static bool IsActiveRouter(uint16_t aRloc16) { return GetChildId(aRloc16) == 0; }
|
||||
|
||||
protected:
|
||||
/**
|
||||
* This method appends an MLE header to a message.
|
||||
|
||||
@@ -609,7 +609,7 @@ ThreadError MleRouter::HandleLinkRequest(const Message &aMessage, const Ip6::Mes
|
||||
neighbor = NULL;
|
||||
}
|
||||
|
||||
if (GetChildId(rloc16) == 0)
|
||||
if (IsActiveRouter(rloc16))
|
||||
{
|
||||
// source is a router
|
||||
neighbor = &mRouters[GetRouterId(rloc16)];
|
||||
@@ -678,7 +678,7 @@ ThreadError MleRouter::SendLinkAccept(const Ip6::MessageInfo &aMessageInfo, Neig
|
||||
linkMargin = LinkQualityInfo::ConvertRssToLinkMargin(threadMessageInfo->mRss);
|
||||
SuccessOrExit(error = AppendLinkMargin(*message, linkMargin));
|
||||
|
||||
if (aNeighbor != NULL && GetChildId(aNeighbor->mValid.mRloc16) == 0)
|
||||
if (aNeighbor != NULL && IsActiveRouter(aNeighbor->mValid.mRloc16))
|
||||
{
|
||||
SuccessOrExit(error = AppendLeaderData(*message));
|
||||
}
|
||||
@@ -1152,7 +1152,7 @@ ThreadError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::M
|
||||
ExitNow();
|
||||
}
|
||||
|
||||
VerifyOrExit(GetChildId(sourceAddress.GetRloc16()) == 0, ;);
|
||||
VerifyOrExit(IsActiveRouter(sourceAddress.GetRloc16()), ;);
|
||||
|
||||
// Route Data
|
||||
SuccessOrExit(error = Tlv::GetTlv(aMessage, Tlv::kRoute, sizeof(route), route));
|
||||
@@ -2343,7 +2343,7 @@ ThreadError MleRouter::GetRouterInfo(uint16_t aRouterId, otRouterInfo &aRouterIn
|
||||
{
|
||||
ThreadError error = kThreadError_None;
|
||||
|
||||
if (aRouterId > kMaxRouterId && GetChildId(aRouterId) == 0)
|
||||
if (aRouterId > kMaxRouterId && IsActiveRouter(aRouterId))
|
||||
{
|
||||
aRouterId = GetRouterId(aRouterId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user