From 48affad220054a1791a5193dbfbd5bd36faf5e5f Mon Sep 17 00:00:00 2001 From: Sebastian Kranz Date: Fri, 8 Jun 2018 16:28:05 +0200 Subject: [PATCH] Add some UUIDs and Cmds. Connect further. --- .../devices/zetime/ZeTimeConstants.java | 26 ++++++++++++ .../devices/zetime/ZeTimeDeviceSupport.java | 41 ++++++++++++++++++- 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeConstants.java diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeConstants.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeConstants.java new file mode 100644 index 000000000..b36d8b000 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/zetime/ZeTimeConstants.java @@ -0,0 +1,26 @@ +package nodomain.freeyourgadget.gadgetbridge.devices.zetime; + +/** + * Created by lightforce on 08.06.18. + */ + +import java.util.UUID; + +public class ZeTimeConstants { + public static final UUID UUID_WRITE_CHARACTERISTIC = UUID.fromString("00008001-0000-1000-8000-00805f9b34fb"); + public static final UUID UUID_ACK_CHARACTERISTIC = UUID.fromString("00008002-0000-1000-8000-00805f9b34fb"); + public static final UUID UUID_REPLY_CHARACTERISTIC = UUID.fromString("00008003-0000-1000-8000-00805f9b34fb"); + public static final UUID UUID_NOTIFY_CHARACTERISTIC = UUID.fromString("00008004-0000-1000-8000-00805f9b34fb"); + public static final UUID UUID_CHARACTERISTIC_8005 = UUID.fromString("00008005-0000-1000-8000-00805f9b34fb"); + public static final UUID UUID_CHARACTERISTIC_HEART_RATE = UUID.fromString("00002a37-0000-1000-8000-00805f9b34fb"); + public static final UUID UUID_CONFIG_DESCRIPTOR = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"); + public static final UUID UUID_SERVICE_BASE = UUID.fromString("00006006-0000-1000-8000-00805f9b34fb"); + public static final UUID UUID_SERVICE_EXTEND = UUID.fromString("00007006-0000-1000-8000-00805f9b34fb"); + public static final UUID UUID_SERVICE_HEART_RATE = UUID.fromString("0000180d-0000-1000-8000-00805f9b34fb"); + + public static final byte CMD_PREAMBLE = (byte) 0x6f; + public static final byte CMD_GET_AVAIABLE_DATE = (byte) 0x52; + public static final byte CMD_REQUEST = (byte) 0x70; + public static final byte CMD_END = (byte) 0x8f; + public static final byte CMD_ACK_WRITE = (byte) 0x03; +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zetime/ZeTimeDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zetime/ZeTimeDeviceSupport.java index 7f19a5334..a91891799 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zetime/ZeTimeDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zetime/ZeTimeDeviceSupport.java @@ -1,5 +1,6 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.zetime; +import android.bluetooth.BluetoothGattCharacteristic; import android.net.Uri; import org.slf4j.Logger; @@ -9,6 +10,8 @@ import java.util.ArrayList; import java.util.UUID; import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventBatteryInfo; +import nodomain.freeyourgadget.gadgetbridge.devices.zetime.ZeTimeConstants; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.Alarm; import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; import nodomain.freeyourgadget.gadgetbridge.model.CallSpec; @@ -18,6 +21,7 @@ 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.TransactionBuilder; /** * Created by Kranz on 08.02.2018. @@ -27,9 +31,44 @@ public class ZeTimeDeviceSupport extends AbstractBTLEDeviceSupport { private static final Logger LOG = LoggerFactory.getLogger(ZeTimeDeviceSupport.class); private final GBDeviceEventBatteryInfo batteryCmd = new GBDeviceEventBatteryInfo(); + public BluetoothGattCharacteristic notifyCharacteristic = null; + public BluetoothGattCharacteristic writeCharacteristic = null; + public BluetoothGattCharacteristic ackCharacteristic = null; + public ZeTimeDeviceSupport(){ super(LOG); - //addSupportedService(); + addSupportedService(ZeTimeConstants.UUID_SERVICE_BASE); + } + @Override + protected TransactionBuilder initializeDevice(TransactionBuilder builder) { + LOG.info("Initializing"); + + gbDevice.setState(GBDevice.State.INITIALIZING); + gbDevice.sendDeviceUpdateIntent(getContext()); + + notifyCharacteristic = getCharacteristic(ZeTimeConstants.UUID_NOTIFY_CHARACTERISTIC); + writeCharacteristic = getCharacteristic(ZeTimeConstants.UUID_WRITE_CHARACTERISTIC); + ackCharacteristic = getCharacteristic(ZeTimeConstants.UUID_ACK_CHARACTERISTIC); + + builder.setGattCallback(this); + builder.notify(notifyCharacteristic, true); + + // do this in a function + builder.write(writeCharacteristic, new byte[]{ZeTimeConstants.CMD_PREAMBLE, + ZeTimeConstants.CMD_GET_AVAIABLE_DATE, + ZeTimeConstants.CMD_REQUEST, + 0x01, + 0x00, + 0x00, + ZeTimeConstants.CMD_END}); + builder.write(ackCharacteristic, new byte[]{ZeTimeConstants.CMD_ACK_WRITE}); + + gbDevice.setState(GBDevice.State.INITIALIZED); + gbDevice.sendDeviceUpdateIntent(getContext()); + + LOG.info("Initialization Done"); + + return builder; } @Override