summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruvok2025-07-31 13:09:10 +0200
committeruvok2025-07-31 13:09:10 +0200
commitfc9ee156c61738c7ceb77ddf82e79a6bcefb8d38 (patch)
tree8d916835e53bb73163da791a3d91012f2dd97750
parentd727c2db88ccfca486bcf6443cfef51fe723a3a8 (diff)
Add UB connection
-rw-r--r--lib/model/connection/device_connection.dart1
-rw-r--r--lib/model/connection/universal_ble_connection.dart28
-rw-r--r--lib/model/device_connection_factory.dart4
3 files changed, 32 insertions, 1 deletions
diff --git a/lib/model/connection/device_connection.dart b/lib/model/connection/device_connection.dart
index 81bcbfd..5c810f0 100644
--- a/lib/model/connection/device_connection.dart
+++ b/lib/model/connection/device_connection.dart
@@ -13,7 +13,6 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
enum ConnectionStatus { disconnected, connected, error }
abstract class DeviceConnection {
diff --git a/lib/model/connection/universal_ble_connection.dart b/lib/model/connection/universal_ble_connection.dart
new file mode 100644
index 0000000..6aa3c87
--- /dev/null
+++ b/lib/model/connection/universal_ble_connection.dart
@@ -0,0 +1,28 @@
+import 'package:universal_ble/universal_ble.dart';
+import 'package:uvok_epaper_badge/model/connection/device_connection.dart';
+import 'package:uvok_epaper_badge/model/device/universal_ble_device.dart';
+
+class UniversalBleConnection implements DeviceConnection {
+ final UniversalBleDevice _device;
+ ConnectionStatus _status = ConnectionStatus.disconnected;
+
+ UniversalBleConnection(this._device);
+
+ @override
+ Future<void> connect() async {
+ await _device.device.connect();
+
+ _status = await _device.device.isConnected
+ ? ConnectionStatus.connected
+ : ConnectionStatus.disconnected;
+ }
+
+ @override
+ Future<void> disconnect() async {
+ await _device.device.disconnect();
+ _status = ConnectionStatus.disconnected;
+ }
+
+ @override
+ ConnectionStatus get status => _status;
+}
diff --git a/lib/model/device_connection_factory.dart b/lib/model/device_connection_factory.dart
index 92b2348..49e1887 100644
--- a/lib/model/device_connection_factory.dart
+++ b/lib/model/device_connection_factory.dart
@@ -13,16 +13,20 @@
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
+import 'package:uvok_epaper_badge/model/connection/universal_ble_connection.dart';
import 'package:uvok_epaper_badge/model/device/device.dart';
import 'package:uvok_epaper_badge/model/connection/device_connection.dart';
import 'package:uvok_epaper_badge/model/device/flutter_blue_plus_device.dart';
import 'package:uvok_epaper_badge/model/connection/flutter_blue_plus_device_connection.dart';
import 'package:uvok_epaper_badge/model/connection/mock_device_connection.dart';
+import 'package:uvok_epaper_badge/model/device/universal_ble_device.dart';
class DeviceConnectionFactory {
static DeviceConnection createConnection(Device device) {
if (device is FlutterBluePlusDevice) {
return FlutterBluePlusDeviceConnection(device: device);
+ } else if (device is UniversalBleDevice) {
+ return UniversalBleConnection(device);
}
// switch (device.type) {