diff options
Diffstat (limited to 'src/mm-iface-modem-firmware.c')
-rw-r--r-- | src/mm-iface-modem-firmware.c | 44 |
1 files changed, 44 insertions, 0 deletions
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; @@ -267,6 +268,37 @@ initialization_context_free (InitializationContext *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, GTask *task) @@ -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! */ |