summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2021-10-17 21:58:54 +0200
committerAleksander Morgado <aleksander@aleksander.es>2021-10-18 00:04:09 +0200
commitc01f22804e0e4ac35216208e4a38da02cc56290c (patch)
tree2030663bf60b731364a633f293061c10cf484871
parente1bc4b0999aa268358d2ab2c3182e87119cd255f (diff)
modem-helpers: setup common RSSI to signal quality converter
-rw-r--r--plugins/novatel/mm-broadband-modem-novatel.c6
-rw-r--r--src/mm-broadband-modem-qmi.c12
-rw-r--r--src/mm-broadband-modem.c5
-rw-r--r--src/mm-modem-helpers.h7
4 files changed, 14 insertions, 16 deletions
diff --git a/plugins/novatel/mm-broadband-modem-novatel.c b/plugins/novatel/mm-broadband-modem-novatel.c
index 8c115ee8..d05e649b 100644
--- a/plugins/novatel/mm-broadband-modem-novatel.c
+++ b/plugins/novatel/mm-broadband-modem-novatel.c
@@ -767,10 +767,8 @@ get_one_quality (const gchar *reply,
}
}
- if (success) {
- dbm = CLAMP (dbm, -113, -51);
- quality = 100 - ((dbm + 51) * 100 / (-113 + 51));
- }
+ if (success)
+ quality = MM_RSSI_TO_QUALITY (dbm);
g_free (temp);
return quality;
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c
index 71524696..a79cc981 100644
--- a/src/mm-broadband-modem-qmi.c
+++ b/src/mm-broadband-modem-qmi.c
@@ -1297,10 +1297,6 @@ modem_load_supported_ip_families (MMIfaceModem *self,
/*****************************************************************************/
/* Load signal quality (Modem interface) */
-/* Limit the value betweeen [-113,-51] and scale it to a percentage */
-#define STRENGTH_TO_QUALITY(strength) \
- (guint8)(100 - ((CLAMP (strength, -113, -51) + 51) * 100 / (-113 + 51)))
-
static gboolean
qmi_dbm_valid (gint8 dbm, QmiNasRadioInterface radio_interface)
{
@@ -1407,7 +1403,7 @@ common_signal_info_get_quality (MMBroadbandModemQmi *self,
if (rssi_max < 0 && rssi_max > -125) {
/* This RSSI comes as negative dBms */
- *out_quality = STRENGTH_TO_QUALITY (rssi_max);
+ *out_quality = MM_RSSI_TO_QUALITY (rssi_max);
*out_act = mm_modem_access_technology_from_qmi_radio_interface (signal_info_radio_interface);
mm_obj_dbg (self, "RSSI: %d dBm --> %u%%", rssi_max, *out_quality);
@@ -1538,7 +1534,7 @@ signal_strength_get_quality_and_access_tech (MMBroadbandModemQmi *self,
if (signal_max < 0) {
/* This signal strength comes as negative dBms */
- *o_quality = STRENGTH_TO_QUALITY (signal_max);
+ *o_quality = MM_RSSI_TO_QUALITY (signal_max);
*o_act = act;
mm_obj_dbg (self, "signal strength: %d dBm --> %u%%", signal_max, *o_quality);
@@ -5064,7 +5060,7 @@ common_enable_disable_unsolicited_events_signal_strength (GTask *task)
/* The device doesn't really like to have many threshold values, so don't
* grow this array without checking first
- * The values are chosen towards their results through STRENGTH_TO_QUALITY
+ * The values are chosen towards their results through MM_RSSI_TO_QUALITY
* -106 dBm gives 11%
* -94 dBm gives 30%
* -82 dBm gives 50%
@@ -5377,7 +5373,7 @@ nas_event_report_indication_cb (QmiClientNas *client,
guint8 quality;
/* This signal strength comes as negative dBms */
- quality = STRENGTH_TO_QUALITY (signal_strength);
+ quality = MM_RSSI_TO_QUALITY (signal_strength);
mm_obj_dbg (self, "signal strength indication (%s): %d dBm --> %u%%",
qmi_nas_radio_interface_get_string (signal_strength_radio_interface),
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c
index a747ecb5..9bed3d64 100644
--- a/src/mm-broadband-modem.c
+++ b/src/mm-broadband-modem.c
@@ -2068,16 +2068,13 @@ modem_load_signal_quality_finish (MMIfaceModem *self,
static guint
signal_quality_evdo_pilot_sets (MMBroadbandModem *self)
{
- gint dbm;
-
if (self->priv->modem_cdma_evdo_registration_state == MM_MODEM_CDMA_REGISTRATION_STATE_UNKNOWN)
return 0;
if (self->priv->evdo_pilot_rssi >= 0)
return 0;
- dbm = CLAMP (self->priv->evdo_pilot_rssi, -113, -51);
- return 100 - ((dbm + 51) * 100 / (-113 + 51));
+ return MM_RSSI_TO_QUALITY (self->priv->evdo_pilot_rssi);
}
static void
diff --git a/src/mm-modem-helpers.h b/src/mm-modem-helpers.h
index 9345db8e..7391409f 100644
--- a/src/mm-modem-helpers.h
+++ b/src/mm-modem-helpers.h
@@ -570,6 +570,13 @@ gboolean mm_sim_parse_cpol_test_response (const gchar *response,
#define MM_CLAMP_HIGH(x, high) (((x) > (high)) ? (high) : (x))
/*****************************************************************************/
+/* Signal quality percentage from different sources */
+
+/* Limit the value betweeen [-113,-51] and scale it to a percentage */
+#define MM_RSSI_TO_QUALITY(rssi) \
+ (guint8)(100 - ((CLAMP (rssi, -113, -51) + 51) * 100 / (-113 + 51)))
+
+/*****************************************************************************/
/* Helper function to decode eid read from esim */
gchar *mm_decode_eid (const gchar *eid, gsize eid_len);