Make the Operations classes BLE-generic
parent
c0323339e8
commit
dbb92b55bc
|
@ -80,7 +80,7 @@ public abstract class AbstractBTLEDeviceSupport extends AbstractDeviceSupport im
|
||||||
* @see #performConnected(Transaction)
|
* @see #performConnected(Transaction)
|
||||||
* @see #initializeDevice(TransactionBuilder)
|
* @see #initializeDevice(TransactionBuilder)
|
||||||
*/
|
*/
|
||||||
protected TransactionBuilder performInitialized(String taskName) throws IOException {
|
public TransactionBuilder performInitialized(String taskName) throws IOException {
|
||||||
if (!isConnected()) {
|
if (!isConnected()) {
|
||||||
if (!connect()) {
|
if (!connect()) {
|
||||||
throw new IOException("1: Unable to connect to device: " + getDevice());
|
throw new IOException("1: Unable to connect to device: " + getDevice());
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations;
|
package nodomain.freeyourgadget.gadgetbridge.service.btle;
|
||||||
|
|
||||||
import android.bluetooth.BluetoothGatt;
|
import android.bluetooth.BluetoothGatt;
|
||||||
import android.bluetooth.BluetoothGattCharacteristic;
|
import android.bluetooth.BluetoothGattCharacteristic;
|
||||||
|
@ -9,33 +9,29 @@ import java.io.IOException;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.BtLEQueue;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.GattCallback;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.MiBandSupport;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract base class for a MiBandOperation, i.e. an operation that does more than
|
* Abstract base class for a BTLEOperation, i.e. an operation that does more than
|
||||||
* just sending a few bytes to the band. It typically involves exchanging many messages
|
* just sending a few bytes to the device. It typically involves exchanging many messages
|
||||||
* between the mobile and the band.
|
* between the mobile and the device.
|
||||||
*
|
*
|
||||||
* One operation may execute multiple @{link Transaction transactions} with each
|
* One operation may execute multiple @{link Transaction transactions} with each
|
||||||
* multiple @{link BTLEAction actions}.
|
* multiple @{link BTLEAction actions}.
|
||||||
*
|
*
|
||||||
* This class implements GattCallback so that subclasses may override those methods
|
* This class implements GattCallback so that subclasses may override those methods
|
||||||
* to handle those events.
|
* to handle those events.
|
||||||
* Note: by default all Gatt events are forwarded to MiBandSupport, subclasses may override
|
* Note: by default all Gatt events are forwarded to AbstractBTLEDeviceSupport, subclasses may override
|
||||||
* this behavior.
|
* this behavior.
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractMiBandOperation implements GattCallback, MiBandOperation {
|
public abstract class AbstractBTLEOperation<T extends AbstractBTLEDeviceSupport> implements GattCallback, BTLEOperation {
|
||||||
private final MiBandSupport mSupport;
|
private final T mSupport;
|
||||||
|
|
||||||
protected AbstractMiBandOperation(MiBandSupport support) {
|
protected AbstractBTLEOperation(T support) {
|
||||||
mSupport = support;
|
mSupport = support;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delegates to MiBandSupport and additionally sets this instance as the Gatt
|
* Delegates to the DeviceSupport instance and additionally sets this instance as the Gatt
|
||||||
* callback for the transaction.
|
* callback for the transaction.
|
||||||
* @param taskName
|
* @param taskName
|
||||||
* @return
|
* @return
|
||||||
|
@ -68,7 +64,7 @@ public abstract class AbstractMiBandOperation implements GattCallback, MiBandOpe
|
||||||
getDevice().sendDeviceUpdateIntent(getContext());
|
getDevice().sendDeviceUpdateIntent(getContext());
|
||||||
}
|
}
|
||||||
|
|
||||||
public MiBandSupport getSupport() {
|
public T getSupport() {
|
||||||
return mSupport;
|
return mSupport;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
package nodomain.freeyourgadget.gadgetbridge.service.devices.miband.operations;
|
package nodomain.freeyourgadget.gadgetbridge.service.btle;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.MiBandSupport;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.MiBandSupport;
|
||||||
|
|
||||||
public interface MiBandOperation {
|
public interface BTLEOperation {
|
||||||
public void perform() throws IOException;
|
public void perform() throws IOException;
|
||||||
}
|
}
|
|
@ -917,10 +917,4 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport {
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// overridden to make visible to operations
|
|
||||||
@Override
|
|
||||||
public TransactionBuilder performInitialized(String taskName) throws IOException {
|
|
||||||
return super.performInitialized(taskName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,13 +20,14 @@ import nodomain.freeyourgadget.gadgetbridge.R;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
|
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
|
import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandService;
|
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandService;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.AbstractBTLEOperation;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceBusyAction;
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceBusyAction;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.MiBandSupport;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.miband.MiBandSupport;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
|
import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
|
|
||||||
public class FetchActivityOperation extends AbstractMiBandOperation {
|
public class FetchActivityOperation extends AbstractBTLEOperation<MiBandSupport> {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(FetchActivityOperation.class);
|
private static final Logger LOG = LoggerFactory.getLogger(FetchActivityOperation.class);
|
||||||
private static final byte[] fetch = new byte[]{MiBandService.COMMAND_FETCH_DATA};
|
private static final byte[] fetch = new byte[]{MiBandService.COMMAND_FETCH_DATA};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue