summaryrefslogtreecommitdiff
path: root/lib/model/connection
diff options
context:
space:
mode:
Diffstat (limited to 'lib/model/connection')
-rw-r--r--lib/model/connection/device_connection.dart4
-rw-r--r--lib/model/connection/flutter_blue_plus_device_connection.dart11
-rw-r--r--lib/model/connection/mock_device_connection.dart11
-rw-r--r--lib/model/connection/universal_ble_connection.dart13
4 files changed, 25 insertions, 14 deletions
diff --git a/lib/model/connection/device_connection.dart b/lib/model/connection/device_connection.dart
index 5c810f0..baeaa9f 100644
--- a/lib/model/connection/device_connection.dart
+++ b/lib/model/connection/device_connection.dart
@@ -13,12 +13,14 @@
// 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:flutter/foundation.dart';
+
enum ConnectionStatus { disconnected, connected, error }
abstract class DeviceConnection {
Future<void> connect();
Future<void> disconnect();
- ConnectionStatus get status;
+ ValueNotifier<ConnectionStatus> get status;
// Future<Uint8List> read(String endpoint);
// Future<void> write(String endpoint, Uint8List data);
diff --git a/lib/model/connection/flutter_blue_plus_device_connection.dart b/lib/model/connection/flutter_blue_plus_device_connection.dart
index 3f860a6..9cc73d1 100644
--- a/lib/model/connection/flutter_blue_plus_device_connection.dart
+++ b/lib/model/connection/flutter_blue_plus_device_connection.dart
@@ -15,6 +15,7 @@
import 'dart:async';
+import 'package:flutter/foundation.dart';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:logger/logger.dart';
import 'package:uvok_epaper_badge/first_where_ext.dart';
@@ -24,7 +25,9 @@ import 'package:uvok_epaper_badge/model/device/flutter_blue_plus_device.dart';
var logger = Logger();
class FlutterBluePlusDeviceConnection implements DeviceConnection {
- ConnectionStatus _status = ConnectionStatus.disconnected;
+ final ValueNotifier<ConnectionStatus> _status = ValueNotifier(
+ ConnectionStatus.disconnected,
+ );
// Just to have a resonable default subscription?
StreamSubscription<BluetoothConnectionState> subs =
Stream<BluetoothConnectionState>.empty().listen((e) => ());
@@ -58,7 +61,7 @@ class FlutterBluePlusDeviceConnection implements DeviceConnection {
findCharac(svcs);
- _status = ConnectionStatus.connected;
+ _status.value = ConnectionStatus.connected;
await Future.delayed(Duration(seconds: 5));
logger.i("Try re-discover");
@@ -68,11 +71,11 @@ class FlutterBluePlusDeviceConnection implements DeviceConnection {
@override
Future<void> disconnect() async {
subs.cancel().ignore();
- _status = ConnectionStatus.disconnected;
+ _status.value = ConnectionStatus.disconnected;
}
@override
- ConnectionStatus get status => _status;
+ ValueNotifier<ConnectionStatus> get status => _status;
void _onConnStateChange(BluetoothConnectionState event) {
logger.i("New conn state: ${event.toString()}");
diff --git a/lib/model/connection/mock_device_connection.dart b/lib/model/connection/mock_device_connection.dart
index 8b8750a..9dc3726 100644
--- a/lib/model/connection/mock_device_connection.dart
+++ b/lib/model/connection/mock_device_connection.dart
@@ -13,21 +13,24 @@
// 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:flutter/foundation.dart';
import 'package:uvok_epaper_badge/model/connection/device_connection.dart';
class MockDeviceConnection implements DeviceConnection {
- ConnectionStatus _status = ConnectionStatus.disconnected;
+ final ValueNotifier<ConnectionStatus> _status = ValueNotifier(
+ ConnectionStatus.disconnected,
+ );
@override
Future<void> connect() async {
- _status = ConnectionStatus.connected;
+ _status.value = ConnectionStatus.connected;
}
@override
Future<void> disconnect() async {
- _status = ConnectionStatus.disconnected;
+ _status.value = ConnectionStatus.disconnected;
}
@override
- ConnectionStatus get status => _status;
+ ValueNotifier<ConnectionStatus> get status => _status;
}
diff --git a/lib/model/connection/universal_ble_connection.dart b/lib/model/connection/universal_ble_connection.dart
index b86bf2b..fa986a0 100644
--- a/lib/model/connection/universal_ble_connection.dart
+++ b/lib/model/connection/universal_ble_connection.dart
@@ -13,13 +13,16 @@
// 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:flutter/foundation.dart';
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;
+ final ValueNotifier<ConnectionStatus> _status = ValueNotifier(
+ ConnectionStatus.disconnected,
+ );
UniversalBleConnection(this._device);
@@ -27,11 +30,11 @@ class UniversalBleConnection implements DeviceConnection {
Future<void> connect() async {
await _device.device.connect();
- _status = await _device.device.isConnected
+ _status.value = await _device.device.isConnected
? ConnectionStatus.connected
: ConnectionStatus.disconnected;
- if (_status == ConnectionStatus.connected) {
+ if (_status.value == ConnectionStatus.connected) {
/* Ignore return value for now */
await _device.device.discoverServices();
}
@@ -40,9 +43,9 @@ class UniversalBleConnection implements DeviceConnection {
@override
Future<void> disconnect() async {
await _device.device.disconnect();
- _status = ConnectionStatus.disconnected;
+ _status.value = ConnectionStatus.disconnected;
}
@override
- ConnectionStatus get status => _status;
+ ValueNotifier<ConnectionStatus> get status => _status;
}