diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBand2Service.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBand2Service.java index ac6ae9088..15825348e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBand2Service.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/MiBand2Service.java @@ -48,7 +48,7 @@ public class MiBand2Service { public static final UUID UUID_CHARACTERISTIC_8_USER_SETTINGS = UUID.fromString("00000008-0000-3512-2118-0009af100700"); // service uuid fee1 public static final UUID UUID_CHARACTERISTIC_AUTH = UUID.fromString("00000009-0000-3512-2118-0009af100700"); - public static final UUID UUID_CHARACTERISTIC_10_BUTTON = UUID.fromString("00000010-0000-3512-2118-0009af100700"); + public static final UUID UUID_CHARACTERISTIC_DEVICEEVENT = UUID.fromString("00000010-0000-3512-2118-0009af100700"); public static final int ALERT_LEVEL_NONE = 0; public static final int ALERT_LEVEL_MESSAGE = 1; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband2/MiBand2FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband2/MiBand2FWInstallHandler.java index d0ecec252..95cfc5f52 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband2/MiBand2FWInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband2/MiBand2FWInstallHandler.java @@ -31,7 +31,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInsta import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandConst; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; -import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.FirmwareType; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareType; import nodomain.freeyourgadget.gadgetbridge.util.Version; public class MiBand2FWInstallHandler extends AbstractMiBandFWInstallHandler { @@ -49,16 +49,16 @@ public class MiBand2FWInstallHandler extends AbstractMiBandFWInstallHandler { } private void maybeAddFontHint(InstallActivity installActivity) { - FirmwareType type = getFirmwareType(); - if (type == FirmwareType.FIRMWARE) { + HuamiFirmwareType type = getFirmwareType(); + if (type == HuamiFirmwareType.FIRMWARE) { String newInfoText = installActivity.getInfoText() + "\n\n" + "Note: you may install Mili_pro.ft or Mili_pro.ft.en to enable text notifications."; installActivity.setInfoText(newInfoText); } } private void maybeAddFw53Hint(InstallActivity installActivity, GBDevice device) { - FirmwareType type = getFirmwareType(); - if (type != FirmwareType.FIRMWARE) { + HuamiFirmwareType type = getFirmwareType(); + if (type != HuamiFirmwareType.FIRMWARE) { return; } @@ -91,12 +91,12 @@ public class MiBand2FWInstallHandler extends AbstractMiBandFWInstallHandler { } } - private FirmwareType getFirmwareType() { + private HuamiFirmwareType getFirmwareType() { AbstractMiBandFWHelper helper = getHelper(); if (helper instanceof MiBand2FWHelper) { return ((MiBand2FWHelper) helper).getFirmwareInfo().getFirmwareType(); } - return FirmwareType.INVALID; + return HuamiFirmwareType.INVALID; } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipFirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipFirmwareInfo.java index c23216a17..744dcdd3b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipFirmwareInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipFirmwareInfo.java @@ -18,7 +18,7 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.amazfitbip; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; -import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.FirmwareType; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareType; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.Mi2FirmwareInfo; import nodomain.freeyourgadget.gadgetbridge.util.ArrayUtils; @@ -73,24 +73,24 @@ public class AmazfitBipFirmwareInfo extends Mi2FirmwareInfo { } @Override - protected FirmwareType determineFirmwareType(byte[] bytes) { + protected HuamiFirmwareType determineFirmwareType(byte[] bytes) { if (ArrayUtils.startsWith(bytes, RES_HEADER)) { - return FirmwareType.RES; + return HuamiFirmwareType.RES; } if (ArrayUtils.startsWith(bytes, GPS_HEADER)) { - return FirmwareType.GPS; + return HuamiFirmwareType.GPS; } if (ArrayUtils.startsWith(bytes, GPS_ALMANAC_HEADER)) { - return FirmwareType.GPS_ALMANAC; + return HuamiFirmwareType.GPS_ALMANAC; } if (ArrayUtils.startsWith(bytes, GPS_CEP_HEADER)) { - return FirmwareType.GPS_CEP; + return HuamiFirmwareType.GPS_CEP; } if (ArrayUtils.equals(bytes, FW_HEADER, FW_HEADER_OFFSET)) { // TODO: this is certainly not a correct validation, but it works for now - return FirmwareType.FIRMWARE; + return HuamiFirmwareType.FIRMWARE; } - return FirmwareType.INVALID; + return HuamiFirmwareType.INVALID; } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java index 7b581a8f3..5db13c110 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipSupport.java @@ -31,11 +31,10 @@ import java.util.Locale; import java.util.SimpleTimeZone; import java.util.UUID; -import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCallControl; import nodomain.freeyourgadget.gadgetbridge.devices.amazfitbip.AmazfitBipService; import nodomain.freeyourgadget.gadgetbridge.devices.amazfitbip.AmazfitBipWeatherConditions; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBand2Service; -import nodomain.freeyourgadget.gadgetbridge.devices.miband2.MiBand2Icon; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiIcon; import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; import nodomain.freeyourgadget.gadgetbridge.model.NotificationType; @@ -87,7 +86,7 @@ public class AmazfitBipSupport extends MiBand2Support { AlertNotificationProfile profile = new AlertNotificationProfile(this); profile.setMaxLength(230); - byte customIconId = MiBand2Icon.mapToIconId(notificationSpec.type); + byte customIconId = HuamiIcon.mapToIconId(notificationSpec.type); AlertCategory alertCategory = AlertCategory.CustomMiBand2; @@ -96,7 +95,7 @@ public class AmazfitBipSupport extends MiBand2Support { alertCategory = AlertCategory.SMS; } // EMAIL icon does not work in FW 0.0.8.74, it did in 0.0.7.90 - else if (customIconId == MiBand2Icon.EMAIL) { + else if (customIconId == HuamiIcon.EMAIL) { alertCategory = AlertCategory.Email; } @@ -117,48 +116,8 @@ public class AmazfitBipSupport extends MiBand2Support { } @Override - public void handleButtonPressed(byte[] value) { - if (value == null || value.length != 1) { - return; - } - GBDeviceEventCallControl callCmd = new GBDeviceEventCallControl(); - - switch (value[0]) { - case AmazfitBipEvent.CALL_REJECT: - callCmd.event = GBDeviceEventCallControl.Event.REJECT; - evaluateGBDeviceEvent(callCmd); - break; - case AmazfitBipEvent.CALL_ACCEPT: - callCmd.event = GBDeviceEventCallControl.Event.ACCEPT; - evaluateGBDeviceEvent(callCmd); - break; - case AmazfitBipEvent.BUTTON_PRESSED: - LOG.info("button pressed"); - break; - case AmazfitBipEvent.BUTTON_PRESSED_LONG: - LOG.info("button long-pressed "); - break; - case AmazfitBipEvent.START_NONWEAR: - LOG.info("non-wear start detected"); - break; - case AmazfitBipEvent.ALARM_TOGGLED: - LOG.info("An alarm was toggled"); // TODO: sync alarms watch -> GB - break; - case AmazfitBipEvent.FELL_ASLEEP: - LOG.info("Fell asleep"); - break; - case AmazfitBipEvent.WOKE_UP: - LOG.info("Woke up"); - break; - case AmazfitBipEvent.STEPSGOAL_REACHED: - LOG.info("Steps goal reached"); - break; - case AmazfitBipEvent.TICK_30MIN: - LOG.info("Tick 30 min (?)"); - break; - default: - LOG.warn("unhandled event " + value[0]); - } + public void handleButtonEvent() { + // ignore } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipEvent.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiDeviceEvent.java similarity index 92% rename from app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipEvent.java rename to app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiDeviceEvent.java index 4211c1472..db087979c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipEvent.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiDeviceEvent.java @@ -14,10 +14,10 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package nodomain.freeyourgadget.gadgetbridge.service.devices.amazfitbip; +package nodomain.freeyourgadget.gadgetbridge.service.devices.huami; -public class AmazfitBipEvent { +public class HuamiDeviceEvent { public static final byte FELL_ASLEEP = 0x01; public static final byte WOKE_UP = 0x02; public static final byte STEPSGOAL_REACHED = 0x03; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/FirmwareType.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareType.java similarity index 86% rename from app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/FirmwareType.java rename to app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareType.java index 34b09f286..7b6a6a054 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/FirmwareType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareType.java @@ -14,12 +14,11 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package nodomain.freeyourgadget.gadgetbridge.service.devices.miband2; +package nodomain.freeyourgadget.gadgetbridge.service.devices.huami; -public enum FirmwareType { +public enum HuamiFirmwareType { FIRMWARE((byte) 0), FONT((byte) 1), - // Amazfit Bip only from here on RES((byte) 2), GPS((byte) 3), GPS_CEP((byte) 4), @@ -28,7 +27,7 @@ public enum FirmwareType { private final byte value; - FirmwareType(byte value) { + HuamiFirmwareType(byte value) { this.value = value; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband2/MiBand2Icon.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiIcon.java similarity index 97% rename from app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband2/MiBand2Icon.java rename to app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiIcon.java index 4b6869a47..2e388ab1a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband2/MiBand2Icon.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiIcon.java @@ -15,12 +15,12 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package nodomain.freeyourgadget.gadgetbridge.devices.miband2; +package nodomain.freeyourgadget.gadgetbridge.service.devices.huami; import nodomain.freeyourgadget.gadgetbridge.model.NotificationType; -public class MiBand2Icon { +public class HuamiIcon { // icons which are unsure which app they are for are suffixed with _NN public static final byte WECHAT = 0; public static final byte PENGUIN_1 = 1; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2FirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2FirmwareInfo.java index ff13165d3..afd7a9716 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2FirmwareInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2FirmwareInfo.java @@ -21,6 +21,7 @@ import java.util.Map; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareType; import nodomain.freeyourgadget.gadgetbridge.util.ArrayUtils; import nodomain.freeyourgadget.gadgetbridge.util.CheckSums; @@ -67,7 +68,7 @@ public class Mi2FirmwareInfo { crcToVersion.put(6377, "Font (En)"); } - private FirmwareType firmwareType = FirmwareType.FIRMWARE; + private HuamiFirmwareType firmwareType = HuamiFirmwareType.FIRMWARE; public static String toVersion(int crc16) { return crcToVersion.get(crc16); @@ -89,15 +90,15 @@ public class Mi2FirmwareInfo { firmwareType = determineFirmwareType(bytes); } - protected FirmwareType determineFirmwareType(byte[] bytes) { + protected HuamiFirmwareType determineFirmwareType(byte[] bytes) { if (ArrayUtils.startsWith(bytes, FT_HEADER)) { - return FirmwareType.FONT; + return HuamiFirmwareType.FONT; } if (ArrayUtils.equals(bytes, FW_HEADER, FW_HEADER_OFFSET)) { // TODO: this is certainly not a correct validation, but it works for now - return FirmwareType.FIRMWARE; + return HuamiFirmwareType.FIRMWARE; } - return FirmwareType.INVALID; + return HuamiFirmwareType.INVALID; } public boolean isGenerallyCompatibleWith(GBDevice device) { @@ -105,7 +106,7 @@ public class Mi2FirmwareInfo { } public boolean isHeaderValid() { - return getFirmwareType() != FirmwareType.INVALID; + return getFirmwareType() != HuamiFirmwareType.INVALID; } public void checkValid() throws IllegalArgumentException { @@ -131,7 +132,7 @@ public class Mi2FirmwareInfo { return getCrc16(); // HACK until we know how to determine the version from the fw bytes } - public FirmwareType getFirmwareType() { + public HuamiFirmwareType getFirmwareType() { return firmwareType; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2TextNotificationStrategy.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2TextNotificationStrategy.java index 3affdd36d..3be9596e6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2TextNotificationStrategy.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2TextNotificationStrategy.java @@ -19,9 +19,8 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.miband2; import android.bluetooth.BluetoothGattCharacteristic; import android.support.annotation.NonNull; -import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBand2Service; import nodomain.freeyourgadget.gadgetbridge.devices.miband.VibrationProfile; -import nodomain.freeyourgadget.gadgetbridge.devices.miband2.MiBand2Icon; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiIcon; import nodomain.freeyourgadget.gadgetbridge.service.btle.BLETypeConversions; import nodomain.freeyourgadget.gadgetbridge.service.btle.BtLEAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.GattCharacteristic; @@ -69,9 +68,9 @@ public class Mi2TextNotificationStrategy extends Mi2NotificationStrategy { case Email: return new byte[] { BLETypeConversions.fromUint8(AlertCategory.Email.getId()), BLETypeConversions.fromUint8(numAlerts)}; case InstantMessage: - return new byte[] { BLETypeConversions.fromUint8(AlertCategory.CustomMiBand2.getId()), BLETypeConversions.fromUint8(numAlerts), MiBand2Icon.WECHAT}; + return new byte[] { BLETypeConversions.fromUint8(AlertCategory.CustomMiBand2.getId()), BLETypeConversions.fromUint8(numAlerts), HuamiIcon.WECHAT}; case News: - return new byte[] { BLETypeConversions.fromUint8(AlertCategory.CustomMiBand2.getId()), BLETypeConversions.fromUint8(numAlerts), MiBand2Icon.PENGUIN_1}; + return new byte[] { BLETypeConversions.fromUint8(AlertCategory.CustomMiBand2.getId()), BLETypeConversions.fromUint8(numAlerts), HuamiIcon.PENGUIN_1}; } } return new byte[] { BLETypeConversions.fromUint8(AlertCategory.SMS.getId()), BLETypeConversions.fromUint8(numAlerts)}; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java index 50607655c..84bbd91d5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java @@ -52,6 +52,7 @@ import nodomain.freeyourgadget.gadgetbridge.activities.SettingsActivity; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHelper; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventBatteryInfo; +import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventCallControl; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventVersionInfo; import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.devices.miband.DateTimeDisplay; @@ -94,6 +95,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.alertnotificat import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.deviceinfo.DeviceInfoProfile; import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.heartrate.HeartRateProfile; import nodomain.freeyourgadget.gadgetbridge.service.devices.common.SimpleNotification; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiDeviceEvent; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.NotificationStrategy; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.RealtimeSamplesSupport; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.actions.StopNotificationAction; @@ -263,7 +265,7 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport { public MiBand2Support enableFurtherNotifications(TransactionBuilder builder, boolean enable) { builder.notify(getCharacteristic(MiBand2Service.UUID_CHARACTERISTIC_3_CONFIGURATION), enable); builder.notify(getCharacteristic(MiBand2Service.UUID_CHARACTERISTIC_6_BATTERY_INFO), enable); - builder.notify(getCharacteristic(MiBand2Service.UUID_CHARACTERISTIC_10_BUTTON), enable); + builder.notify(getCharacteristic(MiBand2Service.UUID_CHARACTERISTIC_DEVICEEVENT), enable); BluetoothGattCharacteristic heartrateCharacteristic = getCharacteristic(GattCharacteristic.UUID_CHARACTERISTIC_HEART_RATE_MEASUREMENT); if (heartrateCharacteristic != null) { builder.notify(heartrateCharacteristic, enable); @@ -876,8 +878,52 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport { currentButtonPressTime = System.currentTimeMillis(); } - public void handleButtonPressed(byte[] value) { - LOG.info("Button pressed"); + public void handleDeviceEvent(byte[] value) { + if (value == null || value.length != 1) { + return; + } + GBDeviceEventCallControl callCmd = new GBDeviceEventCallControl(); + + switch (value[0]) { + case HuamiDeviceEvent.CALL_REJECT: + callCmd.event = GBDeviceEventCallControl.Event.REJECT; + evaluateGBDeviceEvent(callCmd); + break; + case HuamiDeviceEvent.CALL_ACCEPT: + callCmd.event = GBDeviceEventCallControl.Event.ACCEPT; + evaluateGBDeviceEvent(callCmd); + break; + case HuamiDeviceEvent.BUTTON_PRESSED: + LOG.info("button pressed"); + handleButtonEvent(); + break; + case HuamiDeviceEvent.BUTTON_PRESSED_LONG: + LOG.info("button long-pressed "); + break; + case HuamiDeviceEvent.START_NONWEAR: + LOG.info("non-wear start detected"); + break; + case HuamiDeviceEvent.ALARM_TOGGLED: + LOG.info("An alarm was toggled"); + break; + case HuamiDeviceEvent.FELL_ASLEEP: + LOG.info("Fell asleep"); + break; + case HuamiDeviceEvent.WOKE_UP: + LOG.info("Woke up"); + break; + case HuamiDeviceEvent.STEPSGOAL_REACHED: + LOG.info("Steps goal reached"); + break; + case HuamiDeviceEvent.TICK_30MIN: + LOG.info("Tick 30 min (?)"); + break; + default: + LOG.warn("unhandled event " + value[0]); + } + } + + public void handleButtonEvent() { ///logMessageContent(value); // If disabled we return from function immediately @@ -944,8 +990,8 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport { LOG.info("AUTHENTICATION?? " + characteristicUUID); logMessageContent(characteristic.getValue()); return true; - } else if (MiBand2Service.UUID_CHARACTERISTIC_10_BUTTON.equals(characteristicUUID)) { - handleButtonPressed(characteristic.getValue()); + } else if (MiBand2Service.UUID_CHARACTERISTIC_DEVICEEVENT.equals(characteristicUUID)) { + handleDeviceEvent(characteristic.getValue()); return true; } else if (MiBand2Service.UUID_CHARACTERISTIC_7_REALTIME_STEPS.equals(characteristicUUID)) { handleRealtimeSteps(characteristic.getValue()); @@ -958,10 +1004,6 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport { return false; } - private void handleUnknownCharacteristic(byte[] value) { - - } - @Override public boolean onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { @@ -980,8 +1022,8 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport { } else if (MiBand2Service.UUID_CHARACTERISTIC_7_REALTIME_STEPS.equals(characteristicUUID)) { handleRealtimeSteps(characteristic.getValue()); return true; - } else if (MiBand2Service.UUID_CHARACTERISTIC_10_BUTTON.equals(characteristicUUID)) { - handleButtonPressed(characteristic.getValue()); + } else if (MiBand2Service.UUID_CHARACTERISTIC_DEVICEEVENT.equals(characteristicUUID)) { + handleDeviceEvent(characteristic.getValue()); return true; } else { LOG.info("Unhandled characteristic read: " + characteristicUUID); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/operations/UpdateFirmwareOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/operations/UpdateFirmwareOperation.java index a616b8bdb..7cc1371c7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/operations/UpdateFirmwareOperation.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/operations/UpdateFirmwareOperation.java @@ -39,7 +39,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceBusyAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetProgressAction; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.AbstractMiBand2Operation; -import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.FirmwareType; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareType; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.Mi2FirmwareInfo; import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.MiBand2Support; import nodomain.freeyourgadget.gadgetbridge.util.GB; @@ -146,7 +146,7 @@ public class UpdateFirmwareOperation extends AbstractMiBand2Operation { break; } case MiBand2Service.COMMAND_FIRMWARE_CHECKSUM: { - if (getFirmwareInfo().getFirmwareType() == FirmwareType.FIRMWARE) { + if (getFirmwareInfo().getFirmwareType() == HuamiFirmwareType.FIRMWARE) { TransactionBuilder builder = performInitialized("reboot"); getSupport().sendReboot(builder); builder.queue(getQueue()); @@ -196,7 +196,7 @@ public class UpdateFirmwareOperation extends AbstractMiBand2Operation { int fwSize = getFirmwareInfo().getSize(); byte[] sizeBytes = BLETypeConversions.fromUint24(fwSize); int arraySize = 4; - boolean isFirmwareCode = getFirmwareInfo().getFirmwareType() == FirmwareType.FIRMWARE; + boolean isFirmwareCode = getFirmwareInfo().getFirmwareType() == HuamiFirmwareType.FIRMWARE; if (!isFirmwareCode) { arraySize++; }