From: Xiaofan C. <xia...@gm...> - 2011-10-27 05:37:01
|
On Thu, Oct 27, 2011 at 12:33 AM, Tim Roberts <ti...@pr...> wrote: > Kustaa Nyholm wrote: >> Hmmm, exposing my ignorance here: would a 2nd interface require an >> other set of end points separate from the keyboard-HID interface? > > Possibly, but HID reports can also be sent via the control endpoint. > Your second interface wouldn't necessarily need an endpoint. > This is an arguable point if the 2nd interface needs to be an HID interface as in this thread. Technically speaking, an HID device seems to need at least an Interrupt IN endpoint as per the HID class specification. +++++++++++++++ http://www.usb.org/developers/devclass_docs/HID1_11.pdf Page 10, Section 4.4 A HID class device communicates with the HID class driver using either the Control (default) pipe or an Interrupt pipe. The Control pipe is used for: Receiving and responding to requests for USB control and class data. Transmitting data when polled by the HID class driver (using the Get_Report request). Receiving data from the host. The Interrupt pipe are used for: Receiving asynchronous (unrequested) data from the device. Transmitting low latency data to the device. The Interrupt Out pipe is optional. If a device declares an Interrupt Out endpoint then Output reports are transmitted by the host to the device through the Interrupt Out endpoint. If no Interrupt Out endpoint is declared then Output reports are transmitted to a device through the Control endpoint, using Set_Report(Output) requests. +++++++++++++++++ It only says that "Interrupt Out pipe is optional" which I will interpreter as "Interrupt IN pipe is compulsory" but it is not explicitly spoken out in the specification. +++++++++++++++++ Page 55 Section 8.1 Report Type "Data transfers are sent from the device to the host through the Interrupt In pipe in the form of reports. Reports may also be requested (polled) and sent through the Control pipe or sent through an optional Interrupt Out pipe." +++++++++++++++++ Again, I will interpret the above as "Interrupt IN pipe is compulsory". On the other hand, in the previous discussions in libusb mailing list, it seems to be possible to create an HID device without any Interrupt IN endpoint, just with the control endpoint. -- Xiaofan |