From f35d64a8992a06e75585c774090e407ae21f24fe Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Tue, 18 Dec 2018 15:50:53 +0100 Subject: api,firmware: expose firmware version --- src/mm-iface-modem-firmware.c | 53 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 11 deletions(-) (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 11eff7c3..5cbe8741 100644 --- a/src/mm-iface-modem-firmware.c +++ b/src/mm-iface-modem-firmware.c @@ -282,6 +282,24 @@ mm_iface_modem_firmware_initialize_finish (MMIfaceModemFirmware *self, return g_task_propagate_boolean (G_TASK (res), error); } +static gboolean +add_generic_version (MMBaseModem *self, + MMFirmwareUpdateSettings *update_settings, + GError **error) +{ + const gchar *revision; + + revision = mm_iface_modem_get_revision (MM_IFACE_MODEM (self)); + if (!revision) { + g_set_error (error, MM_CORE_ERROR, MM_CORE_ERROR_FAILED, + "Unknown revision"); + return FALSE; + } + + mm_firmware_update_settings_set_version (update_settings, revision); + return TRUE; +} + static gboolean add_generic_device_ids (MMBaseModem *self, MMFirmwareUpdateSettings *update_settings, @@ -343,20 +361,33 @@ load_update_settings_ready (MMIfaceModemFirmware *self, if (!update_settings) { mm_dbg ("Couldn't load update settings: '%s'", error->message); g_error_free (error); - } else { - /* If the plugin didn't specify custom device ids, add the default ones ourselves */ - if (!mm_firmware_update_settings_get_device_ids (update_settings) && - !add_generic_device_ids (MM_BASE_MODEM (self), update_settings, &error)) { - mm_warn ("Couldn't build device ids: '%s'", error->message); - g_error_free (error); - } else { - variant = mm_firmware_update_settings_get_variant (update_settings); - g_object_unref (update_settings); - } + goto out; } - mm_gdbus_modem_firmware_set_update_settings (ctx->skeleton, variant); + /* If the plugin didn't specify custom device ids, add the default ones ourselves */ + if (!mm_firmware_update_settings_get_device_ids (update_settings) && + !add_generic_device_ids (MM_BASE_MODEM (self), update_settings, &error)) { + mm_warn ("Couldn't build device ids: '%s'", error->message); + g_error_free (error); + g_clear_object (&update_settings); + goto out; + } + /* If the plugin didn't specify custom version, add the default one ourselves */ + if (!mm_firmware_update_settings_get_version (update_settings) && + !add_generic_version (MM_BASE_MODEM (self), update_settings, &error)) { + mm_warn ("Couldn't set version: '%s'", error->message); + g_error_free (error); + g_clear_object (&update_settings); + goto out; + } + +out: + if (update_settings) { + 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); -- cgit v1.2.3-70-g09d2