From f0453b3e0725b6a6c336c5f84f52b579fa1d79f4 Mon Sep 17 00:00:00 2001 From: neilt6 Date: Wed, 26 Mar 2014 12:00:06 -0600 Subject: [PATCH] Fixed readNB() bug Fixed a race condition with readNB() in USBHID that caused reports to be periodically returned empty. --- libraries/USBDevice/USBHID/USBHID.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/USBDevice/USBHID/USBHID.cpp b/libraries/USBDevice/USBHID/USBHID.cpp index fe097e9b18..0014a5db7c 100644 --- a/libraries/USBDevice/USBHID/USBHID.cpp +++ b/libraries/USBDevice/USBHID/USBHID.cpp @@ -59,6 +59,9 @@ bool USBHID::readNB(HID_REPORT *report) uint32_t bytesRead = 0; bool result; result = USBDevice::readEP_NB(EPINT_OUT, report->data, &bytesRead, MAX_HID_REPORT_SIZE); + // if readEP_NB did not succeed, does not issue a readStart + if (!result) + return false; report->length = bytesRead; if(!readStart(EPINT_OUT, MAX_HID_REPORT_SIZE)) return false;