From 073c2b9a2e11e1be5e8dbb1b898302ee0d421c4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=E5=89=91=E4=BE=A0=E5=AE=A2?= Date: Mon, 11 Sep 2023 14:13:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20getMaximumWriteLeng?= =?UTF-8?q?th=20=E6=96=AD=E5=BC=80=E6=97=B6=E6=9C=AA=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E7=9A=84=E9=97=AE=E9=A2=98=20(#15)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bluetooth_low_energy/CHANGELOG.md | 4 ++++ bluetooth_low_energy/example/lib/main.dart | 18 +++++++++--------- bluetooth_low_energy/example/pubspec.lock | 6 +++--- bluetooth_low_energy/pubspec.yaml | 4 ++-- bluetooth_low_energy_android/CHANGELOG.md | 4 ++++ .../MyCentralController.kt | 4 ++++ bluetooth_low_energy_android/pubspec.yaml | 2 +- 7 files changed, 27 insertions(+), 15 deletions(-) diff --git a/bluetooth_low_energy/CHANGELOG.md b/bluetooth_low_energy/CHANGELOG.md index aa4f4e9..62c8036 100644 --- a/bluetooth_low_energy/CHANGELOG.md +++ b/bluetooth_low_energy/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.2.1 + +* `Android` Fix the issue that `CentralController#getMaximumWriteLength` may throw. + ## 2.2.0 * Add `CentralController#getMaximumWriteLength` method. diff --git a/bluetooth_low_energy/example/lib/main.dart b/bluetooth_low_energy/example/lib/main.dart index 85fdb29..284696a 100644 --- a/bluetooth_low_energy/example/lib/main.dart +++ b/bluetooth_low_energy/example/lib/main.dart @@ -347,8 +347,7 @@ class _PeripheralViewState extends State { return; } const type = LogType.notify; - final value = hex.encode(eventArgs.value); - final log = Log(type, value); + final log = Log(type, eventArgs.value); logs.value = [ ...logs.value, log, @@ -497,9 +496,10 @@ class _PeripheralViewState extends State { } final time = DateFormat.Hms().format(log.time); final value = log.value; + final message = hex.encode(value); return Text.rich( TextSpan( - text: '[$type]', + text: '[$type:${value.length}]', children: [ TextSpan( text: ' $time: ', @@ -508,7 +508,7 @@ class _PeripheralViewState extends State { ), ), TextSpan( - text: value, + text: message, style: theme.textTheme.bodyMedium, ), ], @@ -641,8 +641,7 @@ class _PeripheralViewState extends State { final value = await centralController .readCharacteristic(characteristic); const type = LogType.read; - final text = hex.encode(value); - final log = Log(type, text); + final log = Log(type, value); logs.value = [...logs.value, log]; } : null, @@ -660,7 +659,7 @@ class _PeripheralViewState extends State { type: GattCharacteristicWriteType .withResponse, ); - final log = Log(LogType.write, text); + final log = Log(LogType.write, value); logs.value = [...logs.value, log]; } : null, @@ -698,7 +697,7 @@ class _PeripheralViewState extends State { class Log { final DateTime time; final LogType type; - final String value; + final Uint8List value; Log(this.type, this.value) : time = DateTime.now(); @@ -707,7 +706,8 @@ class Log { final type = this.type.toString().split('.').last; final formatter = DateFormat.Hms(); final time = formatter.format(this.time); - return '[$type]$time: $value'; + final message = hex.encode(value); + return '[$type]$time: $message'; } } diff --git a/bluetooth_low_energy/example/pubspec.lock b/bluetooth_low_energy/example/pubspec.lock index f05bd76..277f64e 100644 --- a/bluetooth_low_energy/example/pubspec.lock +++ b/bluetooth_low_energy/example/pubspec.lock @@ -23,15 +23,15 @@ packages: path: ".." relative: true source: path - version: "2.2.0" + version: "2.2.1" bluetooth_low_energy_android: dependency: transitive description: name: bluetooth_low_energy_android - sha256: fde30d9ef058f6859266a8e6d4218136958366de5978f69df2bb37d2b24679eb + sha256: "2098167f30a05cff40313fd49c459d326590b54dc6ea953cbe7ff145ce940e04" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" bluetooth_low_energy_darwin: dependency: transitive description: diff --git a/bluetooth_low_energy/pubspec.yaml b/bluetooth_low_energy/pubspec.yaml index 026a654..513b060 100644 --- a/bluetooth_low_energy/pubspec.yaml +++ b/bluetooth_low_energy/pubspec.yaml @@ -1,6 +1,6 @@ name: bluetooth_low_energy description: A Flutter plugin for controlling the bluetooth low energy. -version: 2.2.0 +version: 2.2.1 homepage: https://github.com/yanshouwang/bluetooth_low_energy environment: @@ -11,7 +11,7 @@ dependencies: flutter: sdk: flutter bluetooth_low_energy_platform_interface: ^2.2.0 - bluetooth_low_energy_android: ^2.2.0 + bluetooth_low_energy_android: ^2.2.1 bluetooth_low_energy_darwin: ^2.2.0 bluetooth_low_energy_linux: ^2.2.0 bluetooth_low_energy_windows: ^2.2.0 diff --git a/bluetooth_low_energy_android/CHANGELOG.md b/bluetooth_low_energy_android/CHANGELOG.md index af53ab5..d4c55a5 100644 --- a/bluetooth_low_energy_android/CHANGELOG.md +++ b/bluetooth_low_energy_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.2.1 + +* Fix the issue that `CentralController#getMaximumWriteLength` may throw. + ## 2.2.0 * Add `CentralController#getMaximumWriteLength` method. diff --git a/bluetooth_low_energy_android/android/src/main/kotlin/dev/yanshouwang/bluetooth_low_energy_android/MyCentralController.kt b/bluetooth_low_energy_android/android/src/main/kotlin/dev/yanshouwang/bluetooth_low_energy_android/MyCentralController.kt index 22caa4c..bb5d47a 100644 --- a/bluetooth_low_energy_android/android/src/main/kotlin/dev/yanshouwang/bluetooth_low_energy_android/MyCentralController.kt +++ b/bluetooth_low_energy_android/android/src/main/kotlin/dev/yanshouwang/bluetooth_low_energy_android/MyCentralController.kt @@ -450,6 +450,10 @@ class MyCentralController(private val context: Context, binaryMessenger: BinaryM gatt.close() cachedGATTs.remove(deviceKey) val error = IllegalStateException("GATT is disconnected with status: $status") + val getMaximumWriteLengthCallback = getMaximumWriteLengthCallbacks.remove(deviceKey) + if (getMaximumWriteLengthCallback != null) { + getMaximumWriteLengthCallback(Result.failure(error)) + } val discoverGattCallback = discoverGattCallbacks.remove(deviceKey) if (discoverGattCallback != null) { discoverGattCallback(Result.failure(error)) diff --git a/bluetooth_low_energy_android/pubspec.yaml b/bluetooth_low_energy_android/pubspec.yaml index e528417..5549a03 100644 --- a/bluetooth_low_energy_android/pubspec.yaml +++ b/bluetooth_low_energy_android/pubspec.yaml @@ -1,6 +1,6 @@ name: bluetooth_low_energy_android description: Android implementation of the bluetooth_low_energy plugin. -version: 2.2.0 +version: 2.2.1 homepage: https://github.com/yanshouwang/bluetooth_low_energy environment: