summaryrefslogtreecommitdiffstats
path: root/usr.sbin/usbconfig
diff options
context:
space:
mode:
authorthompsa <thompsa@FreeBSD.org>2009-11-02 23:50:12 +0000
committerthompsa <thompsa@FreeBSD.org>2009-11-02 23:50:12 +0000
commit5e263c781eb6e64229b17c9669cb0cd5a405406e (patch)
tree4d31102a3abb58ab40a0745cffbabe4d81a25bd0 /usr.sbin/usbconfig
parent8bc2cf3863431c214eda6bec7dab1f676d348f0b (diff)
downloadFreeBSD-src-5e263c781eb6e64229b17c9669cb0cd5a405406e.zip
FreeBSD-src-5e263c781eb6e64229b17c9669cb0cd5a405406e.tar.gz
Add more verbose output when dumping the configuration descriptor.
Submitted by: Hans Petter Selasky
Diffstat (limited to 'usr.sbin/usbconfig')
-rw-r--r--usr.sbin/usbconfig/dump.c69
1 files changed, 57 insertions, 12 deletions
diff --git a/usr.sbin/usbconfig/dump.c b/usr.sbin/usbconfig/dump.c
index 6a2fd02..6dfc6ec 100644
--- a/usr.sbin/usbconfig/dump.c
+++ b/usr.sbin/usbconfig/dump.c
@@ -100,21 +100,66 @@ dump_field(struct libusb20_device *pdev, const char *plevel,
printf("%s%s = 0x%04x ", plevel, field, value);
- if ((field[0] != 'i') || (field[1] == 'd')) {
- printf("\n");
- return;
- }
- if (value == 0) {
- printf(" <no string>\n");
- return;
+ if (strlen(plevel) == 8) {
+ /* Endpoint Descriptor */
+
+ if (strcmp(field, "bEndpointAddress") == 0) {
+ if (value & 0x80)
+ printf(" <IN>\n");
+ else
+ printf(" <OUT>\n");
+ return;
+ }
+
+ if (strcmp(field, "bmAttributes") == 0) {
+ switch (value & 0x03) {
+ case 0:
+ printf(" <CONTROL>\n");
+ break;
+ case 1:
+ switch (value & 0x0C) {
+ case 0x00:
+ printf(" <ISOCHRONOUS>\n");
+ break;
+ case 0x04:
+ printf(" <ASYNC-ISOCHRONOUS>\n");
+ break;
+ case 0x08:
+ printf(" <ADAPT-ISOCHRONOUS>\n");
+ break;
+ default:
+ printf(" <SYNC-ISOCHRONOUS>\n");
+ break;
+ }
+ break;
+ case 2:
+ printf(" <BULK>\n");
+ break;
+ default:
+ printf(" <INTERRUPT>\n");
+ break;
+ }
+ return;
+ }
}
- if (libusb20_dev_req_string_simple_sync(pdev, value,
- temp_string, sizeof(temp_string))) {
- printf(" <retrieving string failed>\n");
+
+ if ((field[0] == 'i') && (field[1] != 'd')) {
+ /* Indirect String Descriptor */
+ if (value == 0) {
+ printf(" <no string>\n");
+ return;
+ }
+ if (libusb20_dev_req_string_simple_sync(pdev, value,
+ temp_string, sizeof(temp_string))) {
+ printf(" <retrieving string failed>\n");
+ return;
+ }
+ printf(" <%s>\n", temp_string);
return;
}
- printf(" <%s>\n", temp_string);
- return;
+
+ /* No additional information */
+ printf("\n");
}
static void
OpenPOWER on IntegriCloud