# HG changeset patch # User Mychaela Falconia # Date 1695843584 0 # Node ID ea7b411aad270ff294fcc4860cc9e85b2af8dc4d # Parent 4393e1b4b24592db65bd0254e4a60438f04f2160 cp2102-decode-ee-desc: decode interface descriptor diff -r 4393e1b4b245 -r ea7b411aad27 cp2102/decode_usb_desc.c --- a/cp2102/decode_usb_desc.c Wed Sep 27 19:15:29 2023 +0000 +++ b/cp2102/decode_usb_desc.c Wed Sep 27 19:39:44 2023 +0000 @@ -56,6 +56,27 @@ printf(" bMaxPower: 0x%02X (%u mA)\n", desc[8], desc[8] * 2); } +static void +print_interf_desc(desc) + u_char *desc; +{ + printf(" bLength: %u", desc[0]); + if (desc[0] != 9) + fputs(" (WRONG!)", stdout); + putchar('\n'); + printf(" bDescriptorType: 0x%02X", desc[1]); + if (desc[1] != 0x04) + fputs(" (WRONG!)", stdout); + putchar('\n'); + printf(" bInterfaceNumber: %u\n", desc[2]); + printf(" bAlternateSetting: 0x%02X\n", desc[3]); + printf(" bNumEndpoints: %u\n", desc[4]); + printf(" bInterfaceClass: 0x%02X\n", desc[5]); + printf(" bInterfaceSubClass: 0x%02X\n", desc[6]); + printf(" bInterfaceProtocol: 0x%02X\n", desc[7]); + printf(" iInterface: %u\n", desc[8]); +} + main(argc, argv) char **argv; { @@ -68,6 +89,8 @@ print_device_desc(eeprom + 0x388); printf("USB configuration descriptor at 0x399A:\n"); print_config_desc(eeprom + 0x39A); + printf("USB interface descriptor at 0x39A3:\n"); + print_interf_desc(eeprom + 0x3A3); /* decoding of other descriptors remains to be implemented */ exit(0); }