[link-quality] helper fn to convert link margin, link quality, RSS (#8081)

This commit simplifies the helper functions that convert between
link margin, link quality and RSS (replacing the `static` methods
in `LinkQualityInfo`).
diff --git a/src/core/thread/link_quality.hpp b/src/core/thread/link_quality.hpp
index bc10957..e919e3d 100644
--- a/src/core/thread/link_quality.hpp
+++ b/src/core/thread/link_quality.hpp
@@ -242,12 +242,47 @@
 };
 
 /**
+ * This function computes the link margin from a given noise floor and received signal strength.
+ *
+ * @param[in]  aNoiseFloor  The noise floor value (in dBm).
+ * @param[in]  aRss         The received signal strength value (in dBm).
+ *
+ * @returns The link margin value in dB.
+ *
+ */
+uint8_t ComputeLinkMargin(int8_t aNoiseFloor, int8_t aRss);
+
+/**
+ * This function converts a link margin value to a link quality value.
+ *
+ * @param[in]  aLinkMargin  The Link Margin in dB.
+ *
+ * @returns The link quality value (0-3).
+ *
+ */
+LinkQuality LinkQualityForLinkMargin(uint8_t aLinkMargin);
+
+/**
+ * This function gets the typical received signal strength value for a given link quality.
+ *
+ * @param[in]  aNoiseFloor   The noise floor value (in dBm).
+ * @param[in]  aLinkQuality  The link quality value in [0, 3].
+ *
+ * @returns The typical platform RSSI in dBm.
+ *
+ */
+int8_t GetTypicalRssForLinkQuality(int8_t aNoiseFloor, LinkQuality aLinkQuality);
+
+/**
  * This class encapsulates/stores all relevant information about quality of a link, including average received signal
  * strength (RSS), last RSS, link margin, and link quality.
  *
  */
 class LinkQualityInfo : public InstanceLocatorInit
 {
+    friend LinkQuality LinkQualityForLinkMargin(uint8_t aLinkMargin);
+    friend int8_t      GetTypicalRssForLinkQuality(int8_t aNoiseFloor, LinkQuality aLinkQuality);
+
 public:
     static constexpr uint16_t kInfoStringSize = 50; ///< `InfoString` size (@sa ToInfoString()).
 
@@ -387,51 +422,6 @@
      */
     uint16_t GetMessageErrorRate(void) const { return mMessageErrorRate.GetFailureRate(); }
 
-    /**
-     * This method converts a received signal strength value to a link margin value.
-     *
-     * @param[in]  aNoiseFloor  The noise floor value (in dBm).
-     * @param[in]  aRss         The received signal strength value (in dBm).
-     *
-     * @returns The link margin value.
-     *
-     */
-    static uint8_t ConvertRssToLinkMargin(int8_t aNoiseFloor, int8_t aRss);
-
-    /**
-     * This method converts a link margin value to a link quality value.
-     *
-     * @param[in]  aLinkMargin  The Link Margin in dB.
-     *
-     * @returns The link quality value (0-3).
-     *
-     */
-    static LinkQuality ConvertLinkMarginToLinkQuality(uint8_t aLinkMargin);
-
-    /**
-     * This method converts a received signal strength value to a link quality value.
-     *
-     * @param[in]  aNoiseFloor  The noise floor value (in dBm).
-     * @param[in]  aRss         The received signal strength value (in dBm).
-     *
-     * @returns The link quality value (0-3).
-     *
-     */
-    static LinkQuality ConvertRssToLinkQuality(int8_t aNoiseFloor, int8_t aRss);
-
-    /**
-     * This method converts a link quality value to a typical received signal strength value.
-     *
-     * @note only for test.
-     *
-     * @param[in]  aNoiseFloor   The noise floor value (in dBm).
-     * @param[in]  aLinkQuality  The link quality value in [0, 3].
-     *
-     * @returns The typical platform RSSI.
-     *
-     */
-    static int8_t ConvertLinkQualityToRss(int8_t aNoiseFloor, LinkQuality aLinkQuality);
-
 private:
     // Constants for obtaining link quality from link margin: