From b2e46f3c04d715c8ed68ae9bb1beee546dc71487 Mon Sep 17 00:00:00 2001
From: Lennart Goedhart <lennart@omnibase.com.au>
Date: Wed, 25 May 2016 20:42:40 +1000
Subject: [PATCH] Fix for Crashlytics #1

---
 .../nightscout/android/USB/UsbHidDriver.java  | 31 ++++++++-----------
 1 file changed, 13 insertions(+), 18 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 0332d97..a8d6256 100644
--- a/app/src/main/java/info/nightscout/android/USB/UsbHidDriver.java
+++ b/app/src/main/java/info/nightscout/android/USB/UsbHidDriver.java
@@ -8,7 +8,6 @@ import android.hardware.usb.UsbManager;
 import android.util.Log;
 
 import java.io.IOException;
-import java.util.Iterator;
 
 //import com.hoho.android.usbserial.driver.UsbId;
 
@@ -17,8 +16,8 @@ import java.util.Iterator;
  *
  * @author mike wakerly (opensource@hoho.com), Lennart Goedhart (lennart@omnibase.com.au)
  * @see <a
- *      href="http://www.usb.org/developers/devclass_docs/usbcdc11.pdf">Universal
- *      Serial Bus Class Definitions for Communication Devices, v1.1</a>
+ * href="http://www.usb.org/developers/devclass_docs/usbcdc11.pdf">Universal
+ * Serial Bus Class Definitions for Communication Devices, v1.1</a>
  */
 public class UsbHidDriver extends CommonUsbDriver {
 
@@ -35,17 +34,14 @@ public class UsbHidDriver extends CommonUsbDriver {
         super(device, connection);
     }
 
-    public static UsbHidDriver acquire( UsbManager usbManager, int vendorId, int productId ) {
-        Iterator<UsbDevice> deviceIterator = usbManager.getDeviceList().values().iterator();
+    public static UsbHidDriver acquire(UsbManager usbManager, int vendorId, int productId) {
 
         // Iterate all the available devices and find ours.
-        while( deviceIterator.hasNext() ){
-            UsbDevice device = deviceIterator.next();
+        for (UsbDevice device : usbManager.getDeviceList().values()) {
             if (device.getProductId() == productId && device.getVendorId() == vendorId) {
-                final UsbDevice mDevice = device;
-                final UsbDeviceConnection mConnection = usbManager.openDevice( mDevice );
+                final UsbDeviceConnection mConnection = usbManager.openDevice(device);
 
-                return new UsbHidDriver( mDevice, mConnection );
+                return new UsbHidDriver(device, mConnection);
             }
         }
 
@@ -54,14 +50,11 @@ public class UsbHidDriver extends CommonUsbDriver {
 
     @Override
     public void open() throws IOException {
-        Log.d(TAG, "claiming interfaces, count=" + mDevice.getInterfaceCount());
-        int count = mDevice.getInterfaceCount();
         Log.d(TAG, "Claiming HID interface.");
         mInterface = mDevice.getInterface(0);
-        Log.d(TAG, "data iface=" + mInterface);
 
         if (!mConnection.claimInterface(mInterface, true)) {
-        	isConnectionOpen = false;
+            isConnectionOpen = false;
             throw new IOException("Could not claim data interface.");
         }
 
@@ -75,7 +68,9 @@ public class UsbHidDriver extends CommonUsbDriver {
 
     @Override
     public void close() {
-        mConnection.close();
+        if (mConnection != null) {
+            mConnection.close();
+        }
         isConnectionOpen = false;
     }
 
@@ -136,8 +131,8 @@ public class UsbHidDriver extends CommonUsbDriver {
         return offset;
     }
 
-    @Override 
-    public boolean isConnectionOpen(){
-    	return isConnectionOpen;
+    @Override
+    public boolean isConnectionOpen() {
+        return isConnectionOpen;
     }
 }
-- 
GitLab