diff options
author | Daniele Palmas <dnlplm@gmail.com> | 2021-10-18 12:25:07 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-11-09 08:34:01 +0000 |
commit | a1fdba508d3ffbdd4b95f5abee68c9b37cf63405 (patch) | |
tree | 4368b40b8535aa9b890c986a0966259c1fb91a30 /src | |
parent | 639d0c62a94e6bac5d3f6d65e5eba874e357f42a (diff) |
broadband-modem-qmi: replace get serving system 3gpp with get system info
Set get system info as default and fall back to get serving system 3gpp
for those modems not supporting the former.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index 67c21f0f..b8e6563f 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -2797,8 +2797,6 @@ modem_3gpp_run_registration_checks_finish (MMIfaceModem3gpp *self, return g_task_propagate_boolean (G_TASK (res), error); } -#if !defined WITH_NEWEST_QMI_COMMANDS - static void common_process_serving_system_3gpp (MMBroadbandModemQmi *self, QmiMessageNasGetServingSystemOutput *response_output, @@ -3060,8 +3058,6 @@ get_serving_system_3gpp_ready (QmiClientNas *client, qmi_message_nas_get_serving_system_output_unref (output); } -#else /* WITH_NEWEST_QMI_COMMANDS */ - static gboolean process_common_info (QmiNasServiceStatus service_status, gboolean domain_valid, @@ -3547,24 +3543,47 @@ get_system_info_ready (QmiClientNas *client, QmiMessageNasGetSystemInfoOutput *output; GError *error = NULL; + self = g_task_get_source_object (task); + output = qmi_client_nas_get_system_info_finish (client, res, &error); if (!output) { - g_prefix_error (&error, "QMI operation failed: "); - g_task_return_error (task, error); - g_object_unref (task); + mm_obj_dbg (self, "couldn't get system info: '%s', falling back to nas get serving system 3gpp", + error->message); + qmi_client_nas_get_serving_system (QMI_CLIENT_NAS (client), + NULL, + 10, + NULL, + (GAsyncReadyCallback)get_serving_system_3gpp_ready, + task); + g_clear_error (&error); return; } if (!qmi_message_nas_get_system_info_output_get_result (output, &error)) { + qmi_message_nas_get_system_info_output_unref (output); + if (g_error_matches (error, + QMI_PROTOCOL_ERROR, + QMI_PROTOCOL_ERROR_INVALID_QMI_COMMAND) || + g_error_matches (error, + QMI_PROTOCOL_ERROR, + QMI_PROTOCOL_ERROR_NOT_SUPPORTED)) { + mm_obj_dbg (self, "couldn't get system info: '%s', falling back to nas get serving system 3gpp", + error->message); + qmi_client_nas_get_serving_system (QMI_CLIENT_NAS (client), + NULL, + 10, + NULL, + (GAsyncReadyCallback)get_serving_system_3gpp_ready, + task); + g_clear_error (&error); + return; + } g_prefix_error (&error, "Couldn't get system info: "); g_task_return_error (task, error); - qmi_message_nas_get_system_info_output_unref (output); g_object_unref (task); return; } - self = g_task_get_source_object (task); - common_process_system_info_3gpp (self, output, NULL); g_task_return_boolean (task, TRUE); @@ -3572,8 +3591,6 @@ get_system_info_ready (QmiClientNas *client, qmi_message_nas_get_system_info_output_unref (output); } -#endif /* WITH_NEWEST_QMI_COMMANDS */ - static void modem_3gpp_run_registration_checks (MMIfaceModem3gpp *self, gboolean is_cs_supported, @@ -3593,21 +3610,12 @@ modem_3gpp_run_registration_checks (MMIfaceModem3gpp *self, task = g_task_new (self, NULL, callback, user_data); -#if defined WITH_NEWEST_QMI_COMMANDS qmi_client_nas_get_system_info (QMI_CLIENT_NAS (client), NULL, 10, NULL, (GAsyncReadyCallback)get_system_info_ready, task); -#else - qmi_client_nas_get_serving_system (QMI_CLIENT_NAS (client), - NULL, - 10, - NULL, - (GAsyncReadyCallback)get_serving_system_3gpp_ready, - task); -#endif /* WITH_NEWEST_QMI_COMMANDS */ } /*****************************************************************************/ |