summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruvok2025-07-31 13:49:24 +0200
committeruvok2025-07-31 13:49:24 +0200
commit765fcdfa7e932725a2a8f1b5b0b5b72f2d1ab69b (patch)
tree8bedb5f5e9ebb8ddde177fbdfef1ade62cf26f81
parent2cd4bfa1410f5a079f74fd70aff3e9bc8ebe869f (diff)
sc: Add availability stream
-rw-r--r--lib/control/scanner_controller.dart4
-rw-r--r--lib/control/scanner_controller_impl.dart12
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();
}
}