diff options
Diffstat (limited to 'src/mm-iface-modem-firmware.c')
-rw-r--r-- | src/mm-iface-modem-firmware.c | 126 |
1 files changed, 18 insertions, 108 deletions
diff --git a/src/mm-iface-modem-firmware.c b/src/mm-iface-modem-firmware.c index bce5e294..06f07754 100644 --- a/src/mm-iface-modem-firmware.c +++ b/src/mm-iface-modem-firmware.c @@ -21,12 +21,6 @@ #include "mm-iface-modem-firmware.h" #include "mm-log.h" -#define SUPPORT_CHECKED_TAG "firmware-support-checked-tag" -#define SUPPORTED_TAG "firmware-supported-tag" - -static GQuark support_checked_quark; -static GQuark supported_quark; - /*****************************************************************************/ void @@ -249,15 +243,13 @@ static void interface_initialization_step (GTask *task); typedef enum { INITIALIZATION_STEP_FIRST, - INITIALIZATION_STEP_CHECK_SUPPORT, - INITIALIZATION_STEP_FAIL_IF_UNSUPPORTED, INITIALIZATION_STEP_UPDATE_SETTINGS, INITIALIZATION_STEP_LAST } InitializationStep; struct _InitializationContext { MmGdbusModemFirmware *skeleton; - InitializationStep step; + InitializationStep step; }; static void @@ -267,6 +259,14 @@ initialization_context_free (InitializationContext *ctx) g_free (ctx); } +gboolean +mm_iface_modem_firmware_initialize_finish (MMIfaceModemFirmware *self, + GAsyncResult *res, + GError **error) +{ + return g_task_propagate_boolean (G_TASK (res), error); +} + static void load_update_settings_ready (MMIfaceModemFirmware *self, GAsyncResult *res, @@ -299,35 +299,6 @@ load_update_settings_ready (MMIfaceModemFirmware *self, } static void -check_support_ready (MMIfaceModemFirmware *self, - GAsyncResult *res, - GTask *task) -{ - InitializationContext *ctx; - GError *error = NULL; - - if (!MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE (self)->check_support_finish (self, - res, - &error)) { - if (error) { - /* This error shouldn't be treated as critical */ - mm_dbg ("Firmware support check failed: '%s'", error->message); - g_error_free (error); - } - } else { - /* Firmware is supported! */ - g_object_set_qdata (G_OBJECT (self), - supported_quark, - GUINT_TO_POINTER (TRUE)); - } - - /* Go on to next step */ - ctx = g_task_get_task_data (task); - ctx->step++; - interface_initialization_step (task); -} - -static void interface_initialization_step (GTask *task) { MMIfaceModemFirmware *self; @@ -344,54 +315,6 @@ interface_initialization_step (GTask *task) switch (ctx->step) { case INITIALIZATION_STEP_FIRST: - /* Setup quarks if we didn't do it before */ - if (G_UNLIKELY (!support_checked_quark)) - support_checked_quark = (g_quark_from_static_string ( - SUPPORT_CHECKED_TAG)); - if (G_UNLIKELY (!supported_quark)) - supported_quark = (g_quark_from_static_string ( - SUPPORTED_TAG)); - - /* Fall down to next step */ - ctx->step++; - - case INITIALIZATION_STEP_CHECK_SUPPORT: - if (!GPOINTER_TO_UINT (g_object_get_qdata (G_OBJECT (self), - support_checked_quark))) { - /* Set the checked flag so that we don't run it again */ - g_object_set_qdata (G_OBJECT (self), - support_checked_quark, - GUINT_TO_POINTER (TRUE)); - /* Initially, assume we don't support it */ - g_object_set_qdata (G_OBJECT (self), - supported_quark, - GUINT_TO_POINTER (FALSE)); - - if (MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE (self)->check_support && - MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE (self)->check_support_finish) { - MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE (self)->check_support ( - self, - (GAsyncReadyCallback)check_support_ready, - task); - return; - } - - /* If there is no implementation to check support, assume we DON'T - * support it. */ - } - /* Fall down to next step */ - ctx->step++; - - case INITIALIZATION_STEP_FAIL_IF_UNSUPPORTED: - if (!GPOINTER_TO_UINT (g_object_get_qdata (G_OBJECT (self), - supported_quark))) { - g_task_return_new_error (task, - MM_CORE_ERROR, - MM_CORE_ERROR_UNSUPPORTED, - "Firmware interface not available"); - g_object_unref (task); - return; - } /* Fall down to next step */ ctx->step++; @@ -411,14 +334,10 @@ interface_initialization_step (GTask *task) /* We are done without errors! */ /* Handle method invocations */ - g_signal_connect (ctx->skeleton, - "handle-list", - G_CALLBACK (handle_list), - self); - g_signal_connect (ctx->skeleton, - "handle-select", - G_CALLBACK (handle_select), - self); + g_object_connect (ctx->skeleton, + "signal::handle-list", G_CALLBACK (handle_list), self, + "signal::handle-select", G_CALLBACK (handle_select), self, + NULL); /* Finally, export the new interface */ mm_gdbus_object_skeleton_set_modem_firmware (MM_GDBUS_OBJECT_SKELETON (self), @@ -432,23 +351,15 @@ interface_initialization_step (GTask *task) g_assert_not_reached (); } -gboolean -mm_iface_modem_firmware_initialize_finish (MMIfaceModemFirmware *self, - GAsyncResult *res, - GError **error) -{ - return g_task_propagate_boolean (G_TASK (res), error); -} - void mm_iface_modem_firmware_initialize (MMIfaceModemFirmware *self, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) { InitializationContext *ctx; - MmGdbusModemFirmware *skeleton = NULL; - GTask *task; + MmGdbusModemFirmware *skeleton = NULL; + GTask *task; /* Did we already create it? */ g_object_get (self, @@ -462,7 +373,6 @@ mm_iface_modem_firmware_initialize (MMIfaceModemFirmware *self, } /* Perform async initialization here */ - ctx = g_new0 (InitializationContext, 1); ctx->step = INITIALIZATION_STEP_FIRST; ctx->skeleton = skeleton; |