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