Chapter 16
16-8. The document USB Interface Association Descriptor Device Class Code
and Use Model defines these values. Both documents are available from usb.org.
Note that bDeviceClass = EFh. A composite device with a CDC function and
IAD doesn’t use bDeviceClass = 02h.
Table 16-9 shows example device, configuration, and interface association
descriptors for a composite device that includes a CDC function with two
interfaces and an additional function with one interface. In the device descrip-
tor, the bDeviceClass, bDeviceSubClass, and bDeviceProtocol codes indicate
that the device contains an IAD. In the configuration descriptor, bNumInter-
faces specifies that the configuration contains a total of three interfaces.
In the IAD, bFirstInterface equals the bInterfaceNumber of the CDC commu-
nication interface and bInterfaceCount = 02h to indicate that the CDC func-
tion has two interfaces. The bFunctionClass, bFunctionSubClass, and
bFunctionProtocol fields are set to match the values of bInterfaceClass, bInter-
faceSubClass, and bInterfaceProtocol in the CDC function’s first interface (the
communication interface).
Following the IAD are descriptors for the associated interfaces and their subor-
dinate descriptors. For a CDC virtual COM port, the interfaces are the CDC
communication and data interfaces. Following these interfaces are the interface
descriptor for the third, independent interface and its subordinate descriptors.Table 16-7: An Interface Association Descriptor can specify multiple interfaces
associated with a single function.
9 1
0 bLength Size of the descriptor in bytes (08h)
1 bDescriptorType INTERFACE ASSOCIATION (0Bh)
2 bFirstInterface bInterfaceNumber of the first interface associated with
the function
3 bInterfaceCount Number of contiguous interfaces associated with the
function
4 bFunctionClass USB class code or FFh for vendor specific class
5 bFunctionSubClass Subclass code
6 bFunctionProtocol Protocol code
7 iFunction Index of string descriptor describing the function