From 28a564548c0e834abdc8974660ac9e41807ad9f9 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Mon, 29 Aug 2016 21:49:50 -0700 Subject: [PATCH] Remove globals from link_quality.cpp. --- src/core/mac/mac.cpp | 2 +- src/core/mac/mac.hpp | 10 ++++++++ src/core/thread/link_quality.cpp | 40 +++++++++++++++----------------- src/core/thread/link_quality.hpp | 38 +++++++++++++++++++----------- src/core/thread/mle.cpp | 4 ++-- src/core/thread/mle_router.cpp | 32 ++++++++++++------------- tests/unit/test_link_quality.cpp | 29 ++++++++++++----------- 7 files changed, 89 insertions(+), 66 deletions(-) diff --git a/src/core/mac/mac.cpp b/src/core/mac/mac.cpp index 6fec0f23a..a9bf95e22 100644 --- a/src/core/mac/mac.cpp +++ b/src/core/mac/mac.cpp @@ -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) diff --git a/src/core/mac/mac.hpp b/src/core/mac/mac.hpp index 6b5f81391..79a2f5252 100644 --- a/src/core/mac/mac.hpp +++ b/src/core/mac/mac.hpp @@ -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; diff --git a/src/core/thread/link_quality.cpp b/src/core/thread/link_quality.cpp index 6ef43a333..b49327243 100644 --- a/src/core/thread/link_quality.cpp +++ b/src/core/thread/link_quality.cpp @@ -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 diff --git a/src/core/thread/link_quality.hpp b/src/core/thread/link_quality.hpp index 75fc3e2a5..57532ef7b 100644 --- a/src/core/thread/link_quality.hpp +++ b/src/core/thread/link_quality.hpp @@ -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); /** diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index ec60aa9d2..275fa51e9 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -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; diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index c3bcfc73f..3fe1fac57 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -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(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())); } } diff --git a/tests/unit/test_link_quality.cpp b/tests/unit/test_link_quality.cpp index 764830ca7..73250dc04 100644 --- a/tests/unit/test_link_quality.cpp +++ b/tests/unit/test_link_quality.cpp @@ -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.");