diff options
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index 775e1f7a..ccdc11e6 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -2680,7 +2680,7 @@ common_signal_info_get_quality (gint8 cdma1x_rssi, gint8 gsm_rssi, gint8 wcdma_rssi, gint8 lte_rssi, - gint8 *out_quality, + guint8 *out_quality, MMModemAccessTechnology *out_act) { gint8 rssi_max = -125; @@ -2750,13 +2750,13 @@ common_signal_info_get_quality (gint8 cdma1x_rssi, static gboolean signal_info_get_quality (MMBroadbandModemQmi *self, QmiMessageNasGetSignalInfoOutput *output, - gint8 *out_quality, + guint8 *out_quality, MMModemAccessTechnology *out_act) { gint8 cdma1x_rssi = 0; gint8 evdo_rssi = 0; gint8 gsm_rssi = 0; - gint8 umts_rssi = 0; + gint8 wcdma_rssi = 0; gint8 lte_rssi = 0; qmi_message_nas_get_signal_info_output_get_cdma_signal_strength (output, &cdma1x_rssi, NULL, NULL); @@ -2775,7 +2775,8 @@ get_signal_info_ready (QmiClientNas *client, { QmiMessageNasGetSignalInfoOutput *output; GError *error = NULL; - gint8 quality = 0; + guint8 quality = 0; + MMModemAccessTechnology act = MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN; output = qmi_client_nas_get_signal_info_finish (client, res, &error); if (!output) { @@ -2791,7 +2792,7 @@ get_signal_info_ready (QmiClientNas *client, return; } - if (!signal_info_get_quality (ctx->self, output, &quality)) { + if (!signal_info_get_quality (ctx->self, output, &quality, &act)) { qmi_message_nas_get_signal_info_output_unref (output); g_simple_async_result_set_error (ctx->result, MM_CORE_ERROR, @@ -2801,6 +2802,13 @@ get_signal_info_ready (QmiClientNas *client, return; } + /* We update the access technologies directly here when loading signal + * quality. It goes a bit out of context, but we can do it nicely */ + mm_iface_modem_update_access_technologies ( + MM_IFACE_MODEM (ctx->self), + act, + (MM_IFACE_MODEM_3GPP_ALL_ACCESS_TECHNOLOGIES_MASK | MM_IFACE_MODEM_CDMA_ALL_ACCESS_TECHNOLOGIES_MASK)); + g_simple_async_result_set_op_res_gpointer ( ctx->result, GUINT_TO_POINTER (quality), @@ -7044,7 +7052,7 @@ signal_info_indication_cb (QmiClientNas *client, gint8 cdma1x_rssi = 0; gint8 evdo_rssi = 0; gint8 gsm_rssi = 0; - gint8 umts_rssi = 0; + gint8 wcdma_rssi = 0; gint8 lte_rssi = 0; guint8 quality; MMModemAccessTechnology act = MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN; @@ -7061,11 +7069,11 @@ signal_info_indication_cb (QmiClientNas *client, wcdma_rssi, lte_rssi, &quality, - &access_technology)) { + &act)) { mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), quality); mm_iface_modem_update_access_technologies ( MM_IFACE_MODEM (self), - access_technology, + act, (MM_IFACE_MODEM_3GPP_ALL_ACCESS_TECHNOLOGIES_MASK | MM_IFACE_MODEM_CDMA_ALL_ACCESS_TECHNOLOGIES_MASK)); } } |