diff options
author | uvok | 2025-07-31 13:09:10 +0200 |
---|---|---|
committer | uvok | 2025-07-31 13:09:10 +0200 |
commit | fc9ee156c61738c7ceb77ddf82e79a6bcefb8d38 (patch) | |
tree | 8d916835e53bb73163da791a3d91012f2dd97750 | |
parent | d727c2db88ccfca486bcf6443cfef51fe723a3a8 (diff) |
Add UB connection
-rw-r--r-- | lib/model/connection/device_connection.dart | 1 | ||||
-rw-r--r-- | lib/model/connection/universal_ble_connection.dart | 28 | ||||
-rw-r--r-- | lib/model/device_connection_factory.dart | 4 |
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) { |