Export the device protocol to the client --verbose output

It turns out this is useful for debugging.
This commit is contained in:
Richard Hughes 2019-11-30 21:16:00 +00:00 committed by Mario Limonciello
parent 19d948ea39
commit 4f023420c6
5 changed files with 76 additions and 23 deletions

View File

@ -44,6 +44,7 @@ typedef struct {
gchar *vendor_id; gchar *vendor_id;
gchar *homepage; gchar *homepage;
gchar *plugin; gchar *plugin;
gchar *protocol;
gchar *version; gchar *version;
gchar *version_lowest; gchar *version_lowest;
gchar *version_bootloader; gchar *version_bootloader;
@ -62,6 +63,7 @@ enum {
PROP_0, PROP_0,
PROP_VERSION_FORMAT, PROP_VERSION_FORMAT,
PROP_FLAGS, PROP_FLAGS,
PROP_PROTOCOL,
PROP_LAST PROP_LAST
}; };
@ -844,6 +846,42 @@ fwupd_device_set_plugin (FwupdDevice *device, const gchar *plugin)
priv->plugin = g_strdup (plugin); priv->plugin = g_strdup (plugin);
} }
/**
* fwupd_device_get_protocol:
* @device: A #FwupdDevice
*
* Gets the protocol that the device uses for updating.
*
* Returns: the protocol name, or %NULL if unset
*
* Since: 1.3.6
**/
const gchar *
fwupd_device_get_protocol (FwupdDevice *device)
{
FwupdDevicePrivate *priv = GET_PRIVATE (device);
g_return_val_if_fail (FWUPD_IS_DEVICE (device), NULL);
return priv->protocol;
}
/**
* fwupd_device_set_protocol:
* @device: A #FwupdDevice
* @protocol: the protocol name, e.g. `com.hughski.colorhug`
*
* Sets the protocol that is used to update the device.
*
* Since: 1.3.6
**/
void
fwupd_device_set_protocol (FwupdDevice *device, const gchar *protocol)
{
FwupdDevicePrivate *priv = GET_PRIVATE (device);
g_return_if_fail (FWUPD_IS_DEVICE (device));
g_free (priv->protocol);
priv->protocol = g_strdup (protocol);
}
/** /**
* fwupd_device_get_flags: * fwupd_device_get_flags:
* @device: A #FwupdDevice * @device: A #FwupdDevice
@ -1061,6 +1099,8 @@ fwupd_device_incorporate (FwupdDevice *self, FwupdDevice *donor)
fwupd_device_set_vendor_id (self, priv_donor->vendor_id); fwupd_device_set_vendor_id (self, priv_donor->vendor_id);
if (priv->plugin == NULL) if (priv->plugin == NULL)
fwupd_device_set_plugin (self, priv_donor->plugin); fwupd_device_set_plugin (self, priv_donor->plugin);
if (priv->protocol == NULL)
fwupd_device_set_protocol (self, priv_donor->protocol);
if (priv->update_error == NULL) if (priv->update_error == NULL)
fwupd_device_set_update_error (self, priv_donor->update_error); fwupd_device_set_update_error (self, priv_donor->update_error);
if (priv->update_message == NULL) if (priv->update_message == NULL)
@ -1197,6 +1237,11 @@ fwupd_device_to_variant_full (FwupdDevice *device, FwupdDeviceFlags flags)
FWUPD_RESULT_KEY_PLUGIN, FWUPD_RESULT_KEY_PLUGIN,
g_variant_new_string (priv->plugin)); g_variant_new_string (priv->plugin));
} }
if (priv->protocol != NULL) {
g_variant_builder_add (&builder, "{sv}",
FWUPD_RESULT_KEY_PROTOCOL,
g_variant_new_string (priv->protocol));
}
if (priv->version != NULL) { if (priv->version != NULL) {
g_variant_builder_add (&builder, "{sv}", g_variant_builder_add (&builder, "{sv}",
FWUPD_RESULT_KEY_VERSION, FWUPD_RESULT_KEY_VERSION,
@ -1379,6 +1424,10 @@ fwupd_device_from_key_value (FwupdDevice *device, const gchar *key, GVariant *va
fwupd_device_set_plugin (device, g_variant_get_string (value, NULL)); fwupd_device_set_plugin (device, g_variant_get_string (value, NULL));
return; return;
} }
if (g_strcmp0 (key, FWUPD_RESULT_KEY_PROTOCOL) == 0) {
fwupd_device_set_protocol (device, g_variant_get_string (value, NULL));
return;
}
if (g_strcmp0 (key, FWUPD_RESULT_KEY_VERSION) == 0) { if (g_strcmp0 (key, FWUPD_RESULT_KEY_VERSION) == 0) {
fwupd_device_set_version (device, g_variant_get_string (value, NULL)); fwupd_device_set_version (device, g_variant_get_string (value, NULL));
return; return;
@ -1731,6 +1780,7 @@ fwupd_device_to_json (FwupdDevice *device, JsonBuilder *builder)
fwupd_device_json_add_string (builder, FWUPD_RESULT_KEY_SUMMARY, priv->summary); fwupd_device_json_add_string (builder, FWUPD_RESULT_KEY_SUMMARY, priv->summary);
fwupd_device_json_add_string (builder, FWUPD_RESULT_KEY_DESCRIPTION, priv->description); fwupd_device_json_add_string (builder, FWUPD_RESULT_KEY_DESCRIPTION, priv->description);
fwupd_device_json_add_string (builder, FWUPD_RESULT_KEY_PLUGIN, priv->plugin); fwupd_device_json_add_string (builder, FWUPD_RESULT_KEY_PLUGIN, priv->plugin);
fwupd_device_json_add_string (builder, FWUPD_RESULT_KEY_PROTOCOL, priv->protocol);
if (priv->flags != FWUPD_DEVICE_FLAG_NONE) { if (priv->flags != FWUPD_DEVICE_FLAG_NONE) {
json_builder_set_member_name (builder, FWUPD_RESULT_KEY_FLAGS); json_builder_set_member_name (builder, FWUPD_RESULT_KEY_FLAGS);
json_builder_begin_array (builder); json_builder_begin_array (builder);
@ -1843,6 +1893,7 @@ fwupd_device_to_string (FwupdDevice *device)
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_SUMMARY, priv->summary); fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_SUMMARY, priv->summary);
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_DESCRIPTION, priv->description); fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_DESCRIPTION, priv->description);
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_PLUGIN, priv->plugin); fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_PLUGIN, priv->plugin);
fwupd_pad_kv_str (str, FWUPD_RESULT_KEY_PROTOCOL, priv->protocol);
fwupd_pad_kv_dfl (str, FWUPD_RESULT_KEY_FLAGS, priv->flags); fwupd_pad_kv_dfl (str, FWUPD_RESULT_KEY_FLAGS, priv->flags);
for (guint i = 0; i < priv->checksums->len; i++) { for (guint i = 0; i < priv->checksums->len; i++) {
const gchar *checksum = g_ptr_array_index (priv->checksums, i); const gchar *checksum = g_ptr_array_index (priv->checksums, i);
@ -1897,6 +1948,9 @@ fwupd_device_get_property (GObject *object, guint prop_id,
case PROP_FLAGS: case PROP_FLAGS:
g_value_set_uint64 (value, priv->flags); g_value_set_uint64 (value, priv->flags);
break; break;
case PROP_PROTOCOL:
g_value_set_string (value, priv->protocol);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -1915,6 +1969,9 @@ fwupd_device_set_property (GObject *object, guint prop_id,
case PROP_FLAGS: case PROP_FLAGS:
fwupd_device_set_flags (self, g_value_get_uint64 (value)); fwupd_device_set_flags (self, g_value_get_uint64 (value));
break; break;
case PROP_PROTOCOL:
fwupd_device_set_protocol (self, g_value_get_string (value));
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -1946,6 +2003,11 @@ fwupd_device_class_init (FwupdDeviceClass *klass)
G_PARAM_READWRITE | G_PARAM_READWRITE |
G_PARAM_STATIC_NAME); G_PARAM_STATIC_NAME);
g_object_class_install_property (object_class, PROP_FLAGS, pspec); g_object_class_install_property (object_class, PROP_FLAGS, pspec);
pspec = g_param_spec_string ("protocol", NULL, NULL, NULL,
G_PARAM_READWRITE |
G_PARAM_STATIC_NAME);
g_object_class_install_property (object_class, PROP_PROTOCOL, pspec);
} }
static void static void
@ -1976,6 +2038,7 @@ fwupd_device_finalize (GObject *object)
g_free (priv->vendor); g_free (priv->vendor);
g_free (priv->vendor_id); g_free (priv->vendor_id);
g_free (priv->plugin); g_free (priv->plugin);
g_free (priv->protocol);
g_free (priv->update_error); g_free (priv->update_error);
g_free (priv->update_message); g_free (priv->update_message);
g_free (priv->version); g_free (priv->version);

View File

@ -92,6 +92,9 @@ void fwupd_device_add_checksum (FwupdDevice *device,
const gchar *fwupd_device_get_plugin (FwupdDevice *device); const gchar *fwupd_device_get_plugin (FwupdDevice *device);
void fwupd_device_set_plugin (FwupdDevice *device, void fwupd_device_set_plugin (FwupdDevice *device,
const gchar *plugin); const gchar *plugin);
const gchar *fwupd_device_get_protocol (FwupdDevice *device);
void fwupd_device_set_protocol (FwupdDevice *device,
const gchar *protocol);
const gchar *fwupd_device_get_vendor (FwupdDevice *device); const gchar *fwupd_device_get_vendor (FwupdDevice *device);
void fwupd_device_set_vendor (FwupdDevice *device, void fwupd_device_set_vendor (FwupdDevice *device,
const gchar *vendor); const gchar *vendor);

View File

@ -35,6 +35,7 @@ G_BEGIN_DECLS
#define FWUPD_RESULT_KEY_NAME "Name" /* s */ #define FWUPD_RESULT_KEY_NAME "Name" /* s */
#define FWUPD_RESULT_KEY_NAME_VARIANT_SUFFIX "NameVariantSuffix" /* s */ #define FWUPD_RESULT_KEY_NAME_VARIANT_SUFFIX "NameVariantSuffix" /* s */
#define FWUPD_RESULT_KEY_PLUGIN "Plugin" /* s */ #define FWUPD_RESULT_KEY_PLUGIN "Plugin" /* s */
#define FWUPD_RESULT_KEY_PROTOCOL "Protocol" /* s */
#define FWUPD_RESULT_KEY_RELEASE "Release" /* a{sv} */ #define FWUPD_RESULT_KEY_RELEASE "Release" /* a{sv} */
#define FWUPD_RESULT_KEY_REMOTE_ID "RemoteId" /* s */ #define FWUPD_RESULT_KEY_REMOTE_ID "RemoteId" /* s */
#define FWUPD_RESULT_KEY_SERIAL "Serial" /* s */ #define FWUPD_RESULT_KEY_SERIAL "Serial" /* s */

