mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-06 16:11:00 +00:00
Allow devices to have multiple assigned GUIDs
This commit is contained in:
parent
069392c82c
commit
99147f180b
@ -37,7 +37,7 @@ static void fwupd_result_finalize (GObject *object);
|
||||
* Private #FwupdResult data
|
||||
**/
|
||||
typedef struct {
|
||||
gchar *guid;
|
||||
GPtrArray *guids;
|
||||
|
||||
/* device-specific */
|
||||
gchar *device_checksum;
|
||||
@ -122,6 +122,90 @@ fwupd_result_set_device_id (FwupdResult *result, const gchar *device_id)
|
||||
priv->device_id = g_strdup (device_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_result_get_guids:
|
||||
* @result: A #FwupdResult
|
||||
*
|
||||
* Gets the GUIDs.
|
||||
*
|
||||
* Returns: (element-type utf8) (transfer none): the GUIDs
|
||||
*
|
||||
* Since: 0.7.2
|
||||
**/
|
||||
GPtrArray *
|
||||
fwupd_result_get_guids (FwupdResult *result)
|
||||
{
|
||||
FwupdResultPrivate *priv = GET_PRIVATE (result);
|
||||
g_return_val_if_fail (FWUPD_IS_RESULT (result), NULL);
|
||||
return priv->guids;
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_result_has_guid:
|
||||
* @result: A #FwupdResult
|
||||
* @guid: the GUID, e.g. "2082b5e0-7a64-478a-b1b2-e3404fab6dad"
|
||||
*
|
||||
* Finds out if the device has this specific GUID.
|
||||
*
|
||||
* Returns: %TRUE if the GUID is found
|
||||
*
|
||||
* Since: 0.7.2
|
||||
**/
|
||||
gboolean
|
||||
fwupd_result_has_guid (FwupdResult *result, const gchar *guid)
|
||||
{
|
||||
FwupdResultPrivate *priv = GET_PRIVATE (result);
|
||||
guint i;
|
||||
|
||||
g_return_val_if_fail (FWUPD_IS_RESULT (result), FALSE);
|
||||
|
||||
for (i = 0; i < priv->guids->len; i++) {
|
||||
const gchar *guid_tmp = g_ptr_array_index (priv->guids, i);
|
||||
if (g_strcmp0 (guid, guid_tmp) == 0)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_result_add_guid:
|
||||
* @result: A #FwupdResult
|
||||
* @guid: the GUID, e.g. "2082b5e0-7a64-478a-b1b2-e3404fab6dad"
|
||||
*
|
||||
* Adds the GUID if it does not already exist.
|
||||
*
|
||||
* Since: 0.7.2
|
||||
**/
|
||||
void
|
||||
fwupd_result_add_guid (FwupdResult *result, const gchar *guid)
|
||||
{
|
||||
FwupdResultPrivate *priv = GET_PRIVATE (result);
|
||||
g_return_if_fail (FWUPD_IS_RESULT (result));
|
||||
if (fwupd_result_has_guid (result, guid))
|
||||
return;
|
||||
g_ptr_array_add (priv->guids, g_strdup (guid));
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_result_get_guid_default:
|
||||
* @result: A #FwupdResult
|
||||
*
|
||||
* Gets the default GUID.
|
||||
*
|
||||
* Returns: the GUID, or %NULL if unset
|
||||
*
|
||||
* Since: 0.7.2
|
||||
**/
|
||||
const gchar *
|
||||
fwupd_result_get_guid_default (FwupdResult *result)
|
||||
{
|
||||
FwupdResultPrivate *priv = GET_PRIVATE (result);
|
||||
g_return_val_if_fail (FWUPD_IS_RESULT (result), NULL);
|
||||
if (priv->guids->len == 0)
|
||||
return NULL;
|
||||
return g_ptr_array_index (priv->guids, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_result_get_guid:
|
||||
* @result: A #FwupdResult
|
||||
@ -130,14 +214,14 @@ fwupd_result_set_device_id (FwupdResult *result, const gchar *device_id)
|
||||
*
|
||||
* Returns: the GUID, or %NULL if unset
|
||||
*
|
||||
* This function has been deprecated since 0.7.2.
|
||||
*
|
||||
* Since: 0.7.0
|
||||
**/
|
||||
const gchar *
|
||||
fwupd_result_get_guid (FwupdResult *result)
|
||||
{
|
||||
FwupdResultPrivate *priv = GET_PRIVATE (result);
|
||||
g_return_val_if_fail (FWUPD_IS_RESULT (result), NULL);
|
||||
return priv->guid;
|
||||
return fwupd_result_get_guid_default (result);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -147,15 +231,14 @@ fwupd_result_get_guid (FwupdResult *result)
|
||||
*
|
||||
* Sets the GUID.
|
||||
*
|
||||
* This function has been deprecated since 0.7.2.
|
||||
*
|
||||
* Since: 0.7.0
|
||||
**/
|
||||
void
|
||||
fwupd_result_set_guid (FwupdResult *result, const gchar *guid)
|
||||
{
|
||||
FwupdResultPrivate *priv = GET_PRIVATE (result);
|
||||
g_return_if_fail (FWUPD_IS_RESULT (result));
|
||||
g_free (priv->guid);
|
||||
priv->guid = g_strdup (guid);
|
||||
fwupd_result_add_guid (result, guid);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1216,10 +1299,18 @@ fwupd_result_to_data (FwupdResult *result, const gchar *type_string)
|
||||
|
||||
/* create an array with all the metadata in */
|
||||
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
|
||||
if (priv->guid != NULL) {
|
||||
if (priv->guids->len > 0) {
|
||||
guint i;
|
||||
g_autoptr(GString) str = g_string_new ("");
|
||||
for (i = 0; i < priv->guids->len; i++) {
|
||||
const gchar *guid = g_ptr_array_index (priv->guids, i);
|
||||
g_string_append_printf (str, "%s,", guid);
|
||||
}
|
||||
if (str->len > 0)
|
||||
g_string_truncate (str, str->len - 1);
|
||||
g_variant_builder_add (&builder, "{sv}",
|
||||
FWUPD_RESULT_KEY_GUID,
|
||||
g_variant_new_string (priv->guid));
|
||||
g_variant_new_string (str->str));
|
||||
}
|
||||
if (priv->device_name != NULL) {
|
||||
g_variant_builder_add (&builder, "{sv}",
|
||||
@ -1386,7 +1477,11 @@ fwupd_result_from_kv (FwupdResult *result, const gchar *key, GVariant *value)
|
||||
return;
|
||||
}
|
||||
if (g_strcmp0 (key, FWUPD_RESULT_KEY_GUID) == 0) {
|
||||
fwupd_result_set_guid (result, g_variant_get_string (value, NULL));
|
||||
guint i;
|
||||
const gchar *guids = g_variant_get_string (value, NULL);
|
||||
g_auto(GStrv) split = g_strsplit (guids, ",", -1);
|
||||
for (i = 0; split[i] != NULL; i++)
|
||||
fwupd_result_add_guid (result, split[i]);
|
||||
return;
|
||||
}
|
||||
if (g_strcmp0 (key, FWUPD_RESULT_KEY_DEVICE_NAME) == 0) {
|
||||
@ -1653,6 +1748,7 @@ fwupd_result_to_string (FwupdResult *result)
|
||||
{
|
||||
FwupdResultPrivate *priv = GET_PRIVATE (result);
|
||||
GString *str;
|
||||
guint i;
|
||||
|
||||
g_return_val_if_fail (FWUPD_IS_RESULT (result), NULL);
|
||||
|
||||
@ -1665,7 +1761,10 @@ fwupd_result_to_string (FwupdResult *result)
|
||||
g_string_append_printf (str, "%s\n", "Unknown Device");
|
||||
|
||||
/* device */
|
||||
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_GUID, priv->guid);
|
||||
for (i = 0; i < priv->guids->len; i++) {
|
||||
const gchar *guid = g_ptr_array_index (priv->guids, i);
|
||||
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_GUID, guid);
|
||||
}
|
||||
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_DEVICE_ID, priv->device_id);
|
||||
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_DEVICE_DESCRIPTION, priv->device_description);
|
||||
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_DEVICE_PROVIDER, priv->device_provider);
|
||||
@ -1778,6 +1877,7 @@ fwupd_result_init (FwupdResult *result)
|
||||
FwupdResultPrivate *priv = GET_PRIVATE (result);
|
||||
priv->device_checksum_kind = G_CHECKSUM_SHA1;
|
||||
priv->update_checksum_kind = G_CHECKSUM_SHA1;
|
||||
priv->guids = g_ptr_array_new_with_free_func (g_free);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1789,6 +1889,7 @@ fwupd_result_finalize (GObject *object)
|
||||
FwupdResult *result = FWUPD_RESULT (object);
|
||||
FwupdResultPrivate *priv = GET_PRIVATE (result);
|
||||
|
||||
g_ptr_array_unref (priv->guids);
|
||||
g_free (priv->device_description);
|
||||
g_free (priv->device_checksum);
|
||||
g_free (priv->device_id);
|
||||
@ -1797,7 +1898,6 @@ fwupd_result_finalize (GObject *object)
|
||||
g_free (priv->device_provider);
|
||||
g_free (priv->device_version);
|
||||
g_free (priv->device_version_lowest);
|
||||
g_free (priv->guid);
|
||||
g_free (priv->update_description);
|
||||
g_free (priv->update_error);
|
||||
g_free (priv->update_filename);
|
||||
|
@ -47,10 +47,15 @@ struct _FwupdResultClass
|
||||
FwupdResult *fwupd_result_new (void);
|
||||
FwupdResult *fwupd_result_new_from_data (GVariant *data);
|
||||
|
||||
/* device-specific */
|
||||
const gchar *fwupd_result_get_guid (FwupdResult *result);
|
||||
void fwupd_result_set_guid (FwupdResult *result,
|
||||
/* matches */
|
||||
void fwupd_result_add_guid (FwupdResult *result,
|
||||
const gchar *guid);
|
||||
gboolean fwupd_result_has_guid (FwupdResult *result,
|
||||
const gchar *guid);
|
||||
GPtrArray *fwupd_result_get_guids (FwupdResult *result);
|
||||
const gchar *fwupd_result_get_guid_default (FwupdResult *result);
|
||||
|
||||
/* device-specific */
|
||||
const gchar *fwupd_result_get_device_id (FwupdResult *result);
|
||||
void fwupd_result_set_device_id (FwupdResult *result,
|
||||
const gchar *device_id);
|
||||
@ -150,6 +155,13 @@ GVariant *fwupd_result_to_data (FwupdResult *result,
|
||||
const gchar *type_string);
|
||||
gchar *fwupd_result_to_string (FwupdResult *result);
|
||||
|
||||
/* deprecated */
|
||||
G_DEPRECATED_FOR(fwupd_result_get_guids)
|
||||
const gchar *fwupd_result_get_guid (FwupdResult *result);
|
||||
G_DEPRECATED_FOR(fwupd_result_add_guid)
|
||||
void fwupd_result_set_guid (FwupdResult *result,
|
||||
const gchar *guid);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __FWUPD_RESULT_H */
|
||||
|
@ -112,7 +112,8 @@ fwupd_result_func (void)
|
||||
fwupd_result_set_device_id (result, "USB:foo");
|
||||
fwupd_result_set_device_modified (result, 60 * 60 * 24);
|
||||
fwupd_result_set_device_name (result, "ColorHug2");
|
||||
fwupd_result_set_guid (result, "2082b5e0-7a64-478a-b1b2-e3404fab6dad");
|
||||
fwupd_result_add_guid (result, "2082b5e0-7a64-478a-b1b2-e3404fab6dad");
|
||||
fwupd_result_add_guid (result, "00000000-0000-0000-0000-000000000000");
|
||||
fwupd_result_set_update_checksum (result, "deadbeef");
|
||||
fwupd_result_set_update_description (result, "<p>Hi there!</p>");
|
||||
fwupd_result_set_update_filename (result, "firmware.bin");
|
||||
@ -125,9 +126,15 @@ fwupd_result_func (void)
|
||||
str = fwupd_result_to_string (result);
|
||||
g_print ("\n%s", str);
|
||||
|
||||
/* check GUIDs */
|
||||
g_assert (fwupd_result_has_guid (result, "2082b5e0-7a64-478a-b1b2-e3404fab6dad"));
|
||||
g_assert (fwupd_result_has_guid (result, "00000000-0000-0000-0000-000000000000"));
|
||||
g_assert (!fwupd_result_has_guid (result, "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"));
|
||||
|
||||
ret = as_test_compare_lines (str,
|
||||
"ColorHug2\n"
|
||||
" Guid: 2082b5e0-7a64-478a-b1b2-e3404fab6dad\n"
|
||||
" Guid: 00000000-0000-0000-0000-000000000000\n"
|
||||
" DeviceID: USB:foo\n"
|
||||
" Flags: allow-offline|require-ac\n"
|
||||
" FirmwareHash: beefdead\n"
|
||||
@ -167,7 +174,7 @@ fwupd_client_devices_func (void)
|
||||
/* check device */
|
||||
res = g_ptr_array_index (array, 0);
|
||||
g_assert (FWUPD_IS_RESULT (res));
|
||||
g_assert_cmpstr (fwupd_result_get_guid (res), !=, NULL);
|
||||
g_assert_cmpstr (fwupd_result_get_guid_default (res), !=, NULL);
|
||||
g_assert_cmpstr (fwupd_result_get_device_id (res), !=, NULL);
|
||||
}
|
||||
|
||||
@ -191,7 +198,7 @@ fwupd_client_updates_func (void)
|
||||
/* check device */
|
||||
res = g_ptr_array_index (array, 0);
|
||||
g_assert (FWUPD_IS_RESULT (res));
|
||||
g_assert_cmpstr (fwupd_result_get_guid (res), !=, NULL);
|
||||
g_assert_cmpstr (fwupd_result_get_guid_default (res), !=, NULL);
|
||||
g_assert_cmpstr (fwupd_result_get_device_id (res), !=, NULL);
|
||||
}
|
||||
|
||||
|
@ -48,7 +48,8 @@ FuDevice *fu_device_new (void);
|
||||
#define fu_device_set_created(d,v) fwupd_result_set_device_created(FWUPD_RESULT(d),v)
|
||||
#define fu_device_set_description(d,v) fwupd_result_set_device_description(FWUPD_RESULT(d),v)
|
||||
#define fu_device_set_flags(d,v) fwupd_result_set_device_flags(FWUPD_RESULT(d),v)
|
||||
#define fu_device_set_guid(d,v) fwupd_result_set_guid(FWUPD_RESULT(d),v)
|
||||
#define fu_device_add_guid(d,v) fwupd_result_add_guid(FWUPD_RESULT(d),v)
|
||||
#define fu_device_has_guid(d,v) fwupd_result_has_guid(FWUPD_RESULT(d),v)
|
||||
#define fu_device_set_id(d,v) fwupd_result_set_device_id(FWUPD_RESULT(d),v)
|
||||
#define fu_device_set_modified(d,v) fwupd_result_set_device_modified(FWUPD_RESULT(d),v)
|
||||
#define fu_device_set_provider(d,v) fwupd_result_set_device_provider(FWUPD_RESULT(d),v)
|
||||
@ -73,7 +74,8 @@ FuDevice *fu_device_new (void);
|
||||
/* compat getters */
|
||||
#define fu_device_get_checksum(d) fwupd_result_get_device_checksum(FWUPD_RESULT(d))
|
||||
#define fu_device_get_flags(d) fwupd_result_get_device_flags(FWUPD_RESULT(d))
|
||||
#define fu_device_get_guid(d) fwupd_result_get_guid(FWUPD_RESULT(d))
|
||||
#define fu_device_get_guids(d) fwupd_result_get_guids(FWUPD_RESULT(d))
|
||||
#define fu_device_get_guid_default(d) fwupd_result_get_guid_default(FWUPD_RESULT(d))
|
||||
#define fu_device_get_name(d) fwupd_result_get_device_name(FWUPD_RESULT(d))
|
||||
#define fu_device_get_id(d) fwupd_result_get_device_id(FWUPD_RESULT(d))
|
||||
#define fu_device_get_provider(d) fwupd_result_get_device_provider(FWUPD_RESULT(d))
|
||||
|
@ -357,7 +357,7 @@ fu_main_get_item_by_guid (FuMainPrivate *priv, const gchar *guid)
|
||||
|
||||
for (i = 0; i < priv->devices->len; i++) {
|
||||
item = g_ptr_array_index (priv->devices, i);
|
||||
if (g_strcmp0 (fu_device_get_guid (item->device), guid) == 0)
|
||||
if (fu_device_has_guid (item->device, guid))
|
||||
return item;
|
||||
}
|
||||
return NULL;
|
||||
@ -727,6 +727,27 @@ fu_main_vendor_quirk_release_version (AsApp *app)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* fu_main_store_get_app_by_guids:
|
||||
**/
|
||||
static AsApp *
|
||||
fu_main_store_get_app_by_guids (AsStore *store, FuDevice *device)
|
||||
{
|
||||
GPtrArray *guids;
|
||||
guint i;
|
||||
|
||||
guids = fu_device_get_guids (device);
|
||||
for (i = 0; i < guids->len; i++) {
|
||||
AsApp *app = NULL;
|
||||
app = as_store_get_app_by_provide (store,
|
||||
AS_PROVIDE_KIND_FIRMWARE_FLASHED,
|
||||
g_ptr_array_index (guids, i));
|
||||
if (app != NULL)
|
||||
return app;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* fu_main_update_helper:
|
||||
**/
|
||||
@ -751,9 +772,7 @@ fu_main_update_helper (FuMainAuthHelper *helper, GError **error)
|
||||
for (i = 0; i < helper->priv->devices->len; i++) {
|
||||
FuDeviceItem *item;
|
||||
item = g_ptr_array_index (helper->priv->devices, i);
|
||||
app = as_store_get_app_by_provide (helper->store,
|
||||
AS_PROVIDE_KIND_FIRMWARE_FLASHED,
|
||||
fu_device_get_guid (item->device));
|
||||
app = fu_main_store_get_app_by_guids (helper->store, item->device);
|
||||
if (app != NULL) {
|
||||
helper->device = g_object_ref (item->device);
|
||||
break;
|
||||
@ -774,9 +793,7 @@ fu_main_update_helper (FuMainAuthHelper *helper, GError **error)
|
||||
} else {
|
||||
/* find an application from the cabinet 'store' for the
|
||||
* chosen device */
|
||||
app = as_store_get_app_by_provide (helper->store,
|
||||
AS_PROVIDE_KIND_FIRMWARE_FLASHED,
|
||||
fu_device_get_guid (helper->device));
|
||||
app = fu_main_store_get_app_by_guids (helper->store, helper->device);
|
||||
if (app == NULL) {
|
||||
g_autofree gchar *guid = NULL;
|
||||
guid = fu_main_get_guids_from_store (helper->store);
|
||||
@ -784,7 +801,7 @@ fu_main_update_helper (FuMainAuthHelper *helper, GError **error)
|
||||
FWUPD_ERROR,
|
||||
FWUPD_ERROR_INVALID_FILE,
|
||||
"firmware is not for this hw: required %s got %s",
|
||||
fu_device_get_guid (helper->device), guid);
|
||||
fu_device_get_guid_default (helper->device), guid);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
@ -1164,10 +1181,8 @@ fu_main_get_updates_item_update (FuMainPrivate *priv, FuDeviceItem *item)
|
||||
if (version == NULL)
|
||||
return FALSE;
|
||||
|
||||
/* match the GUID in the XML */
|
||||
app = as_store_get_app_by_provide (priv->store,
|
||||
AS_PROVIDE_KIND_FIRMWARE_FLASHED,
|
||||
fu_device_get_guid (item->device));
|
||||
/* match the GUIDs in the XML */
|
||||
app = fu_main_store_get_app_by_guids (priv->store, item->device);
|
||||
if (app == NULL)
|
||||
return FALSE;
|
||||
|
||||
@ -1521,9 +1536,7 @@ fu_main_daemon_method_call (GDBusConnection *connection, const gchar *sender,
|
||||
}
|
||||
|
||||
/* find component in metadata */
|
||||
app = as_store_get_app_by_provide (priv->store,
|
||||
AS_PROVIDE_KIND_FIRMWARE_FLASHED,
|
||||
fu_device_get_guid (item->device));
|
||||
app = fu_main_store_get_app_by_guids (priv->store, item->device);
|
||||
if (app == NULL) {
|
||||
g_dbus_method_invocation_return_error (invocation,
|
||||
FWUPD_ERROR,
|
||||
@ -1769,9 +1782,7 @@ fu_main_daemon_method_call (GDBusConnection *connection, const gchar *sender,
|
||||
* so try to find the first thing that's installed */
|
||||
for (i = 0; i < priv->devices->len; i++) {
|
||||
item = g_ptr_array_index (priv->devices, i);
|
||||
app = as_store_get_app_by_provide (store,
|
||||
AS_PROVIDE_KIND_FIRMWARE_FLASHED,
|
||||
fu_device_get_guid (item->device));
|
||||
app = fu_main_store_get_app_by_guids (store, item->device);
|
||||
if (app != NULL)
|
||||
break;
|
||||
}
|
||||
@ -2092,9 +2103,7 @@ cd_main_provider_device_added_cb (FuProvider *provider,
|
||||
g_ptr_array_add (priv->devices, item);
|
||||
|
||||
/* does this match anything in the AppStream data */
|
||||
app = as_store_get_app_by_provide (priv->store,
|
||||
AS_PROVIDE_KIND_FIRMWARE_FLASHED,
|
||||
fu_device_get_guid (item->device));
|
||||
app = fu_main_store_get_app_by_guids (priv->store, item->device);
|
||||
if (app != NULL) {
|
||||
const gchar *tmp;
|
||||
tmp = as_app_get_metadata_item (app, FU_DEVICE_KEY_FWUPD_PLUGIN);
|
||||
|
@ -491,7 +491,7 @@ fu_provider_chug_device_added_cb (GUsbContext *ctx,
|
||||
fu_device_set_id (item->device, device_key);
|
||||
fu_device_set_equivalent_id (item->device,
|
||||
g_usb_device_get_platform_id (device));
|
||||
fu_device_set_guid (item->device, ch_device_get_guid (device));
|
||||
fu_device_add_guid (item->device, ch_device_get_guid (device));
|
||||
fu_device_add_flag (item->device, FU_DEVICE_FLAG_ALLOW_OFFLINE);
|
||||
fu_device_add_flag (item->device, FU_DEVICE_FLAG_ALLOW_ONLINE);
|
||||
|
||||
|
@ -91,7 +91,7 @@ fu_provider_dfu_device_update (FuProviderDfu *provider_dfu,
|
||||
dfu_device_get_runtime_pid (device));
|
||||
guid = as_utils_guid_from_string (vid_pid);
|
||||
g_debug ("using %s for %s", guid, vid_pid);
|
||||
fu_device_set_guid (dev, guid);
|
||||
fu_device_add_guid (dev, guid);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -71,7 +71,7 @@ fu_provider_fake_coldplug (FuProvider *provider, GError **error)
|
||||
g_autoptr(FuDevice) device = NULL;
|
||||
device = fu_device_new ();
|
||||
fu_device_set_id (device, "FakeDevice");
|
||||
fu_device_set_guid (device, "00000000-0000-0000-0000-000000000000");
|
||||
fu_device_add_guid (device, "00000000-0000-0000-0000-000000000000");
|
||||
fu_device_set_name (device, "Integrated_Webcam(TM)");
|
||||
fu_provider_device_add (provider, device);
|
||||
return TRUE;
|
||||
|
@ -296,7 +296,7 @@ fu_provider_rpi_coldplug (FuProvider *provider, GError **error)
|
||||
device = fu_device_new ();
|
||||
fu_device_set_id (device, "raspberry-pi");
|
||||
guid = as_utils_guid_from_string ("raspberrypi");
|
||||
fu_device_set_guid (device, guid);
|
||||
fu_device_add_guid (device, guid);
|
||||
fu_device_set_name (device, "Raspberry Pi");
|
||||
fu_device_add_flag (device, FU_DEVICE_FLAG_INTERNAL);
|
||||
fu_device_add_flag (device, FU_DEVICE_FLAG_ALLOW_OFFLINE);
|
||||
|
@ -102,17 +102,11 @@ fu_provider_udev_unlock (FuProvider *provider,
|
||||
fu_device_set_version (device, fu_rom_get_version (rom));
|
||||
}
|
||||
|
||||
/* prefer the GUID from the firmware rather than the
|
||||
* hardware as the firmware may be more generic, which
|
||||
* also allows us to match the GUID when doing 'verify'
|
||||
/* Also add the GUID from the firmware as the firmware may be more
|
||||
* generic, which also allows us to match the GUID when doing 'verify'
|
||||
* on a device with a different PID to the firmware */
|
||||
if (g_strcmp0 (fu_device_get_guid (device), fu_rom_get_guid (rom)) != 0) {
|
||||
fu_device_set_guid (device, fu_rom_get_guid (rom));
|
||||
g_debug ("changing GUID of %s from %s to %s",
|
||||
fu_device_get_id (device),
|
||||
fu_device_get_guid (device),
|
||||
fu_rom_get_guid (rom));
|
||||
}
|
||||
fu_device_add_guid (device, fu_rom_get_guid (rom));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -206,7 +200,7 @@ fu_provider_udev_client_add (FuProviderUdev *provider_udev, GUdevDevice *device)
|
||||
dev = fu_device_new ();
|
||||
fu_device_add_flag (dev, FU_DEVICE_FLAG_INTERNAL);
|
||||
fu_device_set_id (dev, id);
|
||||
fu_device_set_guid (dev, guid_new);
|
||||
fu_device_add_guid (dev, guid_new);
|
||||
display_name = g_udev_device_get_property (device, "FWUPD_MODEL");
|
||||
if (display_name == NULL)
|
||||
display_name = g_udev_device_get_property (device, "ID_MODEL_FROM_DATABASE");
|
||||
|
@ -110,7 +110,7 @@ fu_provider_uefi_clear_results (FuProvider *provider, FuDevice *device, GError *
|
||||
|
||||
/* get the hardware we're referencing */
|
||||
fwup_resource_iter_create (&iter);
|
||||
re = fu_provider_uefi_find (iter, fu_device_get_guid (device), error);
|
||||
re = fu_provider_uefi_find (iter, fu_device_get_guid_default (device), error);
|
||||
if (re == NULL)
|
||||
return FALSE;
|
||||
if (fwup_clear_status (re) < 0) {
|
||||
@ -118,7 +118,7 @@ fu_provider_uefi_clear_results (FuProvider *provider, FuDevice *device, GError *
|
||||
FWUPD_ERROR,
|
||||
FWUPD_ERROR_INTERNAL,
|
||||
"Cannot create clear UEFI status for %s",
|
||||
fu_device_get_guid (device));
|
||||
fu_device_get_guid_default (device));
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
@ -177,7 +177,7 @@ fu_provider_uefi_get_results (FuProvider *provider, FuDevice *device, GError **e
|
||||
|
||||
/* get the hardware we're referencing */
|
||||
fwup_resource_iter_create (&iter);
|
||||
re = fu_provider_uefi_find (iter, fu_device_get_guid (device), error);
|
||||
re = fu_provider_uefi_find (iter, fu_device_get_guid_default (device), error);
|
||||
if (re == NULL)
|
||||
return FALSE;
|
||||
if (fwup_get_last_attempt_info (re, &version, &status, &when) < 0) {
|
||||
@ -185,7 +185,7 @@ fu_provider_uefi_get_results (FuProvider *provider, FuDevice *device, GError **e
|
||||
FWUPD_ERROR,
|
||||
FWUPD_ERROR_INTERNAL,
|
||||
"Cannot get UEFI status for %s",
|
||||
fu_device_get_guid (device));
|
||||
fu_device_get_guid_default (device));
|
||||
return FALSE;
|
||||
}
|
||||
version_str = g_strdup_printf ("%u", version);
|
||||
@ -219,7 +219,7 @@ fu_provider_uefi_update (FuProvider *provider,
|
||||
|
||||
/* get the hardware we're referencing */
|
||||
fwup_resource_iter_create (&iter);
|
||||
re = fu_provider_uefi_find (iter, fu_device_get_guid (device), error);
|
||||
re = fu_provider_uefi_find (iter, fu_device_get_guid_default (device), error);
|
||||
if (re == NULL)
|
||||
return FALSE;
|
||||
|
||||
@ -325,7 +325,7 @@ fu_provider_uefi_coldplug (FuProvider *provider, GError **error)
|
||||
if (supported >= 2) {
|
||||
dev = fu_device_new ();
|
||||
fu_device_set_id (dev, "UEFI-dummy-dev0");
|
||||
fu_device_set_guid (dev, "2d47f29b-83a2-4f31-a2e8-63474f4d4c2e");
|
||||
fu_device_add_guid (dev, "2d47f29b-83a2-4f31-a2e8-63474f4d4c2e");
|
||||
fu_device_set_version (dev, "0");
|
||||
fu_device_add_flag (dev, FU_DEVICE_FLAG_ALLOW_ONLINE);
|
||||
fu_device_add_flag (dev, FU_DEVICE_FLAG_LOCKED);
|
||||
@ -373,7 +373,7 @@ fu_provider_uefi_coldplug (FuProvider *provider, GError **error)
|
||||
|
||||
dev = fu_device_new ();
|
||||
fu_device_set_id (dev, id);
|
||||
fu_device_set_guid (dev, guid);
|
||||
fu_device_add_guid (dev, guid);
|
||||
fu_device_set_version (dev, version);
|
||||
if (display_name != NULL)
|
||||
fu_device_set_name(dev, display_name);
|
||||
|
@ -134,7 +134,7 @@ fu_provider_usb_device_added (FuProviderUsb *provider_usb, GUsbDevice *device)
|
||||
g_usb_device_get_pid (device));
|
||||
guid = as_utils_guid_from_string (vid_pid);
|
||||
}
|
||||
fu_device_set_guid (dev, guid);
|
||||
fu_device_add_guid (dev, guid);
|
||||
|
||||
/* we're done here */
|
||||
if (!g_usb_device_close (device, &error))
|
||||
|
@ -208,7 +208,7 @@ fu_provider_func (void)
|
||||
g_assert_cmpint (cnt, ==, 0);
|
||||
g_assert (device != NULL);
|
||||
g_assert_cmpstr (fu_device_get_id (device), ==, "FakeDevice");
|
||||
g_assert_cmpstr (fu_device_get_guid (device), ==,
|
||||
g_assert_cmpstr (fu_device_get_guid_default (device), ==,
|
||||
"00000000-0000-0000-0000-000000000000");
|
||||
g_assert_cmpstr (fu_device_get_name (device), ==,
|
||||
"Integrated Webcam™");
|
||||
@ -316,7 +316,7 @@ fu_provider_rpi_func (void)
|
||||
g_assert_cmpint (cnt, ==, 0);
|
||||
g_assert (device != NULL);
|
||||
g_assert_cmpstr (fu_device_get_id (device), ==, "raspberry-pi");
|
||||
g_assert_cmpstr (fu_device_get_guid (device), ==,
|
||||
g_assert_cmpstr (fu_device_get_guid_default (device), ==,
|
||||
"91dd7368-8640-5d72-a217-a505c034dd0b");
|
||||
g_assert_cmpstr (fu_device_get_version (device), ==,
|
||||
"20150803");
|
||||
|
@ -885,12 +885,12 @@ fu_util_verify_all (FuUtilPrivate *priv, GError **error)
|
||||
NULL,
|
||||
&error_local)) {
|
||||
g_print ("%s\tFAILED: %s\n",
|
||||
fwupd_result_get_guid (res),
|
||||
fwupd_result_get_guid_default (res),
|
||||
error_local->message);
|
||||
continue;
|
||||
}
|
||||
g_print ("%s\t%s\n",
|
||||
fwupd_result_get_guid (res),
|
||||
fwupd_result_get_guid_default (res),
|
||||
_("OK"));
|
||||
}
|
||||
return TRUE;
|
||||
@ -981,9 +981,10 @@ fu_util_get_updates (FuUtilPrivate *priv, gchar **values, GError **error)
|
||||
{
|
||||
FwupdResult *res;
|
||||
GPtrArray *results = NULL;
|
||||
GPtrArray *guids;
|
||||
GChecksumType checksum_type;
|
||||
const gchar *tmp;
|
||||
guint i;
|
||||
guint i, j;
|
||||
|
||||
/* print any updates */
|
||||
results = fwupd_client_get_updates (priv->client, NULL, error);
|
||||
@ -1000,7 +1001,11 @@ fu_util_get_updates (FuUtilPrivate *priv, gchar **values, GError **error)
|
||||
fu_util_print_data (_("ID"), fwupd_result_get_update_id (res));
|
||||
|
||||
/* TRANSLATORS: a GUID for the hardware */
|
||||
fu_util_print_data (_("GUID"), fwupd_result_get_guid (res));
|
||||
guids = fwupd_result_get_guids (res);
|
||||
for (j = 0; j < guids->len; j++) {
|
||||
tmp = g_ptr_array_index (guids, j);
|
||||
fu_util_print_data (_("GUID"), tmp);
|
||||
}
|
||||
|
||||
/* TRANSLATORS: section header for firmware version */
|
||||
fu_util_print_data (_("Update Version"),
|
||||
|
Loading…
Reference in New Issue
Block a user