From 39ea1774a4ee01502d241ceff245a77362108092 Mon Sep 17 00:00:00 2001 From: Damien 'Psolyca' Gaignon Date: Wed, 8 May 2024 22:46:46 +0200 Subject: [PATCH] [Huawei] Add Huawei Band 9 gadget --- .../devices/huawei/HuaweiConstants.java | 1 + .../huaweiband9/HuaweiBand9Coordinator.java | 71 +++++++++++++++++++ .../gadgetbridge/model/DeviceType.java | 2 + app/src/main/res/values/strings.xml | 1 + 4 files changed, 75 insertions(+) create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband9/HuaweiBand9Coordinator.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 2e255e6c4..c822b9808 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 @@ -62,6 +62,7 @@ public final class HuaweiConstants { public static final String HU_TALKBANDB6_NAME = "huawei b6-"; public static final String HU_BAND7_NAME = "huawei band 7-"; public static final String HU_BAND8_NAME = "huawei band 8-"; + public static final String HU_BAND9_NAME = "huawei band 9-"; 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-"; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband9/HuaweiBand9Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband9/HuaweiBand9Coordinator.java new file mode 100644 index 000000000..951d81d0f --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband9/HuaweiBand9Coordinator.java @@ -0,0 +1,71 @@ +/* Copyright (C) 2024 Damien Gaignon, Martin.JM + + 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.huaweiband9; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.regex.Pattern; + +import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.devices.TimeSampleProvider; +import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiConstants; +import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiLECoordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.huawei.HuaweiSpo2SampleProvider; +import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; +import nodomain.freeyourgadget.gadgetbridge.model.Spo2Sample; + +public class HuaweiBand9Coordinator extends HuaweiLECoordinator { + private static final Logger LOG = LoggerFactory.getLogger(HuaweiBand9Coordinator.class); + + @Override + public boolean isExperimental() { + return true; + } + + @Override + public DeviceType getDeviceType() { + return DeviceType.HUAWEIBAND9; + } + + @Override + protected Pattern getSupportedDeviceName() { + return Pattern.compile(HuaweiConstants.HU_BAND9_NAME + ".*", Pattern.CASE_INSENSITIVE); + } + + @Override + public boolean supportsHeartRateMeasurement(GBDevice device) { + return true; + } + + @Override + public boolean supportsSpo2() { + return true; + } + + @Override + public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { + return new HuaweiSpo2SampleProvider(device, session); + } + + @Override + public int getDeviceNameResource() { + return R.string.devicetype_huawei_band8; + } +} 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 0f2126309..ee20b2d8f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java @@ -116,6 +116,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiband4pro.Huawei import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiband6.HuaweiBand6Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiband7.HuaweiBand7Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiband8.HuaweiBand8Coordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiband9.HuaweiBand9Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweibandaw70.HuaweiBandAw70Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweitalkbandb6.HuaweiTalkBandB6Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.huawei.huaweiwatch4pro.HuaweiWatch4ProCoordinator; @@ -370,6 +371,7 @@ public enum DeviceType { HUAWEIWATCHGT3(HuaweiWatchGT3Coordinator.class), HUAWEIWATCHGT4(HuaweiWatchGT4Coordinator.class), HUAWEIBAND8(HuaweiBand8Coordinator.class), + HUAWEIBAND9(HuaweiBand9Coordinator.class), HUAWEIWATCHFIT(HuaweiWatchFitCoordinator.class), HUAWEIWATCHFIT2(HuaweiWatchFit2Coordinator.class), HUAWEIWATCHFIT3(HuaweiWatchFit3Coordinator.class), diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d63d58377..a8e2c00af 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1549,6 +1549,7 @@ Huawei Band 6 Huawei Band 7 Huawei Band 8 + Huawei Band 9 Huawei Watch GT Huawei Band 4 (Pro) Huawei Watch GT 2 (Pro)