AN295
0x00,
0x02,
0x0000
// bmAttributes (none)
// bLockDelayUnits (PCM samples)
// wLockDelay (0)
0x00,
// bmAttributes (none)
This byte tells the host whether the endpoint supports adaptive audio pitch control, adaptive sampling frequency,
and whether the endpoint supports packets of maximum packet size only. Setting this byte to zero shows that this
endpoint supports none of those features or requirements.
0x02,
0x0000
// bLockDelayUnits (PCM samples)
// wLockDelay (0)
These three bytes are used mainly by synchronous endpoints to tell the host how long the device will take to lock
onto the synchronized clock source and provide a data stream. LockDelayUnitshas a reserved value for PCM
sample streams, which this firmware uses. For asynchronous streams, the two-byte LockDelayshould be set to
0x00.
4.1.14. HID Interface Descriptor
The next Descriptors define the HID interface, which the system uses to pass control information to and from the
host’s application. The firmware defines the standard Interface Descriptor for the HID interface as follows:
0x09,
0x04,
0x02,
0x00,
0x02,
0x03,
0x00,
0x00,
0x00
// bLength (9)
// bDescriptorType (INTERFACE)
// bInterfaceNumber (2)
// bAlternateSetting (0)
// bNumEndpoints (2)
// bInterfaceClass (HID)
// bInterfaceSubClass (none)
// bInterfaceProtocol (none)
// iInterface (none)
0x02,
0x00,
// bInterfaceNumber (2)
// bAlternateSetting (0)
These values give the interface a unique ID. Unlike the Audio Stream interface, the firmware defines only one
version of the HID Interface, so no AlternateSettingcodes need be defined.
0x02,
// bNumEndpoints (2)
This interface uses two endpoints, one IN and one OUT.
0x03,
// bInterfaceClass (HID)
This value is defined in the document titled “Device Class Definition for HID”.
0x00,
0x00,
// bInterfaceSubClass (none)
// bInterfaceProtocol (none)
For an HID class device, these values are undefined and should be set to 0x00.
Next, the firmware defines the HID Descriptor, which follows a format shown in the document titled “Device Class
Definition for HID”. The firmware defines the Descriptor as follows:
0x09,
0x21,
0x1101,
0x00,
0x01,
0x22,
// bLength (9)
// bDescriptorType (HID_DESCRIPTOR)
// bcdHID (1.11)
// bCountryCode (none)
// bNumDescriptors (1 class Descriptor)
// bClassDescriptorType (report descr.)
LE(HID_REPORT_SIZE)// wDescriptorLength (203)
14
Rev. 0.1