diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2018-12-09 13:54:31 +0100 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2019-01-03 18:53:52 +0000 |
commit | 8e342cf1204379a11bfe55941d4e722575cb364f (patch) | |
tree | 2c5ee65fd67cba8d833d7fddf60f6c63a109e9a0 /src | |
parent | edf8d349390ec5be8d35f6e7105cde483849aae0 (diff) | |
download | ModemManager-8e342cf1204379a11bfe55941d4e722575cb364f.tar.gz |
api,firmware: new UpdateSettings property
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-iface-modem-firmware.c | 44 | ||||
-rw-r--r-- | src/mm-iface-modem-firmware.h | 8 |
2 files changed, 52 insertions, 0 deletions
diff --git a/src/mm-iface-modem-firmware.c b/src/mm-iface-modem-firmware.c index 45f8bc2a0..bce5e2944 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! */ diff --git a/src/mm-iface-modem-firmware.h b/src/mm-iface-modem-firmware.h index b26cfa737..2fbfb07c1 100644 --- a/src/mm-iface-modem-firmware.h +++ b/src/mm-iface-modem-firmware.h @@ -42,6 +42,14 @@ struct _MMIfaceModemFirmware { GAsyncResult *res, GError **error); + /* Get update settings (async) */ + void (* load_update_settings) (MMIfaceModemFirmware *self, + GAsyncReadyCallback callback, + gpointer user_data); + MMFirmwareUpdateSettings * (* load_update_settings_finish) (MMIfaceModemFirmware *self, + GAsyncResult *res, + GError **error); + /* Get Firmware list (async) */ void (* load_list) (MMIfaceModemFirmware *self, GAsyncReadyCallback callback, |