From 6c32a3a99d8424d1fb00e5da91f0d195ea7d0dfa Mon Sep 17 00:00:00 2001 From: Yukai Li Date: Mon, 5 Oct 2020 03:12:30 -0600 Subject: [PATCH] Lefun: Add operation status to requests --- .../devices/lefun/requests/FindDeviceRequest.java | 3 +++ .../lefun/requests/GetBatteryLevelRequest.java | 3 +++ .../lefun/requests/GetFirmwareInfoRequest.java | 3 +++ .../service/devices/lefun/requests/Request.java | 13 ++++++++++++- .../devices/lefun/requests/SetTimeRequest.java | 5 ++++- 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/FindDeviceRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/FindDeviceRequest.java index 1bb172590..c86d421da 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/FindDeviceRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/FindDeviceRequest.java @@ -4,6 +4,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.lefun.LefunConstants; import nodomain.freeyourgadget.gadgetbridge.devices.lefun.commands.FindDeviceCommand; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.LefunDeviceSupport; +import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus; public class FindDeviceRequest extends Request { public FindDeviceRequest(LefunDeviceSupport support, TransactionBuilder builder) { @@ -28,5 +29,7 @@ public class FindDeviceRequest extends Request { if (!cmd.isSuccess()) reportFailure("Could not initiate find device"); + + operationStatus = OperationStatus.FINISHED; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/GetBatteryLevelRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/GetBatteryLevelRequest.java index 35964c120..7a44c83b4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/GetBatteryLevelRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/GetBatteryLevelRequest.java @@ -23,6 +23,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.lefun.commands.GetBatteryLev import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.LefunDeviceSupport; +import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus; public class GetBatteryLevelRequest extends Request { public GetBatteryLevelRequest(LefunDeviceSupport support, TransactionBuilder builder) { @@ -43,6 +44,8 @@ public class GetBatteryLevelRequest extends Request { GBDevice device = getSupport().getDevice(); device.setBatteryLevel(cmd.getBatteryLevel()); device.setBatteryThresholdPercent((short)15); + + operationStatus = OperationStatus.FINISHED; } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/GetFirmwareInfoRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/GetFirmwareInfoRequest.java index f3c900a12..2186b22d3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/GetFirmwareInfoRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/GetFirmwareInfoRequest.java @@ -23,6 +23,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.lefun.commands.GetFirmwareIn import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.LefunDeviceSupport; +import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus; public class GetFirmwareInfoRequest extends Request { public GetFirmwareInfoRequest(LefunDeviceSupport support, TransactionBuilder builder) { @@ -48,6 +49,8 @@ public class GetFirmwareInfoRequest extends Request { device.setFirmwareVersion(String.format("%d.%d", softwareVersion >> 8, softwareVersion & 0xff)); device.setFirmwareVersion2(String.format("%d.%d", hardwareVersion >> 8, hardwareVersion & 0xff)); getSupport().completeInitialization(); + + operationStatus = OperationStatus.FINISHED; } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/Request.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/Request.java index 6c3a62bfe..c11c33678 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/Request.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/Request.java @@ -30,6 +30,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.lefun.LefunConstants; import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEOperation; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.LefunDeviceSupport; +import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus; import nodomain.freeyourgadget.gadgetbridge.util.GB; // Ripped from nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.Request @@ -43,17 +44,23 @@ public abstract class Request extends AbstractBTLEOperation this.builder = builder; } + public TransactionBuilder getTransactionBuilder() { + return builder; + } + @Override protected void doPerform() throws IOException { BluetoothGattCharacteristic characteristic = getSupport() .getCharacteristic(LefunConstants.UUID_CHARACTERISTIC_LEFUN_WRITE); builder.write(characteristic, createRequest()); + if (isSelfQueue()) + getSupport().performConnected(builder.getTransaction()); } public abstract byte[] createRequest(); public void handleResponse(byte[] data) { - + operationStatus = OperationStatus.FINISHED; } public String getName() { @@ -68,6 +75,10 @@ public abstract class Request extends AbstractBTLEOperation public abstract int getCommandId(); + public boolean isSelfQueue() { + return false; + } + public boolean expectsResponse() { return true; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/SetTimeRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/SetTimeRequest.java index ac6f47940..ff2a193cf 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/SetTimeRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/SetTimeRequest.java @@ -26,6 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.lefun.commands.BaseCommand; import nodomain.freeyourgadget.gadgetbridge.devices.lefun.commands.TimeCommand; import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder; import nodomain.freeyourgadget.gadgetbridge.service.devices.lefun.LefunDeviceSupport; +import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus; public class SetTimeRequest extends Request { public SetTimeRequest(LefunDeviceSupport support, TransactionBuilder builder) { @@ -39,7 +40,7 @@ public class SetTimeRequest extends Request { cmd.setOp(BaseCommand.OP_SET); cmd.setYear((byte)(c.get(Calendar.YEAR) - 2000)); - cmd.setMonth((byte)c.get(Calendar.MONTH)); + cmd.setMonth((byte)(c.get(Calendar.MONTH) + 1)); cmd.setDay((byte)c.get(Calendar.DAY_OF_MONTH)); cmd.setHour((byte)c.get(Calendar.HOUR_OF_DAY)); cmd.setMinute((byte)c.get(Calendar.MINUTE)); @@ -54,6 +55,8 @@ public class SetTimeRequest extends Request { cmd.deserialize(data); if (cmd.getOp() == BaseCommand.OP_SET && !cmd.isSetSuccess()) reportFailure("Could not set time"); + + operationStatus = OperationStatus.FINISHED; } @Override