summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2018-07-08 14:27:35 +0200
committerDan Williams <dcbw@redhat.com>2018-09-12 17:25:19 +0000
commit6026c99f2ec99e2721356ee645472d8403676bf6 (patch)
tree8c9c7b5ee6d88ee82b27622704a402c53a5f3009
parent9dc26cc44d79f18789a510e050fc899b680587ec (diff)
downloadModemManager-6026c99f2ec99e2721356ee645472d8403676bf6.tar.gz
shared-qmi: reuse device factory reset logic in MBIM whenever possible
-rw-r--r--src/mm-broadband-modem-mbim.c2
-rw-r--r--src/mm-broadband-modem-qmi.c78
-rw-r--r--src/mm-shared-qmi.c73
-rw-r--r--src/mm-shared-qmi.h19
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 */