summaryrefslogtreecommitdiff
path: root/lib/control
diff options
context:
space:
mode:
authoruvok2025-07-29 19:34:30 +0200
committeruvok2025-07-29 19:34:30 +0200
commit9536bfa04db171aee987f042dccc4c2f16fa0f29 (patch)
tree30be128d055edafb9ba2791438552a2a8998ae2a /lib/control
parent3e16a18fb5d279575377ae5cf1d3929a90cae79c (diff)
Add "controllers" for scanning
Diffstat (limited to 'lib/control')
-rw-r--r--lib/control/scanner_controller.dart16
-rw-r--r--lib/control/scanner_controller_impl.dart17
2 files changed, 33 insertions, 0 deletions
diff --git a/lib/control/scanner_controller.dart b/lib/control/scanner_controller.dart
new file mode 100644
index 0000000..75711d6
--- /dev/null
+++ b/lib/control/scanner_controller.dart
@@ -0,0 +1,16 @@
+import 'dart:async';
+
+import 'package:badge/model/device.dart';
+
+/// Represents the scan status.
+enum ScanStatus { idle, scanning, finished, error }
+
+/// 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;
+ 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
new file mode 100644
index 0000000..e39aa6b
--- /dev/null
+++ b/lib/control/scanner_controller_impl.dart
@@ -0,0 +1,17 @@
+import 'dart:async';
+import 'package:badge/control/scanner_controller.dart';
+import 'package:meta/meta.dart';
+
+/// Helper class which provides the setStatus method.
+abstract class ScannerControllerImpl extends ScannerController {
+ final StreamController<ScanStatus> _scanStatusController =
+ StreamController<ScanStatus>.broadcast();
+
+ @override
+ Stream<ScanStatus> get statusStream => _scanStatusController.stream;
+
+ @protected
+ void setStatus(ScanStatus newStatus) {
+ _scanStatusController.add(newStatus);
+ }
+}