[libhid-discuss] Asynchronous I/0 operation through libhid

Charles Lepple clepple at ghz.cc
Fri May 4 12:27:07 UTC 2007


On May 4, 2007, at 8:07 AM, Anmol Ranka wrote:
> Thanks again for the quick reply and patience.
If you want to keep the free support coming, please keep the list  
CC'd. (This allows other people the opportunity to search for answers  
in the mailing list archives.)

Private support is not free, it is known as "consulting".
> I have few more doubts:
>
> ·       Asynchronous I/O is only supported in the development  
> version of
>
>         libusb (which has an incompatible API). Can you please  
> explain it in
>
>       detail? Do you mean it will be available in next release of  
> 'libhid'?
no, it will be available in the next major release of libusb, and I  
don't have any control over when that gets released.
> ·       If I have to access the USB HID device from a single  
> thread, then how can I perform both read and write simultaneously.  
> I assume the read operation supported by 'libhid' is blocking.
If you are using hid_get_input_report() and hid_set_output_report(),  
these calls use the same control endpoint, and can never be properly  
executed simultaneously. You might be able to get away with  
simultaneous reads and writes to two different (interrupt) endpoints,  
but bear in mind that most USB device firmware is not multithreaded  
itself.

Again, you can queue up low-level USB requests so that it looks like  
you are reading and writing simultaneously, but if the requests go to  
the same endpoint on the same device, the requests will be serialized.

-- 
Charles Lepple






More information about the libhid-discuss mailing list