在 USB descriptor 的規格中, 定義了從 device/configuration/interface/endpoint, 從上而下的樹狀結構. 一個 device 可以有數個 configurtion, 一個 configuration 可以有數個 interface, 一個 interface 可以有數個 endpoint, 可以很清楚的瞭解到 device 提供了那些互動的方式.
當功能和 interface 是 1:1 對應的時候, 這些看來都沒有問題.
然而, 如果一個 device 如果有一個功能, 用到不同的 interface, 這樣主機端就不能由原先 device 傳回來的 descriptor, 看出這兩個 interface 是屬於同一組 (也許驅動程式根本就是同一個).
Interface Association Descriptors
因此, 在 USB 2.0 的規格推出後, 又以 ECN (Engineering Change Note) 的形式, 提出一個新的 descriptor, 在 USB 3.0 這是規格的一部份. 這一個 descriptor 就是在描述 interface 彼此之間的關係.Offset | Field | Size | Value | Description | |
0 | bLength | 1 | Number | Size of Descriptor in bytes | 0x09 |
1 | bDescriptorType | 1 | Constant | Interface Association Descriptor | 0x0B |
2 | bFirstInterface | 1 | Number | Interface number of the first interface that is associated with this function | |
3 | bInterfaceCount | 1 | Number | Number of contiguous interfaces that at associated with this function | |
4 | bFunctionClass | 1 | Class | Class Code (assigned by USB-IF) | |
5 | bFunctionSubClass | 1 | SubClass | Sub Class Code (asigned by USB-IF) | |
6 | bFunctionProtocol | 1 | Protocol | Protocol Code (assigned by USB-IF) | |
7 | iFunction | 1 | Index | Index of string descriptor describing this function |
沒有留言:
張貼留言
請提供您寶貴的意見