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