[libhid-discuss] Missing reports in hid_interrupt_read()

Jacques Dirac jacquesdirac at gmail.com
Thu Mar 31 15:02:53 UTC 2011


Hi Charles,

Thanks for your reply!

> Is it possible that your code is expecting a certain length for the reply,
> and you are discarding the packet if the return code from
> hid_interrupt_read() is non-zero?

Good thinking! I did first, but now I changed the code to check this:
hid_interrupt_read() is only returning HID_RET_TIMEOUT and
HID_RET_SUCCESS when data is available.

Increasing the timeout (from 10 to 1000) in hid_interrupt_read()
improves the situation, but I think this is only because the chance a
message is missed (not waiting in hid_interrupt_read()) is lowered.

> If not, you may have to look deeper in the stack. libusb 0.1 generally
> doesn't buffer things, either (although I admit I haven't looked at all the
> platform-specific code lately). There are often kernel-level debugging
> facilities available

I will try to do that.

> FreeBSD prior to 8.0 seems to continuously poll interrupt endpoints at the
> interval specified in the USB descriptor, and it buffers the results with
> marginal success. (I wouldn't recommend developing for the pre-8.0 USB
> stack.)

Running Linux 2.4.32 with libusb 0.1.12 and libhid 0.2.16.


Best regards.



More information about the libhid-discuss mailing list