diff options
author | Daniele Palmas <dnlplm@gmail.com> | 2021-10-18 14:43:20 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-11-09 08:34:01 +0000 |
commit | ba84f978557fdea8d3b7b8059fb22539daca9ded (patch) | |
tree | 1f2f94f87b7d9692ae48fd4863b03a4d9488e73a | |
parent | a1fdba508d3ffbdd4b95f5abee68c9b37cf63405 (diff) |
broadband-modem-qmi: prefer signal info indication if available
Prefer signal info indication if available and fall back to
signal strength indication if the former is not supported.
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index b8e6563f..2239bb14 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -96,9 +96,7 @@ struct _MMBroadbandModemQmiPrivate { gboolean unsolicited_events_setup; guint nas_event_report_indication_id; guint wds_event_report_indication_id; -#if defined WITH_NEWEST_QMI_COMMANDS guint nas_signal_info_indication_id; -#endif /* WITH_NEWEST_QMI_COMMANDS */ /* New devices may not support the legacy DMS UIM commands */ gboolean dms_uim_deprecated; @@ -5032,8 +5030,6 @@ common_enable_disable_unsolicited_events_data_system_status (GTask *task) task); } -#if !defined WITH_NEWEST_QMI_COMMANDS - static void ser_signal_strength_ready (QmiClientNas *client, GAsyncResult *res, @@ -5108,8 +5104,6 @@ common_enable_disable_unsolicited_events_signal_strength (GTask *task) task); } -#else /* WITH_NEWEST_QMI_COMMANDS */ - static void ri_signal_info_ready (QmiClientNas *client, GAsyncResult *res, @@ -5124,11 +5118,14 @@ ri_signal_info_ready (QmiClientNas *client, ctx = g_task_get_task_data (task); output = qmi_client_nas_register_indications_finish (client, res, &error); - if (!output || !qmi_message_nas_register_indications_output_get_result (output, &error)) - mm_obj_dbg (self, "couldn't register signal info indications: '%s'", error->message); - else { + if (!output || !qmi_message_nas_register_indications_output_get_result (output, &error)) { + mm_obj_dbg (self, "couldn't register signal info indications: '%s', falling back to signal strength", error->message); + common_enable_disable_unsolicited_events_signal_strength (task); + g_clear_error (&error); + return; + } else { /* Disable access technology and signal quality polling if we can use the indications */ - mm_obj_dbg (self, "signal strength indications enabled: polling disabled"); + mm_obj_dbg (self, "signal info indications enabled: polling disabled"); g_object_set (self, MM_IFACE_MODEM_PERIODIC_SIGNAL_CHECK_DISABLED, TRUE, MM_IFACE_MODEM_PERIODIC_ACCESS_TECH_CHECK_DISABLED, TRUE, @@ -5221,8 +5218,6 @@ common_enable_disable_unsolicited_events_signal_info_config (GTask *task) task); } -#endif /* WITH_NEWEST_QMI_COMMANDS */ - static void common_enable_disable_unsolicited_events (MMBroadbandModemQmi *self, gboolean enable, @@ -5262,11 +5257,7 @@ common_enable_disable_unsolicited_events (MMBroadbandModemQmi *self, g_task_set_task_data (task, ctx, (GDestroyNotify)enable_unsolicited_events_context_free); if (ctx->client_nas) { -#if defined WITH_NEWEST_QMI_COMMANDS common_enable_disable_unsolicited_events_signal_info_config (task); -#else - common_enable_disable_unsolicited_events_signal_strength (task); -#endif /* WITH_NEWEST_QMI_COMMANDS */ return; } @@ -5410,8 +5401,6 @@ nas_event_report_indication_cb (QmiClientNas *client, } } -#if defined WITH_NEWEST_QMI_COMMANDS - static void nas_signal_info_indication_cb (QmiClientNas *client, QmiIndicationNasSignalInfoOutput *output, @@ -5447,8 +5436,6 @@ nas_signal_info_indication_cb (QmiClientNas *client, } } -#endif /* WITH_NEWEST_QMI_COMMANDS */ - static void common_setup_cleanup_unsolicited_events (MMBroadbandModemQmi *self, gboolean enable, @@ -5493,7 +5480,6 @@ common_setup_cleanup_unsolicited_events (MMBroadbandModemQmi *self, self->priv->nas_event_report_indication_id = 0; } -#if defined WITH_NEWEST_QMI_COMMANDS if (enable) { g_assert (self->priv->nas_signal_info_indication_id == 0); self->priv->nas_signal_info_indication_id = @@ -5505,7 +5491,6 @@ common_setup_cleanup_unsolicited_events (MMBroadbandModemQmi *self, g_signal_handler_disconnect (client_nas, self->priv->nas_signal_info_indication_id); self->priv->nas_signal_info_indication_id = 0; } -#endif /* WITH_NEWEST_QMI_COMMANDS */ } if (client_wds) { |