mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-09-01 03:55:47 +02:00
Casio GW-B5600: find phone
This commit is contained in:
parent
4a9fd49461
commit
b155a13d17
@ -112,6 +112,12 @@ public final class CasioConstants {
|
|||||||
public static final byte CATEGORY_SNS = 4;
|
public static final byte CATEGORY_SNS = 4;
|
||||||
public static final byte CATEGORY_VOICEMAIL = 3;
|
public static final byte CATEGORY_VOICEMAIL = 3;
|
||||||
|
|
||||||
|
// Connection Reason - GW-B5600
|
||||||
|
public static final byte CONNECT_CNCT = 1;
|
||||||
|
public static final byte CONNECT_FIND = 2;
|
||||||
|
public static final byte CONNECT_AUTO = 3;
|
||||||
|
public static final byte CONNECT_TIME = 4;
|
||||||
|
|
||||||
public enum Model {
|
public enum Model {
|
||||||
MODEL_CASIO_GENERIC,
|
MODEL_CASIO_GENERIC,
|
||||||
MODEL_CASIO_6900B,
|
MODEL_CASIO_6900B,
|
||||||
|
@ -21,6 +21,9 @@ import java.util.HashSet;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
|
import android.bluetooth.BluetoothGatt;
|
||||||
|
import android.bluetooth.BluetoothGattCharacteristic;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -33,6 +36,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.TransactionBuilder;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceStateAction;
|
import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceStateAction;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventFindPhone;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.casio.CasioConstants;
|
import nodomain.freeyourgadget.gadgetbridge.devices.casio.CasioConstants;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.service.devices.casio.Casio2C2DSupport;
|
import nodomain.freeyourgadget.gadgetbridge.service.devices.casio.Casio2C2DSupport;
|
||||||
@ -70,12 +74,21 @@ public class CasioGWB5600DeviceSupport extends Casio2C2DSupport {
|
|||||||
}
|
}
|
||||||
|
|
||||||
builder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZING, getContext()));
|
builder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZING, getContext()));
|
||||||
requestWorldClocks(builder);
|
|
||||||
|
// which button was pressed?
|
||||||
|
requestFeature(builder, new FeatureRequest(FEATURE_BLE_FEATURES), data -> {
|
||||||
|
if (data.length > 8 && data[8] == CasioConstants.CONNECT_FIND) {
|
||||||
|
setInitialized();
|
||||||
|
} else {
|
||||||
|
requestWorldClocks();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void requestWorldClocks(TransactionBuilder builder) {
|
private void requestWorldClocks() {
|
||||||
|
TransactionBuilder builder = createTransactionBuilder("requestWorldClocks");
|
||||||
HashSet<FeatureRequest> requests = new HashSet();
|
HashSet<FeatureRequest> requests = new HashSet();
|
||||||
|
|
||||||
for (byte i = 0; i < 6; i++) {
|
for (byte i = 0; i < 6; i++) {
|
||||||
@ -88,6 +101,7 @@ public class CasioGWB5600DeviceSupport extends Casio2C2DSupport {
|
|||||||
clockBuilder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZED, getContext()));
|
clockBuilder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZED, getContext()));
|
||||||
clockBuilder.queue(getQueue());
|
clockBuilder.queue(getQueue());
|
||||||
});
|
});
|
||||||
|
builder.queue(getQueue());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setClocks(TransactionBuilder builder, Map<FeatureRequest, byte[]> responses) {
|
private void setClocks(TransactionBuilder builder, Map<FeatureRequest, byte[]> responses) {
|
||||||
@ -110,4 +124,27 @@ public class CasioGWB5600DeviceSupport extends Casio2C2DSupport {
|
|||||||
writeCurrentTime(builder, ZonedDateTime.ofInstant(now, tz));
|
writeCurrentTime(builder, ZonedDateTime.ofInstant(now, tz));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCharacteristicChanged(BluetoothGatt gatt,
|
||||||
|
BluetoothGattCharacteristic characteristic) {
|
||||||
|
UUID characteristicUUID = characteristic.getUuid();
|
||||||
|
byte[] data = characteristic.getValue();
|
||||||
|
if (data.length == 0)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (characteristicUUID.equals(CasioConstants.CASIO_ALL_FEATURES_CHARACTERISTIC_UUID)) {
|
||||||
|
if(data[0] == FEATURE_ALERT_LEVEL) {
|
||||||
|
GBDeviceEventFindPhone event = new GBDeviceEventFindPhone();
|
||||||
|
if(data[1] == 0x02) {
|
||||||
|
event.event = GBDeviceEventFindPhone.Event.START_VIBRATE;
|
||||||
|
} else {
|
||||||
|
event.event = GBDeviceEventFindPhone.Event.STOP;
|
||||||
|
}
|
||||||
|
evaluateGBDeviceEvent(event);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return super.onCharacteristicChanged(gatt, characteristic);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user