mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-12 14:51:52 +00:00
Add support for a new device field "Flashes Left".
For devices that can report the number of flash cycles supported this field can be used to prevent allowing the device to be flashed again.
This commit is contained in:
parent
21542abb0a
commit
f81f42a84c
@ -34,6 +34,7 @@
|
||||
#define FWUPD_RESULT_KEY_DEVICE_PROVIDER "Provider" /* s */
|
||||
#define FWUPD_RESULT_KEY_DEVICE_VERSION "Version" /* s */
|
||||
#define FWUPD_RESULT_KEY_DEVICE_VERSION_LOWEST "VersionLowest" /* s */
|
||||
#define FWUPD_RESULT_KEY_DEVICE_FLASHES_LEFT "FlashesLeft" /* s */
|
||||
#define FWUPD_RESULT_KEY_DEVICE_VENDOR "DeviceVendor" /* s */
|
||||
#define FWUPD_RESULT_KEY_GUID "Guid" /* s */
|
||||
#define FWUPD_RESULT_KEY_UPDATE_DESCRIPTION "UpdateDescription" /* s */
|
||||
|
@ -49,6 +49,7 @@ typedef struct {
|
||||
gchar *device_vendor;
|
||||
gchar *device_version;
|
||||
gchar *device_version_lowest;
|
||||
gchar *device_flashes_left;
|
||||
guint64 device_created;
|
||||
guint64 device_flags;
|
||||
guint64 device_modified;
|
||||
@ -355,6 +356,42 @@ fwupd_result_set_device_version_lowest (FwupdResult *result, const gchar *device
|
||||
priv->device_version_lowest = g_strdup (device_version_lowest);
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_result_device_get_flashes_left:
|
||||
* @result: A #FwupdResult
|
||||
*
|
||||
* Gets the number of flash cycles left on the device
|
||||
*
|
||||
* Returns: the flash cycles left, or %NULL if unset
|
||||
*
|
||||
* Since: 0.7.1
|
||||
**/
|
||||
const gchar *
|
||||
fwupd_result_get_device_flashes_left (FwupdResult *result)
|
||||
{
|
||||
FwupdResultPrivate *priv = GET_PRIVATE (result);
|
||||
g_return_val_if_fail (FWUPD_IS_RESULT (result), NULL);
|
||||
return priv->device_flashes_left;
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_result_device_set_flashes_left:
|
||||
* @result: A #FwupdResult
|
||||
* @flashes_left: the description
|
||||
*
|
||||
* Sets the number of flash cycles left on the device
|
||||
*
|
||||
* Since: 0.7.1
|
||||
**/
|
||||
void
|
||||
fwupd_result_set_device_flashes_left (FwupdResult *result, const gchar *flashes_left)
|
||||
{
|
||||
FwupdResultPrivate *priv = GET_PRIVATE (result);
|
||||
g_return_if_fail (FWUPD_IS_RESULT (result));
|
||||
g_free (priv->device_flashes_left);
|
||||
priv->device_flashes_left = g_strdup (flashes_left);
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_result_set_update_version:
|
||||
* @result: A #FwupdResult
|
||||
@ -1317,6 +1354,11 @@ fwupd_result_to_data (FwupdResult *result, const gchar *type_string)
|
||||
FWUPD_RESULT_KEY_DEVICE_VERSION_LOWEST,
|
||||
g_variant_new_string (priv->device_version_lowest));
|
||||
}
|
||||
if (priv->device_flashes_left != NULL) {
|
||||
g_variant_builder_add (&builder, "{sv}",
|
||||
FWUPD_RESULT_KEY_DEVICE_FLASHES_LEFT,
|
||||
g_variant_new_string (priv->device_flashes_left));
|
||||
}
|
||||
|
||||
/* supported types */
|
||||
if (g_strcmp0 (type_string, "{sa{sv}}") == 0)
|
||||
@ -1451,6 +1493,10 @@ fwupd_result_from_kv (FwupdResult *result, const gchar *key, GVariant *value)
|
||||
fwupd_result_set_device_version_lowest (result, g_variant_get_string (value, NULL));
|
||||
return;
|
||||
}
|
||||
if (g_strcmp0 (key, FWUPD_RESULT_KEY_DEVICE_FLASHES_LEFT) == 0) {
|
||||
fwupd_result_set_device_flashes_left (result, g_variant_get_string (value, NULL));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1616,6 +1662,7 @@ fwupd_result_to_string (FwupdResult *result)
|
||||
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_DEVICE_VENDOR, priv->device_vendor);
|
||||
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_DEVICE_VERSION, priv->device_version);
|
||||
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_DEVICE_VERSION_LOWEST, priv->device_version_lowest);
|
||||
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_DEVICE_FLASHES_LEFT, priv->device_flashes_left);
|
||||
fwupd_pad_kv_unx (str, FWUPD_RESULT_KEY_DEVICE_CREATED, priv->device_created);
|
||||
fwupd_pad_kv_unx (str, FWUPD_RESULT_KEY_DEVICE_MODIFIED, priv->device_modified);
|
||||
|
||||
@ -1735,6 +1782,7 @@ fwupd_result_finalize (GObject *object)
|
||||
g_free (priv->device_provider);
|
||||
g_free (priv->device_version);
|
||||
g_free (priv->device_version_lowest);
|
||||
g_free (priv->device_flashes_left);
|
||||
g_free (priv->guid);
|
||||
g_free (priv->update_description);
|
||||
g_free (priv->update_error);
|
||||
|
@ -66,6 +66,9 @@ void fwupd_result_set_device_version (FwupdResult *result,
|
||||
const gchar *fwupd_result_get_device_version_lowest (FwupdResult *result);
|
||||
void fwupd_result_set_device_version_lowest (FwupdResult *result,
|
||||
const gchar *device_version_lowest);
|
||||
const gchar *fwupd_result_get_device_flashes_left (FwupdResult *result);
|
||||
void fwupd_result_set_device_flashes_left (FwupdResult *result,
|
||||
const gchar *flashes_left);
|
||||
guint64 fwupd_result_get_device_flags (FwupdResult *result);
|
||||
void fwupd_result_set_device_flags (FwupdResult *result,
|
||||
guint64 device_flags);
|
||||
|
@ -68,6 +68,7 @@ FuDevice *fu_device_new (void);
|
||||
#define fu_device_set_vendor(d,v) fwupd_result_set_device_vendor(FWUPD_RESULT(d),v)
|
||||
#define fu_device_set_version(d,v) fwupd_result_set_device_version(FWUPD_RESULT(d),v)
|
||||
#define fu_device_set_version_lowest(d,v) fwupd_result_set_device_version_lowest(FWUPD_RESULT(d),v)
|
||||
#define fu_device_set_flashes_left(d,v) fwupd_result_set_device_flashes_left(FWUPD_RESULT(d),v)
|
||||
|
||||
/* compat getters */
|
||||
#define fu_device_get_checksum(d) fwupd_result_get_device_checksum(FWUPD_RESULT(d))
|
||||
@ -83,6 +84,7 @@ FuDevice *fu_device_new (void);
|
||||
#define fu_device_get_update_version(d) fwupd_result_get_update_version(FWUPD_RESULT(d))
|
||||
#define fu_device_get_version(d) fwupd_result_get_device_version(FWUPD_RESULT(d))
|
||||
#define fu_device_get_version_lowest(d) fwupd_result_get_device_version_lowest(FWUPD_RESULT(d))
|
||||
#define fu_device_get_flashes_left(d) fwupd_result_get_device_flashes_left(FWUPD_RESULT(d))
|
||||
|
||||
/* accessors */
|
||||
const gchar *fu_device_get_equivalent_id (FuDevice *device);
|
||||
|
Loading…
Reference in New Issue
Block a user