From 9d3f3c57cd68408e453fbdd86ae26ed1ce1cea5a Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Sat, 4 Jun 2016 21:50:26 +0200 Subject: [PATCH] Pebble: make disabling of appmessage handlers more generic Also disable morpheuz handler if morpheuz is not the chosen activity tracker .... and bump reported version to 3.12 to match the latest pebble release --- .../service/devices/pebble/AppMessageHandler.java | 4 ++++ .../devices/pebble/AppMessageHandlerMisfit.java | 8 ++------ .../devices/pebble/AppMessageHandlerMorpheuz.java | 8 ++++++++ .../service/devices/pebble/PebbleProtocol.java | 14 +++++++++----- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandler.java index 26d55f73..710178f9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandler.java @@ -17,6 +17,10 @@ public class AppMessageHandler { mPebbleProtocol = pebbleProtocol; } + public boolean isEnabled() { + return true; + } + public UUID getUUID() { return mUUID; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerMisfit.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerMisfit.java index f98452c9..2e33b4a5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerMisfit.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerMisfit.java @@ -43,7 +43,8 @@ public class AppMessageHandlerMisfit extends AppMessageHandler { private final MisfitSampleProvider sampleProvider = new MisfitSampleProvider(); - private boolean isMisfitEnabled() { + @Override + public boolean isEnabled() { Prefs prefs = GBApplication.getPrefs(); int activityTracker = prefs.getInt("pebble_activitytracker", SampleProvider.PROVIDER_PEBBLE_HEALTH); return (activityTracker == SampleProvider.PROVIDER_PEBBLE_MISFIT); @@ -51,11 +52,6 @@ public class AppMessageHandlerMisfit extends AppMessageHandler { @Override public GBDeviceEvent[] handleMessage(ArrayList> pairs) { - - if (!isMisfitEnabled()) { - return new GBDeviceEvent[] {null}; - } - for (Pair pair : pairs) { switch (pair.first) { case KEY_INCOMING_DATA_BEGIN: diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerMorpheuz.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerMorpheuz.java index 3c6517d6..a9f1d9cb 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerMorpheuz.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/AppMessageHandlerMorpheuz.java @@ -18,6 +18,7 @@ import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSendBytes; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventSleepMonitorResult; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.pebble.MorpheuzSampleProvider; +import nodomain.freeyourgadget.gadgetbridge.util.Prefs; public class AppMessageHandlerMorpheuz extends AppMessageHandler { @@ -56,6 +57,13 @@ public class AppMessageHandlerMorpheuz extends AppMessageHandler { return mPebbleProtocol.encodeApplicationMessagePush(PebbleProtocol.ENDPOINT_APPLICATIONMESSAGE, mUUID, pairs); } + @Override + public boolean isEnabled() { + Prefs prefs = GBApplication.getPrefs(); + int activityTracker = prefs.getInt("pebble_activitytracker", SampleProvider.PROVIDER_PEBBLE_HEALTH); + return (activityTracker == SampleProvider.PROVIDER_PEBBLE_MORPHEUZ); + } + @Override public GBDeviceEvent[] handleMessage(ArrayList> pairs) { int ctrl_message = 0; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleProtocol.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleProtocol.java index f44f8dba..6938c45c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleProtocol.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pebble/PebbleProtocol.java @@ -1258,10 +1258,10 @@ public class PebbleProtocol extends GBDeviceProtocol { buf.put(PHONEVERSION_APPVERSION_MAGIC); buf.put((byte) 3); // major - buf.put((byte) 8); // minor - buf.put((byte) 1); // patch + buf.put((byte) 12); // minor + buf.put((byte) 0); // patch buf.order(ByteOrder.LITTLE_ENDIAN); - buf.putLong(0x00000000000000af); //flags + buf.putLong(0x00000000000001af); //flags return buf.array(); } @@ -2116,8 +2116,12 @@ public class PebbleProtocol extends GBDeviceProtocol { AppMessageHandler handler = mAppMessageHandlers.get(uuid); if (handler != null) { - ArrayList> dict = decodeDict(buf); - devEvts = handler.handleMessage(dict); + if (handler.isEnabled()) { + ArrayList> dict = decodeDict(buf); + devEvts = handler.handleMessage(dict); + } else { + devEvts = new GBDeviceEvent[]{null}; + } } else { try { devEvts = decodeDictToJSONAppMessage(uuid, buf);