main
1import 'package:blood_pressure_app/features/bluetooth/backend/bluetooth_device.dart';
2import 'package:blood_pressure_app/features/bluetooth/backend/bluetooth_discovery.dart';
3import 'package:blood_pressure_app/features/bluetooth/backend/bluetooth_low_energy/ble_manager.dart';
4import 'package:bluetooth_low_energy/bluetooth_low_energy.dart' show UUID;
5
6/// BluetoothDeviceDiscovery implementation for the 'bluetooth_low_energy' package
7final class BluetoothLowEnergyDiscovery extends BluetoothDeviceDiscovery<BluetoothLowEnergyManager> {
8 /// Construct BluetoothDeviceDiscovery implementation for the 'bluetooth_low_energy' package
9 BluetoothLowEnergyDiscovery(super.manager);
10
11 @override
12 Stream<List<BluetoothDevice>> get discoverStream => manager.backend.discovered.map(
13 (device) => [manager.createDevice(device)]
14 );
15
16 @override
17 Future<void> backendStart(String serviceUuid) async {
18 try {
19 await manager.backend.startDiscovery(
20 // no timeout, the user knows best how long scanning is needed
21 serviceUUIDs: [UUID.fromString(serviceUuid)],
22 // Not all devices might be found using this configuration
23 );
24 } catch (e) {
25 onDiscoveryError(e);
26 }
27 }
28
29 @override
30 Future<void> backendStop() => manager.backend.stopDiscovery();
31}