From 8a3fc19285865dd37690e793e1580f30aeeaee6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20B=C3=B6hler?= Date: Mon, 18 Oct 2021 18:23:35 +0200 Subject: [PATCH] Add support for Casio STB-1000. Limitations of GB-5600B/GB-6900B apply. --- .../devices/casio/CasioConstants.java | 3 +- .../gb6900/CasioGB6900DeviceCoordinator.java | 3 +- .../casio/CasioGB6900DeviceSupport.java | 46 +++++++++++++++---- 3 files changed, 42 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/CasioConstants.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/CasioConstants.java index 8011bf8da..967c3ebdf 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/CasioConstants.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/CasioConstants.java @@ -116,7 +116,8 @@ public final class CasioConstants { MODEL_CASIO_GENERIC, MODEL_CASIO_6900B, MODEL_CASIO_5600B, - MODEL_CASIO_GBX100 + MODEL_CASIO_GBX100, + MODEL_CASIO_STB1000, } public enum ConfigurationOption { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gb6900/CasioGB6900DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gb6900/CasioGB6900DeviceCoordinator.java index 09445a5a9..7de0c53cd 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gb6900/CasioGB6900DeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/casio/gb6900/CasioGB6900DeviceCoordinator.java @@ -48,7 +48,8 @@ public class CasioGB6900DeviceCoordinator extends AbstractDeviceCoordinator { public DeviceType getSupportedType(GBDeviceCandidate candidate) { String name = candidate.getDevice().getName(); if (name != null) { - if (name.startsWith("CASIO") && (name.contains("6900B") || name.contains("5600B"))) { + if (name.startsWith("CASIO") && (name.contains("6900B") || name.contains("5600B") || + name.contains("STB-1000"))) { return DeviceType.CASIOGB6900; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/CasioGB6900DeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/CasioGB6900DeviceSupport.java index 7a81574ef..bb0bb8b14 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/CasioGB6900DeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/CasioGB6900DeviceSupport.java @@ -153,19 +153,21 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport { mModel = CasioConstants.Model.MODEL_CASIO_5600B; } else if(name.contains("6900B")) { mModel = CasioConstants.Model.MODEL_CASIO_6900B; + } else if(name.contains("STB-1000")) { + mModel = CasioConstants.Model.MODEL_CASIO_STB1000; } else { mModel = CasioConstants.Model.MODEL_CASIO_GENERIC; } - try { - new InitOperationGB6900(this, builder).perform(); - } catch (IOException e) { - GB.toast(getContext(), "Initializing Casio watch failed", Toast.LENGTH_SHORT, GB.ERROR, e); + // We skip configuring BLE settings for the STB-1000 since it powers off + // BLE on the watch. + if(mModel != CasioConstants.Model.MODEL_CASIO_STB1000) { + try { + new InitOperationGB6900(this, builder).perform(); + } catch (IOException e) { + GB.toast(getContext(), "Initializing Casio watch failed", Toast.LENGTH_SHORT, GB.ERROR, e); + } } - /* - gbDevice.setState(GBDevice.State.INITIALIZING); - gbDevice.sendDeviceUpdateIntent(getContext()); - */ getDevice().setFirmwareVersion("N/A"); getDevice().setFirmwareVersion2("N/A"); @@ -779,6 +781,31 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport { return true; } + private GBDeviceEventMusicControl.Event parse5Button(int button) { + GBDeviceEventMusicControl.Event event; + switch(button) { + case 5: + event = GBDeviceEventMusicControl.Event.PLAYPAUSE; + break; + case 4: + event = GBDeviceEventMusicControl.Event.NEXT; + break; + case 3: + event = GBDeviceEventMusicControl.Event.VOLUMEUP; + break; + case 2: + event = GBDeviceEventMusicControl.Event.PREVIOUS; + break; + case 1: + event = GBDeviceEventMusicControl.Event.VOLUMEDOWN; + break; + default: + LOG.warn("Unhandled button received: " + button); + event = GBDeviceEventMusicControl.Event.UNKNOWN; + } + return event; + } + private GBDeviceEventMusicControl.Event parse3Button(int button) { GBDeviceEventMusicControl.Event event; switch(button) { @@ -835,6 +862,9 @@ public class CasioGB6900DeviceSupport extends AbstractBTLEDeviceSupport { case MODEL_CASIO_6900B: musicCmd.event = parse3Button(button); break; + case MODEL_CASIO_STB1000: + musicCmd.event = parse5Button(button); + break; case MODEL_CASIO_GENERIC: musicCmd.event = parse3Button(button); break;