diff options
author | uvok | 2025-07-31 14:19:35 +0200 |
---|---|---|
committer | uvok | 2025-07-31 14:19:35 +0200 |
commit | 5600392e61e7b3dc4cf3a2943f307810e16365ab (patch) | |
tree | 45cb17638c5046b3acb7344d901c34df3575e0b9 /lib/control | |
parent | ab0aef27c2748bdd89c83f4958d4a02558be4e09 (diff) |
UB: Implement availability
Diffstat (limited to 'lib/control')
-rw-r--r-- | lib/control/universal_ble_scanner_controller.dart | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/control/universal_ble_scanner_controller.dart b/lib/control/universal_ble_scanner_controller.dart index dd447bd..b91337f 100644 --- a/lib/control/universal_ble_scanner_controller.dart +++ b/lib/control/universal_ble_scanner_controller.dart @@ -9,13 +9,15 @@ import 'package:uvok_epaper_badge/model/device/universal_ble_device.dart'; Logger logger = Logger(); class UniversalBleScannerController extends ScannerControllerImpl { - StreamSubscription<BleDevice>? _subscription; + StreamSubscription<BleDevice>? _subScan; + StreamSubscription<AvailabilityState>? _subAvail; final List<BleDevice> _devices = []; UniversalBleScannerController() { // fuck this limitation, I want an instance method to be called, which doesn't // work in an initializer. - _subscription = UniversalBle.scanStream.listen(_newDeviceAction); + _subScan = UniversalBle.scanStream.listen(_newDeviceAction); + _subAvail = UniversalBle.availabilityStream.listen(_newAvailabilityAction); } void _newDeviceAction(BleDevice dev) { @@ -30,6 +32,14 @@ class UniversalBleScannerController extends ScannerControllerImpl { } } + void _newAvailabilityAction(AvailabilityState event) { + super.setAvailability( + event == AvailabilityState.poweredOn + ? ScanAvailability.available + : ScanAvailability.unavailable, + ); + } + @override Future<void> startScan({ Duration timeout = const Duration(seconds: 5), @@ -59,7 +69,8 @@ class UniversalBleScannerController extends ScannerControllerImpl { void dispose() { super.dispose(); stopScan().ignore(); - _subscription?.cancel(); + _subScan?.cancel().ignore(); + _subAvail?.cancel().ignore(); } } |