summaryrefslogtreecommitdiff
path: root/lib/model/device
diff options
context:
space:
mode:
Diffstat (limited to 'lib/model/device')
-rw-r--r--lib/model/device/device.dart6
-rw-r--r--lib/model/device/flutter_blue_plus_device.dart22
-rw-r--r--lib/model/device/mock_device.dart18
3 files changed, 46 insertions, 0 deletions
diff --git a/lib/model/device/device.dart b/lib/model/device/device.dart
new file mode 100644
index 0000000..98445fa
--- /dev/null
+++ b/lib/model/device/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/lib/model/device/flutter_blue_plus_device.dart b/lib/model/device/flutter_blue_plus_device.dart
new file mode 100644
index 0000000..e56223b
--- /dev/null
+++ b/lib/model/device/flutter_blue_plus_device.dart
@@ -0,0 +1,22 @@
+import 'package:uvok_epaper_badge/model/device/device.dart';
+import 'package:flutter_blue_plus/flutter_blue_plus.dart';
+import 'package:uvok_epaper_badge/utility.dart';
+
+class FlutterBluePlusDevice implements Device {
+ final ScanResult scanResult;
+
+ FlutterBluePlusDevice.fromScan(this.scanResult);
+
+ @override
+ String? get address => scanResult.device.remoteId.str;
+
+ @override
+ String? get name => firstGiven([
+ scanResult.device.advName,
+ scanResult.device.platformName,
+ "<Unknown>",
+ ]);
+
+ @override
+ int? get rssi => scanResult.rssi;
+}
diff --git a/lib/model/device/mock_device.dart b/lib/model/device/mock_device.dart
new file mode 100644
index 0000000..78770e1
--- /dev/null
+++ b/lib/model/device/mock_device.dart
@@ -0,0 +1,18 @@
+import 'package:uvok_epaper_badge/model/device/device.dart';
+
+class MockDevice implements Device {
+ final int _id;
+ final String? _name;
+
+ MockDevice(this._id, this._name);
+
+ @override
+ String? get address =>
+ "AA:BB:CC:DD:EE:${_id.toRadixString(16).padLeft(2, '0')}";
+
+ @override
+ String? get name => _name;
+
+ @override
+ int? get rssi => -60;
+}