diff options
author | uvok | 2025-07-31 13:49:24 +0200 |
---|---|---|
committer | uvok | 2025-07-31 13:49:24 +0200 |
commit | 765fcdfa7e932725a2a8f1b5b0b5b72f2d1ab69b (patch) | |
tree | 8bedb5f5e9ebb8ddde177fbdfef1ade62cf26f81 | |
parent | 2cd4bfa1410f5a079f74fd70aff3e9bc8ebe869f (diff) |
sc: Add availability stream
-rw-r--r-- | lib/control/scanner_controller.dart | 4 | ||||
-rw-r--r-- | lib/control/scanner_controller_impl.dart | 12 |
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/control/scanner_controller.dart b/lib/control/scanner_controller.dart index 8936e86..fd44307 100644 --- a/lib/control/scanner_controller.dart +++ b/lib/control/scanner_controller.dart @@ -5,11 +5,15 @@ import 'package:uvok_epaper_badge/model/device/device.dart'; /// Represents the scan status. enum ScanStatus { idle, scanning, finished, error } +enum ScanAvailability { unavailable, available } + /// Represents a scanner controller. /// It emits devices which may be connected to later. abstract class ScannerController { Stream<List<Device>> get scanResultsStream; Stream<ScanStatus> get statusStream; + Stream<ScanAvailability> get availabilityStream; + Future<void> startScan({Duration timeout}); Future<void> stopScan(); void dispose(); diff --git a/lib/control/scanner_controller_impl.dart b/lib/control/scanner_controller_impl.dart index 427a3e8..e60aec3 100644 --- a/lib/control/scanner_controller_impl.dart +++ b/lib/control/scanner_controller_impl.dart @@ -9,6 +9,8 @@ abstract class ScannerControllerImpl extends ScannerController { StreamController<ScanStatus>.broadcast(); final StreamController<List<Device>> _deviceContoller = StreamController<List<Device>>.broadcast(); + final StreamController<ScanAvailability> _availabilityStreamController = + StreamController<ScanAvailability>.broadcast(); @override Stream<ScanStatus> get statusStream => _scanStatusController.stream; @@ -16,6 +18,10 @@ abstract class ScannerControllerImpl extends ScannerController { @override Stream<List<Device>> get scanResultsStream => _deviceContoller.stream; + @override + Stream<ScanAvailability> get availabilityStream => + _availabilityStreamController.stream; + @protected void setStatus(ScanStatus newStatus) { if (_scanStatusController.isClosed) return; @@ -30,9 +36,15 @@ abstract class ScannerControllerImpl extends ScannerController { _deviceContoller.add(devices); } + @protected + void setAvailability(ScanAvailability available) { + _availabilityStreamController.add(available); + } + @override void dispose() { _scanStatusController.close(); _deviceContoller.close(); + _availabilityStreamController.close(); } } |