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}