diff --git a/.vscode/settings.json b/.vscode/settings.json index 3e47d4f..00a16e3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -39,6 +39,8 @@ "pairable", "PNTSTATUS", "PRTL", + "pubspec", + "RRSI", "rssi", "SETFONT", "SETTEXT", diff --git a/CHANGELOG.md b/CHANGELOG.md index 3846fdf..7a5282c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,16 @@ ## 0.9.12 -* BREAKING CHANGE: Rename ScanResult to BleDevice +* BREAKING CHANGE: `ScanResult` is now `BleDevice` +* BREAKING CHANGE: `getConnectedDevices` is now `getSystemDevices` +* BREAKING CHANGE: `isPaired` is now nullable +* BREAKING CHANGE: `onValueChanged` is now `onValueChange` +* BREAKING CHANGE: `onConnectionChanged` is now `onConnectionChange` * Add `connectionState` property to BleDevice * Add `isSystemDevice` property to BleDevice * Add `.perDevice` queue * Support "ProvidePin" pairing on Windows 10/11 * Get RRSI updates on Apple platforms -* Improve code level documentation * Improve enum parsing performance +* Improve code level documentation ## 0.9.11 * Add device name prefix filtering diff --git a/README.md b/README.md index b8bbd00..e21d7b3 100644 --- a/README.md +++ b/README.md @@ -143,8 +143,8 @@ UniversalBle.connect(deviceId); UniversalBle.disconnect(deviceId); // Get connection state updates -UniversalBle.onConnectionChanged = (String deviceId, BleConnectionState state) { - debugPrint('OnConnectionChanged $deviceId, $state'); +UniversalBle.onConnectionChange = (String deviceId, BleConnectionState state) { + debugPrint('OnConnectionChange $deviceId, $state'); } ``` @@ -171,9 +171,9 @@ UniversalBle.writeValue(deviceId, serviceId, characteristicId, value); // Subscribe to a characteristic UniversalBle.setNotifiable(deviceId, serviceId, characteristicId, BleInputProperty.notification); -// Get characteristic updates in `onValueChanged` -UniversalBle.onValueChanged = (String deviceId, String characteristicId, Uint8List value) { - debugPrint('onValueChanged $deviceId, $characteristicId, ${hex.encode(value)}'); +// Get characteristic updates in `onValueChange` +UniversalBle.onValueChange = (String deviceId, String characteristicId, Uint8List value) { + debugPrint('onValueChange $deviceId, $characteristicId, ${hex.encode(value)}'); } // Unsubscribe from a characteristic diff --git a/example/lib/data/mock_universal_ble.dart b/example/lib/data/mock_universal_ble.dart index 2d8adda..5e67d48 100644 --- a/example/lib/data/mock_universal_ble.dart +++ b/example/lib/data/mock_universal_ble.dart @@ -31,12 +31,12 @@ class MockUniversalBle extends UniversalBlePlatform { @override Future connect(String deviceId, {Duration? connectionTimeout}) async { - onConnectionChanged?.call(deviceId, BleConnectionState.connected); + onConnectionChange?.call(deviceId, BleConnectionState.connected); } @override Future disconnect(String deviceId) async { - onConnectionChanged?.call(deviceId, BleConnectionState.disconnected); + onConnectionChange?.call(deviceId, BleConnectionState.disconnected); } @override diff --git a/example/lib/peripheral_details/peripheral_detail_page.dart b/example/lib/peripheral_details/peripheral_detail_page.dart index 3f5bd5b..dc5b1a1 100644 --- a/example/lib/peripheral_details/peripheral_detail_page.dart +++ b/example/lib/peripheral_details/peripheral_detail_page.dart @@ -42,16 +42,16 @@ class _PeripheralDetailPageState extends State { @override void initState() { super.initState(); - UniversalBle.onConnectionChanged = _handleConnectionChange; - UniversalBle.onValueChanged = _handleValueChange; + UniversalBle.onConnectionChange = _handleConnectionChange; + UniversalBle.onValueChange = _handleValueChange; UniversalBle.onPairingStateChange = _handlePairingStateChange; } @override void dispose() { super.dispose(); - UniversalBle.onConnectionChanged = null; - UniversalBle.onValueChanged = null; + UniversalBle.onConnectionChange = null; + UniversalBle.onValueChange = null; // Disconnect when leaving the page if (isConnected) UniversalBle.disconnect(widget.deviceId); } diff --git a/lib/src/models/ble_device.dart b/lib/src/models/ble_device.dart index 5a01224..fc2ad1f 100644 --- a/lib/src/models/ble_device.dart +++ b/lib/src/models/ble_device.dart @@ -12,7 +12,10 @@ class BleDevice { Uint8List? manufacturerDataHead; Uint8List? manufacturerData; - Future get connectionState async => await UniversalBle.isConnected(deviceId) ? BleConnectionState.connected : BleConnectionState.disconnected; + Future get connectionState async => + await UniversalBle.isConnected(deviceId) + ? BleConnectionState.connected + : BleConnectionState.disconnected; BleDevice({ required this.deviceId, diff --git a/lib/src/models/model_exports.dart b/lib/src/models/model_exports.dart index 823bd2e..580d486 100644 --- a/lib/src/models/model_exports.dart +++ b/lib/src/models/model_exports.dart @@ -6,5 +6,3 @@ export 'package:universal_ble/src/models/ble_service.dart'; export 'package:universal_ble/src/models/availability_state.dart'; export 'package:universal_ble/src/models/ble_connection_state.dart'; export 'package:universal_ble/src/models/ble_device.dart'; - - diff --git a/lib/src/universal_ble.dart b/lib/src/universal_ble.dart index 74d2056..cacb665 100644 --- a/lib/src/universal_ble.dart +++ b/lib/src/universal_ble.dart @@ -66,7 +66,7 @@ class UniversalBle { } /// Connect to a device. - /// Get notified of connection state changes in [onConnectionChanged] listener + /// Get notified of connection state changes in [onConnectionChange] listener /// It is advised to stop scanning before connecting /// It might throw errors if device is not connectable /// `connectionTimeout` is supported on Web only @@ -81,7 +81,7 @@ class UniversalBle { } /// Disconnect from a device. - /// Get notified of connection state changes in [onConnectionChanged] listener + /// Get notified of connection state changes in [onConnectionChange] listener static Future disconnect(String deviceId) async { return await _bleCommandQueue.queueCommand( () => _platform.disconnect(deviceId), @@ -99,7 +99,7 @@ class UniversalBle { /// Set a characteristic notifiable. /// Set `bleInputProperty` to [BleInputProperty.notification] or [BleInputProperty.indication] - /// Updates will arrive in [onValueChanged] listener + /// Updates will arrive in [onValueChange] listener /// To stop listening to a characteristic, set `bleInputProperty` to [BleInputProperty.disabled] static Future setNotifiable( String deviceId, @@ -119,7 +119,7 @@ class UniversalBle { } /// Read a characteristic value - /// On iOS and MacOS this command will also trigger [onValueChanged] listener + /// On iOS and MacOS this command will also trigger [onValueChange] listener static Future readValue( String deviceId, String service, @@ -237,12 +237,12 @@ class UniversalBle { _platform.onScanResult = bleDevice; /// Get connection state changes - static set onConnectionChanged(OnConnectionChanged? onConnectionChanged) => - _platform.onConnectionChanged = onConnectionChanged; + static set onConnectionChange(OnConnectionChange? onConnectionChange) => + _platform.onConnectionChange = onConnectionChange; /// Get characteristic value updates, set `bleInputProperty` in [setNotifiable] to [BleInputProperty.notification] or [BleInputProperty.indication] - static set onValueChanged(OnValueChanged? onValueChanged) => - _platform.onValueChanged = onValueChanged; + static set onValueChange(OnValueChange? onValueChange) => + _platform.onValueChange = onValueChange; /// Get pair state changes, static set onPairingStateChange(OnPairingStateChange pairingStateChange) => diff --git a/lib/src/universal_ble_linux/universal_ble_linux.dart b/lib/src/universal_ble_linux/universal_ble_linux.dart index 447d609..7f14b09 100644 --- a/lib/src/universal_ble_linux/universal_ble_linux.dart +++ b/lib/src/universal_ble_linux/universal_ble_linux.dart @@ -97,7 +97,7 @@ class UniversalBleLinux extends UniversalBlePlatform { Future connect(String deviceId, {Duration? connectionTimeout}) async { final device = _findDeviceById(deviceId); if (device.connected) { - onConnectionChanged?.call(deviceId, BleConnectionState.connected); + onConnectionChange?.call(deviceId, BleConnectionState.connected); return; } await device.connect(); @@ -107,7 +107,7 @@ class UniversalBleLinux extends UniversalBlePlatform { Future disconnect(String deviceId) async { final device = _findDeviceById(deviceId); if (!device.connected) { - onConnectionChanged?.call(deviceId, BleConnectionState.disconnected); + onConnectionChange?.call(deviceId, BleConnectionState.disconnected); return; } await device.disconnect(); @@ -189,7 +189,7 @@ class UniversalBleLinux extends UniversalBlePlatform { for (String property in properties) { switch (property) { case BluezProperty.value: - onValueChanged?.call( + onValueChange?.call( deviceId, characteristic, Uint8List.fromList(char.value), @@ -429,7 +429,7 @@ class UniversalBleLinux extends UniversalBlePlatform { updateScanResult(device.toBleDevice()); break; case BluezProperty.connected: - onConnectionChanged?.call( + onConnectionChange?.call( device.address, device.connected ? BleConnectionState.connected diff --git a/lib/src/universal_ble_pigeon/universal_ble.g.dart b/lib/src/universal_ble_pigeon/universal_ble.g.dart index 355fac6..3e6cd55 100644 --- a/lib/src/universal_ble_pigeon/universal_ble.g.dart +++ b/lib/src/universal_ble_pigeon/universal_ble.g.dart @@ -15,7 +15,8 @@ PlatformException _createConnectionError(String channelName) { ); } -List wrapResponse({Object? result, PlatformException? error, bool empty = false}) { +List wrapResponse( + {Object? result, PlatformException? error, bool empty = false}) { if (empty) { return []; } @@ -97,7 +98,8 @@ class UniversalBleService { result as List; return UniversalBleService( uuid: result[0]! as String, - characteristics: (result[1] as List?)?.cast(), + characteristics: + (result[1] as List?)?.cast(), ); } } @@ -150,7 +152,8 @@ class UniversalScanFilter { result as List; return UniversalScanFilter( withServices: (result[0] as List?)!.cast(), - withManufacturerData: (result[1] as List?)!.cast(), + withManufacturerData: (result[1] as List?)! + .cast(), ); } } @@ -213,15 +216,15 @@ class _UniversalBlePlatformChannelCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return UniversalBleCharacteristic.decode(readValue(buffer)!); - case 129: + case 129: return UniversalBleScanResult.decode(readValue(buffer)!); - case 130: + case 130: return UniversalBleService.decode(readValue(buffer)!); - case 131: + case 131: return UniversalManufacturerDataFilter.decode(readValue(buffer)!); - case 132: + case 132: return UniversalScanFilter.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -234,18 +237,23 @@ class UniversalBlePlatformChannel { /// Constructor for [UniversalBlePlatformChannel]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - UniversalBlePlatformChannel({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + UniversalBlePlatformChannel( + {BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) : __pigeon_binaryMessenger = binaryMessenger, - __pigeon_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + __pigeon_messageChannelSuffix = + messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? __pigeon_binaryMessenger; - static const MessageCodec pigeonChannelCodec = _UniversalBlePlatformChannelCodec(); + static const MessageCodec pigeonChannelCodec = + _UniversalBlePlatformChannelCodec(); final String __pigeon_messageChannelSuffix; Future getBluetoothAvailabilityState() async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.getBluetoothAvailabilityState$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.getBluetoothAvailabilityState$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, @@ -271,8 +279,10 @@ class UniversalBlePlatformChannel { } Future enableBluetooth() async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.enableBluetooth$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.enableBluetooth$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, @@ -298,8 +308,10 @@ class UniversalBlePlatformChannel { } Future startScan(UniversalScanFilter? filter) async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.startScan$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.startScan$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, @@ -320,8 +332,10 @@ class UniversalBlePlatformChannel { } Future stopScan() async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.stopScan$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.stopScan$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, @@ -342,8 +356,10 @@ class UniversalBlePlatformChannel { } Future connect(String deviceId) async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.connect$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.connect$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, @@ -364,8 +380,10 @@ class UniversalBlePlatformChannel { } Future disconnect(String deviceId) async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.disconnect$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.disconnect$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, @@ -385,15 +403,19 @@ class UniversalBlePlatformChannel { } } - Future setNotifiable(String deviceId, String service, String characteristic, int bleInputProperty) async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.setNotifiable$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + Future setNotifiable(String deviceId, String service, + String characteristic, int bleInputProperty) async { + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.setNotifiable$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, ); - final List? __pigeon_replyList = - await __pigeon_channel.send([deviceId, service, characteristic, bleInputProperty]) as List?; + final List? __pigeon_replyList = await __pigeon_channel.send( + [deviceId, service, characteristic, bleInputProperty]) + as List?; if (__pigeon_replyList == null) { throw _createConnectionError(__pigeon_channelName); } else if (__pigeon_replyList.length > 1) { @@ -408,8 +430,10 @@ class UniversalBlePlatformChannel { } Future> discoverServices(String deviceId) async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.discoverServices$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.discoverServices$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, @@ -430,19 +454,23 @@ class UniversalBlePlatformChannel { message: 'Host platform returned null value for non-null return value.', ); } else { - return (__pigeon_replyList[0] as List?)!.cast(); + return (__pigeon_replyList[0] as List?)! + .cast(); } } - Future readValue(String deviceId, String service, String characteristic) async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.readValue$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + Future readValue( + String deviceId, String service, String characteristic) async { + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.readValue$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, ); - final List? __pigeon_replyList = - await __pigeon_channel.send([deviceId, service, characteristic]) as List?; + final List? __pigeon_replyList = await __pigeon_channel + .send([deviceId, service, characteristic]) as List?; if (__pigeon_replyList == null) { throw _createConnectionError(__pigeon_channelName); } else if (__pigeon_replyList.length > 1) { @@ -462,14 +490,16 @@ class UniversalBlePlatformChannel { } Future requestMtu(String deviceId, int expectedMtu) async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.requestMtu$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.requestMtu$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, ); - final List? __pigeon_replyList = - await __pigeon_channel.send([deviceId, expectedMtu]) as List?; + final List? __pigeon_replyList = await __pigeon_channel + .send([deviceId, expectedMtu]) as List?; if (__pigeon_replyList == null) { throw _createConnectionError(__pigeon_channelName); } else if (__pigeon_replyList.length > 1) { @@ -488,15 +518,24 @@ class UniversalBlePlatformChannel { } } - Future writeValue(String deviceId, String service, String characteristic, Uint8List value, int bleOutputProperty) async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.writeValue$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + Future writeValue(String deviceId, String service, + String characteristic, Uint8List value, int bleOutputProperty) async { + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.writeValue$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, ); - final List? __pigeon_replyList = - await __pigeon_channel.send([deviceId, service, characteristic, value, bleOutputProperty]) as List?; + final List? __pigeon_replyList = await __pigeon_channel + .send([ + deviceId, + service, + characteristic, + value, + bleOutputProperty + ]) as List?; if (__pigeon_replyList == null) { throw _createConnectionError(__pigeon_channelName); } else if (__pigeon_replyList.length > 1) { @@ -511,8 +550,10 @@ class UniversalBlePlatformChannel { } Future isPaired(String deviceId) async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.isPaired$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.isPaired$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, @@ -538,8 +579,10 @@ class UniversalBlePlatformChannel { } Future pair(String deviceId) async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.pair$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.pair$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, @@ -560,8 +603,10 @@ class UniversalBlePlatformChannel { } Future unPair(String deviceId) async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.unPair$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.unPair$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, @@ -581,9 +626,12 @@ class UniversalBlePlatformChannel { } } - Future> getSystemDevices(List withServices) async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.getSystemDevices$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + Future> getSystemDevices( + List withServices) async { + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.getSystemDevices$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, @@ -604,13 +652,16 @@ class UniversalBlePlatformChannel { message: 'Host platform returned null value for non-null return value.', ); } else { - return (__pigeon_replyList[0] as List?)!.cast(); + return (__pigeon_replyList[0] as List?)! + .cast(); } } Future isConnected(String deviceId) async { - final String __pigeon_channelName = 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.isConnected$__pigeon_messageChannelSuffix'; - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( + final String __pigeon_channelName = + 'dev.flutter.pigeon.universal_ble.UniversalBlePlatformChannel.isConnected$__pigeon_messageChannelSuffix'; + final BasicMessageChannel __pigeon_channel = + BasicMessageChannel( __pigeon_channelName, pigeonChannelCodec, binaryMessenger: __pigeon_binaryMessenger, @@ -651,7 +702,7 @@ class _UniversalBleCallbackChannelCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return UniversalBleScanResult.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -661,7 +712,8 @@ class _UniversalBleCallbackChannelCodec extends StandardMessageCodec { /// Native -> Flutter abstract class UniversalBleCallbackChannel { - static const MessageCodec pigeonChannelCodec = _UniversalBleCallbackChannelCodec(); + static const MessageCodec pigeonChannelCodec = + _UniversalBleCallbackChannelCodec(); void onAvailabilityChanged(int state); @@ -669,22 +721,30 @@ abstract class UniversalBleCallbackChannel { void onScanResult(UniversalBleScanResult result); - void onValueChanged(String deviceId, String characteristicId, Uint8List value); + void onValueChanged( + String deviceId, String characteristicId, Uint8List value); void onConnectionChanged(String deviceId, int state); - static void setUp(UniversalBleCallbackChannel? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { - messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + static void setUp( + UniversalBleCallbackChannel? api, { + BinaryMessenger? binaryMessenger, + String messageChannelSuffix = '', + }) { + messageChannelSuffix = + messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( - 'dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onAvailabilityChanged$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel __pigeon_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onAvailabilityChanged$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { __pigeon_channel.setMessageHandler(null); } else { __pigeon_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onAvailabilityChanged was null.'); + 'Argument for dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onAvailabilityChanged was null.'); final List args = (message as List?)!; final int? arg_state = (args[0] as int?); assert(arg_state != null, @@ -694,22 +754,25 @@ abstract class UniversalBleCallbackChannel { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( - 'dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onPairStateChange$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel __pigeon_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onPairStateChange$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { __pigeon_channel.setMessageHandler(null); } else { __pigeon_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onPairStateChange was null.'); + 'Argument for dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onPairStateChange was null.'); final List args = (message as List?)!; final String? arg_deviceId = (args[0] as String?); assert(arg_deviceId != null, @@ -723,24 +786,28 @@ abstract class UniversalBleCallbackChannel { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( - 'dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onScanResult$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel __pigeon_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onScanResult$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { __pigeon_channel.setMessageHandler(null); } else { __pigeon_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onScanResult was null.'); + 'Argument for dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onScanResult was null.'); final List args = (message as List?)!; - final UniversalBleScanResult? arg_result = (args[0] as UniversalBleScanResult?); + final UniversalBleScanResult? arg_result = + (args[0] as UniversalBleScanResult?); assert(arg_result != null, 'Argument for dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onScanResult was null, expected non-null UniversalBleScanResult.'); try { @@ -748,22 +815,25 @@ abstract class UniversalBleCallbackChannel { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( - 'dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onValueChanged$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel __pigeon_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onValueChanged$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { __pigeon_channel.setMessageHandler(null); } else { __pigeon_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onValueChanged was null.'); + 'Argument for dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onValueChanged was null.'); final List args = (message as List?)!; final String? arg_deviceId = (args[0] as String?); assert(arg_deviceId != null, @@ -775,26 +845,30 @@ abstract class UniversalBleCallbackChannel { assert(arg_value != null, 'Argument for dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onValueChanged was null, expected non-null Uint8List.'); try { - api.onValueChanged(arg_deviceId!, arg_characteristicId!, arg_value!); + api.onValueChanged( + arg_deviceId!, arg_characteristicId!, arg_value!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel __pigeon_channel = BasicMessageChannel( - 'dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onConnectionChanged$messageChannelSuffix', pigeonChannelCodec, + final BasicMessageChannel __pigeon_channel = BasicMessageChannel< + Object?>( + 'dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onConnectionChanged$messageChannelSuffix', + pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { __pigeon_channel.setMessageHandler(null); } else { __pigeon_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onConnectionChanged was null.'); + 'Argument for dev.flutter.pigeon.universal_ble.UniversalBleCallbackChannel.onConnectionChanged was null.'); final List args = (message as List?)!; final String? arg_deviceId = (args[0] as String?); assert(arg_deviceId != null, @@ -807,8 +881,9 @@ abstract class UniversalBleCallbackChannel { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse( + error: PlatformException(code: 'error', message: e.toString())); } }); } diff --git a/lib/src/universal_ble_pigeon/universal_ble_pigeon_channel.dart b/lib/src/universal_ble_pigeon/universal_ble_pigeon_channel.dart index c1e5e23..bcff0b1 100644 --- a/lib/src/universal_ble_pigeon/universal_ble_pigeon_channel.dart +++ b/lib/src/universal_ble_pigeon/universal_ble_pigeon_channel.dart @@ -126,10 +126,10 @@ class UniversalBlePigeonChannel extends UniversalBlePlatform { availabilityChange: (AvailabilityState state) => onAvailabilityChange?.call(state), connectionChanged: (String deviceId, BleConnectionState state) => - onConnectionChanged?.call(deviceId, state), + onConnectionChange?.call(deviceId, state), valueChanged: (String deviceId, String characteristicId, Uint8List value) => - onValueChanged?.call(deviceId, characteristicId, value), + onValueChange?.call(deviceId, characteristicId, value), pairStateChange: (String deviceId, bool isPaired, String? error) => onPairingStateChange?.call(deviceId, isPaired, error), )); @@ -156,8 +156,8 @@ extension _BleServiceExtension on UniversalBleService { class _UniversalBleCallbackHandler extends UniversalBleCallbackChannel { OnAvailabilityChange availabilityChange; OnScanResult scanResult; - OnConnectionChanged connectionChanged; - OnValueChanged valueChanged; + OnConnectionChange connectionChanged; + OnValueChange valueChanged; OnPairingStateChange pairStateChange; _UniversalBleCallbackHandler({ diff --git a/lib/src/universal_ble_platform_interface.dart b/lib/src/universal_ble_platform_interface.dart index 28a8c51..0238194 100644 --- a/lib/src/universal_ble_platform_interface.dart +++ b/lib/src/universal_ble_platform_interface.dart @@ -63,8 +63,8 @@ abstract class UniversalBlePlatform { OnAvailabilityChange? onAvailabilityChange; OnScanResult? onScanResult; - OnConnectionChanged? onConnectionChanged; - OnValueChanged? onValueChanged; + OnConnectionChange? onConnectionChange; + OnValueChange? onValueChange; OnPairingStateChange? onPairingStateChange; static void logInfo(String message, {bool isError = false}) { @@ -74,10 +74,10 @@ abstract class UniversalBlePlatform { } // Callback types -typedef OnConnectionChanged = void Function( +typedef OnConnectionChange = void Function( String deviceId, BleConnectionState state); -typedef OnValueChanged = void Function( +typedef OnValueChange = void Function( String deviceId, String characteristicId, Uint8List value); typedef OnScanResult = void Function(BleDevice scanResult); diff --git a/lib/src/universal_ble_web/universal_ble_web.dart b/lib/src/universal_ble_web/universal_ble_web.dart index c16fcc4..556fade 100644 --- a/lib/src/universal_ble_web/universal_ble_web.dart +++ b/lib/src/universal_ble_web/universal_ble_web.dart @@ -42,7 +42,7 @@ class UniversalBleWeb extends UniversalBlePlatform { _connectedDeviceStreamList[deviceId] = device.connected.listen((event) { if (!event) _cleanConnection(deviceId); - onConnectionChanged?.call( + onConnectionChange?.call( deviceId, event ? BleConnectionState.connected : BleConnectionState.disconnected, ); @@ -52,7 +52,7 @@ class UniversalBleWeb extends UniversalBlePlatform { @override Future disconnect(String deviceId) async { _cleanConnection(deviceId); - onConnectionChanged?.call(deviceId, BleConnectionState.disconnected); + onConnectionChange?.call(deviceId, BleConnectionState.disconnected); _getDeviceById(deviceId)?.disconnect(); } @@ -214,7 +214,7 @@ class UniversalBleWeb extends UniversalBlePlatform { _characteristicStreamList[characteristicKey] = bleCharacteristic.value .map((event) => event.buffer.asUint8List()) .listen((event) { - onValueChanged?.call(deviceId, characteristic, event); + onValueChange?.call(deviceId, characteristic, event); }); } // Cancel Notification