summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/control/scanner_controller.dart16
-rw-r--r--lib/control/scanner_controller_impl.dart17
-rw-r--r--lib/model/device.dart6
-rw-r--r--pubspec.lock2
-rw-r--r--pubspec.yaml1
5 files changed, 41 insertions, 1 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;
+}
diff --git a/pubspec.lock b/pubspec.lock
index 00d4db2..4cbc2d8 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -217,7 +217,7 @@ packages:
source: hosted
version: "0.11.1"
meta:
- dependency: transitive
+ dependency: "direct main"
description:
name: meta
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
diff --git a/pubspec.yaml b/pubspec.yaml
index 7ea1ed6..c843b73 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -37,6 +37,7 @@ dependencies:
flutter_blue_plus: ^1.35.5
permission_handler: ^12.0.1
logger: ^2.6.1
+ meta: ^1.16.0
dev_dependencies:
flutter_test: