aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2018-12-18 15:50:53 +0100
committerDan Williams <dcbw@redhat.com>2019-01-03 18:53:52 +0000
commitf35d64a8992a06e75585c774090e407ae21f24fe (patch)
treecfec844fb190d153bb43f45f19d2d31b5ec9881e /src
parent67b3b830c87e79827a9934362e673e1a23116026 (diff)
api,firmware: expose firmware version
Diffstat (limited to 'src')
-rw-r--r--src/mm-iface-modem-firmware.c53
-rw-r--r--src/mm-iface-modem.c18
-rw-r--r--src/mm-iface-modem.h5
3 files changed, 63 insertions, 13 deletions
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
@@ -283,6 +283,24 @@ mm_iface_modem_firmware_initialize_finish (MMIfaceModemFirmware *self,
}
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,
GError **error)
@@ -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);
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c
index a18accdd..1ffcb967 100644
--- a/src/mm-iface-modem.c
+++ b/src/mm-iface-modem.c
@@ -5329,6 +5329,24 @@ mm_iface_modem_get_model (MMIfaceModem *self)
return model;
}
+const gchar *
+mm_iface_modem_get_revision (MMIfaceModem *self)
+{
+ const gchar *revision = NULL;
+ MmGdbusModem *skeleton;
+
+ g_object_get (self,
+ MM_IFACE_MODEM_DBUS_SKELETON, &skeleton,
+ NULL);
+
+ if (skeleton) {
+ revision = mm_gdbus_modem_get_revision (skeleton);
+ g_object_unref (skeleton);
+ }
+
+ return revision;
+}
+
/*****************************************************************************/
static void
diff --git a/src/mm-iface-modem.h b/src/mm-iface-modem.h
index cc3e087e..5b1c891d 100644
--- a/src/mm-iface-modem.h
+++ b/src/mm-iface-modem.h
@@ -380,8 +380,9 @@ gboolean mm_iface_modem_is_3g_only (MMIfaceModem *self);
gboolean mm_iface_modem_is_4g (MMIfaceModem *self);
gboolean mm_iface_modem_is_4g_only (MMIfaceModem *self);
-/* Helper to query model */
-const gchar *mm_iface_modem_get_model (MMIfaceModem *self);
+/* Helpers to query properties */
+const gchar *mm_iface_modem_get_model (MMIfaceModem *self);
+const gchar *mm_iface_modem_get_revision (MMIfaceModem *self);
/* Initialize Modem interface (async) */
void mm_iface_modem_initialize (MMIfaceModem *self,