[radio] define `Radio::kInvalidRssi` constant (#8097)
This commit harmonizes the constant used to indicate an "Invalid RSSI
value". It defines `Radio::kInvalidRssi` which is then used in all
core modules replacing `OT_RADIO_INVALID_RSSI` and similar constants
in `SubMac/Mac`.
diff --git a/src/core/api/thread_api.cpp b/src/core/api/thread_api.cpp
index ca157c8..d5342d5 100644
--- a/src/core/api/thread_api.cpp
+++ b/src/core/api/thread_api.cpp
@@ -354,7 +354,7 @@
*aParentRssi = AsCoreType(aInstance).Get<Mle::MleRouter>().GetParent().GetLinkInfo().GetAverageRss();
- VerifyOrExit(*aParentRssi != OT_RADIO_RSSI_INVALID, error = kErrorFailed);
+ VerifyOrExit(*aParentRssi != Radio::kInvalidRssi, error = kErrorFailed);
exit:
return error;
@@ -368,7 +368,7 @@
*aLastRssi = AsCoreType(aInstance).Get<Mle::MleRouter>().GetParent().GetLinkInfo().GetLastRss();
- VerifyOrExit(*aLastRssi != OT_RADIO_RSSI_INVALID, error = kErrorFailed);
+ VerifyOrExit(*aLastRssi != Radio::kInvalidRssi, error = kErrorFailed);
exit:
return error;
diff --git a/src/core/common/message.hpp b/src/core/common/message.hpp
index 902852b..bb789a4 100644
--- a/src/core/common/message.hpp
+++ b/src/core/common/message.hpp
@@ -1126,7 +1126,7 @@
/**
* This method returns the average RSS (Received Signal Strength) associated with the message.
*
- * @returns The current average RSS value (in dBm) or OT_RADIO_RSSI_INVALID if no average is available.
+ * @returns The current average RSS value (in dBm) or `Radio::kInvalidRssi` if no average is available.
*
*/
int8_t GetAverageRss(void) const { return GetMetadata().mRssAverager.GetAverage(); }
diff --git a/src/core/mac/mac.cpp b/src/core/mac/mac.cpp
index 48941a8..234851d 100644
--- a/src/core/mac/mac.cpp
+++ b/src/core/mac/mac.cpp
@@ -348,7 +348,7 @@
{
EnergyScanResult result;
- VerifyOrExit((mEnergyScanHandler != nullptr) && (aRssi != kInvalidRssiValue));
+ VerifyOrExit((mEnergyScanHandler != nullptr) && (aRssi != Radio::kInvalidRssi));
result.mChannel = mScanChannel;
result.mMaxRssi = aRssi;
diff --git a/src/core/mac/mac.hpp b/src/core/mac/mac.hpp
index cce6616..1280ca6 100644
--- a/src/core/mac/mac.hpp
+++ b/src/core/mac/mac.hpp
@@ -697,7 +697,6 @@
#endif
private:
- static constexpr int8_t kInvalidRssiValue = SubMac::kInvalidRssiValue;
static constexpr uint16_t kMaxCcaSampleCount = OPENTHREAD_CONFIG_CCA_FAILURE_RATE_AVERAGING_WINDOW;
enum Operation : uint8_t
diff --git a/src/core/mac/mac_links.hpp b/src/core/mac/mac_links.hpp
index 43dcff4..693468a 100644
--- a/src/core/mac/mac_links.hpp
+++ b/src/core/mac/mac_links.hpp
@@ -291,8 +291,6 @@
friend class ot::Instance;
public:
- static const int8_t kInvalidRssiValue = SubMac::kInvalidRssiValue; ///< Invalid RSSI value.
-
/**
* This constructor initializes the `Links` object.
*
@@ -576,7 +574,7 @@
/**
* This method gets the most recent RSSI measurement from radio link.
*
- * @returns The RSSI in dBm when it is valid. `kInvalidRssiValue` when RSSI is invalid.
+ * @returns The RSSI in dBm when it is valid. `Radio::kInvalidRssi` when RSSI is invalid.
*
*/
int8_t GetRssi(void) const
@@ -585,7 +583,7 @@
#if OPENTHREAD_CONFIG_RADIO_LINK_IEEE_802_15_4_ENABLE
mSubMac.GetRssi();
#else
- kInvalidRssiValue;
+ Radio::kInvalidRssi;
#endif
}
diff --git a/src/core/mac/sub_mac.cpp b/src/core/mac/sub_mac.cpp
index 1424026..ebeeaa2 100644
--- a/src/core/mac/sub_mac.cpp
+++ b/src/core/mac/sub_mac.cpp
@@ -79,7 +79,7 @@
mShortAddress = kShortAddrInvalid;
mExtAddress.Clear();
mRxOnWhenBackoff = true;
- mEnergyScanMaxRssi = kInvalidRssiValue;
+ mEnergyScanMaxRssi = Radio::kInvalidRssi;
mEnergyScanEndTime = Time{0};
#if OPENTHREAD_CONFIG_MAC_ADD_DELAY_ON_NO_ACK_ERROR_BEFORE_RETRY
mRetxDelayBackOffExponent = kRetxDelayMinBackoffExponent;
@@ -673,7 +673,7 @@
#if OPENTHREAD_CONFIG_MAC_FILTER_ENABLE
if (mRadioFilterEnabled)
{
- rssi = kInvalidRssiValue;
+ rssi = Radio::kInvalidRssi;
}
else
#endif
@@ -716,7 +716,7 @@
}
#if OPENTHREAD_CONFIG_MAC_FILTER_ENABLE
- VerifyOrExit(!mRadioFilterEnabled, HandleEnergyScanDone(kInvalidRssiValue));
+ VerifyOrExit(!mRadioFilterEnabled, HandleEnergyScanDone(Radio::kInvalidRssi));
#endif
if (RadioSupportsEnergyScan())
@@ -729,7 +729,7 @@
SuccessOrAssert(Get<Radio>().Receive(aScanChannel));
SetState(kStateEnergyScan);
- mEnergyScanMaxRssi = kInvalidRssiValue;
+ mEnergyScanMaxRssi = Radio::kInvalidRssi;
mEnergyScanEndTime = TimerMilli::GetNow() + static_cast<uint32_t>(aScanDuration);
mTimer.Start(0);
}
@@ -748,9 +748,9 @@
int8_t rssi = GetRssi();
- if (rssi != kInvalidRssiValue)
+ if (rssi != Radio::kInvalidRssi)
{
- if ((mEnergyScanMaxRssi == kInvalidRssiValue) || (rssi > mEnergyScanMaxRssi))
+ if ((mEnergyScanMaxRssi == Radio::kInvalidRssi) || (rssi > mEnergyScanMaxRssi))
{
mEnergyScanMaxRssi = rssi;
}
diff --git a/src/core/mac/sub_mac.hpp b/src/core/mac/sub_mac.hpp
index cf75d89..596af41 100644
--- a/src/core/mac/sub_mac.hpp
+++ b/src/core/mac/sub_mac.hpp
@@ -108,8 +108,6 @@
friend class LinkRaw;
public:
- static constexpr int8_t kInvalidRssiValue = 127; ///< Invalid Received Signal Strength Indicator (RSSI) value.
-
/**
* This class defines the callbacks notifying `SubMac` user of changes and events.
*
@@ -189,7 +187,7 @@
/**
* This method notifies user of `SubMac` that energy scan is complete.
*
- * @param[in] aMaxRssi Maximum RSSI seen on the channel, or `SubMac::kInvalidRssiValue` if failed.
+ * @param[in] aMaxRssi Maximum RSSI seen on the channel, or `Radio::kInvalidRssi` if failed.
*
*/
void EnergyScanDone(int8_t aMaxRssi);
@@ -367,7 +365,7 @@
/**
* This method gets the most recent RSSI measurement.
*
- * @returns The RSSI in dBm when it is valid. `kInvalidRssiValue` when RSSI is invalid.
+ * @returns The RSSI in dBm when it is valid. `Radio::kInvalidRssi` when RSSI is invalid.
*
*/
int8_t GetRssi(void) const;
diff --git a/src/core/meshcop/joiner.cpp b/src/core/meshcop/joiner.cpp
index 4c48316..e4db7d4 100644
--- a/src/core/meshcop/joiner.cpp
+++ b/src/core/meshcop/joiner.cpp
@@ -244,7 +244,7 @@
{
int16_t priority;
- if (aRssi == OT_RADIO_RSSI_INVALID)
+ if (aRssi == Radio::kInvalidRssi)
{
aRssi = -127;
}
diff --git a/src/core/radio/radio.hpp b/src/core/radio/radio.hpp
index 294c316..e47a74b 100644
--- a/src/core/radio/radio.hpp
+++ b/src/core/radio/radio.hpp
@@ -103,6 +103,8 @@
static constexpr uint32_t kSupportedChannelPages = (1 << OPENTHREAD_CONFIG_PLATFORM_RADIO_PROPRIETARY_CHANNEL_PAGE);
#endif
+ static constexpr int8_t kInvalidRssi = OT_RADIO_RSSI_INVALID; ///< Invalid RSSI value.
+
static_assert((OPENTHREAD_CONFIG_RADIO_2P4GHZ_OQPSK_SUPPORT || OPENTHREAD_CONFIG_RADIO_915MHZ_OQPSK_SUPPORT ||
OPENTHREAD_CONFIG_PLATFORM_RADIO_PROPRIETARY_SUPPORT),
"OPENTHREAD_CONFIG_RADIO_2P4GHZ_OQPSK_SUPPORT "
@@ -994,7 +996,7 @@
inline int8_t Radio::GetRssi(void)
{
- return OT_RADIO_RSSI_INVALID;
+ return kInvalidRssi;
}
inline Error Radio::EnergyScan(uint8_t, uint16_t)
diff --git a/src/core/radio/trel_link.cpp b/src/core/radio/trel_link.cpp
index be68dfb..4bcd810 100644
--- a/src/core/radio/trel_link.cpp
+++ b/src/core/radio/trel_link.cpp
@@ -240,7 +240,7 @@
mRxFrame.mRadioType = Mac::kRadioTypeTrel;
#endif
mRxFrame.mInfo.mRxInfo.mTimestamp = 0;
- mRxFrame.mInfo.mRxInfo.mRssi = OT_RADIO_RSSI_INVALID;
+ mRxFrame.mInfo.mRxInfo.mRssi = Radio::kInvalidRssi;
mRxFrame.mInfo.mRxInfo.mLqi = OT_RADIO_LQI_NONE;
mRxFrame.mInfo.mRxInfo.mAckedWithFramePending = false;
diff --git a/src/core/thread/link_quality.cpp b/src/core/thread/link_quality.cpp
index bd2a65f..3b738a7 100644
--- a/src/core/thread/link_quality.cpp
+++ b/src/core/thread/link_quality.cpp
@@ -64,7 +64,7 @@
Error error = kErrorNone;
uint16_t newValue;
- VerifyOrExit(aRss != OT_RADIO_RSSI_INVALID, error = kErrorInvalidArgs);
+ VerifyOrExit(aRss != Radio::kInvalidRssi, error = kErrorInvalidArgs);
// Restrict the RSS value to the closed range [0, -128] so the RSS times precision multiple can fit in 11 bits.
if (aRss > 0)
@@ -90,7 +90,7 @@
{
int8_t average;
- VerifyOrExit(mCount != 0, average = OT_RADIO_RSSI_INVALID);
+ VerifyOrExit(mCount != 0, average = Radio::kInvalidRssi);
average = -static_cast<int8_t>(mAverage >> kPrecisionBitShift);
@@ -134,7 +134,7 @@
{
mRssAverager.Clear();
SetLinkQuality(kLinkQuality0);
- mLastRss = OT_RADIO_RSSI_INVALID;
+ mLastRss = Radio::kInvalidRssi;
mFrameErrorRate.Clear();
mMessageErrorRate.Clear();
@@ -144,7 +144,7 @@
{
uint8_t oldLinkQuality = kNoLinkQuality;
- VerifyOrExit(aRss != OT_RADIO_RSSI_INVALID);
+ VerifyOrExit(aRss != Radio::kInvalidRssi);
mLastRss = aRss;
@@ -180,7 +180,7 @@
{
int8_t linkMargin = aRss - aNoiseFloor;
- if (linkMargin < 0 || aRss == OT_RADIO_RSSI_INVALID)
+ if (linkMargin < 0 || aRss == Radio::kInvalidRssi)
{
linkMargin = 0;
}
diff --git a/src/core/thread/link_quality.hpp b/src/core/thread/link_quality.hpp
index e919e3d..642dd58 100644
--- a/src/core/thread/link_quality.hpp
+++ b/src/core/thread/link_quality.hpp
@@ -125,13 +125,13 @@
/**
* This method adds a received signal strength (RSS) value to the average.
*
- * If @p aRss is OT_RADIO_RSSI_INVALID, it is ignored and error status kErrorInvalidArgs is returned.
+ * If @p aRss is `Radio::kInvalidRssi`, it is ignored and error status kErrorInvalidArgs is returned.
* The value of RSS is capped at 0dBm (i.e., for any given RSS value higher than 0dBm, 0dBm is used instead).
*
* @param[in] aRss Received signal strength value (in dBm) to be added to the average.
*
* @retval kErrorNone New RSS value added to average successfully.
- * @retval kErrorInvalidArgs Value of @p aRss is OT_RADIO_RSSI_INVALID.
+ * @retval kErrorInvalidArgs Value of @p aRss is `Radio::kInvalidRssi`.
*
*/
Error Add(int8_t aRss);
@@ -139,7 +139,7 @@
/**
* This method returns the current average signal strength value maintained by the averager.
*
- * @returns The current average value (in dBm) or OT_RADIO_RSSI_INVALID if no average is available.
+ * @returns The current average value (in dBm) or `Radio::kInvalidRssi` if no average is available.
*
*/
int8_t GetAverage(void) const;
@@ -317,7 +317,7 @@
/**
* This method returns the current average received signal strength value.
*
- * @returns The current average value or @c OT_RADIO_RSSI_INVALID if no average is available.
+ * @returns The current average value or `Radio::kInvalidRssi` if no average is available.
*
*/
int8_t GetAverageRss(void) const { return mRssAverager.GetAverage(); }
diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp
index 24fd449..1d9900c 100644
--- a/src/core/thread/mle.cpp
+++ b/src/core/thread/mle.cpp
@@ -3901,7 +3901,7 @@
parentRss = Get<Mle>().GetParent().GetLinkInfo().GetAverageRss();
LogInfo("PeriodicParentSearch: Parent RSS %d", parentRss);
- VerifyOrExit(parentRss != OT_RADIO_RSSI_INVALID);
+ VerifyOrExit(parentRss != Radio::kInvalidRssi);
if (parentRss < kRssThreadhold)
{
diff --git a/src/core/utils/channel_monitor.cpp b/src/core/utils/channel_monitor.cpp
index 8925c64..7afd4db 100644
--- a/src/core/utils/channel_monitor.cpp
+++ b/src/core/utils/channel_monitor.cpp
@@ -158,7 +158,7 @@
LogDebg("channel: %d, rssi:%d", aResult->mChannel, aResult->mMaxRssi);
- if (aResult->mMaxRssi != OT_RADIO_RSSI_INVALID)
+ if (aResult->mMaxRssi != Radio::kInvalidRssi)
{
newValue = (aResult->mMaxRssi >= kRssiThreshold) ? kMaxOccupancy : 0;
}
diff --git a/src/core/utils/history_tracker.cpp b/src/core/utils/history_tracker.cpp
index 31a2ebc..10a7076 100644
--- a/src/core/utils/history_tracker.cpp
+++ b/src/core/utils/history_tracker.cpp
@@ -129,7 +129,7 @@
entry->mChecksum = headers.GetChecksum();
entry->mIpProto = headers.GetIpProto();
entry->mIcmp6Type = headers.IsIcmp6() ? headers.GetIcmpHeader().GetType() : 0;
- entry->mAveRxRss = (aType == kRxMessage) ? aMessage.GetRssAverager().GetAverage() : kInvalidRss;
+ entry->mAveRxRss = (aType == kRxMessage) ? aMessage.GetRssAverager().GetAverage() : Radio::kInvalidRssi;
entry->mLinkSecurity = aMessage.IsLinkSecurityEnabled();
entry->mTxSuccess = (aType == kTxMessage) ? aMessage.GetTxSuccess() : true;
entry->mPriority = aMessage.GetPriority();
diff --git a/src/core/utils/history_tracker.hpp b/src/core/utils/history_tracker.hpp
index 3a0a2ee..31ce3d1 100644
--- a/src/core/utils/history_tracker.hpp
+++ b/src/core/utils/history_tracker.hpp
@@ -273,7 +273,6 @@
static constexpr AddressEvent kAddressAdded = OT_HISTORY_TRACKER_ADDRESS_EVENT_ADDED;
static constexpr AddressEvent kAddressRemoved = OT_HISTORY_TRACKER_ADDRESS_EVENT_REMOVED;
- static constexpr int8_t kInvalidRss = OT_RADIO_RSSI_INVALID;
static constexpr uint16_t kInvalidRloc16 = Mac::kShortAddrInvalid;
typedef otHistoryTrackerNeighborEvent NeighborEvent;
diff --git a/src/core/utils/jam_detector.cpp b/src/core/utils/jam_detector.cpp
index ce4a4bc..2644a1b 100644
--- a/src/core/utils/jam_detector.cpp
+++ b/src/core/utils/jam_detector.cpp
@@ -177,7 +177,7 @@
// If the RSSI is valid, check if it exceeds the threshold
// and try to update the history bit map
- if (rssi != OT_RADIO_RSSI_INVALID)
+ if (rssi != Radio::kInvalidRssi)
{
didExceedThreshold = (rssi >= mRssiThreshold);
UpdateHistory(didExceedThreshold);
diff --git a/tests/unit/test_link_quality.cpp b/tests/unit/test_link_quality.cpp
index eede263..e66db69 100644
--- a/tests/unit/test_link_quality.cpp
+++ b/tests/unit/test_link_quality.cpp
@@ -70,7 +70,7 @@
// Check and verify the raw average RSS value to match the value from GetAverage().
void VerifyRawRssValue(int8_t aAverage, uint16_t aRawValue)
{
- if (aAverage != OT_RADIO_RSSI_INVALID)
+ if (aAverage != Radio::kInvalidRssi)
{
VerifyOrQuit(aAverage == -static_cast<int16_t>((aRawValue + (kRawAverageMultiple / 2)) >> kRawAverageBitShift),
"Raw value does not match the average.");
@@ -126,7 +126,7 @@
int8_t average = aRssAverager.GetAverage();
uint16_t rawValue = aRssAverager.GetRaw();
- if (average != OT_RADIO_RSSI_INVALID)
+ if (average != Radio::kInvalidRssi)
{
VerifyOrQuit(average == -static_cast<int16_t>((rawValue + (kRawAverageMultiple / 2)) >> kRawAverageBitShift),
"Raw value does not match the average.");
@@ -166,7 +166,7 @@
rssAverager.Clear();
printf("\nAfter Clear: ");
- VerifyOrQuit(rssAverager.GetAverage() == OT_RADIO_RSSI_INVALID, "Initial value from GetAverage() is incorrect.");
+ VerifyOrQuit(rssAverager.GetAverage() == Radio::kInvalidRssi, "Initial value from GetAverage() is incorrect.");
VerifyRawRssValue(rssAverager);
PrintOutcome(rssAverager);
@@ -184,7 +184,7 @@
printf("Clear(): ");
rssAverager.Clear();
- VerifyOrQuit(rssAverager.GetAverage() == OT_RADIO_RSSI_INVALID, "GetAverage() after Clear() is incorrect.");
+ VerifyOrQuit(rssAverager.GetAverage() == Radio::kInvalidRssi, "GetAverage() after Clear() is incorrect.");
VerifyRawRssValue(rssAverager);
PrintOutcome(rssAverager);