api,firmware: expose firmware version

This commit is contained in:
Aleksander Morgado
2019-01-03 18:53:52 +00:00
committed by Dan Williams
parent 67b3b830c8
commit f35d64a899
10 changed files with 133 additions and 17 deletions
+42 -11
View File
@@ -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);
+18
View File
@@ -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
+3 -2
View File
@@ -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,