From a8c25f2641a97595fdf9f427f2d8560cd90f8be5 Mon Sep 17 00:00:00 2001 From: Corwin-Kh Date: Fri, 29 Aug 2025 13:05:17 +0300 Subject: [PATCH] Made Carly scanner discoverable --- .../plus/plugins/externalsensors/DevicesHelper.java | 2 ++ .../plugins/externalsensors/GattAttributes.java | 3 +++ .../devices/ble/BLEAbstractDevice.java | 4 +++- .../externalsensors/devices/ble/BLECarlyDevice.kt | 13 +++++++++++++ .../externalsensors/devices/ble/BLEOBDDevice.kt | 2 +- 5 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 OsmAnd/src/net/osmand/plus/plugins/externalsensors/devices/ble/BLECarlyDevice.kt diff --git a/OsmAnd/src/net/osmand/plus/plugins/externalsensors/DevicesHelper.java b/OsmAnd/src/net/osmand/plus/plugins/externalsensors/DevicesHelper.java index 8bd23b13dfd..07d74464f16 100644 --- a/OsmAnd/src/net/osmand/plus/plugins/externalsensors/DevicesHelper.java +++ b/OsmAnd/src/net/osmand/plus/plugins/externalsensors/DevicesHelper.java @@ -49,6 +49,7 @@ import net.osmand.plus.plugins.externalsensors.devices.ble.BLEAbstractDevice; import net.osmand.plus.plugins.externalsensors.devices.ble.BLEBPICPDevice; import net.osmand.plus.plugins.externalsensors.devices.ble.BLEBikeSCDDevice; +import net.osmand.plus.plugins.externalsensors.devices.ble.BLECarlyDevice; import net.osmand.plus.plugins.externalsensors.devices.ble.BLEHeartRateDevice; import net.osmand.plus.plugins.externalsensors.devices.ble.BLEOBDDevice; import net.osmand.plus.plugins.externalsensors.devices.ble.BLERunningSCDDevice; @@ -85,6 +86,7 @@ public abstract class DevicesHelper implements DeviceListener, DevicePreferences private final static List SUPPORTED_BLE_SERVICE_UUIDS = Arrays.asList( BLEOBDDevice.Companion.getServiceUUID(), + BLECarlyDevice.Companion.getServiceUUID(), BLEBikeSCDDevice.getServiceUUID(), BLEHeartRateDevice.getServiceUUID(), BLERunningSCDDevice.getServiceUUID(), diff --git a/OsmAnd/src/net/osmand/plus/plugins/externalsensors/GattAttributes.java b/OsmAnd/src/net/osmand/plus/plugins/externalsensors/GattAttributes.java index c2397739430..329471e1087 100644 --- a/OsmAnd/src/net/osmand/plus/plugins/externalsensors/GattAttributes.java +++ b/OsmAnd/src/net/osmand/plus/plugins/externalsensors/GattAttributes.java @@ -62,6 +62,9 @@ public class GattAttributes { public static final String CHARACTERISTIC_OBD_WRITE = "0000fff2-0000-1000-8000-00805f9b34fb"; public static final UUID UUID_CHARACTERISTIC_OBD_WRITE = UUID.fromString(CHARACTERISTIC_OBD_WRITE); + public static final String CHARACTERISTIC_OBD_CARLY_SCANNER = "00000000-0000-0000-0000-001a2201b4a7"; + public static final UUID UUID_CHARACTERISTIC_OBD_CARLY_SCANNER = UUID.fromString(CHARACTERISTIC_OBD_CARLY_SCANNER); + static { SUPPORTED_CHARACTERISTICS.add(UUID.fromString(CHARACTERISTIC_CYCLING_SPEED_AND_CADENCE_MEASUREMENT)); SUPPORTED_CHARACTERISTICS.add(UUID.fromString(CHARACTERISTIC_HEART_RATE_MEASUREMENT)); diff --git a/OsmAnd/src/net/osmand/plus/plugins/externalsensors/devices/ble/BLEAbstractDevice.java b/OsmAnd/src/net/osmand/plus/plugins/externalsensors/devices/ble/BLEAbstractDevice.java index 3f87b205b58..8068b6ca2b5 100644 --- a/OsmAnd/src/net/osmand/plus/plugins/externalsensors/devices/ble/BLEAbstractDevice.java +++ b/OsmAnd/src/net/osmand/plus/plugins/externalsensors/devices/ble/BLEAbstractDevice.java @@ -69,7 +69,9 @@ public static BLEAbstractDevice createDeviceByUUID(@NonNull BluetoothAdapter blu @NonNull UUID uuid, @NonNull String address, @NonNull String name, int rssi) { BLEAbstractDevice device = null; - if (BLEOBDDevice.Companion.getServiceUUID().equals(uuid)) { + if (BLECarlyDevice.Companion.getServiceUUID().equals(uuid)) { + device = new BLECarlyDevice(bluetoothAdapter, address); + } else if (BLEOBDDevice.Companion.getServiceUUID().equals(uuid)) { device = new BLEOBDDevice(bluetoothAdapter, address); } else if (BLEHeartRateDevice.getServiceUUID().equals(uuid)) { device = new BLEHeartRateDevice(bluetoothAdapter, address); diff --git a/OsmAnd/src/net/osmand/plus/plugins/externalsensors/devices/ble/BLECarlyDevice.kt b/OsmAnd/src/net/osmand/plus/plugins/externalsensors/devices/ble/BLECarlyDevice.kt new file mode 100644 index 00000000000..8e31ebdbea8 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/plugins/externalsensors/devices/ble/BLECarlyDevice.kt @@ -0,0 +1,13 @@ +package net.osmand.plus.plugins.externalsensors.devices.ble + +import android.bluetooth.BluetoothAdapter +import net.osmand.plus.plugins.externalsensors.GattAttributes +import java.util.UUID + +class BLECarlyDevice(bluetoothAdapter: BluetoothAdapter, deviceId: String) : + BLEOBDDevice(bluetoothAdapter, deviceId) { + companion object { + val serviceUUID: UUID + get() = GattAttributes.UUID_CHARACTERISTIC_OBD_CARLY_SCANNER + } +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/plugins/externalsensors/devices/ble/BLEOBDDevice.kt b/OsmAnd/src/net/osmand/plus/plugins/externalsensors/devices/ble/BLEOBDDevice.kt index be14d4dbd3e..f94bfcd96cf 100644 --- a/OsmAnd/src/net/osmand/plus/plugins/externalsensors/devices/ble/BLEOBDDevice.kt +++ b/OsmAnd/src/net/osmand/plus/plugins/externalsensors/devices/ble/BLEOBDDevice.kt @@ -20,7 +20,7 @@ import okio.Timeout import java.util.UUID import kotlin.math.min -class BLEOBDDevice(bluetoothAdapter: BluetoothAdapter, deviceId: String) : +open class BLEOBDDevice(bluetoothAdapter: BluetoothAdapter, deviceId: String) : BLEAbstractDevice(bluetoothAdapter, deviceId), Source, Sink { private val log = PlatformUtil.getLog("OBD2")