From 149b6236a0a876b1a8adb282da3cbc4bb5c4dad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Fri, 22 Dec 2023 12:26:15 +0000 Subject: [PATCH] Mijia LYWSD: Make support class generic --- .../MijiaLywsd02Coordinator.java | 78 +------------------ .../gadgetbridge/model/DeviceType.java | 2 +- .../MijiaLywsdSupport.java} | 39 ++++------ 3 files changed, 18 insertions(+), 101 deletions(-) rename app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/{mijia_lywsd02 => mijia_lywsd}/MijiaLywsd02Coordinator.java (63%) rename app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/{mijia_lywsd02/MijiaLywsd02Support.java => mijia_lywsd/MijiaLywsdSupport.java} (85%) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd02/MijiaLywsd02Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd/MijiaLywsd02Coordinator.java similarity index 63% rename from app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd02/MijiaLywsd02Coordinator.java rename to app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd/MijiaLywsd02Coordinator.java index cad6d1c1f..2e0f30281 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd02/MijiaLywsd02Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/mijia_lywsd/MijiaLywsd02Coordinator.java @@ -15,9 +15,8 @@ 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.mijia_lywsd02; +package nodomain.freeyourgadget.gadgetbridge.devices.mijia_lywsd; -import android.app.Activity; import android.content.Context; import android.net.Uri; @@ -28,15 +27,11 @@ import java.util.regex.Pattern; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.devices.AbstractBLEDeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; -import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; import nodomain.freeyourgadget.gadgetbridge.entities.DaoSession; import nodomain.freeyourgadget.gadgetbridge.entities.Device; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate; -import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; -import nodomain.freeyourgadget.gadgetbridge.model.DeviceType; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; -import nodomain.freeyourgadget.gadgetbridge.service.devices.mijia_lywsd02.MijiaLywsd02Support; +import nodomain.freeyourgadget.gadgetbridge.service.devices.mijia_lywsd.MijiaLywsdSupport; public class MijiaLywsd02Coordinator extends AbstractBLEDeviceCoordinator { @Override @@ -49,11 +44,6 @@ public class MijiaLywsd02Coordinator extends AbstractBLEDeviceCoordinator { return BONDING_STYLE_NONE; } - @Override - public Class getPairingActivity() { - return null; - } - @Override public InstallHandler findInstallHandler(Uri uri, Context context) { return null; @@ -64,75 +54,15 @@ public class MijiaLywsd02Coordinator extends AbstractBLEDeviceCoordinator { return false; } - @Override - public boolean supportsActivityTracking() { - return false; - } - - @Override - public SampleProvider getSampleProvider(GBDevice device, DaoSession session) { - return null; - } - - @Override - public boolean supportsScreenshots() { - return false; - } - - @Override - public int getAlarmSlotCount(GBDevice device) { - return 0; - } - - @Override - public boolean supportsSmartWakeup(GBDevice device) { - return false; - } - - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return false; - } - @Override public String getManufacturer() { return "Xiaomi"; } - @Override - public boolean supportsAppsManagement(final GBDevice device) { - return false; - } - - @Override - public Class getAppsManagementActivity() { - return null; - } - - @Override - public boolean supportsCalendarEvents() { - return false; - } - - @Override - public boolean supportsRealtimeData() { - return false; - } - - @Override - public boolean supportsWeather() { - return false; - } - - @Override - public boolean supportsFindDevice() { - return false; - } - @NonNull @Override public Class getDeviceSupportClass() { - return MijiaLywsd02Support.class; + return MijiaLywsdSupport.class; } @Override @@ -147,13 +77,11 @@ public class MijiaLywsd02Coordinator extends AbstractBLEDeviceCoordinator { // nothing to delete, yet } - @Override public int getDeviceNameResource() { return R.string.devicetype_mijia_lywsd02; } - @Override public int getDefaultIconResource() { return R.drawable.ic_device_pebble; 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 4a9bdf251..455bb629a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java @@ -109,7 +109,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.lenovo.watchxplus.WatchXPlus import nodomain.freeyourgadget.gadgetbridge.devices.liveview.LiveviewCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.makibeshr3.MakibesHR3Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandCoordinator; -import nodomain.freeyourgadget.gadgetbridge.devices.mijia_lywsd02.MijiaLywsd02Coordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.mijia_lywsd.MijiaLywsd02Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.miscale2.MiScale2DeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.no1f1.No1F1Coordinator; import nodomain.freeyourgadget.gadgetbridge.devices.nothing.Ear1Coordinator; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/mijia_lywsd02/MijiaLywsd02Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/mijia_lywsd/MijiaLywsdSupport.java similarity index 85% rename from app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/mijia_lywsd02/MijiaLywsd02Support.java rename to app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/mijia_lywsd/MijiaLywsdSupport.java index 01a6ee7de..db83af7ad 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/mijia_lywsd02/MijiaLywsd02Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/mijia_lywsd/MijiaLywsdSupport.java @@ -1,5 +1,5 @@ /* Copyright (C) 2016-2021 Andreas Shimokawa, Carsten Pfeiffer, Sebastian - Kranz, Davis Mosenkovs + Kranz, Davis Mosenkovs, José Rebelo This file is part of Gadgetbridge. @@ -15,19 +15,17 @@ 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.mijia_lywsd02; +package nodomain.freeyourgadget.gadgetbridge.service.devices.mijia_lywsd; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattCharacteristic; import android.content.Intent; -import android.net.Uri; import android.widget.Toast; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; -import java.util.ArrayList; import java.util.Objects; import java.util.SimpleTimeZone; import java.util.UUID; @@ -37,32 +35,23 @@ import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSett import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventBatteryInfo; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventVersionInfo; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.model.Alarm; import nodomain.freeyourgadget.gadgetbridge.model.BatteryState; -import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; -import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; -import nodomain.freeyourgadget.gadgetbridge.model.CannedMessagesSpec; -import nodomain.freeyourgadget.gadgetbridge.model.MusicSpec; -import nodomain.freeyourgadget.gadgetbridge.model.MusicStateSpec; -import nodomain.freeyourgadget.gadgetbridge.model.NotificationSpec; -import nodomain.freeyourgadget.gadgetbridge.model.WeatherSpec; import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEDeviceSupport; import nodomain.freeyourgadget.gadgetbridge.service.btle.GattService; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceStateAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.IntentListener; -import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.battery.BatteryInfoProfile; import nodomain.freeyourgadget.gadgetbridge.service.btle.profiles.deviceinfo.DeviceInfoProfile; import nodomain.freeyourgadget.gadgetbridge.util.GB; -public class MijiaLywsd02Support extends AbstractBTLEDeviceSupport { +public class MijiaLywsdSupport extends AbstractBTLEDeviceSupport { - private static final Logger LOG = LoggerFactory.getLogger(MijiaLywsd02Support.class); + private static final Logger LOG = LoggerFactory.getLogger(MijiaLywsdSupport.class); private static final UUID UUID_TIME = UUID.fromString("ebe0ccb7-7a0a-4b0c-8a1a-6ff2997da3a6"); private static final UUID UUID_BATTERY = UUID.fromString("ebe0ccc4-7a0a-4b0c-8a1a-6ff2997da3a6"); private static final UUID UUID_SCALE = UUID.fromString("ebe0ccbe-7a0a-4b0c-8a1a-6ff2997da3a6"); private static final UUID UUID_CONN_INTERVAL = UUID.fromString("ebe0ccd8-7a0a-4b0c-8a1a-6ff2997da3a6"); - private final DeviceInfoProfile deviceInfoProfile; + private final DeviceInfoProfile deviceInfoProfile; private final GBDeviceEventVersionInfo versionCmd = new GBDeviceEventVersionInfo(); private final GBDeviceEventBatteryInfo batteryCmd = new GBDeviceEventBatteryInfo(); private final IntentListener mListener = new IntentListener() { @@ -75,7 +64,7 @@ public class MijiaLywsd02Support extends AbstractBTLEDeviceSupport { } }; - public MijiaLywsd02Support() { + public MijiaLywsdSupport() { super(LOG); addSupportedService(GattService.UUID_SERVICE_GENERIC_ACCESS); addSupportedService(GattService.UUID_SERVICE_GENERIC_ATTRIBUTE); @@ -102,10 +91,10 @@ public class MijiaLywsd02Support extends AbstractBTLEDeviceSupport { } private void setTime(TransactionBuilder builder) { - BluetoothGattCharacteristic timeCharacteristc = getCharacteristic(MijiaLywsd02Support.UUID_TIME); + BluetoothGattCharacteristic timeCharacteristc = getCharacteristic(MijiaLywsdSupport.UUID_TIME); long ts = System.currentTimeMillis(); byte offsetHours = (byte) (SimpleTimeZone.getDefault().getOffset(ts) / (1000 * 60 * 60)); - ts = ( ts + 250 + 500 ) / 1000; // round to seconds with +250 ms to compensate for BLE connection interval + ts = (ts + 250 + 500) / 1000; // round to seconds with +250 ms to compensate for BLE connection interval builder.write(timeCharacteristc, new byte[]{ (byte) (ts & 0xff), (byte) ((ts >> 8) & 0xff), @@ -115,18 +104,18 @@ public class MijiaLywsd02Support extends AbstractBTLEDeviceSupport { } private void setConnectionInterval(TransactionBuilder builder) { - BluetoothGattCharacteristic intervalCharacteristc = getCharacteristic(MijiaLywsd02Support.UUID_CONN_INTERVAL); - builder.write(intervalCharacteristc, new byte[]{ (byte) 0xf4, (byte) 0x01 }); // maximum interval of 500 ms + BluetoothGattCharacteristic intervalCharacteristc = getCharacteristic(MijiaLywsdSupport.UUID_CONN_INTERVAL); + builder.write(intervalCharacteristc, new byte[]{(byte) 0xf4, (byte) 0x01}); // maximum interval of 500 ms } private void getBatteryInfo(TransactionBuilder builder) { - BluetoothGattCharacteristic batteryCharacteristc = getCharacteristic(MijiaLywsd02Support.UUID_BATTERY); + BluetoothGattCharacteristic batteryCharacteristc = getCharacteristic(MijiaLywsdSupport.UUID_BATTERY); builder.read(batteryCharacteristc); } private void setTemperatureScale(TransactionBuilder builder, String scale) { - BluetoothGattCharacteristic scaleCharacteristc = getCharacteristic(MijiaLywsd02Support.UUID_SCALE); - builder.write(scaleCharacteristc, new byte[]{ (byte) ("f".equals(scale) ? 0x01 : 0xff) }); + BluetoothGattCharacteristic scaleCharacteristc = getCharacteristic(MijiaLywsdSupport.UUID_SCALE); + builder.write(scaleCharacteristc, new byte[]{(byte) ("f".equals(scale) ? 0x01 : 0xff)}); } private void handleBatteryInfo(byte[] value, int status) { @@ -191,7 +180,7 @@ public class MijiaLywsd02Support extends AbstractBTLEDeviceSupport { } UUID characteristicUUID = characteristic.getUuid(); - if(MijiaLywsd02Support.UUID_BATTERY.equals(characteristicUUID)) { + if (MijiaLywsdSupport.UUID_BATTERY.equals(characteristicUUID)) { handleBatteryInfo(characteristic.getValue(), status); return true; }