31 Mar 2011 13:27
Missing reports in hid_interrupt_read()
Jacques Dirac <jacquesdirac <at> gmail.com>
2011-03-31 11:27:41 GMT
2011-03-31 11:27:41 GMT
Hi, My program reads reports from a device using the hid_interrupt_read() function, but when reports follow each other quickly, they could get lost (not returned by hid_interrupt_read()). With help of the developer of the device we could get some information about what is going on in the device: - the device has a queue for the IN-reports, so a report is not lost in the device - in each report there is a value that counts how many times the device has placed a report in the IN-report-buffer - in each report there is a value that contains the time that the last IN-report waited in the register to be fetched by the host With this information we see that: - the device puts all messages in the IN-report-buffer, but not all messages could be fetched with hid_interrupt_read() - a lost message is fetched (by something) in <10ms (this is the same time as the other messages) Then my questions are: - Is there some routine in libhid (or libusb) that is fetching the reports from the IN-report-buffer of the device and saves them in a 'buffer' where hid_interrupt_read() is reading from? In my case it looks like that buffer is overwritten. - If so, can this be disabled or influenced? - If not, what else can be going on here? Hope someone can help to clear things up.(Continue reading)
RSS Feed