From ae5417b9cc6b97963b0d130f68db2cade4917b92 Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Thu, 7 Jan 2016 00:33:20 +0100 Subject: [PATCH] Avoid NPEs when aborting an erroneous sync #205 --- .../gadgetbridge/service/btle/AbstractBTLEOperation.java | 8 ++++++++ .../miband/operations/AbstractMiBandOperation.java | 1 + .../devices/miband/operations/FetchActivityOperation.java | 6 ++++++ .../devices/miband/operations/OperationStatus.java | 8 ++++++++ 4 files changed, 23 insertions(+) create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/operations/OperationStatus.java diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/AbstractBTLEOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/AbstractBTLEOperation.java index 746342bf..3c2387c0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/AbstractBTLEOperation.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/AbstractBTLEOperation.java @@ -9,6 +9,7 @@ import java.io.IOException; import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations.OperationStatus; /** * Abstract base class for a BTLEOperation, i.e. an operation that does more than @@ -25,6 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; */ public abstract class AbstractBTLEOperation implements GattCallback, BTLEOperation { private final T mSupport; + protected OperationStatus operationStatus = OperationStatus.INITIAL; protected AbstractBTLEOperation(T support) { mSupport = support; @@ -38,7 +40,9 @@ public abstract class AbstractBTLEOperation */ @Override public final void perform() throws IOException { + operationStatus = OperationStatus.STARTED; prePerform(); + operationStatus = OperationStatus.RUNNING; doPerform(); } @@ -101,6 +105,10 @@ public abstract class AbstractBTLEOperation getDevice().sendDeviceUpdateIntent(getContext()); } + public boolean isOperationRunning() { + return operationStatus == OperationStatus.RUNNING; + } + public T getSupport() { return mSupport; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/operations/AbstractMiBandOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/operations/AbstractMiBandOperation.java index f346852f..ffabce53 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/operations/AbstractMiBandOperation.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/operations/AbstractMiBandOperation.java @@ -25,6 +25,7 @@ public abstract class AbstractMiBandOperation extends AbstractBTLEOperation