diff --git a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java index e897ef8fb36da16a096f1e38f41a47c6e76ba823..778c78149b94b4f67d5b2c7a441ed1f74beebe11 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java +++ b/app/src/main/java/info/nightscout/android/medtronic/service/MedtronicCnlIntentService.java @@ -128,30 +128,7 @@ public class MedtronicCnlIntentService extends IntentService { pollInterval = configurationStore.getLowBatteryPollInterval(); } - if (!hasUsbHostFeature()) { - sendStatus("It appears that this device doesn't support USB OTG."); - Log.e(TAG, "Device does not support USB OTG"); - // TODO - throw, don't return - return; - } - - UsbDevice cnlStick = UsbHidDriver.getUsbDevice(mUsbManager, USB_VID, USB_PID); - if (cnlStick == null) { - sendStatus("USB connection error. Is the Contour Next Link plugged in?"); - Log.w(TAG, "USB connection error. Is the CNL plugged in?"); - - // TODO - set status if offline or Nightscout not reachable - uploadToNightscout(); - // TODO - throw, don't return - return; - } - - if (!mUsbManager.hasPermission(UsbHidDriver.getUsbDevice(mUsbManager, USB_VID, USB_PID))) { - sendMessage(Constants.ACTION_NO_USB_PERMISSION); - // TODO - throw, don't return - return; - } - mHidDevice = UsbHidDriver.acquire(mUsbManager, cnlStick); + if (!acquireUsbDevice()) return; try { mHidDevice.open(); @@ -366,6 +343,34 @@ public class MedtronicCnlIntentService extends IntentService { } } + private boolean acquireUsbDevice() { + if (!hasUsbHostFeature()) { + sendStatus("It appears that this device doesn't support USB OTG."); + Log.e(TAG, "Device does not support USB OTG"); + // TODO - throw, don't return + return false; + } + + UsbDevice cnlStick = UsbHidDriver.getUsbDevice(mUsbManager, USB_VID, USB_PID); + if (cnlStick == null) { + sendStatus("USB connection error. Is the Contour Next Link plugged in?"); + Log.w(TAG, "USB connection error. Is the CNL plugged in?"); + + // TODO - set status if offline or Nightscout not reachable + uploadToNightscout(); + // TODO - throw, don't return + return false; + } + + if (!mUsbManager.hasPermission(UsbHidDriver.getUsbDevice(mUsbManager, USB_VID, USB_PID))) { + sendMessage(Constants.ACTION_NO_USB_PERMISSION); + // TODO - throw, don't return + return false; + } + mHidDevice = UsbHidDriver.acquire(mUsbManager, cnlStick); + return true; + } + // reliable wake alarm manager wake up for all android versions public static void wakeUpIntent(Context context, long wakeTime, PendingIntent pendingIntent) { final AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);