summaryrefslogtreecommitdiff
path: root/lib/model
diff options
context:
space:
mode:
Diffstat (limited to 'lib/model')
-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) {