diff --git a/libfwupd/fwupd-enums-private.h b/libfwupd/fwupd-enums-private.h index 4b3df1014..de34262cd 100644 --- a/libfwupd/fwupd-enums-private.h +++ b/libfwupd/fwupd-enums-private.h @@ -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 */ diff --git a/libfwupd/fwupd-result.c b/libfwupd/fwupd-result.c index e75432b6b..489361afd 100644 --- a/libfwupd/fwupd-result.c +++ b/libfwupd/fwupd-result.c @@ -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); diff --git a/libfwupd/fwupd-result.h b/libfwupd/fwupd-result.h index 5cb284bab..d0a5f0c35 100644 --- a/libfwupd/fwupd-result.h +++ b/libfwupd/fwupd-result.h @@ -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); diff --git a/src/fu-device.h b/src/fu-device.h index 147239c7a..8d5009b5b 100644 --- a/src/fu-device.h +++ b/src/fu-device.h @@ -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);