From fc9ee156c61738c7ceb77ddf82e79a6bcefb8d38 Mon Sep 17 00:00:00 2001 From: uvok Date: Thu, 31 Jul 2025 13:09:10 +0200 Subject: Add UB connection --- lib/model/connection/device_connection.dart | 1 - lib/model/connection/universal_ble_connection.dart | 28 ++++++++++++++++++++++ lib/model/device_connection_factory.dart | 4 ++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 lib/model/connection/universal_ble_connection.dart (limited to 'lib') 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 . - 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 connect() async { + await _device.device.connect(); + + _status = await _device.device.isConnected + ? ConnectionStatus.connected + : ConnectionStatus.disconnected; + } + + @override + Future 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 . +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) { -- cgit v1.2.3