From 8e342cf1204379a11bfe55941d4e722575cb364f Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Sun, 9 Dec 2018 13:54:31 +0100 Subject: api,firmware: new UpdateSettings property --- src/mm-iface-modem-firmware.c | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'src/mm-iface-modem-firmware.c') diff --git a/src/mm-iface-modem-firmware.c b/src/mm-iface-modem-firmware.c index 45f8bc2a..bce5e294 100644 --- a/src/mm-iface-modem-firmware.c +++ b/src/mm-iface-modem-firmware.c @@ -251,6 +251,7 @@ typedef enum { INITIALIZATION_STEP_FIRST, INITIALIZATION_STEP_CHECK_SUPPORT, INITIALIZATION_STEP_FAIL_IF_UNSUPPORTED, + INITIALIZATION_STEP_UPDATE_SETTINGS, INITIALIZATION_STEP_LAST } InitializationStep; @@ -266,6 +267,37 @@ initialization_context_free (InitializationContext *ctx) g_free (ctx); } +static void +load_update_settings_ready (MMIfaceModemFirmware *self, + GAsyncResult *res, + GTask *task) +{ + InitializationContext *ctx; + MMFirmwareUpdateSettings *update_settings; + GError *error = NULL; + GVariant *variant = NULL; + + ctx = g_task_get_task_data (task); + + update_settings = MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE (self)->load_update_settings_finish (self, res, &error); + if (!update_settings) { + mm_dbg ("Couldn't load update settings: '%s'", error->message); + g_error_free (error); + } else { + variant = mm_firmware_update_settings_get_variant (update_settings); + g_object_unref (update_settings); + } + + mm_gdbus_modem_firmware_set_update_settings (ctx->skeleton, variant); + + if (variant) + g_variant_unref (variant); + + /* Go on to next step */ + ctx->step++; + interface_initialization_step (task); +} + static void check_support_ready (MMIfaceModemFirmware *self, GAsyncResult *res, @@ -363,6 +395,18 @@ interface_initialization_step (GTask *task) /* Fall down to next step */ ctx->step++; + case INITIALIZATION_STEP_UPDATE_SETTINGS: + if (MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE (self)->load_update_settings && + MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE (self)->load_update_settings_finish) { + MM_IFACE_MODEM_FIRMWARE_GET_INTERFACE (self)->load_update_settings ( + self, + (GAsyncReadyCallback)load_update_settings_ready, + task); + return; + } + /* Fall down to next step */ + ctx->step++; + case INITIALIZATION_STEP_LAST: /* We are done without errors! */ -- cgit v1.2.3-70-g09d2