diff options
author | uvok | 2025-07-29 19:34:30 +0200 |
---|---|---|
committer | uvok | 2025-07-29 19:34:30 +0200 |
commit | 9536bfa04db171aee987f042dccc4c2f16fa0f29 (patch) | |
tree | 30be128d055edafb9ba2791438552a2a8998ae2a /lib | |
parent | 3e16a18fb5d279575377ae5cf1d3929a90cae79c (diff) |
Add "controllers" for scanning
Diffstat (limited to 'lib')
-rw-r--r-- | lib/control/scanner_controller.dart | 16 | ||||
-rw-r--r-- | lib/control/scanner_controller_impl.dart | 17 | ||||
-rw-r--r-- | lib/model/device.dart | 6 |
3 files changed, 39 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); + } +} diff --git a/lib/model/device.dart b/lib/model/device.dart new file mode 100644 index 0000000..98445fa --- /dev/null +++ b/lib/model/device.dart @@ -0,0 +1,6 @@ +/// Represents a (badge) device to be connected to. +abstract class Device { + String? get name; + String? get address; + int? get rssi; +} |