aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mm-broadband-modem-qmi.c50
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 */
}
/*****************************************************************************/