Decode more fields when dumping USB descriptors.
- Some minor style changes while at it. Submitted by: Dmitry Luhtionov <dmitryluhtionov@gmail.com> MFC after: 1 week
This commit is contained in:
parent
f3c93842bf
commit
5bd38bcab8
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=274435
@ -110,7 +110,6 @@ dump_field(struct libusb20_device *pdev, const char *plevel,
|
|||||||
printf(" <OUT>\n");
|
printf(" <OUT>\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(field, "bmAttributes") == 0) {
|
if (strcmp(field, "bmAttributes") == 0) {
|
||||||
switch (value & 0x03) {
|
switch (value & 0x03) {
|
||||||
case 0:
|
case 0:
|
||||||
@ -142,7 +141,6 @@ dump_field(struct libusb20_device *pdev, const char *plevel,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((field[0] == 'i') && (field[1] != 'd')) {
|
if ((field[0] == 'i') && (field[1] != 'd')) {
|
||||||
/* Indirect String Descriptor */
|
/* Indirect String Descriptor */
|
||||||
if (value == 0) {
|
if (value == 0) {
|
||||||
@ -157,7 +155,84 @@ dump_field(struct libusb20_device *pdev, const char *plevel,
|
|||||||
printf(" <%s>\n", temp_string);
|
printf(" <%s>\n", temp_string);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (strlen(plevel) == 2 || strlen(plevel) == 6) {
|
||||||
|
|
||||||
|
/* Device and Interface Descriptor class codes */
|
||||||
|
|
||||||
|
if (strcmp(field, "bInterfaceClass") == 0 ||
|
||||||
|
strcmp(field, "bDeviceClass") == 0) {
|
||||||
|
|
||||||
|
switch (value) {
|
||||||
|
case 0x00:
|
||||||
|
printf(" <Probed by interface class>\n");
|
||||||
|
break;
|
||||||
|
case 0x01:
|
||||||
|
printf(" <Audio device>\n");
|
||||||
|
break;
|
||||||
|
case 0x02:
|
||||||
|
printf(" <Communication device>\n");
|
||||||
|
break;
|
||||||
|
case 0x03:
|
||||||
|
printf(" <HID device>\n");
|
||||||
|
break;
|
||||||
|
case 0x05:
|
||||||
|
printf(" <Physical device>\n");
|
||||||
|
break;
|
||||||
|
case 0x06:
|
||||||
|
printf(" <Still imaging>\n");
|
||||||
|
break;
|
||||||
|
case 0x07:
|
||||||
|
printf(" <Printer device>\n");
|
||||||
|
break;
|
||||||
|
case 0x08:
|
||||||
|
printf(" <Mass storage>\n");
|
||||||
|
break;
|
||||||
|
case 0x09:
|
||||||
|
printf(" <HUB>\n");
|
||||||
|
break;
|
||||||
|
case 0x0A:
|
||||||
|
printf(" <CDC-data>\n");
|
||||||
|
break;
|
||||||
|
case 0x0B:
|
||||||
|
printf(" <Smart card>\n");
|
||||||
|
break;
|
||||||
|
case 0x0D:
|
||||||
|
printf(" <Content security>\n");
|
||||||
|
break;
|
||||||
|
case 0x0E:
|
||||||
|
printf(" <Video device>\n");
|
||||||
|
break;
|
||||||
|
case 0x0F:
|
||||||
|
printf(" <Personal healthcare>\n");
|
||||||
|
break;
|
||||||
|
case 0x10:
|
||||||
|
printf(" <Audio and video device>\n");
|
||||||
|
break;
|
||||||
|
case 0x11:
|
||||||
|
printf(" <Billboard device>\n");
|
||||||
|
break;
|
||||||
|
case 0xDC:
|
||||||
|
printf(" <Diagnostic device>\n");
|
||||||
|
break;
|
||||||
|
case 0xE0:
|
||||||
|
printf(" <Wireless controller>\n");
|
||||||
|
break;
|
||||||
|
case 0xEF:
|
||||||
|
printf(" <Miscellaneous device>\n");
|
||||||
|
break;
|
||||||
|
case 0xFE:
|
||||||
|
printf(" <Application specific>\n");
|
||||||
|
break;
|
||||||
|
case 0xFF:
|
||||||
|
printf(" <Vendor specific>\n");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf(" <Unknown>\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
/* No additional information */
|
/* No additional information */
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user