diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2018-07-08 14:27:35 +0200 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2018-09-12 17:25:19 +0000 |
commit | 6026c99f2ec99e2721356ee645472d8403676bf6 (patch) | |
tree | 8c9c7b5ee6d88ee82b27622704a402c53a5f3009 | |
parent | 9dc26cc44d79f18789a510e050fc899b680587ec (diff) | |
download | ModemManager-6026c99f2ec99e2721356ee645472d8403676bf6.tar.gz |
shared-qmi: reuse device factory reset logic in MBIM whenever possible
-rw-r--r-- | src/mm-broadband-modem-mbim.c | 2 | ||||
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 78 | ||||
-rw-r--r-- | src/mm-shared-qmi.c | 73 | ||||
-rw-r--r-- | src/mm-shared-qmi.h | 19 |
4 files changed, 90 insertions, 82 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c index 4463db827..48406208f 100644 --- a/src/mm-broadband-modem-mbim.c +++ b/src/mm-broadband-modem-mbim.c @@ -4507,6 +4507,8 @@ iface_modem_init (MMIfaceModem *iface) #if defined WITH_QMI && QMI_MBIM_QMUX_SUPPORTED iface->reset = mm_shared_qmi_reset; iface->reset_finish = mm_shared_qmi_reset_finish; + iface->factory_reset = mm_shared_qmi_factory_reset; + iface->factory_reset_finish = mm_shared_qmi_factory_reset_finish; #endif } diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index cb2cc8aec..c729d2286 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -3088,80 +3088,6 @@ create_sim (MMIfaceModem *self, } /*****************************************************************************/ -/* Factory reset (Modem interface) */ - -static gboolean -modem_factory_reset_finish (MMIfaceModem *self, - GAsyncResult *res, - GError **error) -{ - return g_task_propagate_boolean (G_TASK (res), error); -} - -static void -dms_restore_factory_defaults_ready (QmiClientDms *client, - GAsyncResult *res, - GTask *task) -{ - QmiMessageDmsRestoreFactoryDefaultsOutput *output = NULL; - GError *error = NULL; - - output = qmi_client_dms_restore_factory_defaults_finish (client, res, &error); - if (!output) { - g_prefix_error (&error, "QMI operation failed: "); - g_task_return_error (task, error); - } else if (!qmi_message_dms_restore_factory_defaults_output_get_result (output, &error)) { - g_prefix_error (&error, "Couldn't restore factory defaults: "); - g_task_return_error (task, error); - } else - g_task_return_boolean (task, TRUE); - - if (output) - qmi_message_dms_restore_factory_defaults_output_unref (output); - - g_object_unref (task); -} - -static void -modem_factory_reset (MMIfaceModem *self, - const gchar *code, - GAsyncReadyCallback callback, - gpointer user_data) -{ - QmiMessageDmsRestoreFactoryDefaultsInput *input; - GTask *task; - QmiClient *client = NULL; - GError *error = 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); - - input = qmi_message_dms_restore_factory_defaults_input_new (); - if (!qmi_message_dms_restore_factory_defaults_input_set_service_programming_code ( - input, - code, - &error)) { - qmi_message_dms_restore_factory_defaults_input_unref (input); - g_task_return_error (task, error); - g_object_unref (task); - return; - } - - mm_dbg ("performing a factory reset..."); - qmi_client_dms_restore_factory_defaults (QMI_CLIENT_DMS (client), - input, - 10, - NULL, - (GAsyncReadyCallback)dms_restore_factory_defaults_ready, - task); - qmi_message_dms_restore_factory_defaults_input_unref (input); -} - -/*****************************************************************************/ /* Load current modes (Modem interface) */ typedef struct { @@ -10321,8 +10247,8 @@ iface_modem_init (MMIfaceModem *iface) /* Other actions */ iface->reset = mm_shared_qmi_reset; iface->reset_finish = mm_shared_qmi_reset_finish; - iface->factory_reset = modem_factory_reset; - iface->factory_reset_finish = modem_factory_reset_finish; + iface->factory_reset = mm_shared_qmi_factory_reset; + iface->factory_reset_finish = mm_shared_qmi_factory_reset_finish; } static void diff --git a/src/mm-shared-qmi.c b/src/mm-shared-qmi.c index 9a2cbd255..dba063cfc 100644 --- a/src/mm-shared-qmi.c +++ b/src/mm-shared-qmi.c @@ -190,6 +190,79 @@ mm_shared_qmi_reset (MMIfaceModem *self, } /*****************************************************************************/ +/* Factory reset (Modem interface) */ + +gboolean +mm_shared_qmi_factory_reset_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error) +{ + return g_task_propagate_boolean (G_TASK (res), error); +} + +static void +dms_restore_factory_defaults_ready (QmiClientDms *client, + GAsyncResult *res, + GTask *task) +{ + QmiMessageDmsRestoreFactoryDefaultsOutput *output = NULL; + GError *error = NULL; + + output = qmi_client_dms_restore_factory_defaults_finish (client, res, &error); + if (!output) { + g_prefix_error (&error, "QMI operation failed: "); + g_task_return_error (task, error); + } else if (!qmi_message_dms_restore_factory_defaults_output_get_result (output, &error)) { + g_prefix_error (&error, "Couldn't restore factory defaults: "); + g_task_return_error (task, error); + } else + g_task_return_boolean (task, TRUE); + + if (output) + qmi_message_dms_restore_factory_defaults_output_unref (output); + + g_object_unref (task); +} + +void +mm_shared_qmi_factory_reset (MMIfaceModem *self, + const gchar *code, + GAsyncReadyCallback callback, + gpointer user_data) +{ + QmiMessageDmsRestoreFactoryDefaultsInput *input; + GTask *task; + QmiClient *client = NULL; + GError *error = 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); + + input = qmi_message_dms_restore_factory_defaults_input_new (); + if (!qmi_message_dms_restore_factory_defaults_input_set_service_programming_code ( + input, + code, + &error)) { + qmi_message_dms_restore_factory_defaults_input_unref (input); + g_task_return_error (task, error); + g_object_unref (task); + return; + } + + mm_dbg ("performing a factory reset..."); + qmi_client_dms_restore_factory_defaults (QMI_CLIENT_DMS (client), + input, + 10, + NULL, + (GAsyncReadyCallback)dms_restore_factory_defaults_ready, + task); +} + +/*****************************************************************************/ /* Location: Set SUPL server */ typedef struct { diff --git a/src/mm-shared-qmi.h b/src/mm-shared-qmi.h index 2cf03aab1..af660caac 100644 --- a/src/mm-shared-qmi.h +++ b/src/mm-shared-qmi.h @@ -62,12 +62,19 @@ gboolean mm_shared_qmi_ensure_client (MMSharedQmi *self, /* Shared QMI device management support */ -void mm_shared_qmi_reset (MMIfaceModem *self, - GAsyncReadyCallback callback, - gpointer user_data); -gboolean mm_shared_qmi_reset_finish (MMIfaceModem *self, - GAsyncResult *res, - GError **error); +void mm_shared_qmi_reset (MMIfaceModem *self, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean mm_shared_qmi_reset_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error); +void mm_shared_qmi_factory_reset (MMIfaceModem *self, + const gchar *code, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean mm_shared_qmi_factory_reset_finish (MMIfaceModem *self, + GAsyncResult *res, + GError **error); /* Shared QMI location support */ |