From 78f2f3544da0c1a2e451db24229bba0423e8bcfb Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Fri, 11 Nov 2022 15:59:21 -0500 Subject: [PATCH 01/31] install reactive_ble --- pubspec.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/pubspec.yaml b/pubspec.yaml index 5326386..658ba2e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,6 +15,7 @@ dependencies: flutter_ble_lib_ios_15: ^2.5.2 csafe_fitness: ^0.1.0 rxdart: ^0.27.3 + flutter_reactive_ble: ^5.0.2 dev_dependencies: flutter_test: From 345b7adcc061547f0ca47fa7c92a499ed74dfaa4 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Fri, 11 Nov 2022 17:05:28 -0500 Subject: [PATCH 02/31] first pass at migrating bluetooth scanning over to reactive ble --- lib/models/ergblemanager.dart | 18 +++++------------- lib/models/ergometer.dart | 2 +- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/lib/models/ergblemanager.dart b/lib/models/ergblemanager.dart index ccc0a1b..96dcbb3 100644 --- a/lib/models/ergblemanager.dart +++ b/lib/models/ergblemanager.dart @@ -1,32 +1,24 @@ import 'package:c2bluetooth/constants.dart' as Identifiers; -import 'package:flutter_ble_lib_ios_15/flutter_ble_lib.dart'; +import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import 'ergometer.dart'; class ErgBleManager { - BleManager _manager = BleManager(); - - /// perform set up to get the Bluetooth client ready to scan for devices - void init() { - _manager.createClient(); - } + final _manager = FlutterReactiveBle(); /// Begin scanning for Ergs. /// /// This begins a scan for bluetooth devices with a filter applied so that only Concept2 Performance Monitors show up. /// Bluetooth must be on and adequate permissions must be granted to the app for this to work. Stream startErgScan() { - return _manager.startPeripheralScan(uuids: [ + return _manager.scanForDevices(withServices: [ Identifiers.C2_ROWING_BASE_UUID - ]).map((scanResult) => Ergometer(scanResult.peripheral)); + ]).map((scanResult) => Ergometer(scanResult)); } /// Stops scanning for ergs - Future stopErgScan() { - return _manager.stopPeripheralScan(); - } /// Clean up/destroy/deallocate resources so that they are availalble again Future destroy() { - return _manager.destroyClient(); + return _manager.deinitialize(); } } diff --git a/lib/models/ergometer.dart b/lib/models/ergometer.dart index 8beef74..f6ee0bf 100644 --- a/lib/models/ergometer.dart +++ b/lib/models/ergometer.dart @@ -13,7 +13,7 @@ import 'package:rxdart/rxdart.dart'; enum ErgometerConnectionState { connecting, connected, disconnected } class Ergometer { - Peripheral _peripheral; + DiscoveredDevice _peripheral; Csafe? _csafeClient; /// Get the name of this erg. i.e. "PM5" + serial number From 707a6b984c078e6e793bbab9a0d4b0c9ee309803 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Fri, 11 Nov 2022 17:45:10 -0500 Subject: [PATCH 03/31] update connection and IO related stuff to use reactive --- lib/models/ergometer.dart | 54 +++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/lib/models/ergometer.dart b/lib/models/ergometer.dart index f6ee0bf..e09b9cc 100644 --- a/lib/models/ergometer.dart +++ b/lib/models/ergometer.dart @@ -27,29 +27,30 @@ class Ergometer { Ergometer(this._peripheral); /// Connect to this erg and discover the services and characteristics that it offers - Future connectAndDiscover() async { - await _peripheral.connect(); - await _peripheral.discoverAllServicesAndCharacteristics(); - + Stream connectAndDiscover() async { + //having this first might cause problems _csafeClient = Csafe(_readCsafe, _writeCsafe); + + //this may cause problems if the device goes out of range between scenning and trying to connect. maybe use connectToAdvertisingDevice instead to mitigate this and prevent a hang on android + + //if no services are specified in the `servicesWithCharacteristicsToDiscover` parameter, then full service discovery will be performed + return connectToDevice(id: _peripheral.id) + } /// Disconnect from this erg or cancel the connection - Future disconnectOrCancel() async { - return _peripheral.disconnectOrCancelConnection(); - } /// Returns a stream of [WorkoutSummary] objects upon completion of any programmed piece or a "just row" piece that is longer than 1 minute. Stream monitorForWorkoutSummary() { - Stream ws1 = _peripheral - .monitorCharacteristic(Identifiers.C2_ROWING_PRIMARY_SERVICE_UUID, - Identifiers.C2_ROWING_END_OF_WORKOUT_SUMMARY_CHARACTERISTIC_UUID) - .asyncMap((datapoint) => datapoint.read()); + + var workoutSummaryCharacteristic1 = QualifiedCharacteristic(serviceId: Identifiers.C2_ROWING_PRIMARY_SERVICE_UUID, characteristicId: Identifiers.C2_ROWING_END_OF_WORKOUT_SUMMARY_CHARACTERISTIC_UUID, deviceId: _peripheral.id); + + var workoutSummaryCharacteristic2 = QualifiedCharacteristic(serviceId: Identifiers.C2_ROWING_PRIMARY_SERVICE_UUID, characteristicId: Identifiers.C2_ROWING_END_OF_WORKOUT_SUMMARY_CHARACTERISTIC2_UUID, deviceId: _peripheral.id); - Stream ws2 = _peripheral - .monitorCharacteristic(Identifiers.C2_ROWING_PRIMARY_SERVICE_UUID, - Identifiers.C2_ROWING_END_OF_WORKOUT_SUMMARY_CHARACTERISTIC2_UUID) - .asyncMap((datapoint) => datapoint.read()); + Stream ws1 = flutterReactiveBle.subscribeToCharacteristic(workoutSummaryCharacteristic1).asyncMap((datapoint) => Uint8List.fromList(datapoint)); + + + Stream ws2 = flutterReactiveBle.subscribeToCharacteristic(workoutSummaryCharacteristic2).asyncMap((datapoint) => Uint8List.fromList(datapoint)); return Rx.zip2(ws1, ws2, (Uint8List ws1Result, Uint8List ws2Result) { List combinedList = ws1Result.toList(); @@ -81,10 +82,9 @@ class Ergometer { /// /// Intended for passing to the csafe_fitness library to allow it to read data from the erg Stream _readCsafe() { - return _peripheral - .monitorCharacteristic(Identifiers.C2_ROWING_CONTROL_SERVICE_UUID, - Identifiers.C2_ROWING_PM_TRANSMIT_CHARACTERISTIC_UUID) - .asyncMap((datapoint) { + var csafeRxCharacteristic = QualifiedCharacteristic(serviceId: Identifiers.C2_ROWING_CONTROL_SERVICE_UUID, characteristicId: Identifiers.C2_ROWING_PM_TRANSMIT_CHARACTERISTIC_UUID, deviceId: _peripheral.id) + + return flutterReactiveBle.subscribeToCharacteristic(csafeRxCharacteristic).asyncMap((datapoint) => Uint8List.fromList(datapoint)).asyncMap((datapoint) { print("reading data: ${datapoint.value}"); return datapoint.value; }); @@ -94,12 +94,16 @@ class Ergometer { /// /// Intended for passing to the csafe_fitness library to allow it to write data to the erg Future _writeCsafe(Uint8List value) { - return _peripheral.writeCharacteristic( - Identifiers.C2_ROWING_CONTROL_SERVICE_UUID, - Identifiers.C2_ROWING_PM_RECEIVE_CHARACTERISTIC_UUID, - value, - true); - //.asyncMap((datapoint) => datapoint.read()); + var csafeTxCharacteristic = QualifiedCharacteristic(serviceId: Identifiers.C2_ROWING_CONTROL_SERVICE_UUID, characteristicId: Identifiers.C2_ROWING_PM_RECEIVE_CHARACTERISTIC_UUID, deviceId: _peripheral.id) + + // return _peripheral.writeCharacteristic( + // Identifiers.C2_ROWING_CONTROL_SERVICE_UUID, + // Identifiers.C2_ROWING_PM_RECEIVE_CHARACTERISTIC_UUID, + // value, + // true); + // //.asyncMap((datapoint) => datapoint.read()); + + await flutterReactiveBle.writeCharacteristicWithResponse(csafeTxCharacteristic, value.asList()) } @Deprecated("This is a temporary function for development/experimentation and will be gone very soon") From e2179dc46a6f0861b44be69c638805ce89614fed Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Fri, 11 Nov 2022 17:49:13 -0500 Subject: [PATCH 04/31] add flutterReactiveBle class --- lib/models/ergometer.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/models/ergometer.dart b/lib/models/ergometer.dart index e09b9cc..f811119 100644 --- a/lib/models/ergometer.dart +++ b/lib/models/ergometer.dart @@ -13,6 +13,7 @@ import 'package:rxdart/rxdart.dart'; enum ErgometerConnectionState { connecting, connected, disconnected } class Ergometer { + final _manager = FlutterReactiveBle(); DiscoveredDevice _peripheral; Csafe? _csafeClient; From d001e45ca31cf3a41d9fe9c8d0bd0fe7d112f386 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Fri, 11 Nov 2022 17:50:06 -0500 Subject: [PATCH 05/31] combine MonitorConnectionState with connection function --- lib/models/ergometer.dart | 40 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/lib/models/ergometer.dart b/lib/models/ergometer.dart index f811119..52bf962 100644 --- a/lib/models/ergometer.dart +++ b/lib/models/ergometer.dart @@ -28,14 +28,31 @@ class Ergometer { Ergometer(this._peripheral); /// Connect to this erg and discover the services and characteristics that it offers - Stream connectAndDiscover() async { + /// this returns a stream of events to enable monitoring the erg's connection state + /// This acts as a wrapper around the state provided by the internal bluetooth library. + Stream connectAndDiscover() async { //having this first might cause problems _csafeClient = Csafe(_readCsafe, _writeCsafe); //this may cause problems if the device goes out of range between scenning and trying to connect. maybe use connectToAdvertisingDevice instead to mitigate this and prevent a hang on android //if no services are specified in the `servicesWithCharacteristicsToDiscover` parameter, then full service discovery will be performed - return connectToDevice(id: _peripheral.id) + return connectToDevice(id: _peripheral.id).asyncMap((connectionStateUpdate) { + switch (connectionStateUpdate.connectionState) { + case DeviceConnectionState.connecting: + return ErgometerConnectionState.connecting; + case DeviceConnectionState.connected: + return ErgometerConnectionState.connected; + case DeviceConnectionState.disconnecting: + return ErgometerConnectionState.disconnected; + case DeviceConnectionState.disconnected: + return ErgometerConnectionState.disconnected; + default: + return ErgometerConnectionState.disconnected; + } + }); + + } } @@ -60,25 +77,6 @@ class Ergometer { }); } - /// Expose a stream of events to enable monitoring the erg's connection state - /// This acts as a wrapper around the state provided by the internal bluetooth library to aid with swapping it out later. - Stream monitorConnectionState() { - return _peripheral.observeConnectionState().asyncMap((connectionState) { - switch (connectionState) { - case PeripheralConnectionState.connecting: - return ErgometerConnectionState.connecting; - case PeripheralConnectionState.connected: - return ErgometerConnectionState.connected; - case PeripheralConnectionState.disconnecting: - return ErgometerConnectionState.disconnected; - case PeripheralConnectionState.disconnected: - return ErgometerConnectionState.disconnected; - default: - return ErgometerConnectionState.disconnected; - } - }); - } - /// A read function for the PM over bluetooth. /// /// Intended for passing to the csafe_fitness library to allow it to read data from the erg From a3cbd3a2b8b10be16d164f0e5792228f3c7f7d97 Mon Sep 17 00:00:00 2001 From: Aidan Lee Date: Fri, 11 Nov 2022 22:05:11 -0500 Subject: [PATCH 06/31] converted to reactive calls and removed various errors --- example/ios/Runner/Info.plist | 14 ++++++++++++++ example/lib/main.dart | 28 +++++++++++++--------------- lib/models/ergblemanager.dart | 2 +- lib/models/ergometer.dart | 28 +++++++++++++--------------- 4 files changed, 41 insertions(+), 31 deletions(-) diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist index f12a5c4..bd276d0 100644 --- a/example/ios/Runner/Info.plist +++ b/example/ios/Runner/Info.plist @@ -41,5 +41,19 @@ UIViewControllerBasedStatusBarAppearance + CADisableMinimumFrameDurationOnPhone + + NSBonjourServices + + _dartobservatory._tcp + + NSBluetoothAlwaysUsageDescription + The app uses bluetooth to find, connect and transfer data between different devices + NSBluetoothPeripheralUsageDescription + The app uses bluetooth to find, connect and transfer data between different devices + UIBackgroundModes + + bluetooth-central + diff --git a/example/lib/main.dart b/example/lib/main.dart index 97d8f46..b767d79 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -49,8 +49,6 @@ class _SimpleErgViewState extends State { @override void initState() { super.initState(); - bleManager.init(); //ready to go! - startScan(); } @@ -72,7 +70,7 @@ class _SimpleErgViewState extends State { stopScan() { scanSub?.cancel(); scanSub = null; - bleManager.stopErgScan(); +// bleManager.stopErgScan(); } connectToDevice() async { @@ -82,7 +80,7 @@ class _SimpleErgViewState extends State { displayText = "Device Connecting"; }); - await targetDevice!.connectAndDiscover(); + targetDevice!.connectAndDiscover(); // if (!connected) { // targetDevice! @@ -132,16 +130,16 @@ class _SimpleErgViewState extends State { targetDevice?.configureWorkout(Workout.single(WorkoutGoal.meters(10000))); } - disconnectFromDevice() async { - if (targetDevice == null) return; - - // targetDevice!.disconnect(); - await targetDevice?.disconnectOrCancel(); - - setState(() { - displayText = "Device Disconnected"; - }); - } + // disconnectFromDevice() async { + // if (targetDevice == null) return; + // + // // targetDevice!.disconnect(); + // await targetDevice?.disconnectOrCancel(); + // + // setState(() { + // displayText = "Device Disconnected"; + // }); + // } subscribeToStreams() async { if (targetDevice == null) return; @@ -217,7 +215,7 @@ class _SimpleErgViewState extends State { @override void dispose() { - disconnectFromDevice(); + //disconnectFromDevice(); bleManager .destroy(); //remember to release native resources when you're done! super.dispose(); diff --git a/lib/models/ergblemanager.dart b/lib/models/ergblemanager.dart index 96dcbb3..071a851 100644 --- a/lib/models/ergblemanager.dart +++ b/lib/models/ergblemanager.dart @@ -11,7 +11,7 @@ class ErgBleManager { /// Bluetooth must be on and adequate permissions must be granted to the app for this to work. Stream startErgScan() { return _manager.scanForDevices(withServices: [ - Identifiers.C2_ROWING_BASE_UUID + Uuid.parse(Identifiers.C2_ROWING_BASE_UUID) ]).map((scanResult) => Ergometer(scanResult)); } diff --git a/lib/models/ergometer.dart b/lib/models/ergometer.dart index 52bf962..8eb360c 100644 --- a/lib/models/ergometer.dart +++ b/lib/models/ergometer.dart @@ -1,26 +1,26 @@ import 'dart:typed_data'; import 'package:c2bluetooth/c2bluetooth.dart'; +import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; import '../internal/commands.dart'; import '../internal/datatypes.dart'; import 'package:csafe_fitness/csafe_fitness.dart'; import '../helpers.dart'; import 'workout.dart'; import 'package:c2bluetooth/constants.dart' as Identifiers; -import 'package:flutter_ble_lib_ios_15/flutter_ble_lib.dart'; import 'package:rxdart/rxdart.dart'; enum ErgometerConnectionState { connecting, connected, disconnected } class Ergometer { - final _manager = FlutterReactiveBle(); + final flutterReactiveBle = FlutterReactiveBle(); DiscoveredDevice _peripheral; Csafe? _csafeClient; /// Get the name of this erg. i.e. "PM5" + serial number /// /// Returns "Unknown" if the erg does not report a name - String get name => _peripheral.name ?? "Unknown"; + String get name => _peripheral.name; /// Create an Ergometer from a FlutterBleLib peripheral object /// @@ -30,14 +30,14 @@ class Ergometer { /// Connect to this erg and discover the services and characteristics that it offers /// this returns a stream of events to enable monitoring the erg's connection state /// This acts as a wrapper around the state provided by the internal bluetooth library. - Stream connectAndDiscover() async { + Stream connectAndDiscover() { //having this first might cause problems _csafeClient = Csafe(_readCsafe, _writeCsafe); //this may cause problems if the device goes out of range between scenning and trying to connect. maybe use connectToAdvertisingDevice instead to mitigate this and prevent a hang on android //if no services are specified in the `servicesWithCharacteristicsToDiscover` parameter, then full service discovery will be performed - return connectToDevice(id: _peripheral.id).asyncMap((connectionStateUpdate) { + return flutterReactiveBle.connectToDevice(id: _peripheral.id).asyncMap((connectionStateUpdate) { switch (connectionStateUpdate.connectionState) { case DeviceConnectionState.connecting: return ErgometerConnectionState.connecting; @@ -54,16 +54,14 @@ class Ergometer { } - } - /// Disconnect from this erg or cancel the connection /// Returns a stream of [WorkoutSummary] objects upon completion of any programmed piece or a "just row" piece that is longer than 1 minute. Stream monitorForWorkoutSummary() { - var workoutSummaryCharacteristic1 = QualifiedCharacteristic(serviceId: Identifiers.C2_ROWING_PRIMARY_SERVICE_UUID, characteristicId: Identifiers.C2_ROWING_END_OF_WORKOUT_SUMMARY_CHARACTERISTIC_UUID, deviceId: _peripheral.id); + var workoutSummaryCharacteristic1 = QualifiedCharacteristic(serviceId: Uuid.parse(Identifiers.C2_ROWING_PRIMARY_SERVICE_UUID), characteristicId: Uuid.parse(Identifiers.C2_ROWING_END_OF_WORKOUT_SUMMARY_CHARACTERISTIC_UUID), deviceId: _peripheral.id); - var workoutSummaryCharacteristic2 = QualifiedCharacteristic(serviceId: Identifiers.C2_ROWING_PRIMARY_SERVICE_UUID, characteristicId: Identifiers.C2_ROWING_END_OF_WORKOUT_SUMMARY_CHARACTERISTIC2_UUID, deviceId: _peripheral.id); + var workoutSummaryCharacteristic2 = QualifiedCharacteristic(serviceId: Uuid.parse(Identifiers.C2_ROWING_PRIMARY_SERVICE_UUID), characteristicId: Uuid.parse(Identifiers.C2_ROWING_END_OF_WORKOUT_SUMMARY_CHARACTERISTIC2_UUID), deviceId: _peripheral.id); Stream ws1 = flutterReactiveBle.subscribeToCharacteristic(workoutSummaryCharacteristic1).asyncMap((datapoint) => Uint8List.fromList(datapoint)); @@ -81,19 +79,19 @@ class Ergometer { /// /// Intended for passing to the csafe_fitness library to allow it to read data from the erg Stream _readCsafe() { - var csafeRxCharacteristic = QualifiedCharacteristic(serviceId: Identifiers.C2_ROWING_CONTROL_SERVICE_UUID, characteristicId: Identifiers.C2_ROWING_PM_TRANSMIT_CHARACTERISTIC_UUID, deviceId: _peripheral.id) + var csafeRxCharacteristic = QualifiedCharacteristic(serviceId: Uuid.parse(Identifiers.C2_ROWING_CONTROL_SERVICE_UUID), characteristicId: Uuid.parse(Identifiers.C2_ROWING_PM_TRANSMIT_CHARACTERISTIC_UUID), deviceId: _peripheral.id); return flutterReactiveBle.subscribeToCharacteristic(csafeRxCharacteristic).asyncMap((datapoint) => Uint8List.fromList(datapoint)).asyncMap((datapoint) { - print("reading data: ${datapoint.value}"); - return datapoint.value; + print("reading data: $datapoint"); + return datapoint; }); } /// A write function for the PM over bluetooth. /// /// Intended for passing to the csafe_fitness library to allow it to write data to the erg - Future _writeCsafe(Uint8List value) { - var csafeTxCharacteristic = QualifiedCharacteristic(serviceId: Identifiers.C2_ROWING_CONTROL_SERVICE_UUID, characteristicId: Identifiers.C2_ROWING_PM_RECEIVE_CHARACTERISTIC_UUID, deviceId: _peripheral.id) + void _writeCsafe(Uint8List value) { + var csafeTxCharacteristic = QualifiedCharacteristic(serviceId: Uuid.parse(Identifiers.C2_ROWING_CONTROL_SERVICE_UUID), characteristicId: Uuid.parse(Identifiers.C2_ROWING_PM_RECEIVE_CHARACTERISTIC_UUID), deviceId: _peripheral.id); // return _peripheral.writeCharacteristic( // Identifiers.C2_ROWING_CONTROL_SERVICE_UUID, @@ -102,7 +100,7 @@ class Ergometer { // true); // //.asyncMap((datapoint) => datapoint.read()); - await flutterReactiveBle.writeCharacteristicWithResponse(csafeTxCharacteristic, value.asList()) + flutterReactiveBle.writeCharacteristicWithResponse(csafeTxCharacteristic, value: value); } @Deprecated("This is a temporary function for development/experimentation and will be gone very soon") From de7d632d77b403183bb3671417ecb71ce86f114d Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Fri, 11 Nov 2022 22:29:51 -0500 Subject: [PATCH 07/31] make flutterReactiveBle property private --- lib/models/ergometer.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/models/ergometer.dart b/lib/models/ergometer.dart index 8eb360c..fb0bd14 100644 --- a/lib/models/ergometer.dart +++ b/lib/models/ergometer.dart @@ -13,7 +13,7 @@ import 'package:rxdart/rxdart.dart'; enum ErgometerConnectionState { connecting, connected, disconnected } class Ergometer { - final flutterReactiveBle = FlutterReactiveBle(); + final _flutterReactiveBle = FlutterReactiveBle(); DiscoveredDevice _peripheral; Csafe? _csafeClient; From e6392942e1b9a6d22556723f9712efc2f32dc857 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Mon, 14 Nov 2022 19:07:24 -0500 Subject: [PATCH 08/31] fix other uses of the flutterReactiveBle field --- lib/models/ergometer.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/models/ergometer.dart b/lib/models/ergometer.dart index fb0bd14..d8f056f 100644 --- a/lib/models/ergometer.dart +++ b/lib/models/ergometer.dart @@ -37,7 +37,7 @@ class Ergometer { //this may cause problems if the device goes out of range between scenning and trying to connect. maybe use connectToAdvertisingDevice instead to mitigate this and prevent a hang on android //if no services are specified in the `servicesWithCharacteristicsToDiscover` parameter, then full service discovery will be performed - return flutterReactiveBle.connectToDevice(id: _peripheral.id).asyncMap((connectionStateUpdate) { + return _flutterReactiveBle.connectToDevice(id: _peripheral.id).asyncMap((connectionStateUpdate) { switch (connectionStateUpdate.connectionState) { case DeviceConnectionState.connecting: return ErgometerConnectionState.connecting; @@ -63,10 +63,10 @@ class Ergometer { var workoutSummaryCharacteristic2 = QualifiedCharacteristic(serviceId: Uuid.parse(Identifiers.C2_ROWING_PRIMARY_SERVICE_UUID), characteristicId: Uuid.parse(Identifiers.C2_ROWING_END_OF_WORKOUT_SUMMARY_CHARACTERISTIC2_UUID), deviceId: _peripheral.id); - Stream ws1 = flutterReactiveBle.subscribeToCharacteristic(workoutSummaryCharacteristic1).asyncMap((datapoint) => Uint8List.fromList(datapoint)); + Stream ws1 = _flutterReactiveBle.subscribeToCharacteristic(workoutSummaryCharacteristic1).asyncMap((datapoint) => Uint8List.fromList(datapoint)); - Stream ws2 = flutterReactiveBle.subscribeToCharacteristic(workoutSummaryCharacteristic2).asyncMap((datapoint) => Uint8List.fromList(datapoint)); + Stream ws2 = _flutterReactiveBle.subscribeToCharacteristic(workoutSummaryCharacteristic2).asyncMap((datapoint) => Uint8List.fromList(datapoint)); return Rx.zip2(ws1, ws2, (Uint8List ws1Result, Uint8List ws2Result) { List combinedList = ws1Result.toList(); @@ -81,7 +81,7 @@ class Ergometer { Stream _readCsafe() { var csafeRxCharacteristic = QualifiedCharacteristic(serviceId: Uuid.parse(Identifiers.C2_ROWING_CONTROL_SERVICE_UUID), characteristicId: Uuid.parse(Identifiers.C2_ROWING_PM_TRANSMIT_CHARACTERISTIC_UUID), deviceId: _peripheral.id); - return flutterReactiveBle.subscribeToCharacteristic(csafeRxCharacteristic).asyncMap((datapoint) => Uint8List.fromList(datapoint)).asyncMap((datapoint) { + return _flutterReactiveBle.subscribeToCharacteristic(csafeRxCharacteristic).asyncMap((datapoint) => Uint8List.fromList(datapoint)).asyncMap((datapoint) { print("reading data: $datapoint"); return datapoint; }); @@ -100,7 +100,7 @@ class Ergometer { // true); // //.asyncMap((datapoint) => datapoint.read()); - flutterReactiveBle.writeCharacteristicWithResponse(csafeTxCharacteristic, value: value); + _flutterReactiveBle.writeCharacteristicWithResponse(csafeTxCharacteristic, value: value); } @Deprecated("This is a temporary function for development/experimentation and will be gone very soon") From dae2d91acbb9474fcfff3c0f879fdf6b92d352bc Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Tue, 15 Nov 2022 16:21:23 -0500 Subject: [PATCH 09/31] bump minsdkversion on android to make the example app compile --- example/android/app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 5a1c3ea..d9584b6 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -35,7 +35,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.example.fresh_example" - minSdkVersion 18 + minSdkVersion 21 targetSdkVersion 30 versionCode flutterVersionCode.toInteger() versionName flutterVersionName From 89bb0356ec01caf6ff06dc5286228e83bea85e41 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Tue, 15 Nov 2022 16:27:00 -0500 Subject: [PATCH 10/31] remove now-unused flutter_ble_lib dependency --- pubspec.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 658ba2e..dab0f9c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -12,7 +12,6 @@ dependencies: flutter: sdk: flutter - flutter_ble_lib_ios_15: ^2.5.2 csafe_fitness: ^0.1.0 rxdart: ^0.27.3 flutter_reactive_ble: ^5.0.2 From e07ba7f9f3922b56b5d7a2c59f5b004481b9ffe0 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Tue, 15 Nov 2022 16:48:34 -0500 Subject: [PATCH 11/31] add android bluetooth permissions to demo app --- example/android/app/src/main/AndroidManifest.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 99c6fb1..78ad24b 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -1,5 +1,15 @@ + + + + + + + From 305f47bb8dce093b636713edc1638409b72973ef Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Tue, 15 Nov 2022 16:48:54 -0500 Subject: [PATCH 12/31] other android build parameter changes --- example/android/app/build.gradle | 2 +- example/android/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index d9584b6..8b1b141 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 30 + compileSdkVersion 33 sourceSets { main.java.srcDirs += 'src/main/kotlin' diff --git a/example/android/build.gradle b/example/android/build.gradle index 9b6ed06..1881064 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.3.50' + ext.kotlin_version = '1.6.21' repositories { google() jcenter() From 4a32c113b578f449ee773a958d2bd30ac1bb5e37 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Tue, 15 Nov 2022 16:49:10 -0500 Subject: [PATCH 13/31] request permissions android --- example/lib/main.dart | 19 ++++++++++++++++++- example/pubspec.yaml | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index b767d79..3e15b60 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,8 +1,10 @@ import 'dart:async'; +import 'dart:io'; import 'package:c2bluetooth/c2bluetooth.dart'; import 'package:c2bluetooth/models/workout.dart'; import 'package:flutter/material.dart'; +import 'package:permission_handler/permission_handler.dart'; void main() { runApp(MyApp()); @@ -52,7 +54,22 @@ class _SimpleErgViewState extends State { startScan(); } - startScan() { + startScan() async { + var goForIt = false; + + if (Platform.isAndroid) { + PermissionStatus locationPermission = await Permission.location.request(); + PermissionStatus finePermission = + await Permission.locationWhenInUse.request(); + // TODO user feedback on no location + if (locationPermission == PermissionStatus.granted && + finePermission == PermissionStatus.granted) { + goForIt = true; + } + } else if (Platform.isIOS) { + goForIt = true; + } + setState(() { displayText = "Start Scanning"; }); diff --git a/example/pubspec.yaml b/example/pubspec.yaml index bc45844..c669235 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -31,6 +31,7 @@ dependencies: c2bluetooth: path: ../ + permission_handler: ^10.2.0 dev_dependencies: flutter_test: From 3788c119d78ad998a6d453b14ba9efff5a754bd4 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Tue, 15 Nov 2022 20:45:27 -0500 Subject: [PATCH 14/31] misc updates to settings, mainly concerning hooking up cocoapods --- example/ios/Runner.xcodeproj/project.pbxproj | 92 +++++++++++++++++-- .../xcshareddata/xcschemes/Runner.xcscheme | 8 +- 2 files changed, 86 insertions(+), 14 deletions(-) diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 4877c65..98a11af 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -3,12 +3,13 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 51; objects = { /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 71E0CED985FD1762BCF30DDE /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 534834C7320293612BB51C2B /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; @@ -29,9 +30,11 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 05A57BCE264DB95F63255FBC /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 534834C7320293612BB51C2B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -42,6 +45,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B8D80978C7D3224A89929ED7 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + B8D95075A9661C60A4AD023F /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -49,12 +54,21 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 71E0CED985FD1762BCF30DDE /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 1E4F1236A3F1929EB4383FE3 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 534834C7320293612BB51C2B /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -72,6 +86,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + F0E4278F0E8B08CD7FD47A28 /* Pods */, + 1E4F1236A3F1929EB4383FE3 /* Frameworks */, ); sourceTree = ""; }; @@ -98,6 +114,16 @@ path = Runner; sourceTree = ""; }; + F0E4278F0E8B08CD7FD47A28 /* Pods */ = { + isa = PBXGroup; + children = ( + B8D95075A9661C60A4AD023F /* Pods-Runner.debug.xcconfig */, + B8D80978C7D3224A89929ED7 /* Pods-Runner.release.xcconfig */, + 05A57BCE264DB95F63255FBC /* Pods-Runner.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -105,12 +131,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + EBEC1DE42650B27D75C6CB9F /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + AECB0AC27820DCCC1649CDF1 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -127,7 +155,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -197,6 +225,45 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + AECB0AC27820DCCC1649CDF1 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + EBEC1DE42650B27D75C6CB9F /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -272,7 +339,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -290,8 +357,11 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.example.freshExample; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -346,7 +416,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -395,7 +465,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -414,8 +484,11 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.example.freshExample; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -433,8 +506,11 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.example.freshExample; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140c..fb2dffc 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -27,8 +27,6 @@ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> - - - - + + - - Date: Tue, 15 Nov 2022 20:46:27 -0500 Subject: [PATCH 15/31] xcode recommended updates --- example/ios/Runner.xcodeproj/project.pbxproj | 15 ++++++++++----- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 98a11af..3514c05 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -155,7 +155,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1340; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -321,6 +321,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -339,7 +340,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -355,13 +356,14 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = UJPCPV3425; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - PRODUCT_BUNDLE_IDENTIFIER = com.example.freshExample; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); + PRODUCT_BUNDLE_IDENTIFIER = com.adriancedwards.c2bluetooth.freshExample; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -392,6 +394,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -416,7 +419,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -447,6 +450,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -465,10 +469,11 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index fb2dffc..a0f6453 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ Date: Tue, 15 Nov 2022 21:05:34 -0500 Subject: [PATCH 16/31] more pod stuff maybe? --- example/ios/Flutter/Debug.xcconfig | 1 + example/ios/Flutter/Release.xcconfig | 1 + example/ios/Runner.xcworkspace/contents.xcworkspacedata | 3 +++ 3 files changed, 5 insertions(+) diff --git a/example/ios/Flutter/Debug.xcconfig b/example/ios/Flutter/Debug.xcconfig index 592ceee..ec97fc6 100644 --- a/example/ios/Flutter/Debug.xcconfig +++ b/example/ios/Flutter/Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/example/ios/Flutter/Release.xcconfig b/example/ios/Flutter/Release.xcconfig index 592ceee..c4855bf 100644 --- a/example/ios/Flutter/Release.xcconfig +++ b/example/ios/Flutter/Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/example/ios/Runner.xcworkspace/contents.xcworkspacedata index 1d526a1..21a3cc1 100644 --- a/example/ios/Runner.xcworkspace/contents.xcworkspacedata +++ b/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -4,4 +4,7 @@ + + From f6ce67a8a559c03bd6263a3c9bd5143e4a5d1b49 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Tue, 15 Nov 2022 21:08:49 -0500 Subject: [PATCH 17/31] commit podfile --- example/ios/Podfile | 41 ++++++++++++++++++++++++++++++++++++++++ example/ios/Podfile.lock | 39 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 example/ios/Podfile create mode 100644 example/ios/Podfile.lock diff --git a/example/ios/Podfile b/example/ios/Podfile new file mode 100644 index 0000000..88359b2 --- /dev/null +++ b/example/ios/Podfile @@ -0,0 +1,41 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '11.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock new file mode 100644 index 0000000..2f24574 --- /dev/null +++ b/example/ios/Podfile.lock @@ -0,0 +1,39 @@ +PODS: + - Flutter (1.0.0) + - permission_handler_apple (9.0.4): + - Flutter + - Protobuf (3.21.9) + - reactive_ble_mobile (0.0.1): + - Flutter + - Protobuf (~> 3.5) + - SwiftProtobuf (~> 1.0) + - SwiftProtobuf (1.20.3) + +DEPENDENCIES: + - Flutter (from `Flutter`) + - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) + - reactive_ble_mobile (from `.symlinks/plugins/reactive_ble_mobile/ios`) + +SPEC REPOS: + trunk: + - Protobuf + - SwiftProtobuf + +EXTERNAL SOURCES: + Flutter: + :path: Flutter + permission_handler_apple: + :path: ".symlinks/plugins/permission_handler_apple/ios" + reactive_ble_mobile: + :path: ".symlinks/plugins/reactive_ble_mobile/ios" + +SPEC CHECKSUMS: + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce + Protobuf: 02524ec14183fe08fb259741659e79683788158b + reactive_ble_mobile: 9ce6723d37ccf701dbffd202d487f23f5de03b4c + SwiftProtobuf: b02b5075dcf60c9f5f403000b3b0c202a11b6ae1 + +PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3 + +COCOAPODS: 1.11.3 From 89b888084b093bfc31beb244ef95d1c3afdbaa3d Mon Sep 17 00:00:00 2001 From: Aidan Lee Date: Wed, 16 Nov 2022 09:55:15 -0500 Subject: [PATCH 18/31] fixed scanning issue and added scan button --- example/lib/main.dart | 55 ++++++++++++++----------------------------- 1 file changed, 18 insertions(+), 37 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index 3e15b60..6492257 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -51,11 +51,11 @@ class _SimpleErgViewState extends State { @override void initState() { super.initState(); - startScan(); + //startScan(); } startScan() async { - var goForIt = false; + bool goForIt = false; if (Platform.isAndroid) { PermissionStatus locationPermission = await Permission.location.request(); @@ -87,6 +87,9 @@ class _SimpleErgViewState extends State { stopScan() { scanSub?.cancel(); scanSub = null; + setState(() { + displayText = "Stopped Scanning"; + }); // bleManager.stopErgScan(); } @@ -97,30 +100,11 @@ class _SimpleErgViewState extends State { displayText = "Device Connecting"; }); - targetDevice!.connectAndDiscover(); - - // if (!connected) { - // targetDevice! - // .observeConnectionState( - // emitCurrentValue: true, completeOnDisconnect: true) - // .listen((connectionState) { - // print( - // "Peripheral ${targetDevice!.name} connection state is $connectionState"); - // }); - // try { - // await targetDevice!.connect(); - // } catch (BleError) { - // print("a"); - // } - // print('CONNECTING'); - // } else { - // print('DEVICE Already CONNECTED'); - // } - // setState(() { - // displayText = "Device Connected"; - // }); - // discoverServices(); - subscribeToStreams(); + targetDevice!.connectAndDiscover().listen((event) { + if(event == ErgometerConnectionState.connected) { + subscribeToStreams(); + } + }); } setup2kH() async { @@ -147,17 +131,6 @@ class _SimpleErgViewState extends State { targetDevice?.configureWorkout(Workout.single(WorkoutGoal.meters(10000))); } - // disconnectFromDevice() async { - // if (targetDevice == null) return; - // - // // targetDevice!.disconnect(); - // await targetDevice?.disconnectOrCancel(); - // - // setState(() { - // displayText = "Device Disconnected"; - // }); - // } - subscribeToStreams() async { if (targetDevice == null) return; @@ -193,6 +166,14 @@ class _SimpleErgViewState extends State { title: Text("hello"), ), body: Column(children: [ + Visibility( + visible: scanSub == null && targetDevice == null, + child: ElevatedButton(onPressed: () { + startScan(); + }, + child: Text("Start Scan"), + ), + ), Center( child: Text( displayText, From 9ae13caa5e1a0fa14c8495ad6f41e0b7e7b2d4e1 Mon Sep 17 00:00:00 2001 From: Aidan Lee Date: Thu, 17 Nov 2022 08:47:21 -0500 Subject: [PATCH 19/31] code cleaning --- example/ios/Runner/Info.plist | 4 ++-- example/lib/main.dart | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist index bd276d0..672d7e3 100644 --- a/example/ios/Runner/Info.plist +++ b/example/ios/Runner/Info.plist @@ -48,9 +48,9 @@ _dartobservatory._tcp NSBluetoothAlwaysUsageDescription - The app uses bluetooth to find, connect and transfer data between different devices + The app uses bluetooth to connect and pull data from Concept2 Ergometer PM5 monitors NSBluetoothPeripheralUsageDescription - The app uses bluetooth to find, connect and transfer data between different devices + The app uses bluetooth to connect and pull data from Concept2 Ergometer PM5 monitor UIBackgroundModes bluetooth-central diff --git a/example/lib/main.dart b/example/lib/main.dart index 6492257..850e6b2 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -69,7 +69,11 @@ class _SimpleErgViewState extends State { } else if (Platform.isIOS) { goForIt = true; } - + if(!goForIt) { + print('Your device is experiencing a permission issue. Make sure you allow location services.'); + displayText = "Permission Issue Stopped Scanning"; + return; + } setState(() { displayText = "Start Scanning"; }); @@ -87,10 +91,6 @@ class _SimpleErgViewState extends State { stopScan() { scanSub?.cancel(); scanSub = null; - setState(() { - displayText = "Stopped Scanning"; - }); -// bleManager.stopErgScan(); } connectToDevice() async { From 1942a5f9dc5e51dcd0cfa82503c38b187f575fc3 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Wed, 16 Nov 2022 18:42:13 -0500 Subject: [PATCH 20/31] some updates to README --- README.md | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 97b6130..e90b126 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,6 @@ Similar to how the underlying bluetooth library works, pretty much everything be ```dart ErgBleManager bleManager = ErgBleManager(); -bleManager.init(); //ready to go! ``` ### Scanning for devices Next, you need to start scanning for available devices. This uses a Stream to return an instance of the `Ergometer` class for each erg found. Each of these instances represents an erg and should be stored for later reuse as these act as the base upon which everything else (retrieving data, sending workouts .etc) is based. @@ -54,27 +53,43 @@ Next, you need to start scanning for available devices. This uses a Stream to re ```dart Ergometer myErg; -bleManager.startErgScan().listen((erg) { +StreamSubscription ergScanStream = bleManager.startErgScan().listen((erg) { //your code for detecting an erg here. - myErg = erg + + //you can store the erg instance somewhere + myErg = erg; + + //or connect to it (see later examples) + + //or stop scanning + ergScanStream.cancel(); + + return erg; }); ``` This block of code is where you can do things like: - determine what erg(s) you want to work with (this can be based on name, user choice, or basicaly anything) - store the erg instance somewhere more permanent, like the `myErg` variable to allow you to be able to access it after you stop scanning. - - call `bleManager.stopErgScan()` if you know you are done scanning early. As an example, one way to immediately connect to the first erg found is to unconditionally call `stopErgScan` within this function so the scan stops after the first erg is received. Don't forget to close the stream too! + - cancel the stream if you are done scanning. ### Connecting and disconnecting -Once you have the `Ergometer` instance for the erg you want to connect to, you can call `connectAndDiscover()` on it to connect. +Once you have the `Ergometer` instance for the erg you want to connect to, you can call `connectAndDiscover()` on it to connect. This will provide you with a stream indicating the connection state of the erg. ```dart -await myErg.connectAndDiscover(); +StreamSubscription ergConnectionStream = myErg.connectAndDiscover().listen((event) { + if(event == ErgometerConnectionState.connected) { + //do stuff here once the erg is connected + } else if (event == ErgometerConnectionState.disconnected) { + //handle disconnection here + } + }); +} ``` -When you are done, make sure to disconnect from your erg: +When you are done, disconnect from your erg by cancelling the stream: ```dart -await myErg.disconnectOrCancel(); +ergConnectionStream.cancel(); ``` ### Getting data from the erg From 91aad2d4a2c6b1de2b6746865027e4f6b2065e1e Mon Sep 17 00:00:00 2001 From: Aidan Lee Date: Thu, 17 Nov 2022 08:53:49 -0500 Subject: [PATCH 21/31] missed setState --- example/lib/main.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index 850e6b2..5df5de7 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -71,7 +71,9 @@ class _SimpleErgViewState extends State { } if(!goForIt) { print('Your device is experiencing a permission issue. Make sure you allow location services.'); - displayText = "Permission Issue Stopped Scanning"; + setState(() { + displayText = "Permission Issue Stopped Scanning"; + }); return; } setState(() { From 712e5375af7a90ede26a57dcdcd887de6953a434 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Thu, 17 Nov 2022 11:55:56 -0500 Subject: [PATCH 22/31] ignore use of old deprecated functions --- example/lib/main.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/example/lib/main.dart b/example/lib/main.dart index 5df5de7..f635457 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -112,12 +112,14 @@ class _SimpleErgViewState extends State { setup2kH() async { if (targetDevice == null) return; + // ignore: deprecated_member_use targetDevice?.configure2kWorkout(); } setup10kH() async { if (targetDevice == null) return; + // ignore: deprecated_member_use targetDevice?.configure10kWorkout(); } From 897f30bb6e20d8563a5a9f6cc353efdd62b21b75 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Thu, 17 Nov 2022 11:58:26 -0500 Subject: [PATCH 23/31] misc formatting --- example/lib/main.dart | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index f635457..086f197 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -69,8 +69,9 @@ class _SimpleErgViewState extends State { } else if (Platform.isIOS) { goForIt = true; } - if(!goForIt) { - print('Your device is experiencing a permission issue. Make sure you allow location services.'); + if (!goForIt) { + print( + 'Your device is experiencing a permission issue. Make sure you allow location services.'); setState(() { displayText = "Permission Issue Stopped Scanning"; }); @@ -103,7 +104,7 @@ class _SimpleErgViewState extends State { }); targetDevice!.connectAndDiscover().listen((event) { - if(event == ErgometerConnectionState.connected) { + if (event == ErgometerConnectionState.connected) { subscribeToStreams(); } }); @@ -172,10 +173,11 @@ class _SimpleErgViewState extends State { body: Column(children: [ Visibility( visible: scanSub == null && targetDevice == null, - child: ElevatedButton(onPressed: () { - startScan(); - }, - child: Text("Start Scan"), + child: ElevatedButton( + onPressed: () { + startScan(); + }, + child: Text("Start Scan"), ), ), Center( From 5ebad8b727b6853f137d558f7d55f01b80523717 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Fri, 18 Nov 2022 14:08:16 -0500 Subject: [PATCH 24/31] unused import --- test/helpers_test.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/helpers_test.dart b/test/helpers_test.dart index 8474a59..adbdf45 100644 --- a/test/helpers_test.dart +++ b/test/helpers_test.dart @@ -1,5 +1,3 @@ -import 'dart:typed_data'; - import 'package:c2bluetooth/helpers.dart'; import 'package:c2bluetooth/models/workout.dart'; import 'package:flutter_test/flutter_test.dart'; From a5b5698156646761cc18d8e4a0af39e2097ac902 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Sat, 19 Nov 2022 07:06:00 -0500 Subject: [PATCH 25/31] add location permission to android manifest --- example/android/app/src/main/AndroidManifest.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 78ad24b..88b2d57 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -10,6 +10,10 @@ location information, you can strongly assert that your app doesn't derive physical location. --> + + + + From 42a3c8576288a08e3baada7a91e40fa2e54dc080 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Sat, 19 Nov 2022 12:10:10 -0500 Subject: [PATCH 26/31] remove old doc comment --- lib/models/ergometer.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/models/ergometer.dart b/lib/models/ergometer.dart index d8f056f..05bd1e5 100644 --- a/lib/models/ergometer.dart +++ b/lib/models/ergometer.dart @@ -54,8 +54,6 @@ class Ergometer { } - /// Disconnect from this erg or cancel the connection - /// Returns a stream of [WorkoutSummary] objects upon completion of any programmed piece or a "just row" piece that is longer than 1 minute. Stream monitorForWorkoutSummary() { From 0801f51e9e0cb1295974c585d2d11b7675d1f11d Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Sat, 19 Nov 2022 13:20:15 -0500 Subject: [PATCH 27/31] update doc comments for Ergometer and ErgBleManager to account for new bluetooth backend --- lib/models/ergblemanager.dart | 4 +--- lib/models/ergometer.dart | 23 +++++++++++------------ 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/lib/models/ergblemanager.dart b/lib/models/ergblemanager.dart index 071a851..6fc3ca9 100644 --- a/lib/models/ergblemanager.dart +++ b/lib/models/ergblemanager.dart @@ -8,15 +8,13 @@ class ErgBleManager { /// Begin scanning for Ergs. /// /// This begins a scan for bluetooth devices with a filter applied so that only Concept2 Performance Monitors show up. - /// Bluetooth must be on and adequate permissions must be granted to the app for this to work. + /// Bluetooth must be on and adequate permissions must be granted for this to work. Stream startErgScan() { return _manager.scanForDevices(withServices: [ Uuid.parse(Identifiers.C2_ROWING_BASE_UUID) ]).map((scanResult) => Ergometer(scanResult)); } - /// Stops scanning for ergs - /// Clean up/destroy/deallocate resources so that they are availalble again Future destroy() { return _manager.deinitialize(); diff --git a/lib/models/ergometer.dart b/lib/models/ergometer.dart index 05bd1e5..4d258ae 100644 --- a/lib/models/ergometer.dart +++ b/lib/models/ergometer.dart @@ -18,18 +18,17 @@ class Ergometer { Csafe? _csafeClient; /// Get the name of this erg. i.e. "PM5" + serial number - /// - /// Returns "Unknown" if the erg does not report a name String get name => _peripheral.name; - /// Create an Ergometer from a FlutterBleLib peripheral object + /// Create an [Ergometer] from a discovered bluetooth device object /// - /// This is mainly intended for internal use + /// This is intended only for internal use by [ErgBleManager.startErgScan]. + /// Consider this method a private API that is subject to unannounced breaking + /// changes. There are likely much better methods to use for whatever you are trying to do. Ergometer(this._peripheral); /// Connect to this erg and discover the services and characteristics that it offers - /// this returns a stream of events to enable monitoring the erg's connection state - /// This acts as a wrapper around the state provided by the internal bluetooth library. + /// this returns a stream of [ErgometerConnectionState] events to enable monitoring the erg's connection state and disconnecting. Stream connectAndDiscover() { //having this first might cause problems _csafeClient = Csafe(_readCsafe, _writeCsafe); @@ -54,7 +53,7 @@ class Ergometer { } - /// Returns a stream of [WorkoutSummary] objects upon completion of any programmed piece or a "just row" piece that is longer than 1 minute. + /// Returns a stream of [WorkoutSummary] objects upon completion of any workout that would normally be saved to the Erg's memory. This includes any pre-programmed piece and any "just row" pieces longer than 1 minute. Stream monitorForWorkoutSummary() { var workoutSummaryCharacteristic1 = QualifiedCharacteristic(serviceId: Uuid.parse(Identifiers.C2_ROWING_PRIMARY_SERVICE_UUID), characteristicId: Uuid.parse(Identifiers.C2_ROWING_END_OF_WORKOUT_SUMMARY_CHARACTERISTIC_UUID), deviceId: _peripheral.id); @@ -73,9 +72,9 @@ class Ergometer { }); } - /// A read function for the PM over bluetooth. + /// An internal read function for accessing the PM's CSAFE API over bluetooth. /// - /// Intended for passing to the csafe_fitness library to allow it to read data from the erg + /// Intended for passing to the csafe_fitness library to allow it to read response data from the erg Stream _readCsafe() { var csafeRxCharacteristic = QualifiedCharacteristic(serviceId: Uuid.parse(Identifiers.C2_ROWING_CONTROL_SERVICE_UUID), characteristicId: Uuid.parse(Identifiers.C2_ROWING_PM_TRANSMIT_CHARACTERISTIC_UUID), deviceId: _peripheral.id); @@ -85,9 +84,9 @@ class Ergometer { }); } - /// A write function for the PM over bluetooth. + /// An internal write function for accessing the PM's CSAFE API over bluetooth. /// - /// Intended for passing to the csafe_fitness library to allow it to write data to the erg + /// Intended for passing to the csafe_fitness library to allow it to write commands to the erg void _writeCsafe(Uint8List value) { var csafeTxCharacteristic = QualifiedCharacteristic(serviceId: Uuid.parse(Identifiers.C2_ROWING_CONTROL_SERVICE_UUID), characteristicId: Uuid.parse(Identifiers.C2_ROWING_PM_RECEIVE_CHARACTERISTIC_UUID), deviceId: _peripheral.id); @@ -140,7 +139,7 @@ class Ergometer { /// Program a workout into the PM with particular parameters /// - ///Currently only the more basic of workout types are supported, such as basic single intervals, single distance, and single time pieces + /// Currently only the more basic of workout types are supported, such as basic single intervals, single distance, and single time pieces void configureWorkout(Workout workout, [bool startImmediately = true]) async { //Workout workout From d61a021295a71948a1da4b855a60b50aa2812af8 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Sat, 19 Nov 2022 13:33:25 -0500 Subject: [PATCH 28/31] update READMEs to reflect the newer version of the demo app --- README.md | 6 +++--- docs/images/demo/completed.png | Bin 0 -> 99941 bytes docs/images/demo/demo1-small.jpg | Bin 86522 -> 0 bytes docs/images/demo/pre-scan.png | Bin 0 -> 85203 bytes example/README.md | 23 +++++++++++++++-------- 5 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 docs/images/demo/completed.png delete mode 100644 docs/images/demo/demo1-small.jpg create mode 100644 docs/images/demo/pre-scan.png diff --git a/README.md b/README.md index e90b126..f61067d 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,11 @@ C2Bluetooth is a flutter package designed to provide an easy API for accessing data from Concept2 PM5 Indoor fitness machines via bluetooth. This library implements the [Concept2 Performance Monitor Bluetooth Smart Communications Interface Definition](https://www.concept2.com/files/pdf/us/monitors/PM5_BluetoothSmartInterfaceDefinition.pdf) Specification ([newer versions](https://www.c2forum.com/viewtopic.php?f=15&t=193697#p527068) are also available). It also relies heavily on the [CSAFE specification](https://web.archive.org/web/20060718175014/http://www.fitlinxx.com/csafe/specification.htm) from FitLinxx. ## Demo +This package comes with a demo app in the `example/` directory. -![A demo showing the distance completed after a workout](docs/images/demo/demo1-small.jpg) +See the [`example/README.md`](example/README.md) for more detailed information about the demo app and how to use it. -This is a relatively old screenshot of the included example app using an older version of the library to display the completed distance from a short 20-second test workout. Many improvements to expose more datapoints have been made since this screenshot was taken. -## Key Features +## Key Library Features Currently this library supports a few basic features such as: - retrieving workout summary information from the erg after a workout diff --git a/docs/images/demo/completed.png b/docs/images/demo/completed.png new file mode 100644 index 0000000000000000000000000000000000000000..deacd080b8a939df4ad989f63a2f618ed6660dc3 GIT binary patch literal 99941 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¨ImXMM;$ZA*W4@M#SdyCuS5^JlMu=eDRfo< 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 QksL0-kk-EXx%mQhW)Qbc`<#w1N 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 E2Mm9Wj{pDw literal 0 HcmV?d00001 diff --git a/example/README.md b/example/README.md index 80716b9..be615e6 100644 --- a/example/README.md +++ b/example/README.md @@ -2,16 +2,23 @@ This is a sample app created from a fresh flutter project it is useful as a playground for experimenting with/testing the c2bluetooth library as it is being built as well as providing an example for how this could be used in an app -This app simply connects to the first erg that it sees. +Currently this app just connects to the first erg that it sees. An update is planned to make this a little more user-friendly for testing in environments with many ergs. + + ## Sample App capabilities ### Get workout summary information -1. build and run app. -2. long press app on android(samsung) home screen. click the info button, go to permissions and enable location permissions -3. confirm bluetooth is on -4. turn on PM and go to the screen where you would connect something like the ergdata app (usually this is a connect button on the main menu) -5. open/run the app. it should do some discovery and show you a stroke rate: 0 message -6. hit back on the erg and set up a piece. Recommended to set a 20 sec (minimum allowed) single time piece. -7. start the piece and take some strokes. after the piece is over you should see some data for the piece you completed appear on screen. feel free to modify the app to show other data points. +1. build and install the example app for your platform. +2. confirm bluetooth is on. +3. Accept any permission prompts you are given +4. turn on PM and go to the screen where you would connect something like the ergdata app (on newer firmware there will be a connect button on the main menu) +5. open/run the app. you should see a screen with a "Start scan" button. ![A demo screenshot showing the start scan button](../docs/images/demo/pre-scan.png) +6. Press this "start scan" button when you are ready to start scanning for ergs. You will see a few messages on the screen while it scans. Wait until the app says "setting up streams". +7. Use the back button on the erg to go back and set up a piece. A 20 sec (minimum allowed) single time piece is the shortest thing you can do that still works (just row pieces must be longer than 1 minute in order to be visible to the app and be saved in the PM's memory). +8. start the piece. after the piece is over you should see some data for the piece you completed appear on screen. ![A demo screenshot showing the results of a piece](../docs/images/demo/completed.png) +9. you are now ready to start making changes to the sample app to play around with the API and explore the other data points that are made available. + From e5554a6fc8ea13ff357a44653ebb22b87f0a4547 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Sat, 19 Nov 2022 07:09:12 -0500 Subject: [PATCH 29/31] update scanning to work more asynchronously --- example/lib/main.dart | 63 ++++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index 086f197..94de161 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -55,39 +55,42 @@ class _SimpleErgViewState extends State { } startScan() async { - bool goForIt = false; - - if (Platform.isAndroid) { - PermissionStatus locationPermission = await Permission.location.request(); - PermissionStatus finePermission = - await Permission.locationWhenInUse.request(); - // TODO user feedback on no location - if (locationPermission == PermissionStatus.granted && - finePermission == PermissionStatus.granted) { - goForIt = true; + await Future.wait([ + Permission.location.request(), + Permission.locationWhenInUse.request() + ]).then((results) { + PermissionStatus locationPermission = results[0]; + PermissionStatus finePermission = results[1]; + if (Platform.isAndroid) { + if (locationPermission == PermissionStatus.granted && + finePermission == PermissionStatus.granted) { + return true; + } + } else if (Platform.isIOS) { + return true; } - } else if (Platform.isIOS) { - goForIt = true; - } - if (!goForIt) { - print( - 'Your device is experiencing a permission issue. Make sure you allow location services.'); - setState(() { - displayText = "Permission Issue Stopped Scanning"; - }); - return; - } - setState(() { - displayText = "Start Scanning"; - }); + return false; + }).then((result) { + if (result) { + setState(() { + displayText = "Start Scanning"; + }); - scanSub = bleManager.startErgScan().listen((erg) { - //Scan one peripheral and stop scanning - print("Scanned Peripheral ${erg.name}"); + scanSub = bleManager.startErgScan().listen((erg) { + //Scan one peripheral and stop scanning + print("Scanned Peripheral ${erg.name}"); - stopScan(); - targetDevice = erg; - connectToDevice(); + stopScan(); + targetDevice = erg; + connectToDevice(); + }); + } else { + print( + 'Your device is experiencing a permission issue. Make sure you allow location services.'); + setState(() { + displayText = "Permission Issue Stopped Scanning"; + }); + } }); } From 8bd7250d5e3a5a7de142cbe1ca020d472e052f9c Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Sat, 19 Nov 2022 13:54:11 -0500 Subject: [PATCH 30/31] updates to standalone docs --- docs/API.md | 25 ++++++++++++++----------- docs/DesignDecisions.md | 5 ++++- docs/internals.md | 4 ---- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/docs/API.md b/docs/API.md index cc54f1e..adad656 100644 --- a/docs/API.md +++ b/docs/API.md @@ -4,10 +4,14 @@ This document is the starting point for learning more about the c2bluetooth API - The broadest overview comes from using the API as documented in the README - sections like [Overall API Design](#overall-api-design) explain some of the core concepts or goals that we wanted to achieve with the API. -- For people looking to get into the internals of c2bluetooth, the [Core API Concepts](#core-api-concepts) section below is a good mid-level overview of the various groups or categories of classes that are used in the API and what their purpose is. +- For people looking to get into the internals of c2bluetooth, the [Core API Concepts](#core-api-concepts) section below is a good mid-level overview of the various groups or categories of classes that are used in the API and what their purpose is. - For summaries of how c2bluetooth works internally and all the things it "takes care of" for end users, see the [internals](internals.md) document - Obviously the most detailed explaination of how the code works comes from reading the code and inline comments themselves. It is helpful to understand the general goals first +## Terms used + +"implementor" generally refers to users of this library. This is intended to be an audience of primarily other flutter developers looking to use this library in their apps. + ## Overall API design @@ -15,20 +19,19 @@ This document is the starting point for learning more about the c2bluetooth API ### Inspiration In order for this library to be a good fit within the community and provide a good user experience for developers, the goal is to design the interface for this library after other existing libraries interfacing with Concept2 rowing machines. The libraries looked at were [Py3Row](https://github.com/droogmic/Py3Row) (Python, BSD-2), [BoutFitness/Concept2-SDK](https://github.com/BoutFitness/Concept2-SDK) (Swift, MIT), [ErgometerJS](https://github.com/tijmenvangulik/ErgometerJS) (Javascript, Apache 2). -There are likely more libraries like these available, but these were just the first few that were looked at based on a GitHub search. +There are likely more libraries like these available, but these were just the first few that were looked at based on a GitHub search at the time of writing. ### Object Oriented -These three examples all seem to use some kind of Class-based approach where a particular instance of an object represents a particular rowing machine and contains functions to make interaction with the machine easier, like getting data. +These three examples all seem to use some kind of object-oriented approach where a particular instance of an object represents a particular rowing machine and contains functions to make interaction with the machine easier, like getting data. -Designing the library in an object oriented way seemed to make the most sense given what other projects in the space seem to ave done. This should also should keep things relatively straightforward to program and maintain. +Designing the library in an object oriented way seemed to make the most sense given what other projects in the space seem to have done. This should also should keep things relatively straightforward to program and maintain. ### Subscription-based data access -Both BoutFitness/Concept2-SDK and ErgometerJS also seemed to have a way to asynchronously "subscribe" to get a callback when particular values change so the screen can be updated. Since the FlutterBleLib bluetooth library also exposes [Flutter streams](https://apgapg.medium.com/using-streams-in-flutter-62fed41662e4) for reading values in this way, it seems like a good choice to follow this model when exposing data about a PM5. +Both BoutFitness/Concept2-SDK and ErgometerJS also seemed to have a way to asynchronously "subscribe" to get a callback when particular values change so values being displayed on the screen in the implementors flutter app can be updated. Since many Flutter bluetooth libraries also expose notification data from bluetooth devices as [Flutter streams](https://apgapg.medium.com/using-streams-in-flutter-62fed41662e4), this seems like a good, clean way to expose data about a PM5. #### Single Values For getting single values from an erg, such as serial number, software and hardware version info, and other things that likely wont change that often, Streams may be unnecessary and it might be easier to have a simple synchronous interface for grabbing a value either from the erg or from somewhere in the memory allocated to the particular Erg object being used. -Whether or not this is actually a good solution is still TBD @@ -43,14 +46,14 @@ These concepts are roughly divided up into "external" (i.e. those that are part ### External Concepts #### Data Objects -Data objects, like the WorkoutSummary class, are essentially wrappers around data provided by the PM and allow the data to be accessed as an object by an application. +Data objects, such as the WorkoutSummary class, are essentially wrappers around data exposed by the PM (Performance Monitor)'s bluetooth interface. This makes it easier for applications to access this data by providing a more object-oriented interface. -Data objects are primarily one-way communication from a PM to your application. +Data objects are primarily a form of one-way communication from a PM to your application. -Data objects are located in the `data` directory and represent a large chunk of the public API for c2bluetooth +Data objects are located in the `data` directory and represent the parts of c2bluetooth's public API that are most likely to be useful to an application. #### Model Objects -This is a gairly general group of classes that represent various indoor rowing conceptsas objects for ease of use by applications looking to interact with ergs. Some examples of classses in this category are the `Ergometer` and `Workout` classes. Unlike Data Objects, they are intended to be able to enable bidirectional data flow. For example, an `Ergometer` object may have properties for getting data (like Data Objects) but also may contain methods like `sendWorkout()` that allow you to provide a `Workout` object to set up on the erg. `Workout` objects could also be returned by other methods as a way to represent a workout if needed. +This is a gairly general group of classes that represent various indoor rowing concepts (in the form of objects). Some examples of classses in this category are the `Ergometer` and `Workout` classes. Unlike Data Objects, they are intended to be able to enable bidirectional data flow. For example, an `Ergometer` object may have properties for getting data (such as Data Objects) but also may contain methods like `sendWorkout()` that allow you to provide a `Workout` object to set up on the erg. `Workout` objects could also be returned by other methods as a way to represent a workout. -Model objects are located in the `models` directory and represent a large chunk of the public API for c2bluetooth \ No newline at end of file +Model objects are located in the `models` directory. \ No newline at end of file diff --git a/docs/DesignDecisions.md b/docs/DesignDecisions.md index c9d198f..0b52632 100644 --- a/docs/DesignDecisions.md +++ b/docs/DesignDecisions.md @@ -1,7 +1,10 @@ # Design Decisions ## Bluetooth Library -This library ultimately depends on some bluetooth library to function. Originally the plan was to use [flutter_blue](https://github.com/pauldemarco/flutter_blue) because thats the first [tutorial](https://lupyuen.github.io/pinetime-rust-mynewt/articles/flutter#bluetooth-le-services) I came across. However, after seeing how many open issues and PR's they still have, the decline evident in their contributor graph, [comments online](https://www.reddit.com/r/FlutterDev/comments/hm63uk/why_bluetooth_in_flutter_is_so_problematic/), and [an analysis on cauldron.io](https://cauldron.io/project/5134), I've decided to use [FlutterBleLib](https://github.com/dotintent/FlutterBleLib) instead since, even though it seems similarly unmaintained, it has less open issues and seems to have reached a later stage of maturity based on its version number being in the 2.X range, rather than the 0.X range. +This library ultimately depends on some bluetooth library to function. Originally the plan was to use [flutter_blue](https://github.com/pauldemarco/flutter_blue) because thats the first [tutorial](https://lupyuen.github.io/pinetime-rust-mynewt/articles/flutter#bluetooth-le-services) I came across at the time development was started on c2bluetooth. However, after seeing how many open issues and PR's they still have, the decline evident in their contributor graph, [comments online](https://www.reddit.com/r/FlutterDev/comments/hm63uk/why_bluetooth_in_flutter_is_so_problematic/), and [an analysis on cauldron.io](https://cauldron.io/project/5134), [FlutterBleLib](https://github.com/dotintent/FlutterBleLib) was briefly used instead, before the project ultimately switched to using [flutter_reactive_ble](https://github.com/PhilipsHue/flutter_reactive_ble) mainteined by Philips Hue because it seems to be the most likely to continue to be maintained into the future. + + +During the transition from FlutterBleLib to flutter_reactive_ble creating an interface to represent any bluetooth library was considered because it would give implementors the ability to use a bluetooth library that may already exist in their app. This would halp maintainers reduce app dependencies, app size, and conflicting libraries, but was ultimately never implemented because it would make the process of debugging implementor-reported issues reported against the library more difficult. ## CSAFE API Usage diff --git a/docs/internals.md b/docs/internals.md index 72cb15e..399e8b4 100644 --- a/docs/internals.md +++ b/docs/internals.md @@ -3,10 +3,6 @@ This document is meant to be similar to the [API](API.md) document, but specific Only people interested in contributing to c2bluetooth should need to understand things at this level. -## Internal API Design - -TODO - ## Internal API Concepts #### Commands The command classes are based on the similarly named classes in the csafe-fitness library. There is a command superclass that is responsible for implementing general-purpose command structures from the relevant CSAFE/Concept2 specifications. These general command classes can then be subclassed to make clearly-named human readable shortcuts that pre-fill details like the identifier and command type while also performing validation of the command data. From 11c4d1708ea5d41be01a3bfc4464ec8db5d4a029 Mon Sep 17 00:00:00 2001 From: Adrian Edwards <17362949+MoralCode@users.noreply.github.com> Date: Sat, 19 Nov 2022 14:36:23 -0500 Subject: [PATCH 31/31] add a deprecation notice to monitorForWorkoutSummary --- lib/models/ergometer.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/models/ergometer.dart b/lib/models/ergometer.dart index 4d258ae..5b0e4fe 100644 --- a/lib/models/ergometer.dart +++ b/lib/models/ergometer.dart @@ -54,6 +54,7 @@ class Ergometer { } /// Returns a stream of [WorkoutSummary] objects upon completion of any workout that would normally be saved to the Erg's memory. This includes any pre-programmed piece and any "just row" pieces longer than 1 minute. + @Deprecated("This API is being deprecated in an upcoming version") Stream monitorForWorkoutSummary() { var workoutSummaryCharacteristic1 = QualifiedCharacteristic(serviceId: Uuid.parse(Identifiers.C2_ROWING_PRIMARY_SERVICE_UUID), characteristicId: Uuid.parse(Identifiers.C2_ROWING_END_OF_WORKOUT_SUMMARY_CHARACTERISTIC_UUID), deviceId: _peripheral.id);