trivial: Print the serial number in the dfu-tool list output

This commit is contained in:
Richard Hughes 2016-08-24 10:06:48 +01:00
parent 4092831e3b
commit de327ffefd
3 changed files with 32 additions and 0 deletions

View File

@ -59,6 +59,7 @@ typedef struct {
gboolean done_upload_or_download;
gboolean claimed_interface;
gchar *display_name;
gchar *serial_number;
gchar *platform_id;
guint16 version;
guint16 runtime_pid;
@ -235,6 +236,7 @@ dfu_device_finalize (GObject *object)
g_usb_device_close (priv->dev, NULL);
g_free (priv->display_name);
g_free (priv->serial_number);
g_free (priv->platform_id);
g_ptr_array_unref (priv->targets);
@ -869,6 +871,24 @@ dfu_device_get_display_name (DfuDevice *device)
return priv->display_name;
}
/**
* dfu_device_get_serial_number:
* @device: a #DfuDevice
*
* Gets the serial number for the device.
*
* Return value: string or %NULL for unset
*
* Since: 0.7.3
**/
const gchar *
dfu_device_get_serial_number (DfuDevice *device)
{
DfuDevicePrivate *priv = GET_PRIVATE (device);
g_return_val_if_fail (DFU_IS_DEVICE (device), NULL);
return priv->serial_number;
}
static void
dfu_device_set_state (DfuDevice *device, DfuState state)
{
@ -1314,6 +1334,11 @@ dfu_device_open (DfuDevice *device, DfuDeviceOpenFlags flags,
if (idx != 0x00)
priv->display_name = g_usb_device_get_string_descriptor (priv->dev, idx, NULL);
/* get serial number if it exists */
idx = g_usb_device_get_serial_number_index (priv->dev);
if (idx != 0x00)
priv->serial_number = g_usb_device_get_string_descriptor (priv->dev, idx, NULL);
/* the device has no DFU runtime, so cheat */
if (priv->quirks & DFU_DEVICE_QUIRK_NO_DFU_RUNTIME) {
priv->state = DFU_STATE_APP_IDLE;

View File

@ -139,6 +139,7 @@ DfuTarget *dfu_device_get_target_by_alt_name (DfuDevice *device,
const gchar *alt_name,
GError **error);
const gchar *dfu_device_get_display_name (DfuDevice *device);
const gchar *dfu_device_get_serial_number (DfuDevice *device);
guint16 dfu_device_get_runtime_vid (DfuDevice *device);
guint16 dfu_device_get_runtime_pid (DfuDevice *device);
guint16 dfu_device_get_runtime_release (DfuDevice *device);

View File

@ -1863,6 +1863,12 @@ dfu_tool_list (DfuToolPrivate *priv, gchar **values, GError **error)
dfu_tool_print_indent (_("Name"), tmp, 1);
}
tmp = dfu_device_get_serial_number (device);
if (tmp != NULL) {
/* TRANSLATORS: serial number, e.g. '00012345' */
dfu_tool_print_indent (_("Serial"), tmp, 1);
}
tmp = dfu_mode_to_string (dfu_device_get_mode (device));
/* TRANSLATORS: device mode, e.g. runtime or DFU */
dfu_tool_print_indent (_("Mode"), tmp, 1);