Remove globals from link_quality.cpp.

This commit is contained in:
Jonathan Hui
2016-09-07 13:30:22 -07:00
parent e22c123904
commit 28a564548c
7 changed files with 89 additions and 66 deletions
+1 -1
View File
@@ -925,7 +925,7 @@ void Mac::ReceiveDoneTask(Frame *aFrame, ThreadError aError)
if (neighbor != NULL)
{
neighbor->mLinkInfo.AddRss(aFrame->mPower);
neighbor->mLinkInfo.AddRss(mNoiseFloor, aFrame->mPower);
}
switch (mState)
+10
View File
@@ -453,6 +453,14 @@ public:
*/
otMacCounters &GetCounters(void);
/**
* This method returns the noise floor state.
*
* @returns A reference to the noise floor state.
*
*/
LinkQualityInfo &GetNoiseFloor(void) { return mNoiseFloor; }
private:
void GenerateNonce(const ExtAddress &aAddress, uint32_t aFrameCounter, uint8_t aSecurityLevel, uint8_t *aNonce);
void NextOperation(void);
@@ -518,6 +526,8 @@ private:
ActiveScanHandler mActiveScanHandler;
void *mActiveScanContext;
LinkQualityInfo mNoiseFloor;
otLinkPcapCallback mPcapCallback;
void *mPcapCallbackContext;
+19 -21
View File
@@ -54,8 +54,6 @@ static const char *const kLinkQualityDecimalDigitsString[8] =
const char LinkQualityInfo::kUnknownRssString[] = "Unknown RSS";
static LinkQualityInfo sNoiseFloorAverage; // Store the noise floor average.
//-------------------------------------------------------------------------------
LinkQualityInfo::LinkQualityInfo(void)
@@ -70,7 +68,7 @@ void LinkQualityInfo::Clear(void)
mLinkQuality = 0;
}
void LinkQualityInfo::AddRss(int8_t anRss)
void LinkQualityInfo::AddRss(LinkQualityInfo &aNoiseFloor, int8_t anRss)
{
uint16_t newValue;
uint16_t oldAverage;
@@ -114,7 +112,7 @@ void LinkQualityInfo::AddRss(int8_t anRss)
mCount++;
}
UpdateLinkQuality();
UpdateLinkQuality(aNoiseFloor);
}
int8_t LinkQualityInfo::GetAverageRss(void) const
@@ -167,33 +165,33 @@ exit:
return error;
}
uint8_t LinkQualityInfo::GetLinkMargin(void) const
uint8_t LinkQualityInfo::GetLinkMargin(LinkQualityInfo &aNoiseFloor) const
{
return ConvertRssToLinkMargin(GetAverageRss());
return ConvertRssToLinkMargin(aNoiseFloor, GetAverageRss());
}
uint8_t LinkQualityInfo::GetLinkQuality(void)
uint8_t LinkQualityInfo::GetLinkQuality(LinkQualityInfo &aNoiseFloor)
{
UpdateLinkQuality();
UpdateLinkQuality(aNoiseFloor);
return mLinkQuality;
}
void LinkQualityInfo::UpdateLinkQuality(void)
void LinkQualityInfo::UpdateLinkQuality(LinkQualityInfo &aNoiseFloor)
{
if (mCount != 0)
{
mLinkQuality = CalculateLinkQuality(GetLinkMargin(), mLinkQuality);
mLinkQuality = CalculateLinkQuality(GetLinkMargin(aNoiseFloor), mLinkQuality);
}
else
{
mLinkQuality = CalculateLinkQuality(GetLinkMargin(), kNoLastLinkQualityValue);
mLinkQuality = CalculateLinkQuality(GetLinkMargin(aNoiseFloor), kNoLastLinkQualityValue);
}
}
uint8_t LinkQualityInfo::ConvertRssToLinkMargin(int8_t anRss)
uint8_t LinkQualityInfo::ConvertRssToLinkMargin(LinkQualityInfo &aNoiseFloor, int8_t anRss)
{
int8_t linkMargin = anRss - GetAverageNoiseFloor();
int8_t linkMargin = anRss - GetAverageNoiseFloor(aNoiseFloor);
if (linkMargin < 0 || anRss == kUnknownRss)
{
@@ -208,9 +206,9 @@ uint8_t LinkQualityInfo::ConvertLinkMarginToLinkQuality(uint8_t aLinkMargin)
return CalculateLinkQuality(aLinkMargin, kNoLastLinkQualityValue);
}
uint8_t LinkQualityInfo::ConvertRssToLinkQuality(int8_t anRss)
uint8_t LinkQualityInfo::ConvertRssToLinkQuality(LinkQualityInfo &aNoiseFloor, int8_t anRss)
{
return ConvertLinkMarginToLinkQuality(ConvertRssToLinkMargin(anRss));
return ConvertLinkMarginToLinkQuality(ConvertRssToLinkMargin(aNoiseFloor, anRss));
}
uint8_t LinkQualityInfo::CalculateLinkQuality(uint8_t aLinkMargin, uint8_t aLastLinkQuality)
@@ -261,9 +259,9 @@ uint8_t LinkQualityInfo::CalculateLinkQuality(uint8_t aLinkMargin, uint8_t aLast
return linkQuality;
}
int8_t GetAverageNoiseFloor(void)
int8_t GetAverageNoiseFloor(LinkQualityInfo &aNoiseFloor)
{
int8_t averageNoiseFloor = sNoiseFloorAverage.GetAverageRss();
int8_t averageNoiseFloor = aNoiseFloor.GetAverageRss();
if (averageNoiseFloor == LinkQualityInfo::kUnknownRss)
{
@@ -273,14 +271,14 @@ int8_t GetAverageNoiseFloor(void)
return averageNoiseFloor;
}
void AddNoiseFloor(int8_t aNoiseFloor)
void AddNoiseFloor(LinkQualityInfo &aNoiseFloor, int8_t aNoise)
{
sNoiseFloorAverage.AddRss(aNoiseFloor);
aNoiseFloor.AddRss(aNoiseFloor, aNoise);
}
void ClearNoiseFloorAverage(void)
void ClearNoiseFloorAverage(LinkQualityInfo &aNoiseFloor)
{
sNoiseFloorAverage.Clear();
aNoiseFloor.Clear();
}
} // namespace Thread
+25 -13
View File
@@ -76,10 +76,11 @@ public:
/**
* This method adds a new received signal strength (RSS) value to the average.
*
* @param[in] anRss A new received signal strength value (in dBm) to be added to the average.
* @param[in] aNoiseFloor A reference to the noise floor state.
* @param[in] anRss A new received signal strength value (in dBm) to be added to the average.
*
*/
void AddRss(int8_t anRss);
void AddRss(LinkQualityInfo &aNoiseFloor, int8_t anRss);
/**
* This method returns the current average signal strength value.
@@ -115,10 +116,12 @@ public:
* This method returns the link margin. The link margin is calculated using the link's current average received
* signal strength (RSS) and average noise floor.
*
* @param[in] aNoiseFloor A reference to the noise state.
*
* @returns Link margin derived from average received signal strength and average noise floor.
*
*/
uint8_t GetLinkMargin(void) const;
uint8_t GetLinkMargin(LinkQualityInfo &aNoiseFloor) const;
/**
* Returns the current one-way link quality value. The link quality value is a number 0-3.
@@ -131,19 +134,22 @@ public:
* frequent changes, a hysteresis of 2 dB is applied when determining the link quality. For example, the average
* link margin must be at least 12 dB to change a quality 1 link to a quality 2 link.
*
* @param[in] aNoiseFloor A reference to the noise state.
*
* @returns The current link quality value (value 0-3 as per Thread specification).
*/
uint8_t GetLinkQuality(void);
uint8_t GetLinkQuality(LinkQualityInfo &aNoiseFloor);
/**
* This method converts a received signal strength value to a link margin value.
*
* @param[in] anRss The received signal strength value (in dBm).
* @param[in] aNoiseFloor A reference to the noise state.
* @param[in] anRss The received signal strength value (in dBm).
*
* @returns The link margin value.
*
*/
static uint8_t ConvertRssToLinkMargin(int8_t anRss);
static uint8_t ConvertRssToLinkMargin(LinkQualityInfo &aNoiseFloor, int8_t anRss);
/**
* This method converts a link margin value to a link quality value.
@@ -158,12 +164,13 @@ public:
/**
* This method converts a received signal strength value to a link quality value.
*
* @param[in] anRss The received signal strength value (in dBm).
* @param[in] aNoiseFloor A reference to the noise state.
* @param[in] anRss The received signal strength value (in dBm).
*
* @returns The link quality value (0-3).
*
*/
static uint8_t ConvertRssToLinkQuality(int8_t anRss);
static uint8_t ConvertRssToLinkQuality(LinkQualityInfo &aNoiseFloor, int8_t anRss);
private:
enum
@@ -193,7 +200,7 @@ private:
/* Private method to update the mLinkQuality value. This is called when a new RSS value is added to average
* or when GetLinkQuality() is invoked.
*/
void UpdateLinkQuality(void);
void UpdateLinkQuality(LinkQualityInfo &aNoiseFloor);
/* Static private method to calculate the link quality from a given link margin while taking into account the last
* link quality value and adding the hysteresis value to the thresholds. If there is no previous value for link
@@ -214,23 +221,28 @@ private:
/**
* This function returns the current average noise floor level (in dBm).
*
* @param[in] aNoiseFloor A reference to the noise state.
*
* @returns The current average noise floor level (in dBm).
*/
int8_t GetAverageNoiseFloor(void);
int8_t GetAverageNoiseFloor(LinkQualityInfo &aNoiseFloor);
/**
* This method adds a new noise floor value (in dBm) to the running average.
*
* @param[in] aNoiseFloor A new noise floor value (in dBm) to be added to the average.
* @param[in] aNoiseFloor A reference to the noise state.
* @param[in] aNoise A new noise floor value (in dBm) to be added to the average.
*
*/
void AddNoiseFloor(int8_t aNoiseFloor);
void AddNoiseFloor(LinkQualityInfo &aNoiseFloor, int8_t aNoise);
/**
* This method clears the current average noise floor value.
*
* @param[in] aNoiseFloor A reference to the noise state.
*
*/
void ClearNoiseFloorAverage(void);
void ClearNoiseFloorAverage(LinkQualityInfo &aNoiseFloor);
/**
+2 -2
View File
@@ -1809,7 +1809,7 @@ ThreadError Mle::HandleParentResponse(const Message &aMessage, const Ip6::Messag
SuccessOrExit(error = Tlv::GetTlv(aMessage, Tlv::kLinkMargin, sizeof(linkMarginTlv), linkMarginTlv));
VerifyOrExit(linkMarginTlv.IsValid(), error = kThreadError_Parse);
linkMargin = LinkQualityInfo::ConvertRssToLinkMargin(threadMessageInfo->mRss);
linkMargin = LinkQualityInfo::ConvertRssToLinkMargin(mMac.GetNoiseFloor(), threadMessageInfo->mRss);
if (linkMargin > linkMarginTlv.GetLinkMargin())
{
@@ -1889,7 +1889,7 @@ ThreadError Mle::HandleParentResponse(const Message &aMessage, const Ip6::Messag
mParent.mValid.mMleFrameCounter = mleFrameCounter.GetFrameCounter();
mParent.mMode = ModeTlv::kModeFFD | ModeTlv::kModeRxOnWhenIdle | ModeTlv::kModeFullNetworkData;
mParent.mLinkInfo.Clear();
mParent.mLinkInfo.AddRss(threadMessageInfo->mRss);
mParent.mLinkInfo.AddRss(mMac.GetNoiseFloor(), threadMessageInfo->mRss);
mParent.mState = Neighbor::kStateValid;
mParent.mKeySequence = aKeySequence;
+16 -16
View File
@@ -641,7 +641,7 @@ ThreadError MleRouter::HandleLinkRequest(const Message &aMessage, const Ip6::Mes
memcpy(&neighbor->mMacAddr, &macAddr, sizeof(neighbor->mMacAddr));
neighbor->mLinkInfo.Clear();
neighbor->mLinkInfo.AddRss(threadMessageInfo->mRss);
neighbor->mLinkInfo.AddRss(mMac.GetNoiseFloor(), threadMessageInfo->mRss);
neighbor->mState = Neighbor::kStateLinkRequest;
}
else
@@ -695,7 +695,7 @@ ThreadError MleRouter::SendLinkAccept(const Ip6::MessageInfo &aMessageInfo, Neig
SuccessOrExit(error = AppendMleFrameCounter(*message));
// always append a link margin, regardless of whether or not it was requested
linkMargin = LinkQualityInfo::ConvertRssToLinkMargin(threadMessageInfo->mRss);
linkMargin = LinkQualityInfo::ConvertRssToLinkMargin(mMac.GetNoiseFloor(), threadMessageInfo->mRss);
// add for certification testing
if (isAssignLinkQuality &&
@@ -930,7 +930,7 @@ ThreadError MleRouter::HandleLinkAccept(const Message &aMessage, const Ip6::Mess
neighbor->mLastHeard = Timer::GetNow();
neighbor->mMode = ModeTlv::kModeFFD | ModeTlv::kModeRxOnWhenIdle | ModeTlv::kModeFullNetworkData;
neighbor->mLinkInfo.Clear();
neighbor->mLinkInfo.AddRss(threadMessageInfo->mRss);
neighbor->mLinkInfo.AddRss(mMac.GetNoiseFloor(), threadMessageInfo->mRss);
neighbor->mState = Neighbor::kStateValid;
neighbor->mKeySequence = aKeySequence;
@@ -1070,7 +1070,7 @@ uint8_t MleRouter::GetLinkCost(uint8_t aRouterId)
mRouters[aRouterId].mState == Neighbor::kStateValid,
rval = kMaxRouteCost);
rval = mRouters[aRouterId].mLinkInfo.GetLinkQuality();
rval = mRouters[aRouterId].mLinkInfo.GetLinkQuality(mMac.GetNoiseFloor());
if (rval > mRouters[aRouterId].mLinkQualityOut)
{
@@ -1359,7 +1359,7 @@ ThreadError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::M
{
memcpy(&router->mMacAddr, &macAddr, sizeof(router->mMacAddr));
router->mLinkInfo.Clear();
router->mLinkInfo.AddRss(threadMessageInfo->mRss);
router->mLinkInfo.AddRss(mMac.GetNoiseFloor(), threadMessageInfo->mRss);
router->mState = Neighbor::kStateLinkRequest;
SendLinkRequest(router);
ExitNow(error = kThreadError_NoRoute);
@@ -1385,7 +1385,7 @@ ThreadError MleRouter::HandleAdvertisement(const Message &aMessage, const Ip6::M
{
memcpy(&router->mMacAddr, &macAddr, sizeof(router->mMacAddr));
router->mLinkInfo.Clear();
router->mLinkInfo.AddRss(threadMessageInfo->mRss);
router->mLinkInfo.AddRss(mMac.GetNoiseFloor(), threadMessageInfo->mRss);
router->mState = Neighbor::kStateLinkRequest;
router->mDataRequest = false;
SendLinkRequest(router);
@@ -1522,7 +1522,7 @@ void MleRouter::UpdateRoutes(const RouteTlv &aRoute, uint8_t aRouterId)
}
otLogDebgMle("%x: %x %d %d %d %d\n", GetRloc16(i), GetRloc16(mRouters[i].mNextHop),
mRouters[i].mCost, GetLinkCost(i), mRouters[i].mLinkInfo.GetLinkQuality(),
mRouters[i].mCost, GetLinkCost(i), mRouters[i].mLinkInfo.GetLinkQuality(mMac.GetNoiseFloor()),
mRouters[i].mLinkQualityOut);
}
@@ -1591,7 +1591,7 @@ ThreadError MleRouter::HandleParentRequest(const Message &aMessage, const Ip6::M
// MAC Address
memcpy(&child->mMacAddr, &macAddr, sizeof(child->mMacAddr));
child->mLinkInfo.Clear();
child->mLinkInfo.AddRss(threadMessageInfo->mRss);
child->mLinkInfo.AddRss(mMac.GetNoiseFloor(), threadMessageInfo->mRss);
child->mState = Neighbor::kStateParentRequest;
child->mDataRequest = false;
@@ -1731,7 +1731,7 @@ ThreadError MleRouter::SendParentResponse(Child *aChild, const ChallengeTlv &cha
}
else
{
SuccessOrExit(error = AppendLinkMargin(*message, aChild->mLinkInfo.GetLinkMargin()));
SuccessOrExit(error = AppendLinkMargin(*message, aChild->mLinkInfo.GetLinkMargin(mMac.GetNoiseFloor())));
}
SuccessOrExit(error = AppendConnectivity(*message));
@@ -1885,7 +1885,7 @@ ThreadError MleRouter::HandleChildIdRequest(const Message &aMessage, const Ip6::
child->mValid.mMleFrameCounter = mleFrameCounter.GetFrameCounter();
child->mKeySequence = aKeySequence;
child->mMode = mode.GetMode();
child->mLinkInfo.AddRss(threadMessageInfo->mRss);
child->mLinkInfo.AddRss(mMac.GetNoiseFloor(), threadMessageInfo->mRss);
child->mTimeout = timeout.GetTimeout();
if (mode.GetMode() & ModeTlv::kModeFullNetworkData)
@@ -2719,7 +2719,7 @@ void MleRouter::GetChildInfo(Child &aChild, otChildInfo &aChildInfo)
aChildInfo.mChildId = GetChildId(aChild.mValid.mRloc16);
aChildInfo.mNetworkDataVersion = aChild.mNetworkDataVersion;
aChildInfo.mAge = Timer::MsecToSec(Timer::GetNow() - aChild.mLastHeard);
aChildInfo.mLinkQualityIn = aChild.mLinkInfo.GetLinkQuality();
aChildInfo.mLinkQualityIn = aChild.mLinkInfo.GetLinkQuality(mMac.GetNoiseFloor());
aChildInfo.mAverageRssi = aChild.mLinkInfo.GetAverageRss();
aChildInfo.mRxOnWhenIdle = (aChild.mMode & ModeTlv::kModeRxOnWhenIdle) != 0;
@@ -2752,7 +2752,7 @@ ThreadError MleRouter::GetRouterInfo(uint16_t aRouterId, otRouterInfo &aRouterIn
aRouterInfo.mNextHop = mRouters[routerId].mNextHop;
aRouterInfo.mLinkEstablished = mRouters[routerId].mState == Neighbor::kStateValid;
aRouterInfo.mPathCost = mRouters[routerId].mCost;
aRouterInfo.mLinkQualityIn = mRouters[routerId].mLinkInfo.GetLinkQuality();
aRouterInfo.mLinkQualityIn = mRouters[routerId].mLinkInfo.GetLinkQuality(mMac.GetNoiseFloor());
aRouterInfo.mLinkQualityOut = mRouters[routerId].mLinkQualityOut;
aRouterInfo.mAge = static_cast<uint8_t>(Timer::MsecToSec(Timer::GetNow() - mRouters[routerId].mLastHeard));
@@ -3277,7 +3277,7 @@ ThreadError MleRouter::AppendConnectivity(Message &aMessage)
break;
case kDeviceStateChild:
switch (mParent.mLinkInfo.GetLinkQuality())
switch (mParent.mLinkInfo.GetLinkQuality(mMac.GetNoiseFloor()))
{
case 1:
tlv.SetLinkQuality1(tlv.GetLinkQuality1() + 1);
@@ -3292,7 +3292,7 @@ ThreadError MleRouter::AppendConnectivity(Message &aMessage)
break;
}
cost += LqiToCost(mParent.mLinkInfo.GetLinkQuality());
cost += LqiToCost(mParent.mLinkInfo.GetLinkQuality(mMac.GetNoiseFloor()));
break;
case kDeviceStateRouter:
@@ -3318,7 +3318,7 @@ ThreadError MleRouter::AppendConnectivity(Message &aMessage)
continue;
}
lqi = mRouters[i].mLinkInfo.GetLinkQuality();
lqi = mRouters[i].mLinkInfo.GetLinkQuality(mMac.GetNoiseFloor());
if (lqi > mRouters[i].mLinkQualityOut)
{
@@ -3447,7 +3447,7 @@ ThreadError MleRouter::AppendRoute(Message &aMessage)
}
else
{
tlv.SetLinkQualityIn(routeCount, mRouters[i].mLinkInfo.GetLinkQuality());
tlv.SetLinkQualityIn(routeCount, mRouters[i].mLinkInfo.GetLinkQuality(mMac.GetNoiseFloor()));
}
}
+16 -13
View File
@@ -65,6 +65,8 @@ struct RssTestData
uint8_t mExpectedLinkQuality; // Expected final link quality value.
};
static LinkQualityInfo sNoiseFloor;
// Checks the encoded average RSS value to match the value from GetAverageRss().
void VerifyEncodedRssValue(LinkQualityInfo &aLinkInfo)
{
@@ -92,7 +94,8 @@ void PrintOutcome(LinkQualityInfo &aLinkInfo)
"TestLinkQualityInfo failed - GetAverageRssAsString() failed.");
printf("AveRss = %-4d, \"%-14s\", ", aLinkInfo.GetAverageRss(), stringBuf);
printf("LinkMargin = %-4d, LinkQuality = %d", aLinkInfo.GetLinkMargin(), aLinkInfo.GetLinkQuality());
printf("LinkMargin = %-4d, LinkQuality = %d", aLinkInfo.GetLinkMargin(sNoiseFloor),
aLinkInfo.GetLinkQuality(sNoiseFloor));
// This test-case succeeded.
printf(" -> PASS\n");
@@ -113,7 +116,7 @@ void TestLinkQualityData(RssTestData anRssData)
rss = anRssData.mRssList[i];
min = MIN_RSS(rss, min);
max = MAX_RSS(rss, max);
linkInfo.AddRss(rss);
linkInfo.AddRss(sNoiseFloor, rss);
ave = linkInfo.GetAverageRss();
VerifyOrQuit(ave >= min,
"TestLinkQualityInfo failed - GetAverageRss() is smaller than min value.");
@@ -124,7 +127,7 @@ void TestLinkQualityData(RssTestData anRssData)
PrintOutcome(linkInfo);
}
VerifyOrQuit(linkInfo.GetLinkQuality() == anRssData.mExpectedLinkQuality,
VerifyOrQuit(linkInfo.GetLinkQuality(sNoiseFloor) == anRssData.mExpectedLinkQuality,
"TestLinkQualityInfo failed - GetLinkQuality() is incorrect");
}
@@ -142,7 +145,7 @@ void TestRssAveraging(void)
printf("\nAfter Initialization: ");
VerifyOrQuit(linkInfo.GetAverageRss() == LinkQualityInfo::kUnknownRss,
"TestLinkQualityInfo failed - Inital value from GetAverageRss() is incorrect.");
VerifyOrQuit(linkInfo.GetLinkMargin() == 0,
VerifyOrQuit(linkInfo.GetLinkMargin(sNoiseFloor) == 0,
"TestLinkQualityInfo failed - Inital value for link margin is incorrect.");
VerifyEncodedRssValue(linkInfo);
PrintOutcome(linkInfo);
@@ -151,7 +154,7 @@ void TestRssAveraging(void)
// Adding a single value
rss = -70;
printf("AddRss(%d): ", rss);
linkInfo.AddRss(rss);
linkInfo.AddRss(sNoiseFloor, rss);
VerifyOrQuit(linkInfo.GetAverageRss() == rss,
"TestLinkQualityInfo - GetAverageRss() failed after a single AddRss().");
VerifyEncodedRssValue(linkInfo);
@@ -164,7 +167,7 @@ void TestRssAveraging(void)
linkInfo.Clear();
VerifyOrQuit(linkInfo.GetAverageRss() == LinkQualityInfo::kUnknownRss,
"TestLinkQualityInfo failed - GetAverageRss() after Clear() is incorrect.");
VerifyOrQuit(linkInfo.GetLinkMargin() == 0,
VerifyOrQuit(linkInfo.GetLinkMargin(sNoiseFloor) == 0,
"TestLinkQualityInfo failed - link margin value after Clear() is incorrect.");
VerifyEncodedRssValue(linkInfo);
PrintOutcome(linkInfo);
@@ -182,7 +185,7 @@ void TestRssAveraging(void)
for (i = 0; i < kNumRssAdds; i++)
{
linkInfo.AddRss(rss);
linkInfo.AddRss(sNoiseFloor, rss);
VerifyOrQuit(linkInfo.GetAverageRss() == rss,
"TestLinkQualityInfo failed - GetAverageRss() returned incorrect value.");
VerifyEncodedRssValue(linkInfo);
@@ -210,8 +213,8 @@ void TestRssAveraging(void)
rss2 = rssValues[k];
linkInfo.Clear();
linkInfo.AddRss(rss);
linkInfo.AddRss(rss2);
linkInfo.AddRss(sNoiseFloor, rss);
linkInfo.AddRss(sNoiseFloor, rss2);
printf("AddRss(%4d), AddRss(%4d): ", rss, rss2);
VerifyOrQuit(linkInfo.GetAverageRss() == ((rss + rss2) >> 1),
"TestLinkQualityInfo failed - GetAverageRss() returned incorrect value.");
@@ -241,10 +244,10 @@ void TestRssAveraging(void)
for (i = 0; i < kNumRssAdds; i++)
{
linkInfo.AddRss(rss);
linkInfo.AddRss(sNoiseFloor, rss);
}
linkInfo.AddRss(rss2);
linkInfo.AddRss(sNoiseFloor, rss2);
printf("AddRss(%4d) %d times, AddRss(%4d): ", rss, kNumRssAdds, rss2);
ave = linkInfo.GetAverageRss();
VerifyOrQuit(ave >= MIN_RSS(rss, rss2),
@@ -277,8 +280,8 @@ void TestRssAveraging(void)
for (i = 0; i < kNumRssAdds; i++)
{
linkInfo.AddRss(rss);
linkInfo.AddRss(rss2);
linkInfo.AddRss(sNoiseFloor, rss);
linkInfo.AddRss(sNoiseFloor, rss2);
ave = linkInfo.GetAverageRss();
VerifyOrQuit(ave >= MIN_RSS(rss, rss2),
"TestLinkQualityInfo failed - GetAverageRss() is smaller than min value.");