summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruvok2025-07-31 14:19:35 +0200
committeruvok2025-07-31 14:19:35 +0200
commit5600392e61e7b3dc4cf3a2943f307810e16365ab (patch)
tree45cb17638c5046b3acb7344d901c34df3575e0b9
parentab0aef27c2748bdd89c83f4958d4a02558be4e09 (diff)
UB: Implement availability
-rw-r--r--lib/control/universal_ble_scanner_controller.dart17
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();
}
}