From c9da7548edb38ebed102635030c19193636fa99b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joa=CC=83o=20Paulo=20Barraca?= Date: Thu, 27 Apr 2017 00:19:59 +0100 Subject: [PATCH] HPlus: Improve reconnection to device --- .../devices/hplus/HPlusHandlerThread.java | 9 ++++---- .../service/devices/hplus/HPlusSupport.java | 21 +++++++++---------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusHandlerThread.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusHandlerThread.java index 00911584..28668f2e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusHandlerThread.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusHandlerThread.java @@ -123,6 +123,10 @@ class HPlusHandlerThread extends GBDeviceIoThread { break; } + if(gbDevice.getState() == GBDevice.State.NOT_CONNECTED){ + quit(); + } + Calendar now = GregorianCalendar.getInstance(); if (now.compareTo(mGetDaySlotsTime) > 0) { @@ -138,7 +142,6 @@ class HPlusHandlerThread extends GBDeviceIoThread { } if(now.compareTo(mHelloTime) > 0){ - LOG.info("Sending hello"); sendHello(); } @@ -155,10 +158,6 @@ class HPlusHandlerThread extends GBDeviceIoThread { synchronized (waitObject) { waitObject.notify(); } - StackTraceElement l[] = Thread.currentThread().getStackTrace(); - for(StackTraceElement e: l){ - LOG.warn(e.toString()); - } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusSupport.java index d828325d..8a73fdf1 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusSupport.java @@ -38,6 +38,7 @@ import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.List; @@ -59,9 +60,7 @@ import nodomain.freeyourgadget.gadgetbridge.model.MusicStateSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec; import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEDeviceSupport; -import nodomain.freeyourgadget.gadgetbridge.service.btle.GattService; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; -import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceStateAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.deviceinfo.DeviceInfo; import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.deviceinfo.DeviceInfoProfile; import nodomain.freeyourgadget.gadgetbridge.util.GB; @@ -91,7 +90,7 @@ public class HPlusSupport extends AbstractBTLEDeviceSupport { public HPlusSupport(DeviceType type) { super(LOG); - + LOG.info("HPlusSupport Instance Created"); deviceType = type; addSupportedService(HPlusConstants.UUID_SERVICE_HP); @@ -117,26 +116,26 @@ public class HPlusSupport extends AbstractBTLEDeviceSupport { protected TransactionBuilder initializeDevice(TransactionBuilder builder) { LOG.info("Initializing"); - builder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZING, getContext())); + gbDevice.setState(GBDevice.State.INITIALIZING); + gbDevice.sendDeviceUpdateIntent(getContext()); measureCharacteristic = getCharacteristic(HPlusConstants.UUID_CHARACTERISTIC_MEASURE); ctrlCharacteristic = getCharacteristic(HPlusConstants.UUID_CHARACTERISTIC_CONTROL); - //Initialize device - sendUserInfo(builder); //Sync preferences builder.notify(getCharacteristic(HPlusConstants.UUID_CHARACTERISTIC_MEASURE), true); builder.setGattCallback(this); builder.notify(measureCharacteristic, true); - builder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZED, getContext())); + //Initialize device + sendUserInfo(builder); //Sync preferences - if(syncHelper != null){ - syncHelper.setHPlusSupport(this); - }else { + gbDevice.setState(GBDevice.State.INITIALIZED); + gbDevice.sendDeviceUpdateIntent(getContext()); + + if(syncHelper == null) { syncHelper = new HPlusHandlerThread(getDevice(), getContext(), this); syncHelper.start(); } - syncHelper.sync(); getDevice().setFirmwareVersion("N/A");