From f0aecefa29f684d00364ff46692797055b42e23e Mon Sep 17 00:00:00 2001 From: Oliver Bagge Date: Tue, 18 Nov 2025 17:27:56 +0100 Subject: [PATCH 1/9] fix filtering by service uuid --- lib/src/constants.dart | 27 +++-------------- lib/src/managers/ble_manager.dart | 49 +++++++++++++++++-------------- 2 files changed, 31 insertions(+), 45 deletions(-) diff --git a/lib/src/constants.dart b/lib/src/constants.dart index 1ef7089..e6c5de6 100644 --- a/lib/src/constants.dart +++ b/lib/src/constants.dart @@ -25,10 +25,12 @@ const String deviceHardwareVersionCharacteristicUuid = const String parseInfoServiceUuid = "caa25cb7-7e1b-44f2-adc9-e8c06c9ced43"; const String schemeCharacteristicUuid = "caa25cb8-7e1b-44f2-adc9-e8c06c9ced43"; -const String sensorListCharacteristicUuid = "caa25cb9-7e1b-44f2-adc9-e8c06c9ced43"; +const String sensorListCharacteristicUuid = + "caa25cb9-7e1b-44f2-adc9-e8c06c9ced43"; const String requestSensorSchemeCharacteristicUuid = "caa25cba-7e1b-44f2-adc9-e8c06c9ced43"; -const String sensorSchemeCharacteristicUuid = "caa25cbb-7e1b-44f2-adc9-e8c06c9ced43"; +const String sensorSchemeCharacteristicUuid = + "caa25cbb-7e1b-44f2-adc9-e8c06c9ced43"; const String audioPlayerServiceUuid = "5669146e-476d-11ee-be56-0242ac120002"; const String audioSourceCharacteristic = "566916a8-476d-11ee-be56-0242ac120002"; @@ -43,24 +45,3 @@ const String buttonStateCharacteristicUuid = const String ledServiceUuid = "81040a2e-4819-11ee-be56-0242ac120002"; const String ledSetStateCharacteristic = "81040e7a-4819-11ee-be56-0242ac120002"; - -// All UUIDs in a list for filters -List allServiceUuids = [ - OpenEarableV1.ledServiceUuid, - OpenEarableV1.deviceInfoServiceUuid, - OpenEarableV1.audioPlayerServiceUuid, - OpenEarableV1.sensorServiceUuid, - OpenEarableV1.parseInfoServiceUuid, - OpenEarableV1.buttonServiceUuid, - OpenEarableV1.batteryServiceUuid, - - OpenEarableV2.deviceInfoServiceUuid, - OpenEarableV2.batteryServiceUuid, - OpenEarableV2.ledServiceUuid, - - CosinussOne.ppgAndAccServiceUuid, - CosinussOne.temperatureServiceUuid, - CosinussOne.heartRateServiceUuid, - Polar.disServiceUuid, - Polar.heartRateServiceUuid, -]; diff --git a/lib/src/managers/ble_manager.dart b/lib/src/managers/ble_manager.dart index f7443f2..5f3f2f9 100644 --- a/lib/src/managers/ble_manager.dart +++ b/lib/src/managers/ble_manager.dart @@ -132,17 +132,23 @@ class BleManager extends BleGattManager { await UniversalBle.stopScan(); UniversalBle.onScanResult = (bleDevice) { - _scanStreamController?.add( - DiscoveredDevice( - id: bleDevice.deviceId, - name: bleDevice.name ?? "", - manufacturerData: - bleDevice.manufacturerDataList.firstOrNull?.toUint8List() ?? - Uint8List.fromList([]), - rssi: bleDevice.rssi ?? -1, - serviceUuids: bleDevice.services, - ), - ); + if (!filterByServices || + bleDevice.services.any( + (uuid) => + uuid.toLowerCase() == deviceInfoServiceUuid.toLowerCase(), + )) { + _scanStreamController?.add( + DiscoveredDevice( + id: bleDevice.deviceId, + name: bleDevice.name ?? "", + manufacturerData: + bleDevice.manufacturerDataList.firstOrNull?.toUint8List() ?? + Uint8List.fromList([]), + rssi: bleDevice.rssi ?? -1, + serviceUuids: bleDevice.services, + ), + ); + } }; if (!kIsWeb) { @@ -152,13 +158,6 @@ class BleManager extends BleGattManager { _scanStreamController?.add(device); } } - - await UniversalBle.startScan( - scanFilter: ScanFilter( - // Needs to be passed for web, can be empty for the rest - withServices: (kIsWeb || filterByServices) ? allServiceUuids : [], - ), - ); } _firstScan = false; } @@ -179,10 +178,16 @@ class BleManager extends BleGattManager { if (kIsWeb) { throw Exception("getSystemDevices is not supported on web"); } - return UniversalBle.getSystemDevices( - withServices: filterByServices ? allServiceUuids : [], - ).then((devices) { - return devices.map((device) { + return UniversalBle.getSystemDevices().then((devices) { + return devices + .where( + (device) => (!filterByServices || + device.services.any( + (uuid) => + uuid.toLowerCase() == deviceInfoServiceUuid.toLowerCase(), + )), + ) + .map((device) { return DiscoveredDevice( id: device.deviceId, name: device.name ?? "", From 3d19f63431539d2d07f4004874d5fa6df0d48a0f Mon Sep 17 00:00:00 2001 From: Oliver Bagge Date: Tue, 18 Nov 2025 17:57:56 +0100 Subject: [PATCH 2/9] accidentally removed scanning in last commit --- lib/src/managers/ble_manager.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/src/managers/ble_manager.dart b/lib/src/managers/ble_manager.dart index 5f3f2f9..073a8c0 100644 --- a/lib/src/managers/ble_manager.dart +++ b/lib/src/managers/ble_manager.dart @@ -158,6 +158,7 @@ class BleManager extends BleGattManager { _scanStreamController?.add(device); } } + await UniversalBle.startScan(); } _firstScan = false; } From a31944b505da67ebdfca9b3035ca8e8261dd8d4f Mon Sep 17 00:00:00 2001 From: Oliver Bagge Date: Mon, 24 Nov 2025 12:46:30 +0100 Subject: [PATCH 3/9] remove device filtering by ble service uuif --- lib/open_earable_flutter.dart | 36 ++++++++----- lib/src/managers/ble_manager.dart | 38 +++++--------- lib/src/models/devices/open_earable_v2.dart | 58 ++++++++++++--------- 3 files changed, 68 insertions(+), 64 deletions(-) diff --git a/lib/open_earable_flutter.dart b/lib/open_earable_flutter.dart index d6b3387..772b17f 100644 --- a/lib/open_earable_flutter.dart +++ b/lib/open_earable_flutter.dart @@ -32,7 +32,8 @@ export 'src/models/devices/polar.dart'; export 'src/managers/wearable_disconnect_notifier.dart'; -export 'src/models/capabilities/device_firmware_version.dart' hide DeviceFirmwareVersionNumberExt; +export 'src/models/capabilities/device_firmware_version.dart' + hide DeviceFirmwareVersionNumberExt; export 'src/models/capabilities/device_hardware_version.dart'; export 'src/models/capabilities/device_identifier.dart'; export 'src/models/capabilities/battery_level.dart'; @@ -89,9 +90,11 @@ class WearableManager { static final WearableManager _instance = WearableManager._internal(); late final BleManager _bleManager; - final PairingManager _pairingManager = PairingManager(rules: [ - OpenEarableV2PairingRule(), - ],); + final PairingManager _pairingManager = PairingManager( + rules: [ + OpenEarableV2PairingRule(), + ], + ); late final StreamController _connectStreamController; late final StreamController _connectingStreamController; @@ -153,9 +156,9 @@ class WearableManager { /// If `checkAndRequestPermissions` is true, it will check and request the necessary /// permissions before starting the scan. /// Returns a Future that completes when the scan starts. - /// + /// /// The discovered devices can be listened to via the [scanStream]. - /// + /// /// Example usage: /// ```dart /// await WearableManager().startScan(excludeUnsupported: true); @@ -190,7 +193,8 @@ class WearableManager { /// connected wearables list. /// If the device is not supported by any factory, it throws an exception. /// If the connection fails, it also throws an exception. - Future connectToDevice(DiscoveredDevice device, { Set options = const {}}) async { + Future connectToDevice(DiscoveredDevice device, + {Set options = const {}}) async { if (_connectedIds.contains(device.id)) { logger.w('Device ${device.id} is already connected'); throw Exception('Device is already connected'); @@ -210,7 +214,8 @@ class WearableManager { wearableFactory.disconnectNotifier = disconnectNotifier; logger.t("checking factory: $wearableFactory"); if (await wearableFactory.matches(device, connectionResult.$2)) { - Wearable wearable = await wearableFactory.createFromDevice(device, options: options); + Wearable wearable = + await wearableFactory.createFromDevice(device, options: options); _connectedIds.add(device.id); wearable.addDisconnectListener(() { @@ -234,16 +239,19 @@ class WearableManager { /// Connects to all wearables that are currently discovered in the system. /// It retrieves the system devices and attempts to connect to each one. /// Returns a list of successfully connected wearables. - Future> connectToSystemDevices({List ignoredDeviceIds = const []}) async { + Future> connectToSystemDevices( + {List ignoredDeviceIds = const []}) async { List systemDevices = await _bleManager.getSystemDevices(filterByServices: false); List connectedWearables = []; for (DiscoveredDevice device in systemDevices) { - if (_connectedIds.contains(device.id) || ignoredDeviceIds.contains(device.id)) { + if (_connectedIds.contains(device.id) || + ignoredDeviceIds.contains(device.id)) { continue; } try { - Wearable wearable = await connectToDevice(device, options: {const ConnectedViaSystem()}); + Wearable wearable = await connectToDevice(device, + options: {const ConnectedViaSystem()}); connectedWearables.add(wearable); } catch (e) { logger.e('Failed to connect to system device ${device.id}: $e'); @@ -257,11 +265,13 @@ class WearableManager { } /// Finds valid pairs of stereo devices based on the defined pairing rules. - Future>> findValidPairs(List devices) async { + Future>> findValidPairs( + List devices) async { return await _pairingManager.findValidPairs(devices); } - Future> findValidPairsFor(StereoDevice device, List devices) async { + Future> findValidPairsFor( + StereoDevice device, List devices) async { return await _pairingManager.findValidPairsFor(device, devices); } diff --git a/lib/src/managers/ble_manager.dart b/lib/src/managers/ble_manager.dart index 073a8c0..883623f 100644 --- a/lib/src/managers/ble_manager.dart +++ b/lib/src/managers/ble_manager.dart @@ -132,23 +132,17 @@ class BleManager extends BleGattManager { await UniversalBle.stopScan(); UniversalBle.onScanResult = (bleDevice) { - if (!filterByServices || - bleDevice.services.any( - (uuid) => - uuid.toLowerCase() == deviceInfoServiceUuid.toLowerCase(), - )) { - _scanStreamController?.add( - DiscoveredDevice( - id: bleDevice.deviceId, - name: bleDevice.name ?? "", - manufacturerData: - bleDevice.manufacturerDataList.firstOrNull?.toUint8List() ?? - Uint8List.fromList([]), - rssi: bleDevice.rssi ?? -1, - serviceUuids: bleDevice.services, - ), - ); - } + _scanStreamController?.add( + DiscoveredDevice( + id: bleDevice.deviceId, + name: bleDevice.name ?? "", + manufacturerData: + bleDevice.manufacturerDataList.firstOrNull?.toUint8List() ?? + Uint8List.fromList([]), + rssi: bleDevice.rssi ?? -1, + serviceUuids: bleDevice.services, + ), + ); }; if (!kIsWeb) { @@ -180,15 +174,7 @@ class BleManager extends BleGattManager { throw Exception("getSystemDevices is not supported on web"); } return UniversalBle.getSystemDevices().then((devices) { - return devices - .where( - (device) => (!filterByServices || - device.services.any( - (uuid) => - uuid.toLowerCase() == deviceInfoServiceUuid.toLowerCase(), - )), - ) - .map((device) { + return devices.map((device) { return DiscoveredDevice( id: device.deviceId, name: device.name ?? "", diff --git a/lib/src/models/devices/open_earable_v2.dart b/lib/src/models/devices/open_earable_v2.dart index feb6812..cdd3d30 100644 --- a/lib/src/models/devices/open_earable_v2.dart +++ b/lib/src/models/devices/open_earable_v2.dart @@ -36,7 +36,8 @@ const String _audioModeCharacteristicUuid = const String _buttonServiceUuid = "29c10bdc-4773-11ee-be56-0242ac120002"; const String _buttonCharacteristicUuid = "29c10f38-4773-11ee-be56-0242ac120002"; -final VersionConstraint _versionConstraint = VersionConstraint.parse(">=2.1.0 <2.3.0"); +final VersionConstraint _versionConstraint = + VersionConstraint.parse(">=2.1.0 <2.3.0"); // MARK: OpenEarableV2 @@ -91,11 +92,13 @@ class OpenEarableV2 extends Wearable _sensorConfigSubscription?.cancel(); - _sensorConfigSubscription = _bleManager.subscribe( + _sensorConfigSubscription = _bleManager + .subscribe( deviceId: deviceId, serviceId: sensorServiceUuid, characteristicId: sensorConfigStateCharacteristicUuid, - ).listen( + ) + .listen( (data) { controller.add(_parseConfigMap(data)); }, @@ -112,11 +115,13 @@ class OpenEarableV2 extends Wearable controller.onListen = () { // Immediately read the current sensor configuration - _bleManager.read( + _bleManager + .read( deviceId: deviceId, serviceId: sensorServiceUuid, characteristicId: sensorConfigStateCharacteristicUuid, - ).then((data) { + ) + .then((data) { controller.add(_parseConfigMap(data)); }).catchError((error) { logger.e('Error reading initial sensor configuration: $error'); @@ -126,13 +131,14 @@ class OpenEarableV2 extends Wearable return controller.stream; } - Map _parseConfigMap(List data) { + Map _parseConfigMap( + List data) { List sensorConfigs = V2SensorConfig.listFromBytes(Uint8List.fromList(data)); logger.d('Received sensor configuration data: $sensorConfigs'); - + Map sensorConfigMap = {}; - + for (V2SensorConfig sensorConfig in sensorConfigs) { // Find the matching sensor configuration SensorConfiguration? matchingConfig = _sensorConfigurations.where( @@ -143,16 +149,15 @@ class OpenEarableV2 extends Wearable return false; }, ).firstOrNull; - + if (matchingConfig == null) { logger.w( 'No matching sensor configuration found for ID: ${sensorConfig.sensorId}', ); continue; } - - SensorConfigurationValue? sensorConfigValue = - matchingConfig.values.where( + + SensorConfigurationValue? sensorConfigValue = matchingConfig.values.where( (value) { if (value is SensorConfigurationOpenEarableV2Value) { return value.frequencyIndex == sensorConfig.sampleRateIndex && @@ -162,7 +167,7 @@ class OpenEarableV2 extends Wearable return false; }, ).firstOrNull; - + if (sensorConfigValue == null) { logger.w( 'No matching sensor configuration value found for sensor ID: ${sensorConfig.sensorId}', @@ -171,7 +176,7 @@ class OpenEarableV2 extends Wearable } sensorConfigMap[matchingConfig] = sensorConfigValue; } - + return sensorConfigMap; } @@ -198,16 +203,17 @@ class OpenEarableV2 extends Wearable @override Stream get buttonEvents { - StreamController controller = - StreamController(); + StreamController controller = StreamController(); _buttonSubscription?.cancel(); - _buttonSubscription = _bleManager.subscribe( + _buttonSubscription = _bleManager + .subscribe( deviceId: deviceId, serviceId: _buttonServiceUuid, characteristicId: _buttonCharacteristicUuid, - ).listen( + ) + .listen( (data) { if (data.isNotEmpty) { int buttonState = data[0]; @@ -231,11 +237,13 @@ class OpenEarableV2 extends Wearable controller.onListen = () { // Immediately read current button state - _bleManager.read( + _bleManager + .read( deviceId: deviceId, serviceId: _buttonServiceUuid, characteristicId: _buttonCharacteristicUuid, - ).then((data) { + ) + .then((data) { if (data.isNotEmpty) { int buttonState = data[0]; if (buttonState == 0) { @@ -750,15 +758,15 @@ class OpenEarableV2 extends Wearable List positionBytes; try { positionBytes = await _bleManager.read( - deviceId: deviceId, - serviceId: "1410df95-5f68-4ebb-a7c7-5e0fb9ae7557", - characteristicId: "1410df98-5f68-4ebb-a7c7-5e0fb9ae7557", - ); + deviceId: deviceId, + serviceId: "1410df95-5f68-4ebb-a7c7-5e0fb9ae7557", + characteristicId: "1410df98-5f68-4ebb-a7c7-5e0fb9ae7557", + ); } catch (e) { logger.w("Failed to read position characteristic: $e"); return _determinePositionFromName(name); } - + if (positionBytes.length != 1) { logger.e("Expected 1 byte for position, but got ${positionBytes.length}"); return null; From 3604e6891ad9107ea0d13b925d505177e399780e Mon Sep 17 00:00:00 2001 From: Oliver Bagge Date: Mon, 24 Nov 2025 13:14:15 +0100 Subject: [PATCH 4/9] remove more of the filtering code --- lib/open_earable_flutter.dart | 15 ++------------- lib/src/managers/ble_manager.dart | 10 ++-------- 2 files changed, 4 insertions(+), 21 deletions(-) diff --git a/lib/open_earable_flutter.dart b/lib/open_earable_flutter.dart index 772b17f..58f140f 100644 --- a/lib/open_earable_flutter.dart +++ b/lib/open_earable_flutter.dart @@ -104,8 +104,6 @@ class WearableManager { List _autoConnectDeviceIds = []; StreamSubscription? _autoconnectScanSubscription; - bool? _scanExcludeUnsupported; - final List _wearableFactories = [ OpenEarableFactory(), CosinussOneFactory(), @@ -151,8 +149,6 @@ class WearableManager { } /// Starts scanning for BLE devices. - /// If `excludeUnsupported` is true, it will filter out devices that do not support - /// the required services. /// If `checkAndRequestPermissions` is true, it will check and request the necessary /// permissions before starting the scan. /// Returns a Future that completes when the scan starts. @@ -161,15 +157,12 @@ class WearableManager { /// /// Example usage: /// ```dart - /// await WearableManager().startScan(excludeUnsupported: true); + /// await WearableManager().startScan(); /// ``` Future startScan({ - bool excludeUnsupported = false, bool checkAndRequestPermissions = true, }) { - _scanExcludeUnsupported = excludeUnsupported; return _bleManager.startScan( - filterByServices: excludeUnsupported, checkAndRequestPermissions: checkAndRequestPermissions, ); } @@ -296,11 +289,7 @@ class WearableManager { } }); - if (_scanExcludeUnsupported == null) { - startScan(); - } else { - startScan(excludeUnsupported: _scanExcludeUnsupported!); - } + startScan(); } } diff --git a/lib/src/managers/ble_manager.dart b/lib/src/managers/ble_manager.dart index 883623f..e8f3d77 100644 --- a/lib/src/managers/ble_manager.dart +++ b/lib/src/managers/ble_manager.dart @@ -111,7 +111,6 @@ class BleManager extends BleGattManager { /// Initiates the BLE device scan to discover nearby Bluetooth devices. Future startScan({ - bool filterByServices = false, bool checkAndRequestPermissions = true, }) async { bool? permGranted; @@ -146,8 +145,7 @@ class BleManager extends BleGattManager { }; if (!kIsWeb) { - List devices = - await getSystemDevices(filterByServices: filterByServices); + List devices = await getSystemDevices(); for (var device in devices) { _scanStreamController?.add(device); } @@ -159,14 +157,10 @@ class BleManager extends BleGattManager { } /// Retrieves a list of system devices. - /// If `filterByServices` is true, it filters devices by the predefined service UUIDs. - /// Returns a list of `BleDevice` objects. /// Throws an exception if called on web. /// If no devices are found, returns an empty list. /// If the platform is not web, it uses `UniversalBle.getSystemDevices`. - Future> getSystemDevices({ - bool filterByServices = false, - }) async { + Future> getSystemDevices() async { if (!await checkAndRequestPermissions()) { throw Exception("Permissions not granted"); } From a01e7d447cd94cd8e0ddd9a35cbb6625728f6149 Mon Sep 17 00:00:00 2001 From: Oliver Bagge Date: Mon, 24 Nov 2025 13:19:08 +0100 Subject: [PATCH 5/9] remove filtering from open_earable_flutter.dart --- lib/open_earable_flutter.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/open_earable_flutter.dart b/lib/open_earable_flutter.dart index 58f140f..138b66a 100644 --- a/lib/open_earable_flutter.dart +++ b/lib/open_earable_flutter.dart @@ -234,8 +234,7 @@ class WearableManager { /// Returns a list of successfully connected wearables. Future> connectToSystemDevices( {List ignoredDeviceIds = const []}) async { - List systemDevices = - await _bleManager.getSystemDevices(filterByServices: false); + List systemDevices = await _bleManager.getSystemDevices(); List connectedWearables = []; for (DiscoveredDevice device in systemDevices) { if (_connectedIds.contains(device.id) || From ca48d2758c34db19ac40224528434bacf97480f9 Mon Sep 17 00:00:00 2001 From: Oliver Bagge Date: Mon, 24 Nov 2025 13:21:04 +0100 Subject: [PATCH 6/9] fix warnings --- lib/open_earable_flutter.dart | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/open_earable_flutter.dart b/lib/open_earable_flutter.dart index 138b66a..b215bf2 100644 --- a/lib/open_earable_flutter.dart +++ b/lib/open_earable_flutter.dart @@ -186,8 +186,10 @@ class WearableManager { /// connected wearables list. /// If the device is not supported by any factory, it throws an exception. /// If the connection fails, it also throws an exception. - Future connectToDevice(DiscoveredDevice device, - {Set options = const {}}) async { + Future connectToDevice( + DiscoveredDevice device, { + Set options = const {}, + }) async { if (_connectedIds.contains(device.id)) { logger.w('Device ${device.id} is already connected'); throw Exception('Device is already connected'); @@ -232,8 +234,9 @@ class WearableManager { /// Connects to all wearables that are currently discovered in the system. /// It retrieves the system devices and attempts to connect to each one. /// Returns a list of successfully connected wearables. - Future> connectToSystemDevices( - {List ignoredDeviceIds = const []}) async { + Future> connectToSystemDevices({ + List ignoredDeviceIds = const [], + }) async { List systemDevices = await _bleManager.getSystemDevices(); List connectedWearables = []; for (DiscoveredDevice device in systemDevices) { @@ -242,8 +245,10 @@ class WearableManager { continue; } try { - Wearable wearable = await connectToDevice(device, - options: {const ConnectedViaSystem()}); + Wearable wearable = await connectToDevice( + device, + options: {const ConnectedViaSystem()}, + ); connectedWearables.add(wearable); } catch (e) { logger.e('Failed to connect to system device ${device.id}: $e'); @@ -258,12 +263,15 @@ class WearableManager { /// Finds valid pairs of stereo devices based on the defined pairing rules. Future>> findValidPairs( - List devices) async { + List devices, + ) async { return await _pairingManager.findValidPairs(devices); } Future> findValidPairsFor( - StereoDevice device, List devices) async { + StereoDevice device, + List devices, + ) async { return await _pairingManager.findValidPairsFor(device, devices); } From cadaead4cd492a509bbdc3f61f77eef66457f8ca Mon Sep 17 00:00:00 2001 From: Oliver Bagge Date: Mon, 24 Nov 2025 13:33:26 +0100 Subject: [PATCH 7/9] remove unused import --- lib/src/managers/ble_manager.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/src/managers/ble_manager.dart b/lib/src/managers/ble_manager.dart index e8f3d77..4d9bb4d 100644 --- a/lib/src/managers/ble_manager.dart +++ b/lib/src/managers/ble_manager.dart @@ -6,7 +6,6 @@ import 'package:permission_handler/permission_handler.dart'; import 'package:universal_ble/universal_ble.dart'; import '../../open_earable_flutter.dart'; -import '../constants.dart'; /// A class that establishes and manages Bluetooth Low Energy (BLE) /// communication with OpenEarable devices. From eed86a72f2fdb0c45d94a15fb62a96ce9a162462 Mon Sep 17 00:00:00 2001 From: Oliver Bagge Date: Mon, 24 Nov 2025 13:35:31 +0100 Subject: [PATCH 8/9] remove unused imports in constants.dart --- lib/src/constants.dart | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lib/src/constants.dart b/lib/src/constants.dart index e6c5de6..e20e21a 100644 --- a/lib/src/constants.dart +++ b/lib/src/constants.dart @@ -1,8 +1,3 @@ -import 'models/devices/open_earable_v2.dart'; -import 'models/devices/cosinuss_one.dart'; -import 'models/devices/open_earable_v1.dart'; -import 'models/devices/polar.dart'; - const String sensorServiceUuid = "34c2e3bb-34aa-11eb-adc1-0242ac120002"; const String sensorConfigurationCharacteristicUuid = "34c2e3bd-34aa-11eb-adc1-0242ac120002"; From 45a0d0292671840bf5b98c04d95ae0b00c4a4717 Mon Sep 17 00:00:00 2001 From: Oliver Bagge Date: Mon, 24 Nov 2025 13:37:42 +0100 Subject: [PATCH 9/9] add missing trailing comma --- lib/src/models/devices/open_earable_v2.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/src/models/devices/open_earable_v2.dart b/lib/src/models/devices/open_earable_v2.dart index cdd3d30..da16492 100644 --- a/lib/src/models/devices/open_earable_v2.dart +++ b/lib/src/models/devices/open_earable_v2.dart @@ -132,7 +132,8 @@ class OpenEarableV2 extends Wearable } Map _parseConfigMap( - List data) { + List data, + ) { List sensorConfigs = V2SensorConfig.listFromBytes(Uint8List.fromList(data)); logger.d('Received sensor configuration data: $sensorConfigs');