diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-05-19 15:12:17 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-05-23 00:23:17 +0200 |
commit | b9596c81879b8eeae3f2e1bab5c31007e5824c1f (patch) | |
tree | f58e54eb757fdb7e5f8effb477dbe93a3b1652d3 /src/mm-shared-qmi.c | |
parent | 6ca75c76db277b89325e1888ac445cbfebe33039 (diff) |
broadband-modem-qmi: setup FCC unlock step
Use the new generic FCC unlock step instead of implementing it within
the operating mode setup logic.
The operation is implemented in the MMSharedQmi interface as it will
also be used by the MBIM modem object.
Diffstat (limited to 'src/mm-shared-qmi.c')
-rw-r--r-- | src/mm-shared-qmi.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/mm-shared-qmi.c b/src/mm-shared-qmi.c index 60bbfa6a..3059ec2d 100644 --- a/src/mm-shared-qmi.c +++ b/src/mm-shared-qmi.c @@ -4016,6 +4016,56 @@ mm_shared_qmi_setup_sim_hot_swap (MMIfaceModem *self, } /*****************************************************************************/ +/* FCC unlock (Modem interface) */ + +gboolean +mm_shared_qmi_fcc_unlock_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error) +{ + return g_task_propagate_boolean (G_TASK (res), error); +} + +static void +dms_set_fcc_authentication_ready (QmiClientDms *client, + GAsyncResult *res, + GTask *task) +{ + GError *error = NULL; + g_autoptr(QmiMessageDmsSetFccAuthenticationOutput) output = NULL; + + output = qmi_client_dms_set_fcc_authentication_finish (client, res, &error); + if (!output || !qmi_message_dms_set_fcc_authentication_output_get_result (output, &error)) + g_task_return_error (task, error); + else + g_task_return_boolean (task, TRUE); + g_object_unref (task); +} + +void +mm_shared_qmi_fcc_unlock (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GTask *task; + QmiClient *client = NULL; + + if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self), + QMI_SERVICE_DMS, &client, + callback, user_data)) + return; + + task = g_task_new (self, NULL, callback, user_data); + + qmi_client_dms_set_fcc_authentication (QMI_CLIENT_DMS (client), + NULL, + 5, + NULL, + (GAsyncReadyCallback)dms_set_fcc_authentication_ready, + task); +} + +/*****************************************************************************/ /* Location: Set SUPL server */ typedef struct { |