dfu: Remove functionality you can do now with fwupdtool

This commit is contained in:
Richard Hughes 2019-10-10 16:32:57 +01:00
parent 5a5a824a8d
commit 58bed5200e

View File

@ -868,40 +868,6 @@ dfu_tool_convert (DfuToolPrivate *priv, gchar **values, GError **error)
return dfu_firmware_write_file (firmware, file_out, error);
}
static gboolean
dfu_tool_attach (DfuToolPrivate *priv, gchar **values, GError **error)
{
g_autoptr(DfuDevice) device = NULL;
g_autoptr(FuDeviceLocker) locker = NULL;
device = dfu_tool_get_default_device (priv, error);
if (device == NULL)
return FALSE;
locker = fu_device_locker_new (device, error);
if (locker == NULL)
return FALSE;
if (!dfu_device_refresh_and_clear (device, error))
return FALSE;
return fu_device_attach (FU_DEVICE (device), error);
}
static gboolean
dfu_tool_reset (DfuToolPrivate *priv, gchar **values, GError **error)
{
g_autoptr(DfuDevice) device = NULL;
g_autoptr(FuDeviceLocker) locker = NULL;
device = dfu_tool_get_default_device (priv, error);
if (device == NULL)
return FALSE;
locker = fu_device_locker_new (device, error);
if (locker == NULL)
return FALSE;
if (!dfu_device_refresh (device, error))
return FALSE;
return dfu_device_reset (device, error);
}
static void
fu_tool_action_changed_cb (FuDevice *device, GParamSpec *pspec, DfuToolPrivate *priv)
{
@ -1469,207 +1435,6 @@ dfu_tool_write (DfuToolPrivate *priv, gchar **values, GError **error)
return TRUE;
}
static void
dfu_tool_list_target (DfuTarget *target)
{
GPtrArray *sectors;
const gchar *tmp;
g_autofree gchar *alt_id = NULL;
g_autoptr(GError) error_local = NULL;
/* TRANSLATORS: the identifier name please */
alt_id = g_strdup_printf ("%i", dfu_target_get_alt_setting (target));
dfu_tool_print_indent (_("ID"), alt_id, 1);
/* this is optional */
tmp = dfu_target_get_alt_name_for_display (target, &error_local);
if (tmp != NULL) {
/* TRANSLATORS: interface name, e.g. "Flash" */
dfu_tool_print_indent (_("Name"), tmp, 2);
} else if (!g_error_matches (error_local,
FWUPD_ERROR,
FWUPD_ERROR_NOT_FOUND)) {
g_autofree gchar *str = NULL;
str = g_strdup_printf ("Error: %s", error_local->message);
dfu_tool_print_indent (_("Name"), str, 2);
}
/* print sector information */
sectors = dfu_target_get_sectors (target);
for (guint i = 0; i < sectors->len; i++) {
DfuSector *sector;
g_autofree gchar *msg = NULL;
g_autofree gchar *title = NULL;
sector = g_ptr_array_index (sectors, i);
msg = dfu_sector_to_string (sector);
/* TRANSLATORS: these are areas of memory on the chip */
title = g_strdup_printf ("%s 0x%02x", _("Region"), i);
dfu_tool_print_indent (title, msg, 2);
}
}
static gboolean
dfu_tool_list (DfuToolPrivate *priv, gchar **values, GError **error)
{
g_autoptr(GUsbContext) usb_context = NULL;
g_autoptr(GPtrArray) devices = NULL;
/* get all the connected USB devices */
usb_context = g_usb_context_new (error);
if (usb_context == NULL)
return FALSE;
g_usb_context_enumerate (usb_context);
devices = g_usb_context_get_devices (usb_context);
for (guint i = 0; i < devices->len; i++) {
DfuTarget *target;
GUsbDevice *usb_device;
GPtrArray *dfu_targets;
const gchar *tmp;
gboolean is_runtime;
guint16 transfer_size;
g_autofree gchar *attrs = NULL;
const gchar *quirks = NULL;
g_autofree gchar *version = NULL;
g_autoptr(DfuDevice) device = NULL;
g_autoptr(FuDeviceLocker) locker = NULL;
g_autoptr(GError) error_local = NULL;
/* device specific */
usb_device = g_ptr_array_index (devices, i);
device = dfu_device_new (usb_device);
fu_device_set_quirks (FU_DEVICE (device), priv->quirks);
dfu_device_set_usb_context (device, usb_context);
if (!fu_device_probe (FU_DEVICE (device), NULL))
continue;
version = fu_common_version_from_uint16 (g_usb_device_get_release (usb_device),
FWUPD_VERSION_FORMAT_BCD);
g_print ("%s %04x:%04x [v%s]:\n",
/* TRANSLATORS: detected a DFU device */
_("Found"),
g_usb_device_get_vid (usb_device),
g_usb_device_get_pid (usb_device),
version);
tmp = dfu_version_to_string (dfu_device_get_version (device));
if (tmp != NULL) {
/* TRANSLATORS: DFU protocol version, e.g. 1.1 */
dfu_tool_print_indent (_("Protocol"), tmp, 1);
}
/* open */
locker = fu_device_locker_new (device, &error_local);
if (locker == NULL) {
if (g_error_matches (error_local,
FWUPD_ERROR,
FWUPD_ERROR_PERMISSION_DENIED)) {
/* TRANSLATORS: probably not run as root... */
dfu_tool_print_indent (_("Status"), _("Permission denied"), 1);
continue;
}
if (g_error_matches (error_local,
FWUPD_ERROR,
FWUPD_ERROR_NOT_SUPPORTED)) {
g_debug ("ignoring warning, continuing...");
} else {
/* TRANSLATORS: device has failed to report status */
dfu_tool_print_indent (_("Status"), error_local->message, 1);
}
continue;
}
if (!dfu_device_refresh_and_clear (device, &error_local)) {
/* TRANSLATORS: device has failed to report status */
dfu_tool_print_indent (_("Status"), error_local->message, 1);
continue;
}
tmp = fu_device_get_name (FU_DEVICE (device));
if (tmp != NULL) {
/* TRANSLATORS: device name, e.g. 'ColorHug2' */
dfu_tool_print_indent (_("Name"), tmp, 1);
}
tmp = fu_device_get_serial (FU_DEVICE (device));
if (tmp != NULL) {
/* TRANSLATORS: serial number, e.g. '00012345' */
dfu_tool_print_indent (_("Serial"), tmp, 1);
}
/* TRANSLATORS: device mode, e.g. application runtime or DFU */
is_runtime = !fu_device_has_flag (FU_DEVICE (device), FWUPD_DEVICE_FLAG_IS_BOOTLOADER);
dfu_tool_print_indent (_("Mode"), is_runtime ? _("Runtime") : _("DFU"), 1);
tmp = dfu_status_to_string (dfu_device_get_status (device));
/* TRANSLATORS: device status, e.g. "OK" */
dfu_tool_print_indent (_("Status"), tmp, 1);
tmp = dfu_state_to_string (dfu_device_get_state (device));
/* TRANSLATORS: device state, i.e. appIDLE */
dfu_tool_print_indent (_("State"), tmp, 1);
transfer_size = dfu_device_get_transfer_size (device);
if (transfer_size > 0) {
g_autofree gchar *str = NULL;
str = g_format_size_full (transfer_size,
G_FORMAT_SIZE_LONG_FORMAT);
/* TRANSLATORS: transfer size in bytes */
dfu_tool_print_indent (_("Transfer Size"), str, 1);
}
/* attributes can be an empty string */
attrs = dfu_device_get_attributes_as_string (device);
if (attrs != NULL && attrs[0] != '\0') {
/* TRANSLATORS: device attributes, i.e. things that
* the device can do */
dfu_tool_print_indent (_("Attributes"), attrs, 1);
}
/* quirks are NULL if none are set */
quirks = fu_device_get_custom_flags (FU_DEVICE (device));
if (quirks != NULL) {
/* TRANSLATORS: device quirks, i.e. things that
* it does that we have to work around */
dfu_tool_print_indent (_("Quirks"), quirks, 1);
}
/* this is optional */
tmp = dfu_device_get_chip_id (device);
if (tmp != NULL) {
/* TRANSLATORS: chip ID, e.g. "0x58200204" */
dfu_tool_print_indent (_("Chip ID"), tmp, 1);
}
/* list targets */
dfu_targets = dfu_device_get_targets (device);
for (guint j = 0; j < dfu_targets->len; j++) {
target = g_ptr_array_index (dfu_targets, j);
dfu_tool_list_target (target);
}
}
return TRUE;
}
static gboolean
dfu_tool_detach (DfuToolPrivate *priv, gchar **values, GError **error)
{
g_autoptr(DfuDevice) device = NULL;
g_autoptr(FuDeviceLocker) locker = NULL;
/* open correct device */
device = dfu_tool_get_default_device (priv, error);
if (device == NULL)
return FALSE;
if (priv->transfer_size > 0)
dfu_device_set_transfer_size (device, priv->transfer_size);
/* detach */
locker = fu_device_locker_new (device, error);
if (locker == NULL)
return FALSE;
if (!dfu_device_refresh_and_clear (device, error))
return FALSE;
return fu_device_detach (FU_DEVICE (device), error);
}
static gboolean
dfu_tool_sigint_cb (gpointer user_data)
{
@ -1759,18 +1524,6 @@ main (int argc, char *argv[])
/* TRANSLATORS: command description */
_("Set alternative name on firmware file"),
dfu_tool_set_alt_setting_name);
dfu_tool_add (priv->cmd_array,
"attach",
NULL,
/* TRANSLATORS: command description */
_("Attach DFU capable device back to runtime"),
dfu_tool_attach);
dfu_tool_add (priv->cmd_array,
"reset",
NULL,
/* TRANSLATORS: command description */
_("Reset a DFU device"),
dfu_tool_reset);
dfu_tool_add (priv->cmd_array,
"read",
"FILENAME",
@ -1795,18 +1548,6 @@ main (int argc, char *argv[])
/* TRANSLATORS: command description */
_("Write firmware from file into one partition"),
dfu_tool_write_alt);
dfu_tool_add (priv->cmd_array,
"list",
NULL,
/* TRANSLATORS: command description */
_("List currently attached DFU capable devices"),
dfu_tool_list);
dfu_tool_add (priv->cmd_array,
"detach",
NULL,
/* TRANSLATORS: command description */
_("Detach currently attached DFU capable device"),
dfu_tool_detach);
dfu_tool_add (priv->cmd_array,
"dump",
"FILENAME",