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