Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.sbin/usbdevs Print release also in hex.
details: https://anonhg.NetBSD.org/src/rev/9031745190b9
branches: trunk
changeset: 346110:9031745190b9
user: mlelstv <mlelstv%NetBSD.org@localhost>
date: Sun Jun 26 07:10:24 2016 +0000
description:
Print release also in hex.
Print device class information if -v is used twice.
diffstat:
usr.sbin/usbdevs/usbdevs.8 | 4 +-
usr.sbin/usbdevs/usbdevs.c | 120 +++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 118 insertions(+), 6 deletions(-)
diffs (180 lines):
diff -r 74717272ea1f -r 9031745190b9 usr.sbin/usbdevs/usbdevs.8
--- a/usr.sbin/usbdevs/usbdevs.8 Sun Jun 26 07:09:24 2016 +0000
+++ b/usr.sbin/usbdevs/usbdevs.8 Sun Jun 26 07:10:24 2016 +0000
@@ -1,4 +1,4 @@
-.\" $NetBSD: usbdevs.8,v 1.9 2011/08/15 14:31:24 wiz Exp $
+.\" $NetBSD: usbdevs.8,v 1.10 2016/06/26 07:10:24 mlelstv Exp $
.\"
.\" Copyright (c) 1999 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -53,7 +53,7 @@
.It Fl f Ar dev
Only print information for the given USB controller.
.It Fl v
-Be verbose.
+Be verbose, more information is given if used twice.
.El
.Sh FILES
.Bl -tag -width Pa
diff -r 74717272ea1f -r 9031745190b9 usr.sbin/usbdevs/usbdevs.c
--- a/usr.sbin/usbdevs/usbdevs.c Sun Jun 26 07:09:24 2016 +0000
+++ b/usr.sbin/usbdevs/usbdevs.c Sun Jun 26 07:10:24 2016 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: usbdevs.c,v 1.31 2014/08/12 13:40:07 skrll Exp $ */
+/* $NetBSD: usbdevs.c,v 1.32 2016/06/26 07:10:24 mlelstv Exp $ */
/*
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -47,7 +47,13 @@
static int verbose = 0;
static int showdevs = 0;
+struct stringtable {
+ int row, col;
+ const char *string;
+};
+
__dead static void usage(void);
+static void getstrings(const struct stringtable *, int, int, const char **, const char **);
static void usbdev(int f, int a, int rec);
static void usbdump(int f);
static void dumpone(char *name, int f, int addr);
@@ -92,6 +98,104 @@
strcpy(termstr, "(invalid)");
}
+struct stringtable class_strings[] = {
+ { UICLASS_UNSPEC, -1, "Unspecified" },
+
+ { UICLASS_AUDIO, -1, "Audio" },
+ { UICLASS_AUDIO, UISUBCLASS_AUDIOCONTROL, "Audio Control" },
+ { UICLASS_AUDIO, UISUBCLASS_AUDIOSTREAM, "Audio Streaming" },
+ { UICLASS_AUDIO, UISUBCLASS_MIDISTREAM, "MIDI Streaming" },
+
+ { UICLASS_CDC, -1, "Communications and CDC Control" },
+ { UICLASS_CDC, UISUBCLASS_DIRECT_LINE_CONTROL_MODEL, "Direct Line" },
+ { UICLASS_CDC, UISUBCLASS_ABSTRACT_CONTROL_MODEL, "Abstract" },
+ { UICLASS_CDC, UISUBCLASS_TELEPHONE_CONTROL_MODEL, "Telephone" },
+ { UICLASS_CDC, UISUBCLASS_MULTICHANNEL_CONTROL_MODEL, "Multichannel" },
+ { UICLASS_CDC, UISUBCLASS_CAPI_CONTROLMODEL, "CAPI" },
+ { UICLASS_CDC, UISUBCLASS_ETHERNET_NETWORKING_CONTROL_MODEL, "Ethernet Networking" },
+ { UICLASS_CDC, UISUBCLASS_ATM_NETWORKING_CONTROL_MODEL, "ATM Networking" },
+
+ { UICLASS_HID, -1, "Human Interface Device" },
+ { UICLASS_HID, UISUBCLASS_BOOT, "Boot" },
+
+ { UICLASS_PHYSICAL, -1, "Physical" },
+
+ { UICLASS_IMAGE, -1, "Image" },
+
+ { UICLASS_PRINTER, -1, "Printer" },
+ { UICLASS_PRINTER, UISUBCLASS_PRINTER, "Printer" },
+
+ { UICLASS_MASS, -1, "Mass Storage" },
+ { UICLASS_MASS, UISUBCLASS_RBC, "RBC" },
+ { UICLASS_MASS, UISUBCLASS_SFF8020I, "SFF8020I" },
+ { UICLASS_MASS, UISUBCLASS_QIC157, "QIC157" },
+ { UICLASS_MASS, UISUBCLASS_UFI, "UFI" },
+ { UICLASS_MASS, UISUBCLASS_SFF8070I, "SFF8070I" },
+ { UICLASS_MASS, UISUBCLASS_SCSI, "SCSI" },
+ { UICLASS_MASS, UISUBCLASS_SCSI, "SCSI" },
+
+ { UICLASS_HUB, -1, "Hub" },
+ { UICLASS_HUB, UISUBCLASS_HUB, "Hub" },
+
+ { UICLASS_CDC_DATA, -1, "CDC-Data" },
+ { UICLASS_CDC_DATA, UISUBCLASS_DATA, "Data" },
+
+ { UICLASS_SMARTCARD, -1, "Smart Card" },
+
+ { UICLASS_SECURITY, -1, "Content Security" },
+
+ { UICLASS_VIDEO, -1, "Video" },
+ { UICLASS_VIDEO, UISUBCLASS_VIDEOCONTROL, "Video Control" },
+ { UICLASS_VIDEO, UISUBCLASS_VIDEOSTREAMING, "Video Streaming" },
+ { UICLASS_VIDEO, UISUBCLASS_VIDEOCOLLECTION, "Video Collection" },
+
+#ifdef notyet
+ { UICLASS_HEALTHCARE, -1, "Personal Healthcare" },
+ { UICLASS_AVDEVICE, -1, "Audio/Video Device" },
+ { UICLASS_BILLBOARD, -1, "Billboard" },
+#endif
+
+ { UICLASS_DIAGNOSTIC, -1, "Diagnostic" },
+ { UICLASS_WIRELESS, -1, "Wireless" },
+ { UICLASS_WIRELESS, UISUBCLASS_RF, "Radio Frequency" },
+
+#ifdef notyet
+ { UICLASS_MISC, -1, "Miscellaneous" },
+#endif
+
+ { UICLASS_APPL_SPEC, -1, "Application Specific" },
+ { UICLASS_APPL_SPEC, UISUBCLASS_FIRMWARE_DOWNLOAD, "Firmware Download" },
+ { UICLASS_APPL_SPEC, UISUBCLASS_IRDA, "Irda" },
+
+ { UICLASS_VENDOR, -1, "Vendor Specific" },
+
+ { -1, -1, NULL }
+};
+
+static void
+getstrings(const struct stringtable *table,
+ int row, int col, const char **rp, const char **cp) {
+ static char rbuf[5], cbuf[5];
+
+ snprintf(rbuf, sizeof(rbuf), "0x%02x", row);
+ snprintf(cbuf, sizeof(cbuf), "0x%02x", col);
+
+ *rp = rbuf;
+ *cp = cbuf;
+
+ while (table->string != NULL) {
+ if (table->row == row) {
+ if (table->col == -1)
+ *rp = table->string;
+ else if (table->col == col)
+ *cp = table->string;
+ } else if (table->row > row)
+ break;
+
+ ++table;
+ }
+}
+
static void
usbdev(int f, int a, int rec)
{
@@ -128,14 +232,22 @@
u2t(di.udi_vendor, vendor);
u2t(di.udi_serial, serial);
if (verbose) {
- printf("%s(0x%04x), %s(0x%04x), rev %s",
+ printf("%s(0x%04x), %s(0x%04x), rev %s(0x%04x)",
product, di.udi_productNo,
- vendor, di.udi_vendorNo, di.udi_release);
+ vendor, di.udi_vendorNo,
+ di.udi_release, di.udi_releaseNo);
if (di.udi_serial[0])
printf(", serial %s", serial);
} else
printf("%s, %s", product, vendor);
printf("\n");
+ if (verbose > 1 && di.udi_class != UICLASS_UNSPEC) {
+ const char *cstr, *sstr;
+ getstrings(class_strings, di.udi_class, di.udi_subclass, &cstr, &sstr);
+ printf("%*s %s(0x%02x), %s(0x%02x), proto %u\n", indent, "",
+ cstr, di.udi_class, sstr, di.udi_subclass,
+ di.udi_protocol);
+ }
if (showdevs) {
for (i = 0; i < USB_MAX_DEVNAMES; i++)
if (di.udi_devnames[i][0])
@@ -215,7 +327,7 @@
dev = optarg;
break;
case 'v':
- verbose = 1;
+ verbose++;
break;
case '?':
default:
Home |
Main Index |
Thread Index |
Old Index