[mle] add IncrementLinkQuality() to ConnectivityTlv (#8877)

This method helps when preparing the `ConnectivityTlv` and counting
the neighbors with which device shares a link at different
Link Quality values (1,2,3).
This commit is contained in:
Abtin Keshavarzian
2023-03-17 09:07:15 -07:00
committed by GitHub
parent 5a21384833
commit 30be45dc5c
3 changed files with 31 additions and 34 deletions
+2 -34
View File
@@ -3719,23 +3719,7 @@ void MleRouter::FillConnectivityTlv(ConnectivityTlv &aTlv)
if (IsChild())
{
switch (mParent.GetLinkQualityIn())
{
case kLinkQuality0:
break;
case kLinkQuality1:
aTlv.SetLinkQuality1(aTlv.GetLinkQuality1() + 1);
break;
case kLinkQuality2:
aTlv.SetLinkQuality2(aTlv.GetLinkQuality2() + 1);
break;
case kLinkQuality3:
aTlv.SetLinkQuality3(aTlv.GetLinkQuality3() + 1);
break;
}
aTlv.IncrementLinkQuality(mParent.GetLinkQualityIn());
}
for (const Router &router : Get<RouterTable>())
@@ -3752,23 +3736,7 @@ void MleRouter::FillConnectivityTlv(ConnectivityTlv &aTlv)
continue;
}
switch (router.GetTwoWayLinkQuality())
{
case kLinkQuality0:
break;
case kLinkQuality1:
aTlv.SetLinkQuality1(aTlv.GetLinkQuality1() + 1);
break;
case kLinkQuality2:
aTlv.SetLinkQuality2(aTlv.GetLinkQuality2() + 1);
break;
case kLinkQuality3:
aTlv.SetLinkQuality3(aTlv.GetLinkQuality3() + 1);
break;
}
aTlv.IncrementLinkQuality(router.GetTwoWayLinkQuality());
}
aTlv.SetActiveRouters(mRouterTable.GetActiveRouterCount());
+18
View File
@@ -66,5 +66,23 @@ exit:
#endif // #if !OPENTHREAD_CONFIG_MLE_LONG_ROUTES_ENABLE
void ConnectivityTlv::IncrementLinkQuality(LinkQuality aLinkQuality)
{
switch (aLinkQuality)
{
case kLinkQuality0:
break;
case kLinkQuality1:
mLinkQuality1++;
break;
case kLinkQuality2:
mLinkQuality2++;
break;
case kLinkQuality3:
mLinkQuality3++;
break;
}
}
} // namespace Mle
} // namespace ot
+11
View File
@@ -840,6 +840,17 @@ public:
*/
void SetLinkQuality1(uint8_t aLinkQuality) { mLinkQuality1 = aLinkQuality; }
/**
* This method increments the Link Quality N field in TLV for a given Link Quality N (1,2,3).
*
* The Link Quality N field specifies the number of neighboring router devices with which the sender shares a link
* of quality N.
*
* @param[in] aLinkQuality The Link Quality N (1,2,3) field to update.
*
*/
void IncrementLinkQuality(LinkQuality aLinkQuality);
/**
* This method sets the Active Routers value.
*