summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2018-12-09 13:54:31 +0100
committerDan Williams <dcbw@redhat.com>2019-01-03 18:53:52 +0000
commit8e342cf1204379a11bfe55941d4e722575cb364f (patch)
tree2c5ee65fd67cba8d833d7fddf60f6c63a109e9a0 /src
parentedf8d349390ec5be8d35f6e7105cde483849aae0 (diff)
downloadModemManager-8e342cf1204379a11bfe55941d4e722575cb364f.tar.gz
api,firmware: new UpdateSettings property
Diffstat (limited to 'src')
-rw-r--r--src/mm-iface-modem-firmware.c44
-rw-r--r--src/mm-iface-modem-firmware.h8
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,