From f94e47e16f0cc00187bd5f1a85e391c37ed6744f Mon Sep 17 00:00:00 2001 From: Lennart Goedhart <lennart@omnibase.com.au> Date: Sat, 30 Jul 2016 11:53:21 +0800 Subject: [PATCH] Distinguish a HID timeout from no data received. --- .../info/nightscout/android/USB/UsbHidDriver.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/info/nightscout/android/USB/UsbHidDriver.java b/app/src/main/java/info/nightscout/android/USB/UsbHidDriver.java index ea63fa4..f7f1007 100644 --- a/app/src/main/java/info/nightscout/android/USB/UsbHidDriver.java +++ b/app/src/main/java/info/nightscout/android/USB/UsbHidDriver.java @@ -9,8 +9,6 @@ import android.util.Log; import java.io.IOException; -//import com.hoho.android.usbserial.driver.UsbId; - /** * USB HID Driver implementation. * @@ -89,14 +87,10 @@ public class UsbHidDriver extends CommonUsbDriver { int readAmt = Math.min(dest.length, mReadBuffer.length); numBytesRead = mConnection.bulkTransfer(mReadEndpoint, mReadBuffer, readAmt, timeoutMillis); - if (numBytesRead < 0) { - // This sucks: we get -1 on timeout, not 0 as preferred. - // We *should* use UsbRequest, except it has a bug/api oversight - // where there is no way to determine the number of bytes read - // in response :\ -- http://b.android.com/28023 - return 0; + if (numBytesRead > 0) { + System.arraycopy(mReadBuffer, 0, dest, 0, numBytesRead); } - System.arraycopy(mReadBuffer, 0, dest, 0, numBytesRead); + mConnection.releaseInterface(mInterface); } return numBytesRead; -- GitLab