From 014b45369365678f64b40552721a3eac6197de38 Mon Sep 17 00:00:00 2001 From: Vitaliy Tomin Date: Sun, 10 Mar 2024 16:02:09 +0800 Subject: [PATCH] [Huawei] Add Huawei Watch GT4 support --- .../devices/huawei/HuaweiConstants.java | 3 +- .../HuaweiWatchGT4Coordinator.java | 58 +++++++++++++++++++ .../gadgetbridge/model/DeviceType.java | 2 + app/src/main/res/values/strings.xml | 1 + 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt4/HuaweiWatchGT4Coordinator.java diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiConstants.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiConstants.java index 78f728497..211bd4ce9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiConstants.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiConstants.java @@ -1,4 +1,4 @@ -/* Copyright (C) 2024 Damien Gaignon +/* Copyright (C) 2024 Damien Gaignon, Vitalii Tomin This file is part of Gadgetbridge. @@ -64,6 +64,7 @@ public final class HuaweiConstants { public static final String HU_BAND8_NAME = "huawei band 8-"; public static final String HU_WATCHGT3_NAME = "huawei watch gt 3-"; public static final String HU_WATCHGT3PRO_NAME = "huawei watch gt 3 pro-"; + public static final String HU_WATCHGT4_NAME = "huawei watch gt 4-"; public static final String HU_WATCHFIT_NAME = "huawei watch fit-"; public static final String PREF_HUAWEI_ADDRESS = "huawei_address"; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt4/HuaweiWatchGT4Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt4/HuaweiWatchGT4Coordinator.java new file mode 100644 index 000000000..df946ed06 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt4/HuaweiWatchGT4Coordinator.java @@ -0,0 +1,58 @@ +/* Copyright (C) 2024 Vitalii Tomin + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + 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.huawei.huaweiwatchgt4; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.regex.Pattern; + +import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiBRCoordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; +import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; + +public class HuaweiWatchGT4Coordinator extends HuaweiBRCoordinator { + private static final Logger LOG = LoggerFactory.getLogger(HuaweiWatchGT4Coordinator.class); + + public HuaweiWatchGT4Coordinator() { + super(); + getHuaweiCoordinator().setTransactionCrypted(true); + } + + @Override + public DeviceType getDeviceType() { + return DeviceType.HUAWEIWATCHGT4; + } + + @Override + protected Pattern getSupportedDeviceName() { + return Pattern.compile("(" + HuaweiConstants.HU_WATCHGT4_NAME + ").*", Pattern.CASE_INSENSITIVE); + } + + @Override + public int[] getSupportedDeviceSpecificSettings(GBDevice device) { + return getHuaweiCoordinator().genericHuaweiSupportedDeviceSpecificSettings(null); + } + + @Override + public int getDeviceNameResource() { + return R.string.devicetype_huawei_watchgt4; + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java index 0774db01e..c7e3dedc1 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java @@ -123,6 +123,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiwatchgt.HuaweiW import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiwatchgt2.HuaweiWatchGT2Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiwatchgt2e.HuaweiWatchGT2eCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiwatchgt3.HuaweiWatchGT3Coordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiwatchgt4.HuaweiWatchGT4Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.id115.ID115Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.itag.ITagCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.jyou.BFH16DeviceCoordinator; @@ -358,6 +359,7 @@ public enum DeviceType { HONORBAND7(HonorBand7Coordinator.class), HONORMAGICWATCH2(HonorMagicWatch2Coordinator.class), HUAWEIWATCHGT3(HuaweiWatchGT3Coordinator.class), + HUAWEIWATCHGT4(HuaweiWatchGT4Coordinator.class), HUAWEIBAND8(HuaweiBand8Coordinator.class), HUAWEIWATCHFIT(HuaweiWatchFitCoordinator.class), VESC(VescCoordinator.class), diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 140f753fd..0147c054a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1543,6 +1543,7 @@ Huawei Watch GT 2e Huawei Talk Band B6 Huawei Watch GT 3 (Pro) + Huawei Watch GT 4 Huawei Watch Fit Femometer Vinca II Xiaomi Watch Lite