4002 0105 0900 2002 0224 0604 0120 0130 0103 2409 0001 1001 4002 0324 0903 1001 0224 0600 2501 0001 2407 0000 0301 0200 0004 0932 8000 0101 0053 0209
| Byte | Field | Value | Meaning |
|---|---|---|---|
| 0 | bLength | 0x09 | The Configuration description consists of 9 bytes |
| 1 | bDescriptorType | 0x02 | Descriptor type CONFIGURATION |
| 2-3 | wTotalLength | 0x0053 | Total length of configuration, including descriptors for configuration, interfaces and endpoints |
| 4 | bNumInterfaces | 0x01 | Configuration has 1 interface |
| 5 | bConfigurationValue | 0x01 | The value of this configuration is 1 |
| 6 | iConfiguration | 0x00 | String index 0 describes this configuration |
| 7 | bmAttributes | 0x80 | Device powered by bus and has no remote wake up feature |
| 8 | bMaxPower | 0x32 | Max power consumption is 50*2mA = 100mA |
The rest of the supplied data should be descriptors for interfaces and endpoints:
Interface descriptor
This descriptor starts with byte 9 in the data above. The first value is the length of the descriptor, which we can see is 0x09. That means that the data to interpret is:
0000 0301 0200 0004 09
| Byte | Field | Value | Meaning |
|---|---|---|---|
| 0 | bLength | 0x09 | The Interface description consists of 9 bytes |
| 1 | bDescriptorType | 0x04 | Descriptor type INTERFACE |
| 2 | bInterfaceNumber | 0x00 | Interface is number 0 |
| 3 | bAlternateSetting | 0x00 | Value to select this alternate setting |
| 4 | bNumEndpoints | 0x02 | This interface uses two endpoints |
| 5 | bInterfaceClass | 0x01 | Interface class is 1 |
| 6 | bInterfaceSubClass | 0x03 | Interface sub class is 3 |
| 7 | bInterfaceProtocol | 0x00 | Device does not use class-specific protocol |
| 8 | iInterface | 0x00 | String index for this descriptor is 0 |
Now, the next entry puzzles me, descriptor is of type 0x24. I found this post, that explaines that this is a class specific interface descriptor. I'll have to look into this some more.
No comments:
Post a Comment