diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-10-17 21:58:54 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-10-18 00:04:09 +0200 |
commit | c01f22804e0e4ac35216208e4a38da02cc56290c (patch) | |
tree | 2030663bf60b731364a633f293061c10cf484871 | |
parent | e1bc4b0999aa268358d2ab2c3182e87119cd255f (diff) |
modem-helpers: setup common RSSI to signal quality converter
-rw-r--r-- | plugins/novatel/mm-broadband-modem-novatel.c | 6 | ||||
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 12 | ||||
-rw-r--r-- | src/mm-broadband-modem.c | 5 | ||||
-rw-r--r-- | src/mm-modem-helpers.h | 7 |
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); |