View File

@ -405,3 +405,10 @@ LIBFWUPD_1.3.4 {
fwupd_client_get_daemon_interactive; fwupd_client_get_daemon_interactive;
local: *; local: *;
} LIBFWUPD_1.3.3; } LIBFWUPD_1.3.3;
LIBFWUPD_1.3.6 {
global:
fwupd_device_get_protocol;
fwupd_device_set_protocol;
local: *;
} LIBFWUPD_1.3.4;

View File

@ -36,7 +36,6 @@ typedef struct {
gchar *equivalent_id; gchar *equivalent_id;
gchar *physical_id; gchar *physical_id;
gchar *logical_id; gchar *logical_id;
gchar *protocol;
FuDevice *alternate; FuDevice *alternate;
FuDevice *parent; /* noref */ FuDevice *parent; /* noref */
FuQuirks *quirks; FuQuirks *quirks;
@ -66,7 +65,6 @@ enum {
PROP_PROGRESS, PROP_PROGRESS,
PROP_PHYSICAL_ID, PROP_PHYSICAL_ID,
PROP_LOGICAL_ID, PROP_LOGICAL_ID,
PROP_PROTOCOL,
PROP_QUIRKS, PROP_QUIRKS,
PROP_PARENT, PROP_PARENT,
PROP_LAST PROP_LAST
@ -94,9 +92,6 @@ fu_device_get_property (GObject *object, guint prop_id,
case PROP_LOGICAL_ID: case PROP_LOGICAL_ID:
g_value_set_string (value, priv->logical_id); g_value_set_string (value, priv->logical_id);
break; break;
case PROP_PROTOCOL:
g_value_set_string (value, priv->protocol);
break;
case PROP_QUIRKS: case PROP_QUIRKS:
g_value_set_object (value, priv->quirks); g_value_set_object (value, priv->quirks);
break; break;
@ -128,9 +123,6 @@ fu_device_set_property (GObject *object, guint prop_id,
case PROP_LOGICAL_ID: case PROP_LOGICAL_ID:
fu_device_set_logical_id (self, g_value_get_string (value)); fu_device_set_logical_id (self, g_value_get_string (value));
break; break;
case PROP_PROTOCOL:
fu_device_set_protocol (self, g_value_get_string (value));
break;
case PROP_QUIRKS: case PROP_QUIRKS:
fu_device_set_quirks (self, g_value_get_object (value)); fu_device_set_quirks (self, g_value_get_object (value));
break; break;
@ -1493,9 +1485,8 @@ fu_device_set_logical_id (FuDevice *self, const gchar *logical_id)
const gchar * const gchar *
fu_device_get_protocol (FuDevice *self) fu_device_get_protocol (FuDevice *self)
{ {
FuDevicePrivate *priv = GET_PRIVATE (self);
g_return_val_if_fail (FU_IS_DEVICE (self), NULL); g_return_val_if_fail (FU_IS_DEVICE (self), NULL);
return priv->protocol; return fwupd_device_get_protocol (FWUPD_DEVICE (self));
} }
/** /**
@ -1510,10 +1501,8 @@ fu_device_get_protocol (FuDevice *self)
void void
fu_device_set_protocol (FuDevice *self, const gchar *protocol) fu_device_set_protocol (FuDevice *self, const gchar *protocol)
{ {
FuDevicePrivate *priv = GET_PRIVATE (self);
g_return_if_fail (FU_IS_DEVICE (self)); g_return_if_fail (FU_IS_DEVICE (self));
g_free (priv->protocol); fwupd_device_set_protocol (FWUPD_DEVICE (self), protocol);
priv->protocol = g_strdup (protocol);
} }
/** /**
@ -1844,8 +1833,6 @@ fu_device_add_string (FuDevice *self, guint idt, GString *str)
fu_common_string_append_kv (str, idt + 1, "PhysicalId", priv->physical_id); fu_common_string_append_kv (str, idt + 1, "PhysicalId", priv->physical_id);
if (priv->logical_id != NULL) if (priv->logical_id != NULL)
fu_common_string_append_kv (str, idt + 1, "LogicalId", priv->logical_id); fu_common_string_append_kv (str, idt + 1, "LogicalId", priv->logical_id);
if (priv->protocol != NULL)
fu_common_string_append_kv (str, idt + 1, "Protocol", priv->protocol);
if (priv->size_min > 0) { if (priv->size_min > 0) {
g_autofree gchar *sz = g_strdup_printf ("%" G_GUINT64_FORMAT, priv->size_min); g_autofree gchar *sz = g_strdup_printf ("%" G_GUINT64_FORMAT, priv->size_min);
fu_common_string_append_kv (str, idt + 1, "FirmwareSizeMin", sz); fu_common_string_append_kv (str, idt + 1, "FirmwareSizeMin", sz);
@ -2573,8 +2560,6 @@ fu_device_incorporate (FuDevice *self, FuDevice *donor)
fu_device_set_physical_id (self, priv_donor->physical_id); fu_device_set_physical_id (self, priv_donor->physical_id);
if (priv->logical_id == NULL && priv_donor->logical_id != NULL) if (priv->logical_id == NULL && priv_donor->logical_id != NULL)
fu_device_set_logical_id (self, priv_donor->logical_id); fu_device_set_logical_id (self, priv_donor->logical_id);
if (priv->protocol == NULL && priv_donor->protocol != NULL)
fu_device_set_protocol (self, priv_donor->protocol);
if (priv->quirks == NULL) if (priv->quirks == NULL)
fu_device_set_quirks (self, fu_device_get_quirks (donor)); fu_device_set_quirks (self, fu_device_get_quirks (donor));
g_rw_lock_reader_lock (&priv_donor->parent_guids_mutex); g_rw_lock_reader_lock (&priv_donor->parent_guids_mutex);
@ -2676,11 +2661,6 @@ fu_device_class_init (FuDeviceClass *klass)
G_PARAM_STATIC_NAME); G_PARAM_STATIC_NAME);
g_object_class_install_property (object_class, PROP_LOGICAL_ID, pspec); g_object_class_install_property (object_class, PROP_LOGICAL_ID, pspec);
pspec = g_param_spec_string ("protocol", NULL, NULL, NULL,
G_PARAM_READWRITE |
G_PARAM_STATIC_NAME);
g_object_class_install_property (object_class, PROP_PROTOCOL, pspec);
pspec = g_param_spec_uint ("progress", NULL, NULL, pspec = g_param_spec_uint ("progress", NULL, NULL,
0, 100, 0, 0, 100, 0,
G_PARAM_READWRITE | G_PARAM_READWRITE |
@ -2739,7 +2719,6 @@ fu_device_finalize (GObject *object)
g_free (priv->equivalent_id); g_free (priv->equivalent_id);
g_free (priv->physical_id); g_free (priv->physical_id);
g_free (priv->logical_id); g_free (priv->logical_id);
g_free (priv->protocol);
G_OBJECT_CLASS (fu_device_parent_class)->finalize (object); G_OBJECT_CLASS (fu_device_parent_class)->finalize (object);
} }