diff --git a/README.md b/README.md index 36cb7106..dd3f554f 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ To update the kotlin version open Android studio and go to `Tools > Kotlin > Con The reactive BLE lib supports the following: - BLE device discovery +- Permission-less connection on Android using the `CompanionDeviceManager` framework. - Observe host device BLE status - Establishing a BLE connection - Maintaining connection status of multiple BLE devices diff --git a/packages/flutter_reactive_ble/lib/src/device_connector.dart b/packages/flutter_reactive_ble/lib/src/device_connector.dart index 88e2a4fd..369687d6 100644 --- a/packages/flutter_reactive_ble/lib/src/device_connector.dart +++ b/packages/flutter_reactive_ble/lib/src/device_connector.dart @@ -6,12 +6,18 @@ import 'package:reactive_ble_platform_interface/reactive_ble_platform_interface. abstract class DeviceConnector { Stream get deviceConnectionStateUpdateStream; + Future establishBonding({ + required String deviceId, + }); + Stream connect({ required String id, Map>? servicesWithCharacteristicsToDiscover, Duration? connectionTimeout, }); + Future retrieveDeviceName(String id); + Stream connectToAdvertisingDevice({ required String id, required List withServices, @@ -48,6 +54,10 @@ class DeviceConnectorImpl implements DeviceConnector { Stream get deviceConnectionStateUpdateStream => _blePlatform.connectionUpdateStream; + @override + Future establishBonding({required String deviceId}) async => + _blePlatform.establishBonding(deviceId); + @override Stream connect({ required String id, @@ -77,6 +87,10 @@ class DeviceConnectorImpl implements DeviceConnector { return autoconnectingRepeater.stream; } + @override + Future retrieveDeviceName(String id) => + _blePlatform.retrieveDeviceName(id); + @override Stream connectToAdvertisingDevice({ required String id, diff --git a/packages/flutter_reactive_ble/lib/src/device_scanner.dart b/packages/flutter_reactive_ble/lib/src/device_scanner.dart index 441a6265..c1e4b677 100644 --- a/packages/flutter_reactive_ble/lib/src/device_scanner.dart +++ b/packages/flutter_reactive_ble/lib/src/device_scanner.dart @@ -5,6 +5,12 @@ import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; abstract class DeviceScanner { ScanSession? get currentScan; + Future launchCompanionWorkflow({ + required String pattern, + required bool singleDeviceScan, + required bool forceConfirmation, + }); + Stream scanForDevices({ required List withServices, ScanMode scanMode = ScanMode.balanced, @@ -38,6 +44,18 @@ class DeviceScannerImpl implements DeviceScanner { @override ScanSession? get currentScan => _currentScanSession; + @override + Future launchCompanionWorkflow({ + required String pattern, + required bool singleDeviceScan, + required bool forceConfirmation, + }) async => + _blePlatform.launchCompanionWorkflow( + pattern: pattern, + singleDeviceScan: singleDeviceScan, + forceConfirmation: forceConfirmation, + ); + @override Stream scanForDevices({ required List withServices, diff --git a/packages/flutter_reactive_ble/lib/src/reactive_ble.dart b/packages/flutter_reactive_ble/lib/src/reactive_ble.dart index 94f1188c..d15c869d 100644 --- a/packages/flutter_reactive_ble/lib/src/reactive_ble.dart +++ b/packages/flutter_reactive_ble/lib/src/reactive_ble.dart @@ -224,6 +224,20 @@ class FlutterReactiveBle { return _connectedDeviceOperator.requestConnectionPriority(deviceId, priority); } + Future launchCompanionWorkflow({ + required String pattern, + bool singleDeviceScan = true, + bool forceConfirmation = false, + }) async { + await initialize(); + + return _deviceScanner.launchCompanionWorkflow( + pattern: pattern, + singleDeviceScan: singleDeviceScan, + forceConfirmation: forceConfirmation, + ); + } + /// Scan for BLE peripherals advertising the services specified in [withServices] /// or for all BLE peripherals, if no services is specified. It is recommended to always specify some services. /// @@ -247,6 +261,12 @@ class FlutterReactiveBle { ); } + Future establishBonding({required String deviceId}) async { + await initialize(); + + return _deviceConnector.establishBonding(deviceId: deviceId); + } + /// Establishes a connection to a BLE device. /// /// Disconnecting the device is achieved by cancelling the stream subscription. @@ -274,6 +294,19 @@ class FlutterReactiveBle { ), ); + /// iOS only. Retrieves the name of the device with the given id. + /// + /// This operation can only succeed when the host is `connected` with the peripheral. + /// + /// It is using the the CBPeripheral `name` property to retrieve the name. + /// See the [documentation](https://developer.apple.com/documentation/corebluetooth/cbperipheral/1519029-name) for details. + /// Under the hood, this uses the GAP profile to retrieve the name. + /// + /// This operation is only supported on Apple platforms. + /// It will throw an [UnimplementedError] on other platforms. + Future retrieveDeviceName(String id) => + _deviceConnector.retrieveDeviceName(id); + /// Scans for a specific device and connects to it in case a device containing the specified [id] /// is found and that is advertising the services specified in [withServices]. /// diff --git a/packages/flutter_reactive_ble/pubspec.yaml b/packages/flutter_reactive_ble/pubspec.yaml index 18903675..8e44d537 100644 --- a/packages/flutter_reactive_ble/pubspec.yaml +++ b/packages/flutter_reactive_ble/pubspec.yaml @@ -37,4 +37,4 @@ dev_dependencies: sdk: flutter functional_data_generator: ^1.1.2 mockito: ^5.0.14 - + diff --git a/packages/flutter_reactive_ble/test/connected_device_operation_test.mocks.dart b/packages/flutter_reactive_ble/test/connected_device_operation_test.mocks.dart index fe85af06..0fbe78ff 100644 --- a/packages/flutter_reactive_ble/test/connected_device_operation_test.mocks.dart +++ b/packages/flutter_reactive_ble/test/connected_device_operation_test.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.0 from annotations +// Mocks generated by Mockito 5.4.4 from annotations // in flutter_reactive_ble/test/connected_device_operation_test.dart. // Do not manually edit this file. @@ -14,6 +14,8 @@ import 'package:reactive_ble_platform_interface/src/reactive_ble_platform_interf // ignore_for_file: avoid_redundant_argument_values // ignore_for_file: avoid_setters_without_getters // ignore_for_file: comment_references +// ignore_for_file: deprecated_member_use +// ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member // ignore_for_file: prefer_const_constructors @@ -68,23 +70,27 @@ class MockReactiveBlePlatform extends _i1.Mock Invocation.getter(#scanStream), returnValue: _i4.Stream<_i2.ScanResult>.empty(), ) as _i4.Stream<_i2.ScanResult>); + @override _i4.Stream<_i2.BleStatus> get bleStatusStream => (super.noSuchMethod( Invocation.getter(#bleStatusStream), returnValue: _i4.Stream<_i2.BleStatus>.empty(), ) as _i4.Stream<_i2.BleStatus>); + @override _i4.Stream<_i2.ConnectionStateUpdate> get connectionUpdateStream => (super.noSuchMethod( Invocation.getter(#connectionUpdateStream), returnValue: _i4.Stream<_i2.ConnectionStateUpdate>.empty(), ) as _i4.Stream<_i2.ConnectionStateUpdate>); + @override _i4.Stream<_i2.CharacteristicValue> get charValueUpdateStream => (super.noSuchMethod( Invocation.getter(#charValueUpdateStream), returnValue: _i4.Stream<_i2.CharacteristicValue>.empty(), ) as _i4.Stream<_i2.CharacteristicValue>); + @override _i4.Future initialize() => (super.noSuchMethod( Invocation.method( @@ -94,6 +100,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Future deinitialize() => (super.noSuchMethod( Invocation.method( @@ -103,6 +110,26 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + + @override + _i4.Future<_i2.DeviceAssociationInfo?> launchCompanionWorkflow({ + required String? pattern, + required bool? singleDeviceScan, + required bool? forceConfirmation, + }) => + (super.noSuchMethod( + Invocation.method( + #launchCompanionWorkflow, + [], + { + #pattern: pattern, + #singleDeviceScan: singleDeviceScan, + #forceConfirmation: forceConfirmation, + }, + ), + returnValue: _i4.Future<_i2.DeviceAssociationInfo?>.value(), + ) as _i4.Future<_i2.DeviceAssociationInfo?>); + @override _i4.Stream scanForDevices({ required List<_i2.Uuid>? withServices, @@ -121,6 +148,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + @override _i4.Future<_i2.Result<_i2.Unit, _i2.GenericFailure<_i2.ClearGattCacheError>?>> clearGattCache(String? deviceId) => (super.noSuchMethod( @@ -140,8 +168,20 @@ class MockReactiveBlePlatform extends _i1.Mock ), )), ) as _i4.Future< - _i2.Result<_i2.Unit, - _i2.GenericFailure<_i2.ClearGattCacheError>?>>); + _i2 + .Result<_i2.Unit, _i2.GenericFailure<_i2.ClearGattCacheError>?>>); + + @override + _i4.Future<_i2.BondingStatus> establishBonding(String? deviceId) => + (super.noSuchMethod( + Invocation.method( + #establishBonding, + [deviceId], + ), + returnValue: + _i4.Future<_i2.BondingStatus>.value(_i2.BondingStatus.none), + ) as _i4.Future<_i2.BondingStatus>); + @override _i4.Future readRssi(String? deviceId) => (super.noSuchMethod( Invocation.method( @@ -150,6 +190,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Future.value(0), ) as _i4.Future); + @override _i4.Stream connectToDevice( String? id, @@ -167,6 +208,16 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + + @override + _i4.Future retrieveDeviceName(String? id) => (super.noSuchMethod( + Invocation.method( + #retrieveDeviceName, + [id], + ), + returnValue: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future disconnectDevice(String? deviceId) => (super.noSuchMethod( Invocation.method( @@ -176,6 +227,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Future> discoverServices(String? deviceId) => (super.noSuchMethod( @@ -186,6 +238,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future>.value( <_i2.DiscoveredService>[]), ) as _i4.Future>); + @override _i4.Future> getDiscoverServices( String? deviceId) => @@ -197,6 +250,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future>.value( <_i2.DiscoveredService>[]), ) as _i4.Future>); + @override _i4.Stream readCharacteristic( _i2.CharacteristicInstance? characteristic) => @@ -207,6 +261,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + @override _i4.Future<_i2.WriteCharacteristicInfo> writeCharacteristicWithResponse( _i2.CharacteristicInstance? characteristic, @@ -232,6 +287,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), )), ) as _i4.Future<_i2.WriteCharacteristicInfo>); + @override _i4.Future<_i2.WriteCharacteristicInfo> writeCharacteristicWithoutResponse( _i2.CharacteristicInstance? characteristic, @@ -257,6 +313,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), )), ) as _i4.Future<_i2.WriteCharacteristicInfo>); + @override _i4.Stream subscribeToNotifications( _i2.CharacteristicInstance? characteristic) => @@ -267,6 +324,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + @override _i4.Future stopSubscribingToNotifications( _i2.CharacteristicInstance? characteristic) => @@ -278,6 +336,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Future requestMtuSize( String? deviceId, @@ -293,6 +352,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Future.value(0), ) as _i4.Future); + @override _i4.Future<_i2.ConnectionPriorityInfo> requestConnectionPriority( String? deviceId, diff --git a/packages/flutter_reactive_ble/test/device_connector_test.mocks.dart b/packages/flutter_reactive_ble/test/device_connector_test.mocks.dart index 998f5d96..186f62df 100644 --- a/packages/flutter_reactive_ble/test/device_connector_test.mocks.dart +++ b/packages/flutter_reactive_ble/test/device_connector_test.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.0 from annotations +// Mocks generated by Mockito 5.4.4 from annotations // in flutter_reactive_ble/test/device_connector_test.dart. // Do not manually edit this file. @@ -16,6 +16,8 @@ import 'package:reactive_ble_platform_interface/src/models.dart' as _i2; // ignore_for_file: avoid_redundant_argument_values // ignore_for_file: avoid_setters_without_getters // ignore_for_file: comment_references +// ignore_for_file: deprecated_member_use +// ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member // ignore_for_file: prefer_const_constructors @@ -80,23 +82,27 @@ class MockReactiveBlePlatform extends _i1.Mock Invocation.getter(#scanStream), returnValue: _i4.Stream<_i2.ScanResult>.empty(), ) as _i4.Stream<_i2.ScanResult>); + @override _i4.Stream<_i2.BleStatus> get bleStatusStream => (super.noSuchMethod( Invocation.getter(#bleStatusStream), returnValue: _i4.Stream<_i2.BleStatus>.empty(), ) as _i4.Stream<_i2.BleStatus>); + @override _i4.Stream<_i2.ConnectionStateUpdate> get connectionUpdateStream => (super.noSuchMethod( Invocation.getter(#connectionUpdateStream), returnValue: _i4.Stream<_i2.ConnectionStateUpdate>.empty(), ) as _i4.Stream<_i2.ConnectionStateUpdate>); + @override _i4.Stream<_i2.CharacteristicValue> get charValueUpdateStream => (super.noSuchMethod( Invocation.getter(#charValueUpdateStream), returnValue: _i4.Stream<_i2.CharacteristicValue>.empty(), ) as _i4.Stream<_i2.CharacteristicValue>); + @override _i4.Future initialize() => (super.noSuchMethod( Invocation.method( @@ -106,6 +112,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Future deinitialize() => (super.noSuchMethod( Invocation.method( @@ -115,6 +122,26 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + + @override + _i4.Future<_i2.DeviceAssociationInfo?> launchCompanionWorkflow({ + required String? pattern, + required bool? singleDeviceScan, + required bool? forceConfirmation, + }) => + (super.noSuchMethod( + Invocation.method( + #launchCompanionWorkflow, + [], + { + #pattern: pattern, + #singleDeviceScan: singleDeviceScan, + #forceConfirmation: forceConfirmation, + }, + ), + returnValue: _i4.Future<_i2.DeviceAssociationInfo?>.value(), + ) as _i4.Future<_i2.DeviceAssociationInfo?>); + @override _i4.Stream scanForDevices({ required List<_i2.Uuid>? withServices, @@ -133,6 +160,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + @override _i4.Future<_i2.Result<_i2.Unit, _i2.GenericFailure<_i2.ClearGattCacheError>?>> clearGattCache(String? deviceId) => (super.noSuchMethod( @@ -152,8 +180,20 @@ class MockReactiveBlePlatform extends _i1.Mock ), )), ) as _i4.Future< - _i2.Result<_i2.Unit, - _i2.GenericFailure<_i2.ClearGattCacheError>?>>); + _i2 + .Result<_i2.Unit, _i2.GenericFailure<_i2.ClearGattCacheError>?>>); + + @override + _i4.Future<_i2.BondingStatus> establishBonding(String? deviceId) => + (super.noSuchMethod( + Invocation.method( + #establishBonding, + [deviceId], + ), + returnValue: + _i4.Future<_i2.BondingStatus>.value(_i2.BondingStatus.none), + ) as _i4.Future<_i2.BondingStatus>); + @override _i4.Future readRssi(String? deviceId) => (super.noSuchMethod( Invocation.method( @@ -162,6 +202,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Future.value(0), ) as _i4.Future); + @override _i4.Stream connectToDevice( String? id, @@ -179,6 +220,16 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + + @override + _i4.Future retrieveDeviceName(String? id) => (super.noSuchMethod( + Invocation.method( + #retrieveDeviceName, + [id], + ), + returnValue: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future disconnectDevice(String? deviceId) => (super.noSuchMethod( Invocation.method( @@ -188,6 +239,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Future> discoverServices(String? deviceId) => (super.noSuchMethod( @@ -198,6 +250,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future>.value( <_i2.DiscoveredService>[]), ) as _i4.Future>); + @override _i4.Future> getDiscoverServices( String? deviceId) => @@ -209,6 +262,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future>.value( <_i2.DiscoveredService>[]), ) as _i4.Future>); + @override _i4.Stream readCharacteristic( _i2.CharacteristicInstance? characteristic) => @@ -219,6 +273,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + @override _i4.Future<_i2.WriteCharacteristicInfo> writeCharacteristicWithResponse( _i2.CharacteristicInstance? characteristic, @@ -244,6 +299,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), )), ) as _i4.Future<_i2.WriteCharacteristicInfo>); + @override _i4.Future<_i2.WriteCharacteristicInfo> writeCharacteristicWithoutResponse( _i2.CharacteristicInstance? characteristic, @@ -269,6 +325,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), )), ) as _i4.Future<_i2.WriteCharacteristicInfo>); + @override _i4.Stream subscribeToNotifications( _i2.CharacteristicInstance? characteristic) => @@ -279,6 +336,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + @override _i4.Future stopSubscribingToNotifications( _i2.CharacteristicInstance? characteristic) => @@ -290,6 +348,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Future requestMtuSize( String? deviceId, @@ -305,6 +364,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Future.value(0), ) as _i4.Future); + @override _i4.Future<_i2.ConnectionPriorityInfo> requestConnectionPriority( String? deviceId, @@ -340,6 +400,25 @@ class MockDeviceScanner extends _i1.Mock implements _i5.DeviceScanner { _i1.throwOnMissingStub(this); } + @override + _i4.Future<_i2.DeviceAssociationInfo?> launchCompanionWorkflow({ + required String? pattern, + required bool? singleDeviceScan, + required bool? forceConfirmation, + }) => + (super.noSuchMethod( + Invocation.method( + #launchCompanionWorkflow, + [], + { + #pattern: pattern, + #singleDeviceScan: singleDeviceScan, + #forceConfirmation: forceConfirmation, + }, + ), + returnValue: _i4.Future<_i2.DeviceAssociationInfo?>.value(), + ) as _i4.Future<_i2.DeviceAssociationInfo?>); + @override _i4.Stream<_i2.DiscoveredDevice> scanForDevices({ required List<_i2.Uuid>? withServices, @@ -377,6 +456,7 @@ class MockDiscoveredDevicesRegistry extends _i1.Mock Invocation.getter(#getTimestamp), ), ) as DateTime Function()); + @override void add(String? deviceId) => super.noSuchMethod( Invocation.method( @@ -385,6 +465,7 @@ class MockDiscoveredDevicesRegistry extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void remove(String? deviceId) => super.noSuchMethod( Invocation.method( @@ -393,6 +474,7 @@ class MockDiscoveredDevicesRegistry extends _i1.Mock ), returnValueForMissingStub: null, ); + @override bool isEmpty() => (super.noSuchMethod( Invocation.method( @@ -401,6 +483,7 @@ class MockDiscoveredDevicesRegistry extends _i1.Mock ), returnValue: false, ) as bool); + @override bool deviceIsDiscoveredRecently({ required String? deviceId, diff --git a/packages/flutter_reactive_ble/test/device_scanner_test.mocks.dart b/packages/flutter_reactive_ble/test/device_scanner_test.mocks.dart index baee27ad..b71afbfd 100644 --- a/packages/flutter_reactive_ble/test/device_scanner_test.mocks.dart +++ b/packages/flutter_reactive_ble/test/device_scanner_test.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.0 from annotations +// Mocks generated by Mockito 5.4.4 from annotations // in flutter_reactive_ble/test/device_scanner_test.dart. // Do not manually edit this file. @@ -14,6 +14,8 @@ import 'package:reactive_ble_platform_interface/src/reactive_ble_platform_interf // ignore_for_file: avoid_redundant_argument_values // ignore_for_file: avoid_setters_without_getters // ignore_for_file: comment_references +// ignore_for_file: deprecated_member_use +// ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member // ignore_for_file: prefer_const_constructors @@ -68,23 +70,27 @@ class MockReactiveBlePlatform extends _i1.Mock Invocation.getter(#scanStream), returnValue: _i4.Stream<_i2.ScanResult>.empty(), ) as _i4.Stream<_i2.ScanResult>); + @override _i4.Stream<_i2.BleStatus> get bleStatusStream => (super.noSuchMethod( Invocation.getter(#bleStatusStream), returnValue: _i4.Stream<_i2.BleStatus>.empty(), ) as _i4.Stream<_i2.BleStatus>); + @override _i4.Stream<_i2.ConnectionStateUpdate> get connectionUpdateStream => (super.noSuchMethod( Invocation.getter(#connectionUpdateStream), returnValue: _i4.Stream<_i2.ConnectionStateUpdate>.empty(), ) as _i4.Stream<_i2.ConnectionStateUpdate>); + @override _i4.Stream<_i2.CharacteristicValue> get charValueUpdateStream => (super.noSuchMethod( Invocation.getter(#charValueUpdateStream), returnValue: _i4.Stream<_i2.CharacteristicValue>.empty(), ) as _i4.Stream<_i2.CharacteristicValue>); + @override _i4.Future initialize() => (super.noSuchMethod( Invocation.method( @@ -94,6 +100,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Future deinitialize() => (super.noSuchMethod( Invocation.method( @@ -103,6 +110,26 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + + @override + _i4.Future<_i2.DeviceAssociationInfo?> launchCompanionWorkflow({ + required String? pattern, + required bool? singleDeviceScan, + required bool? forceConfirmation, + }) => + (super.noSuchMethod( + Invocation.method( + #launchCompanionWorkflow, + [], + { + #pattern: pattern, + #singleDeviceScan: singleDeviceScan, + #forceConfirmation: forceConfirmation, + }, + ), + returnValue: _i4.Future<_i2.DeviceAssociationInfo?>.value(), + ) as _i4.Future<_i2.DeviceAssociationInfo?>); + @override _i4.Stream scanForDevices({ required List<_i2.Uuid>? withServices, @@ -121,6 +148,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + @override _i4.Future<_i2.Result<_i2.Unit, _i2.GenericFailure<_i2.ClearGattCacheError>?>> clearGattCache(String? deviceId) => (super.noSuchMethod( @@ -140,8 +168,20 @@ class MockReactiveBlePlatform extends _i1.Mock ), )), ) as _i4.Future< - _i2.Result<_i2.Unit, - _i2.GenericFailure<_i2.ClearGattCacheError>?>>); + _i2 + .Result<_i2.Unit, _i2.GenericFailure<_i2.ClearGattCacheError>?>>); + + @override + _i4.Future<_i2.BondingStatus> establishBonding(String? deviceId) => + (super.noSuchMethod( + Invocation.method( + #establishBonding, + [deviceId], + ), + returnValue: + _i4.Future<_i2.BondingStatus>.value(_i2.BondingStatus.none), + ) as _i4.Future<_i2.BondingStatus>); + @override _i4.Future readRssi(String? deviceId) => (super.noSuchMethod( Invocation.method( @@ -150,6 +190,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Future.value(0), ) as _i4.Future); + @override _i4.Stream connectToDevice( String? id, @@ -167,6 +208,16 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + + @override + _i4.Future retrieveDeviceName(String? id) => (super.noSuchMethod( + Invocation.method( + #retrieveDeviceName, + [id], + ), + returnValue: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future disconnectDevice(String? deviceId) => (super.noSuchMethod( Invocation.method( @@ -176,6 +227,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Future> discoverServices(String? deviceId) => (super.noSuchMethod( @@ -186,6 +238,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future>.value( <_i2.DiscoveredService>[]), ) as _i4.Future>); + @override _i4.Future> getDiscoverServices( String? deviceId) => @@ -197,6 +250,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future>.value( <_i2.DiscoveredService>[]), ) as _i4.Future>); + @override _i4.Stream readCharacteristic( _i2.CharacteristicInstance? characteristic) => @@ -207,6 +261,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + @override _i4.Future<_i2.WriteCharacteristicInfo> writeCharacteristicWithResponse( _i2.CharacteristicInstance? characteristic, @@ -232,6 +287,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), )), ) as _i4.Future<_i2.WriteCharacteristicInfo>); + @override _i4.Future<_i2.WriteCharacteristicInfo> writeCharacteristicWithoutResponse( _i2.CharacteristicInstance? characteristic, @@ -257,6 +313,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), )), ) as _i4.Future<_i2.WriteCharacteristicInfo>); + @override _i4.Stream subscribeToNotifications( _i2.CharacteristicInstance? characteristic) => @@ -267,6 +324,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + @override _i4.Future stopSubscribingToNotifications( _i2.CharacteristicInstance? characteristic) => @@ -278,6 +336,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Future requestMtuSize( String? deviceId, @@ -293,6 +352,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Future.value(0), ) as _i4.Future); + @override _i4.Future<_i2.ConnectionPriorityInfo> requestConnectionPriority( String? deviceId, diff --git a/packages/flutter_reactive_ble/test/reactive_ble_test.mocks.dart b/packages/flutter_reactive_ble/test/reactive_ble_test.mocks.dart index 030c1276..b864842d 100644 --- a/packages/flutter_reactive_ble/test/reactive_ble_test.mocks.dart +++ b/packages/flutter_reactive_ble/test/reactive_ble_test.mocks.dart @@ -1,4 +1,4 @@ -// Mocks generated by Mockito 5.4.0 from annotations +// Mocks generated by Mockito 5.4.4 from annotations // in flutter_reactive_ble/test/reactive_ble_test.dart. // Do not manually edit this file. @@ -17,6 +17,8 @@ import 'package:reactive_ble_platform_interface/src/models.dart' as _i2; // ignore_for_file: avoid_redundant_argument_values // ignore_for_file: avoid_setters_without_getters // ignore_for_file: comment_references +// ignore_for_file: deprecated_member_use +// ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member // ignore_for_file: prefer_const_constructors @@ -71,23 +73,27 @@ class MockReactiveBlePlatform extends _i1.Mock Invocation.getter(#scanStream), returnValue: _i4.Stream<_i2.ScanResult>.empty(), ) as _i4.Stream<_i2.ScanResult>); + @override _i4.Stream<_i2.BleStatus> get bleStatusStream => (super.noSuchMethod( Invocation.getter(#bleStatusStream), returnValue: _i4.Stream<_i2.BleStatus>.empty(), ) as _i4.Stream<_i2.BleStatus>); + @override _i4.Stream<_i2.ConnectionStateUpdate> get connectionUpdateStream => (super.noSuchMethod( Invocation.getter(#connectionUpdateStream), returnValue: _i4.Stream<_i2.ConnectionStateUpdate>.empty(), ) as _i4.Stream<_i2.ConnectionStateUpdate>); + @override _i4.Stream<_i2.CharacteristicValue> get charValueUpdateStream => (super.noSuchMethod( Invocation.getter(#charValueUpdateStream), returnValue: _i4.Stream<_i2.CharacteristicValue>.empty(), ) as _i4.Stream<_i2.CharacteristicValue>); + @override _i4.Future initialize() => (super.noSuchMethod( Invocation.method( @@ -97,6 +103,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Future deinitialize() => (super.noSuchMethod( Invocation.method( @@ -106,6 +113,26 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + + @override + _i4.Future<_i2.DeviceAssociationInfo?> launchCompanionWorkflow({ + required String? pattern, + required bool? singleDeviceScan, + required bool? forceConfirmation, + }) => + (super.noSuchMethod( + Invocation.method( + #launchCompanionWorkflow, + [], + { + #pattern: pattern, + #singleDeviceScan: singleDeviceScan, + #forceConfirmation: forceConfirmation, + }, + ), + returnValue: _i4.Future<_i2.DeviceAssociationInfo?>.value(), + ) as _i4.Future<_i2.DeviceAssociationInfo?>); + @override _i4.Stream scanForDevices({ required List<_i2.Uuid>? withServices, @@ -124,6 +151,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + @override _i4.Future<_i2.Result<_i2.Unit, _i2.GenericFailure<_i2.ClearGattCacheError>?>> clearGattCache(String? deviceId) => (super.noSuchMethod( @@ -143,8 +171,20 @@ class MockReactiveBlePlatform extends _i1.Mock ), )), ) as _i4.Future< - _i2.Result<_i2.Unit, - _i2.GenericFailure<_i2.ClearGattCacheError>?>>); + _i2 + .Result<_i2.Unit, _i2.GenericFailure<_i2.ClearGattCacheError>?>>); + + @override + _i4.Future<_i2.BondingStatus> establishBonding(String? deviceId) => + (super.noSuchMethod( + Invocation.method( + #establishBonding, + [deviceId], + ), + returnValue: + _i4.Future<_i2.BondingStatus>.value(_i2.BondingStatus.none), + ) as _i4.Future<_i2.BondingStatus>); + @override _i4.Future readRssi(String? deviceId) => (super.noSuchMethod( Invocation.method( @@ -153,6 +193,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Future.value(0), ) as _i4.Future); + @override _i4.Stream connectToDevice( String? id, @@ -170,6 +211,16 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + + @override + _i4.Future retrieveDeviceName(String? id) => (super.noSuchMethod( + Invocation.method( + #retrieveDeviceName, + [id], + ), + returnValue: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Future disconnectDevice(String? deviceId) => (super.noSuchMethod( Invocation.method( @@ -179,6 +230,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Future> discoverServices(String? deviceId) => (super.noSuchMethod( @@ -189,6 +241,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future>.value( <_i2.DiscoveredService>[]), ) as _i4.Future>); + @override _i4.Future> getDiscoverServices( String? deviceId) => @@ -200,6 +253,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future>.value( <_i2.DiscoveredService>[]), ) as _i4.Future>); + @override _i4.Stream readCharacteristic( _i2.CharacteristicInstance? characteristic) => @@ -210,6 +264,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + @override _i4.Future<_i2.WriteCharacteristicInfo> writeCharacteristicWithResponse( _i2.CharacteristicInstance? characteristic, @@ -235,6 +290,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), )), ) as _i4.Future<_i2.WriteCharacteristicInfo>); + @override _i4.Future<_i2.WriteCharacteristicInfo> writeCharacteristicWithoutResponse( _i2.CharacteristicInstance? characteristic, @@ -260,6 +316,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), )), ) as _i4.Future<_i2.WriteCharacteristicInfo>); + @override _i4.Stream subscribeToNotifications( _i2.CharacteristicInstance? characteristic) => @@ -270,6 +327,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Stream.empty(), ) as _i4.Stream); + @override _i4.Future stopSubscribingToNotifications( _i2.CharacteristicInstance? characteristic) => @@ -281,6 +339,7 @@ class MockReactiveBlePlatform extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Future requestMtuSize( String? deviceId, @@ -296,6 +355,7 @@ class MockReactiveBlePlatform extends _i1.Mock ), returnValue: _i4.Future.value(0), ) as _i4.Future); + @override _i4.Future<_i2.ConnectionPriorityInfo> requestConnectionPriority( String? deviceId, @@ -339,11 +399,13 @@ class MockLogger extends _i1.Mock implements _i3.Logger { ), returnValueForMissingStub: null, ); + @override _i2.LogLevel get logLevel => (super.noSuchMethod( Invocation.getter(#logLevel), returnValue: _i2.LogLevel.none, ) as _i2.LogLevel); + @override void log(Object? message) => super.noSuchMethod( Invocation.method( @@ -369,6 +431,7 @@ class MockConnectedDeviceOperation extends _i1.Mock Invocation.getter(#characteristicValueStream), returnValue: _i4.Stream<_i2.CharacteristicValue>.empty(), ) as _i4.Stream<_i2.CharacteristicValue>); + @override _i4.Future> readCharacteristic( _i2.CharacteristicInstance? characteristic) => @@ -379,6 +442,7 @@ class MockConnectedDeviceOperation extends _i1.Mock ), returnValue: _i4.Future>.value([]), ) as _i4.Future>); + @override _i4.Future writeCharacteristicWithResponse( _i2.CharacteristicInstance? characteristic, { @@ -393,6 +457,7 @@ class MockConnectedDeviceOperation extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Future writeCharacteristicWithoutResponse( _i2.CharacteristicInstance? characteristic, { @@ -407,6 +472,7 @@ class MockConnectedDeviceOperation extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override _i4.Stream> subscribeToCharacteristic( _i2.CharacteristicInstance? characteristic, @@ -422,6 +488,7 @@ class MockConnectedDeviceOperation extends _i1.Mock ), returnValue: _i4.Stream>.empty(), ) as _i4.Stream>); + @override _i4.Future requestMtu( String? deviceId, @@ -437,6 +504,7 @@ class MockConnectedDeviceOperation extends _i1.Mock ), returnValue: _i4.Future.value(0), ) as _i4.Future); + @override _i4.Future> discoverServices(String? deviceId) => (super.noSuchMethod( @@ -447,6 +515,7 @@ class MockConnectedDeviceOperation extends _i1.Mock returnValue: _i4.Future>.value( <_i2.DiscoveredService>[]), ) as _i4.Future>); + @override _i4.Future> getDiscoverServices( String? deviceId) => @@ -458,6 +527,7 @@ class MockConnectedDeviceOperation extends _i1.Mock returnValue: _i4.Future>.value( <_i2.DiscoveredService>[]), ) as _i4.Future>); + @override _i4.Future requestConnectionPriority( String? deviceId, @@ -490,6 +560,19 @@ class MockDeviceConnector extends _i1.Mock implements _i6.DeviceConnector { Invocation.getter(#deviceConnectionStateUpdateStream), returnValue: _i4.Stream<_i2.ConnectionStateUpdate>.empty(), ) as _i4.Stream<_i2.ConnectionStateUpdate>); + + @override + _i4.Future<_i2.BondingStatus> establishBonding({required String? deviceId}) => + (super.noSuchMethod( + Invocation.method( + #establishBonding, + [], + {#deviceId: deviceId}, + ), + returnValue: + _i4.Future<_i2.BondingStatus>.value(_i2.BondingStatus.none), + ) as _i4.Future<_i2.BondingStatus>); + @override _i4.Stream<_i2.ConnectionStateUpdate> connect({ required String? id, @@ -509,6 +592,16 @@ class MockDeviceConnector extends _i1.Mock implements _i6.DeviceConnector { ), returnValue: _i4.Stream<_i2.ConnectionStateUpdate>.empty(), ) as _i4.Stream<_i2.ConnectionStateUpdate>); + + @override + _i4.Future retrieveDeviceName(String? id) => (super.noSuchMethod( + Invocation.method( + #retrieveDeviceName, + [id], + ), + returnValue: _i4.Future.value(), + ) as _i4.Future); + @override _i4.Stream<_i2.ConnectionStateUpdate> connectToAdvertisingDevice({ required String? id, @@ -542,6 +635,25 @@ class MockDeviceScanner extends _i1.Mock implements _i7.DeviceScanner { _i1.throwOnMissingStub(this); } + @override + _i4.Future<_i2.DeviceAssociationInfo?> launchCompanionWorkflow({ + required String? pattern, + required bool? singleDeviceScan, + required bool? forceConfirmation, + }) => + (super.noSuchMethod( + Invocation.method( + #launchCompanionWorkflow, + [], + { + #pattern: pattern, + #singleDeviceScan: singleDeviceScan, + #forceConfirmation: forceConfirmation, + }, + ), + returnValue: _i4.Future<_i2.DeviceAssociationInfo?>.value(), + ) as _i4.Future<_i2.DeviceAssociationInfo?>); + @override _i4.Stream<_i2.DiscoveredDevice> scanForDevices({ required List<_i2.Uuid>? withServices, diff --git a/packages/reactive_ble_mobile/android/build.gradle b/packages/reactive_ble_mobile/android/build.gradle index e39fa4c3..df3f7c3f 100644 --- a/packages/reactive_ble_mobile/android/build.gradle +++ b/packages/reactive_ble_mobile/android/build.gradle @@ -104,6 +104,7 @@ dependencies { implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' testImplementation "org.junit.jupiter:junit-jupiter-api:5.7.0" + testImplementation("org.junit.jupiter:junit-jupiter-params:5.7.0") testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.7.0" testImplementation "io.mockk:mockk:1.11.0" testImplementation "com.google.truth:truth:1.1.4" diff --git a/packages/reactive_ble_mobile/android/src/main/AndroidManifest.xml b/packages/reactive_ble_mobile/android/src/main/AndroidManifest.xml index da9546f6..0ceba194 100644 --- a/packages/reactive_ble_mobile/android/src/main/AndroidManifest.xml +++ b/packages/reactive_ble_mobile/android/src/main/AndroidManifest.xml @@ -7,4 +7,5 @@ + diff --git a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/PluginController.kt b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/PluginController.kt index 22468cc2..8fa4d89a 100644 --- a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/PluginController.kt +++ b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/PluginController.kt @@ -1,9 +1,13 @@ package com.signify.hue.flutterreactiveble +import android.app.Activity import android.content.Context +import android.content.Intent +import android.os.Build import com.signify.hue.flutterreactiveble.ble.RequestConnectionPriorityFailed import com.signify.hue.flutterreactiveble.channelhandlers.BleStatusHandler import com.signify.hue.flutterreactiveble.channelhandlers.CharNotificationHandler +import com.signify.hue.flutterreactiveble.channelhandlers.CompanionHandler import com.signify.hue.flutterreactiveble.channelhandlers.DeviceConnectionHandler import com.signify.hue.flutterreactiveble.channelhandlers.ScanDevicesHandler import com.signify.hue.flutterreactiveble.converters.ProtobufMessageConverter @@ -15,18 +19,21 @@ import io.flutter.plugin.common.BinaryMessenger import io.flutter.plugin.common.EventChannel import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodChannel.Result +import io.flutter.plugin.common.PluginRegistry.ActivityResultListener import io.reactivex.Single import io.reactivex.android.schedulers.AndroidSchedulers import java.util.UUID import com.signify.hue.flutterreactiveble.ProtobufModel as pb @Suppress("TooManyFunctions") -class PluginController { +class PluginController : ActivityResultListener { private val pluginMethods = mapOf Unit>( "initialize" to this::initializeClient, "deinitialize" to this::deinitializeClient, + "launchCompanionWorkflow" to this::launchCompanionFlow, "scanForDevices" to this::scanForDevices, + "establishBonding" to this::establishBonding, "connectToDevice" to this::connectToDevice, "clearGattCache" to this::clearGattCache, "disconnectFromDevice" to this::disconnectFromDevice, @@ -48,6 +55,7 @@ class PluginController { private lateinit var deviceConnectionChannel: EventChannel private lateinit var charNotificationChannel: EventChannel + private lateinit var companionHandler: CompanionHandler private lateinit var scanDevicesHandler: ScanDevicesHandler private lateinit var deviceConnectionHandler: DeviceConnectionHandler private lateinit var charNotificationHandler: CharNotificationHandler @@ -66,6 +74,7 @@ class PluginController { charNotificationChannel = EventChannel(messenger, "flutter_reactive_ble_char_update") val bleStatusChannel = EventChannel(messenger, "flutter_reactive_ble_status") + companionHandler = CompanionHandler() scanDevicesHandler = ScanDevicesHandler(bleClient) deviceConnectionHandler = DeviceConnectionHandler(bleClient) charNotificationHandler = CharNotificationHandler(bleClient) @@ -105,6 +114,36 @@ class PluginController { result.success(null) } + private fun launchCompanionFlow( + call: MethodCall, + result: Result, + ) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + companionHandler.launchCompanionFlow( + pb.LaunchCompanionRequest.parseFrom(call.arguments as ByteArray), + result, + ) + } else { + result.error( + "NOT_SUPPORTED", + "Companion flow is only supported on Android Oreo and above", + null, + ) + } + } + + private fun establishBonding( + call: MethodCall, + result: Result, + ) { + val establishBondingMessage = pb.EstablishBondingRequest.parseFrom(call.arguments as ByteArray) + deviceConnectionHandler.establishBonding(establishBondingMessage).subscribe({ + result.success(protoConverter.convertBondingInfo(it).toByteArray()) + }, { + result.error("establish_bonding_error", it.message, null) + }).discard() + } + private fun scanForDevices( call: MethodCall, result: Result, @@ -119,6 +158,7 @@ class PluginController { ) { result.success(null) val connectDeviceMessage = pb.ConnectToDeviceRequest.parseFrom(call.arguments as ByteArray) + deviceConnectionHandler.connectToDevice(connectDeviceMessage) } @@ -151,7 +191,8 @@ class PluginController { result: Result, ) { result.success(null) - val connectDeviceMessage = pb.DisconnectFromDeviceRequest.parseFrom(call.arguments as ByteArray) + val connectDeviceMessage = + pb.DisconnectFromDeviceRequest.parseFrom(call.arguments as ByteArray) deviceConnectionHandler.disconnectDevice(connectDeviceMessage.deviceId) } @@ -183,6 +224,7 @@ class PluginController { ) charNotificationHandler.addSingleReadToStream(charInfo) } + is com.signify.hue.flutterreactiveble.ble.CharOperationFailed -> { protoConverter.convertCharacteristicError( readCharMessage.characteristic, @@ -372,6 +414,29 @@ class PluginController { .discard() } + fun setActivity(activity: Activity?) { + companionHandler.setActivity(activity) + } + + override fun onActivityResult( + requestCode: Int, + resultCode: Int, + data: Intent?, + ): Boolean { + if (requestCode == CompanionHandler.SELECT_DEVICE_REQUEST_CODE && resultCode == Activity.RESULT_OK) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + return false + } + + // When + companionHandler.onActivityResult(data) ?: return false + + return true + } + + return false + } + private fun readRssi( call: MethodCall, result: Result, diff --git a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ReactiveBlePlugin.kt b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ReactiveBlePlugin.kt index f4202c38..32c1758c 100644 --- a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ReactiveBlePlugin.kt +++ b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ReactiveBlePlugin.kt @@ -2,12 +2,14 @@ package com.signify.hue.flutterreactiveble import android.content.Context import io.flutter.embedding.engine.plugins.FlutterPlugin +import io.flutter.embedding.engine.plugins.activity.ActivityAware +import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding import io.flutter.plugin.common.BinaryMessenger import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodChannel import io.flutter.plugin.common.MethodChannel.Result -class ReactiveBlePlugin : FlutterPlugin, MethodChannel.MethodCallHandler { +class ReactiveBlePlugin : FlutterPlugin, MethodChannel.MethodCallHandler, ActivityAware { override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) { initializePlugin(binding.binaryMessenger, binding.applicationContext, this) } @@ -43,4 +45,22 @@ class ReactiveBlePlugin : FlutterPlugin, MethodChannel.MethodCallHandler { ) { pluginController.execute(call, result) } + + override fun onAttachedToActivity(binding: ActivityPluginBinding) { + binding.addActivityResultListener(pluginController) + pluginController.setActivity(binding.activity) + } + + override fun onDetachedFromActivityForConfigChanges() { + pluginController.setActivity(null) + } + + override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) { + binding.addActivityResultListener(pluginController) + pluginController.setActivity(binding.activity) + } + + override fun onDetachedFromActivity() { + pluginController.setActivity(null) + } } diff --git a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ble/BleClient.kt b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ble/BleClient.kt index 75870941..8287e11e 100644 --- a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ble/BleClient.kt +++ b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ble/BleClient.kt @@ -16,6 +16,17 @@ interface BleClient { fun initializeClient() + /** + * Establishes a bond with the device. + * + * The single will emit the final bond state of the device. + * The value is one of the constants in [android.bluetooth.BluetoothDevice]: + * - [android.bluetooth.BluetoothDevice.BOND_NONE] + * - [android.bluetooth.BluetoothDevice.BOND_BONDING] + * - [android.bluetooth.BluetoothDevice.BOND_BONDED] + */ + fun establishBond(deviceId: String): Single + fun scanForDevices( services: List, scanMode: ScanMode, diff --git a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ble/BondingManager.kt b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ble/BondingManager.kt new file mode 100644 index 00000000..035a33a2 --- /dev/null +++ b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ble/BondingManager.kt @@ -0,0 +1,86 @@ +package com.signify.hue.flutterreactiveble.ble + +import android.annotation.SuppressLint +import android.bluetooth.BluetoothDevice +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.os.Build +import com.polidea.rxandroidble2.RxBleDevice +import io.reactivex.Single +import io.reactivex.disposables.Disposables + +/** + * Created by clement on 2017-08-24. + */ + +class BondingFailedException : RuntimeException() + +class BondingManager(private val context: Context) { + /** + * TODO: try to understand why the popup is being displayed in the notification center (sometimes) ???!!! + * @throws BondingFailedException + */ + @SuppressLint("MissingPermission") + fun bondWithDevice(rxBleDevice: RxBleDevice): Single { + return Single.create { completion -> + if (rxBleDevice.bluetoothDevice.bondState == BluetoothDevice.BOND_BONDED) { + completion.onSuccess(BluetoothDevice.BOND_BONDED) + return@create + } + + val receiver = + object : BroadcastReceiver() { + override fun onReceive( + context: Context, + intent: Intent, + ) { + val deviceBeingPaired: BluetoothDevice? = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + intent.getParcelableExtra( + BluetoothDevice.EXTRA_DEVICE, + BluetoothDevice::class.java, + ) + } else { + @Suppress("DEPRECATION") + intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) + } + + if (deviceBeingPaired?.address == rxBleDevice.bluetoothDevice.address) { + val state = + intent.getIntExtra( + BluetoothDevice.EXTRA_BOND_STATE, + BluetoothDevice.BOND_NONE, + ) + + when (state) { + BluetoothDevice.BOND_BONDED -> completion.onSuccess(state) + BluetoothDevice.BOND_NONE -> completion.onSuccess(state) + // BOND_BONDING is a intermediate state - do not send this back. + } + } + } + } + + completion.setDisposable( + Disposables.fromAction { + context.unregisterReceiver( + receiver, + ) + }, + ) + + context.registerReceiver( + receiver, + IntentFilter(BluetoothDevice.ACTION_BOND_STATE_CHANGED), + ) + + val createBondResult = rxBleDevice.bluetoothDevice.createBond() + + if (!createBondResult) { + completion.tryOnError(BondingFailedException()) + } + } + } +} diff --git a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ble/ReactiveBleClient.kt b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ble/ReactiveBleClient.kt index 9fa076c1..0f726d0f 100644 --- a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ble/ReactiveBleClient.kt +++ b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ble/ReactiveBleClient.kt @@ -102,6 +102,11 @@ open class ReactiveBleClient(private val context: Context) : BleClient { } } + override fun establishBond(deviceId: String): Single { + val device = rxBleClient.getBleDevice(deviceId) + return BondingManager(context).bondWithDevice(device) + } + override fun connectToDevice( deviceId: String, timeout: Duration, diff --git a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/channelhandlers/CompanionHandler.kt b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/channelhandlers/CompanionHandler.kt new file mode 100644 index 00000000..3f1bd92f --- /dev/null +++ b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/channelhandlers/CompanionHandler.kt @@ -0,0 +1,159 @@ +package com.signify.hue.flutterreactiveble.channelhandlers + +import android.app.Activity +import android.bluetooth.le.ScanResult +import android.companion.AssociationInfo +import android.companion.AssociationRequest +import android.companion.BluetoothLeDeviceFilter +import android.companion.CompanionDeviceManager +import android.content.Context +import android.content.Intent +import android.content.IntentSender +import android.os.Build +import android.util.Log +import androidx.annotation.RequiresApi +import com.signify.hue.flutterreactiveble.ProtobufModel +import io.flutter.plugin.common.MethodChannel +import java.lang.ref.WeakReference +import java.util.concurrent.Executor +import java.util.regex.Pattern + +class CompanionHandler { + companion object { + const val SELECT_DEVICE_REQUEST_CODE = 4389 + const val TAG = "CompanionHandler" + } + + private var activity = WeakReference(null) + + private var tmpResult: MethodChannel.Result? = null + + @RequiresApi(Build.VERSION_CODES.O) + fun launchCompanionFlow( + parseFrom: ProtobufModel.LaunchCompanionRequest, + result: MethodChannel.Result, + ) { + val deviceFilter: BluetoothLeDeviceFilter = + BluetoothLeDeviceFilter.Builder() + .setNamePattern(Pattern.compile(parseFrom.deviceNamePattern)) + .build() + + val pairingRequestBuilder = + AssociationRequest.Builder() + .addDeviceFilter(deviceFilter) + .setSingleDevice(parseFrom.singleDeviceScan) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + pairingRequestBuilder.setForceConfirmation(parseFrom.forceConfirmation) + } + + val activity = + activity.get() ?: return result.error( + "CompanionHandler", + "Activity is null", + null, + ) + + val deviceManager = + activity.getSystemService(Context.COMPANION_DEVICE_SERVICE) as CompanionDeviceManager + + val executor = Executor { it.run() } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + deviceManager.associate( + pairingRequestBuilder.build(), + executor, + object : CompanionDeviceManager.Callback() { + override fun onAssociationPending(intentSender: IntentSender) { + activity.startIntentSenderForResult( + intentSender, + SELECT_DEVICE_REQUEST_CODE, + null, + 0, + 0, + 0, + ) + } + + override fun onAssociationCreated(associationInfo: AssociationInfo) { + result.success( + ProtobufModel.DeviceAssociationInfo.newBuilder() + .setMacAddress( + associationInfo.deviceMacAddress!!.toString().uppercase(), + ) + .build() + .toByteArray(), + ) + } + + override fun onFailure(errorMessage: CharSequence?) { + Log.e(TAG, "onFailure: $errorMessage") + result.error("CompanionHandler", errorMessage.toString(), null) + } + }, + ) + } else { + deviceManager.associate( + pairingRequestBuilder.build(), + object : CompanionDeviceManager.Callback() { + @Deprecated("Deprecated in Java") + override fun onDeviceFound(chooserLauncher: IntentSender) { + tmpResult = result + activity.startIntentSenderForResult( + chooserLauncher, + SELECT_DEVICE_REQUEST_CODE, + null, + 0, + 0, + 0, + ) + } + + override fun onFailure(error: CharSequence?) { + result.error("CompanionHandler", error.toString(), null) + } + }, + null, + ) + } + } + + fun setActivity(activity: Activity?) { + this.activity = WeakReference(activity) + } + + @RequiresApi(Build.VERSION_CODES.O) + fun onActivityResult(data: Intent?): ScanResult? { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + val associationInfo = + data?.getParcelableExtra( + CompanionDeviceManager.EXTRA_ASSOCIATION, + AssociationInfo::class.java, + ) + + Log.d(TAG, "onActivityResult: ${associationInfo?.id}") + Log.d(TAG, "onActivityResult: ${associationInfo?.displayName}") + Log.d(TAG, "onActivityResult: ${associationInfo?.deviceMacAddress}") + Log.d(TAG, "onActivityResult: ${associationInfo?.deviceProfile}") + + null + } else { + @Suppress("DEPRECATION") + val scanResult: ScanResult? = + data?.getParcelableExtra(CompanionDeviceManager.EXTRA_DEVICE) + + if (scanResult != null) { + tmpResult?.success( + ProtobufModel.DeviceAssociationInfo.newBuilder() + .setMacAddress(scanResult.device.address.uppercase()) + .build() + .toByteArray(), + ) + + tmpResult = null + } + + null + } + } +} diff --git a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/channelhandlers/DeviceConnectionHandler.kt b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/channelhandlers/DeviceConnectionHandler.kt index 0ad6a25b..9675e14d 100644 --- a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/channelhandlers/DeviceConnectionHandler.kt +++ b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/channelhandlers/DeviceConnectionHandler.kt @@ -3,6 +3,7 @@ package com.signify.hue.flutterreactiveble.channelhandlers import com.signify.hue.flutterreactiveble.converters.ProtobufMessageConverter import com.signify.hue.flutterreactiveble.utils.Duration import io.flutter.plugin.common.EventChannel +import io.reactivex.Single import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import java.util.concurrent.TimeUnit @@ -29,6 +30,10 @@ class DeviceConnectionHandler(private val bleClient: com.signify.hue.flutterreac connectionUpdatesDisposable.dispose() } + fun establishBonding(connectToDeviceMessage: pb.EstablishBondingRequest): Single { + return bleClient.establishBond(connectToDeviceMessage.deviceId) + } + fun connectToDevice(connectToDeviceMessage: pb.ConnectToDeviceRequest) { bleClient.connectToDevice( connectToDeviceMessage.deviceId, diff --git a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/converters/ProtobufMessageConverter.kt b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/converters/ProtobufMessageConverter.kt index 7c8077f0..164a6c31 100644 --- a/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/converters/ProtobufMessageConverter.kt +++ b/packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/converters/ProtobufMessageConverter.kt @@ -1,9 +1,11 @@ package com.signify.hue.flutterreactiveble.converters +import android.bluetooth.BluetoothDevice import android.bluetooth.BluetoothGattCharacteristic import android.bluetooth.BluetoothGattService import com.google.protobuf.ByteString import com.polidea.rxandroidble2.RxBleDeviceServices +import com.signify.hue.flutterreactiveble.ProtobufModel.EstablishBondingInfo.BondState import com.signify.hue.flutterreactiveble.ble.ConnectionUpdateSuccess import com.signify.hue.flutterreactiveble.ble.MtuNegotiateFailed import com.signify.hue.flutterreactiveble.ble.MtuNegotiateResult @@ -269,4 +271,16 @@ class ProtobufMessageConverter { return pb.Uuid.newBuilder().setData(ByteString.copyFrom(convertedUuid)).build() } + + fun convertBondingInfo(status: Int): pb.EstablishBondingInfo { + val bondState = + when (status) { + BluetoothDevice.BOND_BONDED -> BondState.BONDED + BluetoothDevice.BOND_BONDING -> BondState.BONDING + BluetoothDevice.BOND_NONE -> BondState.NONE + else -> BondState.NONE + } + + return pb.EstablishBondingInfo.newBuilder().setStatus(bondState).build() + } } diff --git a/packages/reactive_ble_mobile/android/src/test/kotlin/com/signify/hue/flutterreactiveble/ble/BondingManagerTest.kt b/packages/reactive_ble_mobile/android/src/test/kotlin/com/signify/hue/flutterreactiveble/ble/BondingManagerTest.kt new file mode 100644 index 00000000..caca61d3 --- /dev/null +++ b/packages/reactive_ble_mobile/android/src/test/kotlin/com/signify/hue/flutterreactiveble/ble/BondingManagerTest.kt @@ -0,0 +1,121 @@ +package com.signify.hue.flutterreactiveble.ble + +import android.bluetooth.BluetoothDevice +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import com.polidea.rxandroidble2.RxBleDevice +import io.mockk.CapturingSlot +import io.mockk.MockKAnnotations +import io.mockk.every +import io.mockk.impl.annotations.MockK +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.DisplayName +import org.junit.jupiter.api.Nested +import org.junit.jupiter.api.Test +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.ValueSource + +@DisplayName("BondingManager unit tests") +class BondingManagerTest { + @MockK + private lateinit var context: Context + + @MockK + private lateinit var device: RxBleDevice + + @MockK + private lateinit var bluetoothDevice: BluetoothDevice + + private lateinit var sut: BondingManager + + @BeforeEach + fun setup() { + MockKAnnotations.init(this) + + every { bluetoothDevice.address }.returns("ab:cd:ef:12:34:56") + every { device.bluetoothDevice }.returns(bluetoothDevice) + + sut = BondingManager(context) + } + + @Nested + @DisplayName("Bonding => to success") + inner class BondingSuccessTest { + private var receiver: CapturingSlot = CapturingSlot() + + @BeforeEach + fun setup() { + MockKAnnotations.init(this) + + every { bluetoothDevice.bondState }.returns(BluetoothDevice.BOND_NONE) + every { context.registerReceiver(capture(receiver), any()) }.returns(null) + every { bluetoothDevice.createBond() }.returns(true) + every { context.unregisterReceiver(any()) }.returns(Unit) + } + + @MockK + private lateinit var deviceIntent: Intent + + @ParameterizedTest + @DisplayName("create bond") + @ValueSource( + ints = [ + BluetoothDevice.BOND_BONDED, + BluetoothDevice.BOND_NONE, + ], + ) + fun createBond(bondState: Int) { + val result = sut.bondWithDevice(device).test() + + every { deviceIntent.action }.returns(BluetoothDevice.ACTION_BOND_STATE_CHANGED) + every { deviceIntent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, any()) }.returns( + bondState, + ) + every { deviceIntent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE) }.returns( + bluetoothDevice, + ) + + receiver.captured.onReceive(context, deviceIntent) + + assert(result.errorCount() == 0) + assert(result.values()[0] == bondState) + } + } + + @Nested + @DisplayName("Already bonded") + inner class AlreadyBonded { + @BeforeEach + fun setup() { + every { bluetoothDevice.bondState }.returns(BluetoothDevice.BOND_BONDED) + } + + @Test + @DisplayName("create bond") + fun createBond() { + val result = sut.bondWithDevice(device).test() + assert(result.errorCount() == 0) + assert(result.values()[0] == BluetoothDevice.BOND_BONDED) + } + } + + @Nested + @DisplayName("Bonding Failed") + inner class FailedBondingTest { + @BeforeEach + fun setup() { + every { bluetoothDevice.bondState }.returns(BluetoothDevice.BOND_NONE) + every { context.registerReceiver(any(), any()) }.returns(null) + every { bluetoothDevice.createBond() }.returns(false) + } + + @Test + @DisplayName("create bond") + fun createBond() { + val result = sut.bondWithDevice(device).test() + assert(result.errorCount() == 1) + assert(result.errors().first() is BondingFailedException) + } + } +} diff --git a/packages/reactive_ble_mobile/android/src/test/kotlin/com/signify/hue/flutterreactiveble/converters/ProtobufMessageConverterTest.kt b/packages/reactive_ble_mobile/android/src/test/kotlin/com/signify/hue/flutterreactiveble/converters/ProtobufMessageConverterTest.kt index ce69d725..d7a5e5c2 100644 --- a/packages/reactive_ble_mobile/android/src/test/kotlin/com/signify/hue/flutterreactiveble/converters/ProtobufMessageConverterTest.kt +++ b/packages/reactive_ble_mobile/android/src/test/kotlin/com/signify/hue/flutterreactiveble/converters/ProtobufMessageConverterTest.kt @@ -1,7 +1,9 @@ package com.signify.hue.flutterreactiveble.converters +import android.bluetooth.BluetoothDevice import com.google.common.truth.Truth.assertThat import com.google.protobuf.ByteString +import com.signify.hue.flutterreactiveble.ProtobufModel.EstablishBondingInfo.BondState import com.signify.hue.flutterreactiveble.ble.Connectable import com.signify.hue.flutterreactiveble.ble.ConnectionUpdateSuccess import com.signify.hue.flutterreactiveble.ble.MtuNegotiateFailed @@ -11,7 +13,10 @@ import com.signify.hue.flutterreactiveble.model.NegotiateMtuErrorType import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test +import org.junit.jupiter.params.provider.Arguments +import org.junit.jupiter.params.provider.MethodSource import java.util.UUID +import java.util.stream.Stream import com.signify.hue.flutterreactiveble.ProtobufModel as pb class ProtobufMessageConverterTest { @@ -117,7 +122,9 @@ class ProtobufMessageConverterTest { fun `converts result as parameter in device connection message`() { val result = 0 val connection = ConnectionUpdateSuccess("", result) - assertThat(protobufConverter.convertToDeviceInfo(connection).connectionState).isEqualTo(result) + assertThat(protobufConverter.convertToDeviceInfo(connection).connectionState).isEqualTo( + result, + ) } } @@ -136,7 +143,8 @@ class ProtobufMessageConverterTest { fun `converts a char value and request into a characteristic info value `() { val request = createCharacteristicRequest("b", UUID.randomUUID()) val expectedValue = byteArrayOf(1) - val valueInfo = protobufConverter.convertCharacteristicInfo(request.characteristic, expectedValue) + val valueInfo = + protobufConverter.convertCharacteristicInfo(request.characteristic, expectedValue) assertThat(valueInfo.value).isEqualTo(ByteString.copyFrom(expectedValue)) } @@ -186,6 +194,33 @@ class ProtobufMessageConverterTest { } } + @DisplayName("Convert to bondinfo") + inner class BondInfoTest { + @Test + @MethodSource("provideParameters") + fun `converts bonded`( + bondState: BondState, + androidConstant: Int, + ) { + assertThat(protobufConverter.convertBondingInfo(androidConstant)).isEqualTo(bondState) + } + + private fun provideParameters(): Stream? { + return Stream.of( + Arguments.of(BondState.BONDED, BluetoothDevice.BOND_BONDED), + Arguments.of(BondState.BONDING, BluetoothDevice.BOND_BONDING), + Arguments.of(BondState.NONE, BluetoothDevice.BOND_NONE), + ) + } + + @Test + fun `converts unknown to none`() { + val result = BluetoothDevice.BOND_BONDED + + assertThat(protobufConverter.convertBondingInfo(result)).isEqualTo(pb.EstablishBondingInfo.BondState.BONDED) + } + } + private fun createScanInfo(): ScanInfo { val macAddress = "123" val deviceName = "Testdevice" diff --git a/packages/reactive_ble_mobile/ios/Classes/BleData/bledata.pb.swift b/packages/reactive_ble_mobile/ios/Classes/BleData/bledata.pb.swift index bbc4e9b3..d9dea177 100644 --- a/packages/reactive_ble_mobile/ios/Classes/BleData/bledata.pb.swift +++ b/packages/reactive_ble_mobile/ios/Classes/BleData/bledata.pb.swift @@ -20,6 +20,34 @@ fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAP typealias Version = _2 } +struct LaunchCompanionRequest { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var deviceNamePattern: String = String() + + var singleDeviceScan: Bool = false + + var forceConfirmation: Bool = false + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + +struct DeviceAssociationInfo { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var macAddress: String = String() + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + struct ScanForDevicesRequest { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for @@ -79,6 +107,74 @@ struct DeviceScanInfo { fileprivate var _isConnectable: IsConnectable? = nil } +struct EstablishBondingRequest { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var deviceID: String = String() + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + +struct EstablishBondingInfo { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var status: EstablishBondingInfo.BondState = .none + + var unknownFields = SwiftProtobuf.UnknownStorage() + + enum BondState: SwiftProtobuf.Enum { + typealias RawValue = Int + case none // = 0 + case bonding // = 1 + case bonded // = 2 + case UNRECOGNIZED(Int) + + init() { + self = .none + } + + init?(rawValue: Int) { + switch rawValue { + case 0: self = .none + case 1: self = .bonding + case 2: self = .bonded + default: self = .UNRECOGNIZED(rawValue) + } + } + + var rawValue: Int { + switch self { + case .none: return 0 + case .bonding: return 1 + case .bonded: return 2 + case .UNRECOGNIZED(let i): return i + } + } + + } + + init() {} +} + +#if swift(>=4.2) + +extension EstablishBondingInfo.BondState: CaseIterable { + // The compiler won't synthesize support with the UNRECOGNIZED case. + static let allCases: [EstablishBondingInfo.BondState] = [ + .none, + .bonding, + .bonded, + ] +} + +#endif // swift(>=4.2) + struct ConnectToDeviceRequest { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for @@ -129,6 +225,32 @@ struct DeviceInfo { fileprivate var _failure: GenericFailure? = nil } +struct GetDeviceNameRequest { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var deviceID: String = String() + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + +struct DeviceNameInfo { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var id: String = String() + + var deviceName: String = String() + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + struct DisconnectFromDeviceRequest { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for @@ -668,10 +790,17 @@ struct IsConnectable { } #if swift(>=5.5) && canImport(_Concurrency) +extension LaunchCompanionRequest: @unchecked Sendable {} +extension DeviceAssociationInfo: @unchecked Sendable {} extension ScanForDevicesRequest: @unchecked Sendable {} extension DeviceScanInfo: @unchecked Sendable {} +extension EstablishBondingRequest: @unchecked Sendable {} +extension EstablishBondingInfo: @unchecked Sendable {} +extension EstablishBondingInfo.BondState: @unchecked Sendable {} extension ConnectToDeviceRequest: @unchecked Sendable {} extension DeviceInfo: @unchecked Sendable {} +extension GetDeviceNameRequest: @unchecked Sendable {} +extension DeviceNameInfo: @unchecked Sendable {} extension DisconnectFromDeviceRequest: @unchecked Sendable {} extension ClearGattCacheRequest: @unchecked Sendable {} extension ClearGattCacheInfo: @unchecked Sendable {} @@ -703,6 +832,82 @@ extension IsConnectable: @unchecked Sendable {} // MARK: - Code below here is support for the SwiftProtobuf runtime. +extension LaunchCompanionRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "LaunchCompanionRequest" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "deviceNamePattern"), + 2: .same(proto: "singleDeviceScan"), + 3: .same(proto: "forceConfirmation"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self.deviceNamePattern) }() + case 2: try { try decoder.decodeSingularBoolField(value: &self.singleDeviceScan) }() + case 3: try { try decoder.decodeSingularBoolField(value: &self.forceConfirmation) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if !self.deviceNamePattern.isEmpty { + try visitor.visitSingularStringField(value: self.deviceNamePattern, fieldNumber: 1) + } + if self.singleDeviceScan != false { + try visitor.visitSingularBoolField(value: self.singleDeviceScan, fieldNumber: 2) + } + if self.forceConfirmation != false { + try visitor.visitSingularBoolField(value: self.forceConfirmation, fieldNumber: 3) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: LaunchCompanionRequest, rhs: LaunchCompanionRequest) -> Bool { + if lhs.deviceNamePattern != rhs.deviceNamePattern {return false} + if lhs.singleDeviceScan != rhs.singleDeviceScan {return false} + if lhs.forceConfirmation != rhs.forceConfirmation {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension DeviceAssociationInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "DeviceAssociationInfo" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "macAddress"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self.macAddress) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if !self.macAddress.isEmpty { + try visitor.visitSingularStringField(value: self.macAddress, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: DeviceAssociationInfo, rhs: DeviceAssociationInfo) -> Bool { + if lhs.macAddress != rhs.macAddress {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + extension ScanForDevicesRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = "ScanForDevicesRequest" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ @@ -825,6 +1030,78 @@ extension DeviceScanInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplement } } +extension EstablishBondingRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "EstablishBondingRequest" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "deviceId"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self.deviceID) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if !self.deviceID.isEmpty { + try visitor.visitSingularStringField(value: self.deviceID, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: EstablishBondingRequest, rhs: EstablishBondingRequest) -> Bool { + if lhs.deviceID != rhs.deviceID {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension EstablishBondingInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "EstablishBondingInfo" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "status"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularEnumField(value: &self.status) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if self.status != .none { + try visitor.visitSingularEnumField(value: self.status, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: EstablishBondingInfo, rhs: EstablishBondingInfo) -> Bool { + if lhs.status != rhs.status {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension EstablishBondingInfo.BondState: SwiftProtobuf._ProtoNameProviding { + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 0: .same(proto: "NONE"), + 1: .same(proto: "BONDING"), + 2: .same(proto: "BONDED"), + ] +} + extension ConnectToDeviceRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = "ConnectToDeviceRequest" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ @@ -921,6 +1198,76 @@ extension DeviceInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio } } +extension GetDeviceNameRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "GetDeviceNameRequest" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "deviceId"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self.deviceID) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if !self.deviceID.isEmpty { + try visitor.visitSingularStringField(value: self.deviceID, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: GetDeviceNameRequest, rhs: GetDeviceNameRequest) -> Bool { + if lhs.deviceID != rhs.deviceID {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension DeviceNameInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "DeviceNameInfo" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "id"), + 2: .same(proto: "deviceName"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularStringField(value: &self.id) }() + case 2: try { try decoder.decodeSingularStringField(value: &self.deviceName) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if !self.id.isEmpty { + try visitor.visitSingularStringField(value: self.id, fieldNumber: 1) + } + if !self.deviceName.isEmpty { + try visitor.visitSingularStringField(value: self.deviceName, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: DeviceNameInfo, rhs: DeviceNameInfo) -> Bool { + if lhs.id != rhs.id {return false} + if lhs.deviceName != rhs.deviceName {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + extension DisconnectFromDeviceRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = "DisconnectFromDeviceRequest" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ diff --git a/packages/reactive_ble_mobile/ios/Classes/Plugin/PluginController.swift b/packages/reactive_ble_mobile/ios/Classes/Plugin/PluginController.swift index 6190cacc..ca4151f5 100644 --- a/packages/reactive_ble_mobile/ios/Classes/Plugin/PluginController.swift +++ b/packages/reactive_ble_mobile/ios/Classes/Plugin/PluginController.swift @@ -258,6 +258,31 @@ final class PluginController { } } + func retrieveDeviceName(name: String, args: GetDeviceNameRequest, completion: @escaping PlatformMethodCompletionHandler) { + guard let central = central + else { + completion(.failure(PluginError.notInitialized.asFlutterError)) + return + } + + guard let deviceID = UUID(uuidString: args.deviceID) + else { + completion(.failure(PluginError.invalidMethodCall(method: name, details: "\"deviceID\" is invalid").asFlutterError)) + return + } + + do { + let name: String? = try central.retrievePeripheralName(for: deviceID) + let message = DeviceNameInfo.with { + $0.id = deviceID.uuidString + $0.deviceName = name ?? "" + } + completion(.success(message)) + } catch { + completion(.success(nil)) + } + } + func disconnectFromDevice(name: String, args: ConnectToDeviceRequest, completion: @escaping PlatformMethodCompletionHandler) { guard let central = central else { diff --git a/packages/reactive_ble_mobile/ios/Classes/Plugin/SwiftReactiveBlePlugin.swift b/packages/reactive_ble_mobile/ios/Classes/Plugin/SwiftReactiveBlePlugin.swift index 15bf162f..bdf5b881 100644 --- a/packages/reactive_ble_mobile/ios/Classes/Plugin/SwiftReactiveBlePlugin.swift +++ b/packages/reactive_ble_mobile/ios/Classes/Plugin/SwiftReactiveBlePlugin.swift @@ -96,6 +96,9 @@ public class SwiftReactiveBlePlugin: NSObject, FlutterPlugin { AnyPlatformMethod(UnaryPlatformMethod(name: "connectToDevice") { (name, context, args: ConnectToDeviceRequest, completion) in context.connectToDevice(name: name, args: args, completion: completion) }), + AnyPlatformMethod(UnaryPlatformMethod(name: "retrieveDeviceName") { (name, context, args: GetDeviceNameRequest, completion) in + context.retrieveDeviceName(name: name, args: args, completion: completion) + }), AnyPlatformMethod(UnaryPlatformMethod(name: "disconnectFromDevice") { (name, context, args: ConnectToDeviceRequest, completion) in context.disconnectFromDevice(name: name, args: args, completion: completion) }), diff --git a/packages/reactive_ble_mobile/ios/Classes/ReactiveBle/Central.swift b/packages/reactive_ble_mobile/ios/Classes/ReactiveBle/Central.swift index 60e5f34a..da31d6b5 100644 --- a/packages/reactive_ble_mobile/ios/Classes/ReactiveBle/Central.swift +++ b/packages/reactive_ble_mobile/ios/Classes/ReactiveBle/Central.swift @@ -192,6 +192,12 @@ final class Central { .forEach(centralManager.cancelPeripheralConnection) } + func retrievePeripheralName( + for peripheralID: PeripheralID + ) throws -> String? { + return try resolve(known: peripheralID).name + } + func discoverServicesWithCharacteristics( for peripheralID: PeripheralID, discover servicesWithCharacteristicsToDiscover: ServicesWithCharacteristicsToDiscover, diff --git a/packages/reactive_ble_mobile/lib/src/converter/args_to_protubuf_converter.dart b/packages/reactive_ble_mobile/lib/src/converter/args_to_protubuf_converter.dart index 875c45ec..b36589cc 100644 --- a/packages/reactive_ble_mobile/lib/src/converter/args_to_protubuf_converter.dart +++ b/packages/reactive_ble_mobile/lib/src/converter/args_to_protubuf_converter.dart @@ -3,12 +3,16 @@ import 'package:reactive_ble_platform_interface/reactive_ble_platform_interface. import '../generated/bledata.pb.dart' as pb; abstract class ArgsToProtobufConverter { + pb.EstablishBondingRequest createEstablishBondingArgs(String id); + pb.ConnectToDeviceRequest createConnectToDeviceArgs( String id, Map>? servicesWithCharacteristicsToDiscover, Duration? connectionTimeout, ); + pb.GetDeviceNameRequest createGetDeviceNameArgs(String id); + pb.DisconnectFromDeviceRequest createDisconnectDeviceArgs(String deviceId); pb.ReadCharacteristicRequest createReadCharacteristicRequest( @@ -38,6 +42,12 @@ abstract class ArgsToProtobufConverter { ConnectionPriority priority, ); + pb.LaunchCompanionRequest createLaunchCompanionWorkflowRequest({ + required String deviceNamePattern, + required bool singleDeviceScan, + required bool forceConfirmation, + }); + pb.ScanForDevicesRequest createScanForDevicesRequest({ required List? withServices, required ScanMode scanMode, @@ -54,6 +64,10 @@ abstract class ArgsToProtobufConverter { class ArgsToProtobufConverterImpl implements ArgsToProtobufConverter { const ArgsToProtobufConverterImpl(); + @override + pb.EstablishBondingRequest createEstablishBondingArgs(String id) => + pb.EstablishBondingRequest()..deviceId = id; + @override pb.ConnectToDeviceRequest createConnectToDeviceArgs( String id, @@ -81,9 +95,14 @@ class ArgsToProtobufConverterImpl implements ArgsToProtobufConverter { args.servicesWithCharacteristicsToDiscover = pb.ServicesWithCharacteristics()..items.addAll(items); } + return args; } + @override + pb.GetDeviceNameRequest createGetDeviceNameArgs(String deviceId) => + pb.GetDeviceNameRequest()..deviceId = deviceId; + @override pb.DisconnectFromDeviceRequest createDisconnectDeviceArgs(String deviceId) => pb.DisconnectFromDeviceRequest()..deviceId = deviceId; @@ -178,6 +197,17 @@ class ArgsToProtobufConverterImpl implements ArgsToProtobufConverter { return args; } + @override + pb.LaunchCompanionRequest createLaunchCompanionWorkflowRequest({ + required String deviceNamePattern, + required bool singleDeviceScan, + required bool forceConfirmation, + }) => + pb.LaunchCompanionRequest() + ..deviceNamePattern = deviceNamePattern + ..singleDeviceScan = singleDeviceScan + ..forceConfirmation = forceConfirmation; + @override pb.ScanForDevicesRequest createScanForDevicesRequest({ required List? withServices, diff --git a/packages/reactive_ble_mobile/lib/src/converter/protobuf_converter.dart b/packages/reactive_ble_mobile/lib/src/converter/protobuf_converter.dart index cd223eb2..a5d7d4be 100644 --- a/packages/reactive_ble_mobile/lib/src/converter/protobuf_converter.dart +++ b/packages/reactive_ble_mobile/lib/src/converter/protobuf_converter.dart @@ -5,10 +5,16 @@ import '../generated/bledata.pb.dart' as pb; import '../select_from.dart'; abstract class ProtobufConverter { + BondingStatus bondingStatusFrom(List data); + BleStatus bleStatusFrom(List data); + DeviceAssociationInfo associationInfoFrom(List data); + ScanResult scanResultFrom(List data); + String deviceNameFrom(List data); + ConnectionStateUpdate connectionStateUpdateFrom(List data); Result?> clearGattCacheResultFrom( @@ -32,6 +38,25 @@ abstract class ProtobufConverter { class ProtobufConverterImpl implements ProtobufConverter { const ProtobufConverterImpl(); + @override + BondingStatus bondingStatusFrom(List data) { + final message = pb.EstablishBondingInfo.fromBuffer(data); + switch (message.status) { + case pb.EstablishBondingInfo_BondState.BONDING: + return BondingStatus.bonding; + case pb.EstablishBondingInfo_BondState.BONDED: + return BondingStatus.bonded; + case pb.EstablishBondingInfo_BondState.NONE: + return BondingStatus.none; + } + + throw ArgumentError.value( + message.status, + 'message.status', + 'Unknown bonding status', + ); + } + @override BleStatus bleStatusFrom(List data) { final message = pb.BleStatusInfo.fromBuffer(data); @@ -42,6 +67,13 @@ class ProtobufConverterImpl implements ProtobufConverter { ); } + @override + DeviceAssociationInfo associationInfoFrom(List data) { + final pbVersion = pb.DeviceAssociationInfo.fromBuffer(data); + + return DeviceAssociationInfo(macAddress: pbVersion.macAddress); + } + @override ScanResult scanResultFrom(List data) { final message = pb.DeviceScanInfo.fromBuffer(data); @@ -75,6 +107,12 @@ class ProtobufConverterImpl implements ProtobufConverter { ); } + @override + String deviceNameFrom(List data) { + final deviceNameInfo = pb.DeviceNameInfo.fromBuffer(data); + return deviceNameInfo.deviceName; + } + @override ConnectionStateUpdate connectionStateUpdateFrom(List data) { final deviceInfo = pb.DeviceInfo.fromBuffer(data); diff --git a/packages/reactive_ble_mobile/lib/src/generated/bledata.pb.dart b/packages/reactive_ble_mobile/lib/src/generated/bledata.pb.dart index e2d1c4b6..6ff58dfc 100644 --- a/packages/reactive_ble_mobile/lib/src/generated/bledata.pb.dart +++ b/packages/reactive_ble_mobile/lib/src/generated/bledata.pb.dart @@ -1,42 +1,179 @@ -/// +// // Generated code. Do not modify. // source: bledata.proto // // @dart = 2.12 -// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import import 'dart:core' as $core; import 'package:protobuf/protobuf.dart' as $pb; -class ScanForDevicesRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ScanForDevicesRequest', createEmptyInstance: create) - ..pc(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'serviceUuids', $pb.PbFieldType.PM, protoName: 'serviceUuids', subBuilder: Uuid.create) - ..a<$core.int>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'scanMode', $pb.PbFieldType.O3, protoName: 'scanMode') - ..aOB(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'requireLocationServicesEnabled', protoName: 'requireLocationServicesEnabled') +import 'bledata.pbenum.dart'; + +export 'bledata.pbenum.dart'; + +class LaunchCompanionRequest extends $pb.GeneratedMessage { + factory LaunchCompanionRequest({ + $core.String? deviceNamePattern, + $core.bool? singleDeviceScan, + $core.bool? forceConfirmation, + }) { + final $result = create(); + if (deviceNamePattern != null) { + $result.deviceNamePattern = deviceNamePattern; + } + if (singleDeviceScan != null) { + $result.singleDeviceScan = singleDeviceScan; + } + if (forceConfirmation != null) { + $result.forceConfirmation = forceConfirmation; + } + return $result; + } + LaunchCompanionRequest._() : super(); + factory LaunchCompanionRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory LaunchCompanionRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'LaunchCompanionRequest', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceNamePattern', protoName: 'deviceNamePattern') + ..aOB(2, _omitFieldNames ? '' : 'singleDeviceScan', protoName: 'singleDeviceScan') + ..aOB(3, _omitFieldNames ? '' : 'forceConfirmation', protoName: 'forceConfirmation') ..hasRequiredFields = false ; - ScanForDevicesRequest._() : super(); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + LaunchCompanionRequest clone() => LaunchCompanionRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + LaunchCompanionRequest copyWith(void Function(LaunchCompanionRequest) updates) => super.copyWith((message) => updates(message as LaunchCompanionRequest)) as LaunchCompanionRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static LaunchCompanionRequest create() => LaunchCompanionRequest._(); + LaunchCompanionRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static LaunchCompanionRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static LaunchCompanionRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get deviceNamePattern => $_getSZ(0); + @$pb.TagNumber(1) + set deviceNamePattern($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasDeviceNamePattern() => $_has(0); + @$pb.TagNumber(1) + void clearDeviceNamePattern() => clearField(1); + + @$pb.TagNumber(2) + $core.bool get singleDeviceScan => $_getBF(1); + @$pb.TagNumber(2) + set singleDeviceScan($core.bool v) { $_setBool(1, v); } + @$pb.TagNumber(2) + $core.bool hasSingleDeviceScan() => $_has(1); + @$pb.TagNumber(2) + void clearSingleDeviceScan() => clearField(2); + + @$pb.TagNumber(3) + $core.bool get forceConfirmation => $_getBF(2); + @$pb.TagNumber(3) + set forceConfirmation($core.bool v) { $_setBool(2, v); } + @$pb.TagNumber(3) + $core.bool hasForceConfirmation() => $_has(2); + @$pb.TagNumber(3) + void clearForceConfirmation() => clearField(3); +} + +class DeviceAssociationInfo extends $pb.GeneratedMessage { + factory DeviceAssociationInfo({ + $core.String? macAddress, + }) { + final $result = create(); + if (macAddress != null) { + $result.macAddress = macAddress; + } + return $result; + } + DeviceAssociationInfo._() : super(); + factory DeviceAssociationInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DeviceAssociationInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DeviceAssociationInfo', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'macAddress', protoName: 'macAddress') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DeviceAssociationInfo clone() => DeviceAssociationInfo()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DeviceAssociationInfo copyWith(void Function(DeviceAssociationInfo) updates) => super.copyWith((message) => updates(message as DeviceAssociationInfo)) as DeviceAssociationInfo; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static DeviceAssociationInfo create() => DeviceAssociationInfo._(); + DeviceAssociationInfo createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DeviceAssociationInfo getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DeviceAssociationInfo? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get macAddress => $_getSZ(0); + @$pb.TagNumber(1) + set macAddress($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasMacAddress() => $_has(0); + @$pb.TagNumber(1) + void clearMacAddress() => clearField(1); +} + +class ScanForDevicesRequest extends $pb.GeneratedMessage { factory ScanForDevicesRequest({ $core.Iterable? serviceUuids, $core.int? scanMode, $core.bool? requireLocationServicesEnabled, }) { - final _result = create(); + final $result = create(); if (serviceUuids != null) { - _result.serviceUuids.addAll(serviceUuids); + $result.serviceUuids.addAll(serviceUuids); } if (scanMode != null) { - _result.scanMode = scanMode; + $result.scanMode = scanMode; } if (requireLocationServicesEnabled != null) { - _result.requireLocationServicesEnabled = requireLocationServicesEnabled; + $result.requireLocationServicesEnabled = requireLocationServicesEnabled; } - return _result; + return $result; } + ScanForDevicesRequest._() : super(); factory ScanForDevicesRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory ScanForDevicesRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ScanForDevicesRequest', createEmptyInstance: create) + ..pc(1, _omitFieldNames ? '' : 'serviceUuids', $pb.PbFieldType.PM, protoName: 'serviceUuids', subBuilder: Uuid.create) + ..a<$core.int>(2, _omitFieldNames ? '' : 'scanMode', $pb.PbFieldType.O3, protoName: 'scanMode') + ..aOB(3, _omitFieldNames ? '' : 'requireLocationServicesEnabled', protoName: 'requireLocationServicesEnabled') + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -46,8 +183,10 @@ class ScanForDevicesRequest extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - ScanForDevicesRequest copyWith(void Function(ScanForDevicesRequest) updates) => super.copyWith((message) => updates(message as ScanForDevicesRequest)) as ScanForDevicesRequest; // ignore: deprecated_member_use + ScanForDevicesRequest copyWith(void Function(ScanForDevicesRequest) updates) => super.copyWith((message) => updates(message as ScanForDevicesRequest)) as ScanForDevicesRequest; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static ScanForDevicesRequest create() => ScanForDevicesRequest._(); ScanForDevicesRequest createEmptyInstance() => create(); @@ -79,19 +218,6 @@ class ScanForDevicesRequest extends $pb.GeneratedMessage { } class DeviceScanInfo extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DeviceScanInfo', createEmptyInstance: create) - ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'id') - ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'name') - ..aOM(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'failure', subBuilder: GenericFailure.create) - ..pc(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'serviceData', $pb.PbFieldType.PM, protoName: 'serviceData', subBuilder: ServiceDataEntry.create) - ..a<$core.int>(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'rssi', $pb.PbFieldType.O3) - ..a<$core.List<$core.int>>(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'manufacturerData', $pb.PbFieldType.OY, protoName: 'manufacturerData') - ..pc(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'serviceUuids', $pb.PbFieldType.PM, protoName: 'serviceUuids', subBuilder: Uuid.create) - ..aOM(8, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'isConnectable', protoName: 'isConnectable', subBuilder: IsConnectable.create) - ..hasRequiredFields = false - ; - - DeviceScanInfo._() : super(); factory DeviceScanInfo({ $core.String? id, $core.String? name, @@ -102,35 +228,49 @@ class DeviceScanInfo extends $pb.GeneratedMessage { $core.Iterable? serviceUuids, IsConnectable? isConnectable, }) { - final _result = create(); + final $result = create(); if (id != null) { - _result.id = id; + $result.id = id; } if (name != null) { - _result.name = name; + $result.name = name; } if (failure != null) { - _result.failure = failure; + $result.failure = failure; } if (serviceData != null) { - _result.serviceData.addAll(serviceData); + $result.serviceData.addAll(serviceData); } if (rssi != null) { - _result.rssi = rssi; + $result.rssi = rssi; } if (manufacturerData != null) { - _result.manufacturerData = manufacturerData; + $result.manufacturerData = manufacturerData; } if (serviceUuids != null) { - _result.serviceUuids.addAll(serviceUuids); + $result.serviceUuids.addAll(serviceUuids); } if (isConnectable != null) { - _result.isConnectable = isConnectable; + $result.isConnectable = isConnectable; } - return _result; + return $result; } + DeviceScanInfo._() : super(); factory DeviceScanInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory DeviceScanInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DeviceScanInfo', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'id') + ..aOS(2, _omitFieldNames ? '' : 'name') + ..aOM(3, _omitFieldNames ? '' : 'failure', subBuilder: GenericFailure.create) + ..pc(4, _omitFieldNames ? '' : 'serviceData', $pb.PbFieldType.PM, protoName: 'serviceData', subBuilder: ServiceDataEntry.create) + ..a<$core.int>(5, _omitFieldNames ? '' : 'rssi', $pb.PbFieldType.O3) + ..a<$core.List<$core.int>>(6, _omitFieldNames ? '' : 'manufacturerData', $pb.PbFieldType.OY, protoName: 'manufacturerData') + ..pc(7, _omitFieldNames ? '' : 'serviceUuids', $pb.PbFieldType.PM, protoName: 'serviceUuids', subBuilder: Uuid.create) + ..aOM(8, _omitFieldNames ? '' : 'isConnectable', protoName: 'isConnectable', subBuilder: IsConnectable.create) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -140,8 +280,10 @@ class DeviceScanInfo extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - DeviceScanInfo copyWith(void Function(DeviceScanInfo) updates) => super.copyWith((message) => updates(message as DeviceScanInfo)) as DeviceScanInfo; // ignore: deprecated_member_use + DeviceScanInfo copyWith(void Function(DeviceScanInfo) updates) => super.copyWith((message) => updates(message as DeviceScanInfo)) as DeviceScanInfo; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static DeviceScanInfo create() => DeviceScanInfo._(); DeviceScanInfo createEmptyInstance() => create(); @@ -215,34 +357,135 @@ class DeviceScanInfo extends $pb.GeneratedMessage { IsConnectable ensureIsConnectable() => $_ensure(7); } -class ConnectToDeviceRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ConnectToDeviceRequest', createEmptyInstance: create) - ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deviceId', protoName: 'deviceId') - ..aOM(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'servicesWithCharacteristicsToDiscover', protoName: 'servicesWithCharacteristicsToDiscover', subBuilder: ServicesWithCharacteristics.create) - ..a<$core.int>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'timeoutInMs', $pb.PbFieldType.O3, protoName: 'timeoutInMs') +class EstablishBondingRequest extends $pb.GeneratedMessage { + factory EstablishBondingRequest({ + $core.String? deviceId, + }) { + final $result = create(); + if (deviceId != null) { + $result.deviceId = deviceId; + } + return $result; + } + EstablishBondingRequest._() : super(); + factory EstablishBondingRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory EstablishBondingRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'EstablishBondingRequest', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceId', protoName: 'deviceId') ..hasRequiredFields = false ; - ConnectToDeviceRequest._() : super(); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + EstablishBondingRequest clone() => EstablishBondingRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + EstablishBondingRequest copyWith(void Function(EstablishBondingRequest) updates) => super.copyWith((message) => updates(message as EstablishBondingRequest)) as EstablishBondingRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static EstablishBondingRequest create() => EstablishBondingRequest._(); + EstablishBondingRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static EstablishBondingRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static EstablishBondingRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get deviceId => $_getSZ(0); + @$pb.TagNumber(1) + set deviceId($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasDeviceId() => $_has(0); + @$pb.TagNumber(1) + void clearDeviceId() => clearField(1); +} + +class EstablishBondingInfo extends $pb.GeneratedMessage { + factory EstablishBondingInfo({ + EstablishBondingInfo_BondState? status, + }) { + final $result = create(); + if (status != null) { + $result.status = status; + } + return $result; + } + EstablishBondingInfo._() : super(); + factory EstablishBondingInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory EstablishBondingInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'EstablishBondingInfo', createEmptyInstance: create) + ..e(1, _omitFieldNames ? '' : 'status', $pb.PbFieldType.OE, defaultOrMaker: EstablishBondingInfo_BondState.NONE, valueOf: EstablishBondingInfo_BondState.valueOf, enumValues: EstablishBondingInfo_BondState.values) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + EstablishBondingInfo clone() => EstablishBondingInfo()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + EstablishBondingInfo copyWith(void Function(EstablishBondingInfo) updates) => super.copyWith((message) => updates(message as EstablishBondingInfo)) as EstablishBondingInfo; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static EstablishBondingInfo create() => EstablishBondingInfo._(); + EstablishBondingInfo createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static EstablishBondingInfo getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static EstablishBondingInfo? _defaultInstance; + + @$pb.TagNumber(1) + EstablishBondingInfo_BondState get status => $_getN(0); + @$pb.TagNumber(1) + set status(EstablishBondingInfo_BondState v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasStatus() => $_has(0); + @$pb.TagNumber(1) + void clearStatus() => clearField(1); +} + +class ConnectToDeviceRequest extends $pb.GeneratedMessage { factory ConnectToDeviceRequest({ $core.String? deviceId, ServicesWithCharacteristics? servicesWithCharacteristicsToDiscover, $core.int? timeoutInMs, }) { - final _result = create(); + final $result = create(); if (deviceId != null) { - _result.deviceId = deviceId; + $result.deviceId = deviceId; } if (servicesWithCharacteristicsToDiscover != null) { - _result.servicesWithCharacteristicsToDiscover = servicesWithCharacteristicsToDiscover; + $result.servicesWithCharacteristicsToDiscover = servicesWithCharacteristicsToDiscover; } if (timeoutInMs != null) { - _result.timeoutInMs = timeoutInMs; + $result.timeoutInMs = timeoutInMs; } - return _result; + return $result; } + ConnectToDeviceRequest._() : super(); factory ConnectToDeviceRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory ConnectToDeviceRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ConnectToDeviceRequest', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceId', protoName: 'deviceId') + ..aOM(2, _omitFieldNames ? '' : 'servicesWithCharacteristicsToDiscover', protoName: 'servicesWithCharacteristicsToDiscover', subBuilder: ServicesWithCharacteristics.create) + ..a<$core.int>(3, _omitFieldNames ? '' : 'timeoutInMs', $pb.PbFieldType.O3, protoName: 'timeoutInMs') + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -252,8 +495,10 @@ class ConnectToDeviceRequest extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - ConnectToDeviceRequest copyWith(void Function(ConnectToDeviceRequest) updates) => super.copyWith((message) => updates(message as ConnectToDeviceRequest)) as ConnectToDeviceRequest; // ignore: deprecated_member_use + ConnectToDeviceRequest copyWith(void Function(ConnectToDeviceRequest) updates) => super.copyWith((message) => updates(message as ConnectToDeviceRequest)) as ConnectToDeviceRequest; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static ConnectToDeviceRequest create() => ConnectToDeviceRequest._(); ConnectToDeviceRequest createEmptyInstance() => create(); @@ -293,33 +538,34 @@ class ConnectToDeviceRequest extends $pb.GeneratedMessage { } class DeviceInfo extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DeviceInfo', createEmptyInstance: create) - ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'id') - ..a<$core.int>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'connectionState', $pb.PbFieldType.O3, protoName: 'connectionState') - ..aOM(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'failure', subBuilder: GenericFailure.create) - ..hasRequiredFields = false - ; - - DeviceInfo._() : super(); factory DeviceInfo({ $core.String? id, $core.int? connectionState, GenericFailure? failure, }) { - final _result = create(); + final $result = create(); if (id != null) { - _result.id = id; + $result.id = id; } if (connectionState != null) { - _result.connectionState = connectionState; + $result.connectionState = connectionState; } if (failure != null) { - _result.failure = failure; + $result.failure = failure; } - return _result; + return $result; } + DeviceInfo._() : super(); factory DeviceInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory DeviceInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DeviceInfo', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'id') + ..a<$core.int>(2, _omitFieldNames ? '' : 'connectionState', $pb.PbFieldType.O3, protoName: 'connectionState') + ..aOM(3, _omitFieldNames ? '' : 'failure', subBuilder: GenericFailure.create) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -329,8 +575,10 @@ class DeviceInfo extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - DeviceInfo copyWith(void Function(DeviceInfo) updates) => super.copyWith((message) => updates(message as DeviceInfo)) as DeviceInfo; // ignore: deprecated_member_use + DeviceInfo copyWith(void Function(DeviceInfo) updates) => super.copyWith((message) => updates(message as DeviceInfo)) as DeviceInfo; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static DeviceInfo create() => DeviceInfo._(); DeviceInfo createEmptyInstance() => create(); @@ -369,24 +617,139 @@ class DeviceInfo extends $pb.GeneratedMessage { GenericFailure ensureFailure() => $_ensure(2); } -class DisconnectFromDeviceRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DisconnectFromDeviceRequest', createEmptyInstance: create) - ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deviceId', protoName: 'deviceId') +class GetDeviceNameRequest extends $pb.GeneratedMessage { + factory GetDeviceNameRequest({ + $core.String? deviceId, + }) { + final $result = create(); + if (deviceId != null) { + $result.deviceId = deviceId; + } + return $result; + } + GetDeviceNameRequest._() : super(); + factory GetDeviceNameRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory GetDeviceNameRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'GetDeviceNameRequest', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceId', protoName: 'deviceId') ..hasRequiredFields = false ; - DisconnectFromDeviceRequest._() : super(); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + GetDeviceNameRequest clone() => GetDeviceNameRequest()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + GetDeviceNameRequest copyWith(void Function(GetDeviceNameRequest) updates) => super.copyWith((message) => updates(message as GetDeviceNameRequest)) as GetDeviceNameRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static GetDeviceNameRequest create() => GetDeviceNameRequest._(); + GetDeviceNameRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static GetDeviceNameRequest getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static GetDeviceNameRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get deviceId => $_getSZ(0); + @$pb.TagNumber(1) + set deviceId($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasDeviceId() => $_has(0); + @$pb.TagNumber(1) + void clearDeviceId() => clearField(1); +} + +class DeviceNameInfo extends $pb.GeneratedMessage { + factory DeviceNameInfo({ + $core.String? id, + $core.String? deviceName, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (deviceName != null) { + $result.deviceName = deviceName; + } + return $result; + } + DeviceNameInfo._() : super(); + factory DeviceNameInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory DeviceNameInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DeviceNameInfo', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'id') + ..aOS(2, _omitFieldNames ? '' : 'deviceName', protoName: 'deviceName') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + DeviceNameInfo clone() => DeviceNameInfo()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + DeviceNameInfo copyWith(void Function(DeviceNameInfo) updates) => super.copyWith((message) => updates(message as DeviceNameInfo)) as DeviceNameInfo; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static DeviceNameInfo create() => DeviceNameInfo._(); + DeviceNameInfo createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static DeviceNameInfo getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static DeviceNameInfo? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get id => $_getSZ(0); + @$pb.TagNumber(1) + set id($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + $core.String get deviceName => $_getSZ(1); + @$pb.TagNumber(2) + set deviceName($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasDeviceName() => $_has(1); + @$pb.TagNumber(2) + void clearDeviceName() => clearField(2); +} + +class DisconnectFromDeviceRequest extends $pb.GeneratedMessage { factory DisconnectFromDeviceRequest({ $core.String? deviceId, }) { - final _result = create(); + final $result = create(); if (deviceId != null) { - _result.deviceId = deviceId; + $result.deviceId = deviceId; } - return _result; + return $result; } + DisconnectFromDeviceRequest._() : super(); factory DisconnectFromDeviceRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory DisconnectFromDeviceRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DisconnectFromDeviceRequest', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceId', protoName: 'deviceId') + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -396,8 +759,10 @@ class DisconnectFromDeviceRequest extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - DisconnectFromDeviceRequest copyWith(void Function(DisconnectFromDeviceRequest) updates) => super.copyWith((message) => updates(message as DisconnectFromDeviceRequest)) as DisconnectFromDeviceRequest; // ignore: deprecated_member_use + DisconnectFromDeviceRequest copyWith(void Function(DisconnectFromDeviceRequest) updates) => super.copyWith((message) => updates(message as DisconnectFromDeviceRequest)) as DisconnectFromDeviceRequest; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static DisconnectFromDeviceRequest create() => DisconnectFromDeviceRequest._(); DisconnectFromDeviceRequest createEmptyInstance() => create(); @@ -417,23 +782,24 @@ class DisconnectFromDeviceRequest extends $pb.GeneratedMessage { } class ClearGattCacheRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ClearGattCacheRequest', createEmptyInstance: create) - ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deviceId', protoName: 'deviceId') - ..hasRequiredFields = false - ; - - ClearGattCacheRequest._() : super(); factory ClearGattCacheRequest({ $core.String? deviceId, }) { - final _result = create(); + final $result = create(); if (deviceId != null) { - _result.deviceId = deviceId; + $result.deviceId = deviceId; } - return _result; + return $result; } + ClearGattCacheRequest._() : super(); factory ClearGattCacheRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory ClearGattCacheRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ClearGattCacheRequest', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceId', protoName: 'deviceId') + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -443,8 +809,10 @@ class ClearGattCacheRequest extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - ClearGattCacheRequest copyWith(void Function(ClearGattCacheRequest) updates) => super.copyWith((message) => updates(message as ClearGattCacheRequest)) as ClearGattCacheRequest; // ignore: deprecated_member_use + ClearGattCacheRequest copyWith(void Function(ClearGattCacheRequest) updates) => super.copyWith((message) => updates(message as ClearGattCacheRequest)) as ClearGattCacheRequest; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static ClearGattCacheRequest create() => ClearGattCacheRequest._(); ClearGattCacheRequest createEmptyInstance() => create(); @@ -464,23 +832,24 @@ class ClearGattCacheRequest extends $pb.GeneratedMessage { } class ClearGattCacheInfo extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ClearGattCacheInfo', createEmptyInstance: create) - ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'failure', subBuilder: GenericFailure.create) - ..hasRequiredFields = false - ; - - ClearGattCacheInfo._() : super(); factory ClearGattCacheInfo({ GenericFailure? failure, }) { - final _result = create(); + final $result = create(); if (failure != null) { - _result.failure = failure; + $result.failure = failure; } - return _result; + return $result; } + ClearGattCacheInfo._() : super(); factory ClearGattCacheInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory ClearGattCacheInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ClearGattCacheInfo', createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'failure', subBuilder: GenericFailure.create) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -490,8 +859,10 @@ class ClearGattCacheInfo extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - ClearGattCacheInfo copyWith(void Function(ClearGattCacheInfo) updates) => super.copyWith((message) => updates(message as ClearGattCacheInfo)) as ClearGattCacheInfo; // ignore: deprecated_member_use + ClearGattCacheInfo copyWith(void Function(ClearGattCacheInfo) updates) => super.copyWith((message) => updates(message as ClearGattCacheInfo)) as ClearGattCacheInfo; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static ClearGattCacheInfo create() => ClearGattCacheInfo._(); ClearGattCacheInfo createEmptyInstance() => create(); @@ -513,23 +884,24 @@ class ClearGattCacheInfo extends $pb.GeneratedMessage { } class NotifyCharacteristicRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'NotifyCharacteristicRequest', createEmptyInstance: create) - ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'characteristic', subBuilder: CharacteristicAddress.create) - ..hasRequiredFields = false - ; - - NotifyCharacteristicRequest._() : super(); factory NotifyCharacteristicRequest({ CharacteristicAddress? characteristic, }) { - final _result = create(); + final $result = create(); if (characteristic != null) { - _result.characteristic = characteristic; + $result.characteristic = characteristic; } - return _result; + return $result; } + NotifyCharacteristicRequest._() : super(); factory NotifyCharacteristicRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory NotifyCharacteristicRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'NotifyCharacteristicRequest', createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'characteristic', subBuilder: CharacteristicAddress.create) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -539,8 +911,10 @@ class NotifyCharacteristicRequest extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - NotifyCharacteristicRequest copyWith(void Function(NotifyCharacteristicRequest) updates) => super.copyWith((message) => updates(message as NotifyCharacteristicRequest)) as NotifyCharacteristicRequest; // ignore: deprecated_member_use + NotifyCharacteristicRequest copyWith(void Function(NotifyCharacteristicRequest) updates) => super.copyWith((message) => updates(message as NotifyCharacteristicRequest)) as NotifyCharacteristicRequest; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static NotifyCharacteristicRequest create() => NotifyCharacteristicRequest._(); NotifyCharacteristicRequest createEmptyInstance() => create(); @@ -562,23 +936,24 @@ class NotifyCharacteristicRequest extends $pb.GeneratedMessage { } class NotifyNoMoreCharacteristicRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'NotifyNoMoreCharacteristicRequest', createEmptyInstance: create) - ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'characteristic', subBuilder: CharacteristicAddress.create) - ..hasRequiredFields = false - ; - - NotifyNoMoreCharacteristicRequest._() : super(); factory NotifyNoMoreCharacteristicRequest({ CharacteristicAddress? characteristic, }) { - final _result = create(); + final $result = create(); if (characteristic != null) { - _result.characteristic = characteristic; + $result.characteristic = characteristic; } - return _result; + return $result; } + NotifyNoMoreCharacteristicRequest._() : super(); factory NotifyNoMoreCharacteristicRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory NotifyNoMoreCharacteristicRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'NotifyNoMoreCharacteristicRequest', createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'characteristic', subBuilder: CharacteristicAddress.create) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -588,8 +963,10 @@ class NotifyNoMoreCharacteristicRequest extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - NotifyNoMoreCharacteristicRequest copyWith(void Function(NotifyNoMoreCharacteristicRequest) updates) => super.copyWith((message) => updates(message as NotifyNoMoreCharacteristicRequest)) as NotifyNoMoreCharacteristicRequest; // ignore: deprecated_member_use + NotifyNoMoreCharacteristicRequest copyWith(void Function(NotifyNoMoreCharacteristicRequest) updates) => super.copyWith((message) => updates(message as NotifyNoMoreCharacteristicRequest)) as NotifyNoMoreCharacteristicRequest; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static NotifyNoMoreCharacteristicRequest create() => NotifyNoMoreCharacteristicRequest._(); NotifyNoMoreCharacteristicRequest createEmptyInstance() => create(); @@ -611,23 +988,24 @@ class NotifyNoMoreCharacteristicRequest extends $pb.GeneratedMessage { } class ReadCharacteristicRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ReadCharacteristicRequest', createEmptyInstance: create) - ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'characteristic', subBuilder: CharacteristicAddress.create) - ..hasRequiredFields = false - ; - - ReadCharacteristicRequest._() : super(); factory ReadCharacteristicRequest({ CharacteristicAddress? characteristic, }) { - final _result = create(); + final $result = create(); if (characteristic != null) { - _result.characteristic = characteristic; + $result.characteristic = characteristic; } - return _result; + return $result; } + ReadCharacteristicRequest._() : super(); factory ReadCharacteristicRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory ReadCharacteristicRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ReadCharacteristicRequest', createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'characteristic', subBuilder: CharacteristicAddress.create) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -637,8 +1015,10 @@ class ReadCharacteristicRequest extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - ReadCharacteristicRequest copyWith(void Function(ReadCharacteristicRequest) updates) => super.copyWith((message) => updates(message as ReadCharacteristicRequest)) as ReadCharacteristicRequest; // ignore: deprecated_member_use + ReadCharacteristicRequest copyWith(void Function(ReadCharacteristicRequest) updates) => super.copyWith((message) => updates(message as ReadCharacteristicRequest)) as ReadCharacteristicRequest; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static ReadCharacteristicRequest create() => ReadCharacteristicRequest._(); ReadCharacteristicRequest createEmptyInstance() => create(); @@ -660,33 +1040,34 @@ class ReadCharacteristicRequest extends $pb.GeneratedMessage { } class CharacteristicValueInfo extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'CharacteristicValueInfo', createEmptyInstance: create) - ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'characteristic', subBuilder: CharacteristicAddress.create) - ..a<$core.List<$core.int>>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'value', $pb.PbFieldType.OY) - ..aOM(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'failure', subBuilder: GenericFailure.create) - ..hasRequiredFields = false - ; - - CharacteristicValueInfo._() : super(); factory CharacteristicValueInfo({ CharacteristicAddress? characteristic, $core.List<$core.int>? value, GenericFailure? failure, }) { - final _result = create(); + final $result = create(); if (characteristic != null) { - _result.characteristic = characteristic; + $result.characteristic = characteristic; } if (value != null) { - _result.value = value; + $result.value = value; } if (failure != null) { - _result.failure = failure; + $result.failure = failure; } - return _result; + return $result; } + CharacteristicValueInfo._() : super(); factory CharacteristicValueInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory CharacteristicValueInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CharacteristicValueInfo', createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'characteristic', subBuilder: CharacteristicAddress.create) + ..a<$core.List<$core.int>>(2, _omitFieldNames ? '' : 'value', $pb.PbFieldType.OY) + ..aOM(3, _omitFieldNames ? '' : 'failure', subBuilder: GenericFailure.create) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -696,8 +1077,10 @@ class CharacteristicValueInfo extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - CharacteristicValueInfo copyWith(void Function(CharacteristicValueInfo) updates) => super.copyWith((message) => updates(message as CharacteristicValueInfo)) as CharacteristicValueInfo; // ignore: deprecated_member_use + CharacteristicValueInfo copyWith(void Function(CharacteristicValueInfo) updates) => super.copyWith((message) => updates(message as CharacteristicValueInfo)) as CharacteristicValueInfo; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static CharacteristicValueInfo create() => CharacteristicValueInfo._(); CharacteristicValueInfo createEmptyInstance() => create(); @@ -739,28 +1122,29 @@ class CharacteristicValueInfo extends $pb.GeneratedMessage { } class WriteCharacteristicRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'WriteCharacteristicRequest', createEmptyInstance: create) - ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'characteristic', subBuilder: CharacteristicAddress.create) - ..a<$core.List<$core.int>>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'value', $pb.PbFieldType.OY) - ..hasRequiredFields = false - ; - - WriteCharacteristicRequest._() : super(); factory WriteCharacteristicRequest({ CharacteristicAddress? characteristic, $core.List<$core.int>? value, }) { - final _result = create(); + final $result = create(); if (characteristic != null) { - _result.characteristic = characteristic; + $result.characteristic = characteristic; } if (value != null) { - _result.value = value; + $result.value = value; } - return _result; + return $result; } + WriteCharacteristicRequest._() : super(); factory WriteCharacteristicRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory WriteCharacteristicRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'WriteCharacteristicRequest', createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'characteristic', subBuilder: CharacteristicAddress.create) + ..a<$core.List<$core.int>>(2, _omitFieldNames ? '' : 'value', $pb.PbFieldType.OY) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -770,8 +1154,10 @@ class WriteCharacteristicRequest extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - WriteCharacteristicRequest copyWith(void Function(WriteCharacteristicRequest) updates) => super.copyWith((message) => updates(message as WriteCharacteristicRequest)) as WriteCharacteristicRequest; // ignore: deprecated_member_use + WriteCharacteristicRequest copyWith(void Function(WriteCharacteristicRequest) updates) => super.copyWith((message) => updates(message as WriteCharacteristicRequest)) as WriteCharacteristicRequest; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static WriteCharacteristicRequest create() => WriteCharacteristicRequest._(); WriteCharacteristicRequest createEmptyInstance() => create(); @@ -802,28 +1188,29 @@ class WriteCharacteristicRequest extends $pb.GeneratedMessage { } class WriteCharacteristicInfo extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'WriteCharacteristicInfo', createEmptyInstance: create) - ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'characteristic', subBuilder: CharacteristicAddress.create) - ..aOM(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'failure', subBuilder: GenericFailure.create) - ..hasRequiredFields = false - ; - - WriteCharacteristicInfo._() : super(); factory WriteCharacteristicInfo({ CharacteristicAddress? characteristic, GenericFailure? failure, }) { - final _result = create(); + final $result = create(); if (characteristic != null) { - _result.characteristic = characteristic; + $result.characteristic = characteristic; } if (failure != null) { - _result.failure = failure; + $result.failure = failure; } - return _result; + return $result; } + WriteCharacteristicInfo._() : super(); factory WriteCharacteristicInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory WriteCharacteristicInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'WriteCharacteristicInfo', createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'characteristic', subBuilder: CharacteristicAddress.create) + ..aOM(3, _omitFieldNames ? '' : 'failure', subBuilder: GenericFailure.create) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -833,8 +1220,10 @@ class WriteCharacteristicInfo extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - WriteCharacteristicInfo copyWith(void Function(WriteCharacteristicInfo) updates) => super.copyWith((message) => updates(message as WriteCharacteristicInfo)) as WriteCharacteristicInfo; // ignore: deprecated_member_use + WriteCharacteristicInfo copyWith(void Function(WriteCharacteristicInfo) updates) => super.copyWith((message) => updates(message as WriteCharacteristicInfo)) as WriteCharacteristicInfo; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static WriteCharacteristicInfo create() => WriteCharacteristicInfo._(); WriteCharacteristicInfo createEmptyInstance() => create(); @@ -867,28 +1256,29 @@ class WriteCharacteristicInfo extends $pb.GeneratedMessage { } class NegotiateMtuRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'NegotiateMtuRequest', createEmptyInstance: create) - ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deviceId', protoName: 'deviceId') - ..a<$core.int>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'mtuSize', $pb.PbFieldType.O3, protoName: 'mtuSize') - ..hasRequiredFields = false - ; - - NegotiateMtuRequest._() : super(); factory NegotiateMtuRequest({ $core.String? deviceId, $core.int? mtuSize, }) { - final _result = create(); + final $result = create(); if (deviceId != null) { - _result.deviceId = deviceId; + $result.deviceId = deviceId; } if (mtuSize != null) { - _result.mtuSize = mtuSize; + $result.mtuSize = mtuSize; } - return _result; + return $result; } + NegotiateMtuRequest._() : super(); factory NegotiateMtuRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory NegotiateMtuRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'NegotiateMtuRequest', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceId', protoName: 'deviceId') + ..a<$core.int>(2, _omitFieldNames ? '' : 'mtuSize', $pb.PbFieldType.O3, protoName: 'mtuSize') + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -898,8 +1288,10 @@ class NegotiateMtuRequest extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - NegotiateMtuRequest copyWith(void Function(NegotiateMtuRequest) updates) => super.copyWith((message) => updates(message as NegotiateMtuRequest)) as NegotiateMtuRequest; // ignore: deprecated_member_use + NegotiateMtuRequest copyWith(void Function(NegotiateMtuRequest) updates) => super.copyWith((message) => updates(message as NegotiateMtuRequest)) as NegotiateMtuRequest; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static NegotiateMtuRequest create() => NegotiateMtuRequest._(); NegotiateMtuRequest createEmptyInstance() => create(); @@ -928,33 +1320,34 @@ class NegotiateMtuRequest extends $pb.GeneratedMessage { } class NegotiateMtuInfo extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'NegotiateMtuInfo', createEmptyInstance: create) - ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deviceId', protoName: 'deviceId') - ..a<$core.int>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'mtuSize', $pb.PbFieldType.O3, protoName: 'mtuSize') - ..aOM(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'failure', subBuilder: GenericFailure.create) - ..hasRequiredFields = false - ; - - NegotiateMtuInfo._() : super(); factory NegotiateMtuInfo({ $core.String? deviceId, $core.int? mtuSize, GenericFailure? failure, }) { - final _result = create(); + final $result = create(); if (deviceId != null) { - _result.deviceId = deviceId; + $result.deviceId = deviceId; } if (mtuSize != null) { - _result.mtuSize = mtuSize; + $result.mtuSize = mtuSize; } if (failure != null) { - _result.failure = failure; + $result.failure = failure; } - return _result; + return $result; } + NegotiateMtuInfo._() : super(); factory NegotiateMtuInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory NegotiateMtuInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'NegotiateMtuInfo', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceId', protoName: 'deviceId') + ..a<$core.int>(2, _omitFieldNames ? '' : 'mtuSize', $pb.PbFieldType.O3, protoName: 'mtuSize') + ..aOM(3, _omitFieldNames ? '' : 'failure', subBuilder: GenericFailure.create) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -964,8 +1357,10 @@ class NegotiateMtuInfo extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - NegotiateMtuInfo copyWith(void Function(NegotiateMtuInfo) updates) => super.copyWith((message) => updates(message as NegotiateMtuInfo)) as NegotiateMtuInfo; // ignore: deprecated_member_use + NegotiateMtuInfo copyWith(void Function(NegotiateMtuInfo) updates) => super.copyWith((message) => updates(message as NegotiateMtuInfo)) as NegotiateMtuInfo; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static NegotiateMtuInfo create() => NegotiateMtuInfo._(); NegotiateMtuInfo createEmptyInstance() => create(); @@ -1005,23 +1400,24 @@ class NegotiateMtuInfo extends $pb.GeneratedMessage { } class BleStatusInfo extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'BleStatusInfo', createEmptyInstance: create) - ..a<$core.int>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'status', $pb.PbFieldType.O3) - ..hasRequiredFields = false - ; - - BleStatusInfo._() : super(); factory BleStatusInfo({ $core.int? status, }) { - final _result = create(); + final $result = create(); if (status != null) { - _result.status = status; + $result.status = status; } - return _result; + return $result; } + BleStatusInfo._() : super(); factory BleStatusInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory BleStatusInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'BleStatusInfo', createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'status', $pb.PbFieldType.O3) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1031,8 +1427,10 @@ class BleStatusInfo extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - BleStatusInfo copyWith(void Function(BleStatusInfo) updates) => super.copyWith((message) => updates(message as BleStatusInfo)) as BleStatusInfo; // ignore: deprecated_member_use + BleStatusInfo copyWith(void Function(BleStatusInfo) updates) => super.copyWith((message) => updates(message as BleStatusInfo)) as BleStatusInfo; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static BleStatusInfo create() => BleStatusInfo._(); BleStatusInfo createEmptyInstance() => create(); @@ -1052,28 +1450,29 @@ class BleStatusInfo extends $pb.GeneratedMessage { } class ChangeConnectionPriorityRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ChangeConnectionPriorityRequest', createEmptyInstance: create) - ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deviceId', protoName: 'deviceId') - ..a<$core.int>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'priority', $pb.PbFieldType.O3) - ..hasRequiredFields = false - ; - - ChangeConnectionPriorityRequest._() : super(); factory ChangeConnectionPriorityRequest({ $core.String? deviceId, $core.int? priority, }) { - final _result = create(); + final $result = create(); if (deviceId != null) { - _result.deviceId = deviceId; + $result.deviceId = deviceId; } if (priority != null) { - _result.priority = priority; + $result.priority = priority; } - return _result; + return $result; } + ChangeConnectionPriorityRequest._() : super(); factory ChangeConnectionPriorityRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory ChangeConnectionPriorityRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ChangeConnectionPriorityRequest', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceId', protoName: 'deviceId') + ..a<$core.int>(2, _omitFieldNames ? '' : 'priority', $pb.PbFieldType.O3) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1083,8 +1482,10 @@ class ChangeConnectionPriorityRequest extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - ChangeConnectionPriorityRequest copyWith(void Function(ChangeConnectionPriorityRequest) updates) => super.copyWith((message) => updates(message as ChangeConnectionPriorityRequest)) as ChangeConnectionPriorityRequest; // ignore: deprecated_member_use + ChangeConnectionPriorityRequest copyWith(void Function(ChangeConnectionPriorityRequest) updates) => super.copyWith((message) => updates(message as ChangeConnectionPriorityRequest)) as ChangeConnectionPriorityRequest; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static ChangeConnectionPriorityRequest create() => ChangeConnectionPriorityRequest._(); ChangeConnectionPriorityRequest createEmptyInstance() => create(); @@ -1113,28 +1514,29 @@ class ChangeConnectionPriorityRequest extends $pb.GeneratedMessage { } class ChangeConnectionPriorityInfo extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ChangeConnectionPriorityInfo', createEmptyInstance: create) - ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deviceId', protoName: 'deviceId') - ..aOM(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'failure', subBuilder: GenericFailure.create) - ..hasRequiredFields = false - ; - - ChangeConnectionPriorityInfo._() : super(); factory ChangeConnectionPriorityInfo({ $core.String? deviceId, GenericFailure? failure, }) { - final _result = create(); + final $result = create(); if (deviceId != null) { - _result.deviceId = deviceId; + $result.deviceId = deviceId; } if (failure != null) { - _result.failure = failure; + $result.failure = failure; } - return _result; + return $result; } + ChangeConnectionPriorityInfo._() : super(); factory ChangeConnectionPriorityInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory ChangeConnectionPriorityInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ChangeConnectionPriorityInfo', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceId', protoName: 'deviceId') + ..aOM(2, _omitFieldNames ? '' : 'failure', subBuilder: GenericFailure.create) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1144,8 +1546,10 @@ class ChangeConnectionPriorityInfo extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - ChangeConnectionPriorityInfo copyWith(void Function(ChangeConnectionPriorityInfo) updates) => super.copyWith((message) => updates(message as ChangeConnectionPriorityInfo)) as ChangeConnectionPriorityInfo; // ignore: deprecated_member_use + ChangeConnectionPriorityInfo copyWith(void Function(ChangeConnectionPriorityInfo) updates) => super.copyWith((message) => updates(message as ChangeConnectionPriorityInfo)) as ChangeConnectionPriorityInfo; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static ChangeConnectionPriorityInfo create() => ChangeConnectionPriorityInfo._(); ChangeConnectionPriorityInfo createEmptyInstance() => create(); @@ -1176,16 +1580,6 @@ class ChangeConnectionPriorityInfo extends $pb.GeneratedMessage { } class CharacteristicAddress extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'CharacteristicAddress', createEmptyInstance: create) - ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deviceId', protoName: 'deviceId') - ..aOM(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'serviceUuid', protoName: 'serviceUuid', subBuilder: Uuid.create) - ..aOM(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'characteristicUuid', protoName: 'characteristicUuid', subBuilder: Uuid.create) - ..aOS(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'serviceInstanceId', protoName: 'serviceInstanceId') - ..aOS(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'characteristicInstanceId', protoName: 'characteristicInstanceId') - ..hasRequiredFields = false - ; - - CharacteristicAddress._() : super(); factory CharacteristicAddress({ $core.String? deviceId, Uuid? serviceUuid, @@ -1193,26 +1587,37 @@ class CharacteristicAddress extends $pb.GeneratedMessage { $core.String? serviceInstanceId, $core.String? characteristicInstanceId, }) { - final _result = create(); + final $result = create(); if (deviceId != null) { - _result.deviceId = deviceId; + $result.deviceId = deviceId; } if (serviceUuid != null) { - _result.serviceUuid = serviceUuid; + $result.serviceUuid = serviceUuid; } if (characteristicUuid != null) { - _result.characteristicUuid = characteristicUuid; + $result.characteristicUuid = characteristicUuid; } if (serviceInstanceId != null) { - _result.serviceInstanceId = serviceInstanceId; + $result.serviceInstanceId = serviceInstanceId; } if (characteristicInstanceId != null) { - _result.characteristicInstanceId = characteristicInstanceId; + $result.characteristicInstanceId = characteristicInstanceId; } - return _result; + return $result; } + CharacteristicAddress._() : super(); factory CharacteristicAddress.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory CharacteristicAddress.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'CharacteristicAddress', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceId', protoName: 'deviceId') + ..aOM(2, _omitFieldNames ? '' : 'serviceUuid', protoName: 'serviceUuid', subBuilder: Uuid.create) + ..aOM(3, _omitFieldNames ? '' : 'characteristicUuid', protoName: 'characteristicUuid', subBuilder: Uuid.create) + ..aOS(4, _omitFieldNames ? '' : 'serviceInstanceId', protoName: 'serviceInstanceId') + ..aOS(5, _omitFieldNames ? '' : 'characteristicInstanceId', protoName: 'characteristicInstanceId') + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1222,8 +1627,10 @@ class CharacteristicAddress extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - CharacteristicAddress copyWith(void Function(CharacteristicAddress) updates) => super.copyWith((message) => updates(message as CharacteristicAddress)) as CharacteristicAddress; // ignore: deprecated_member_use + CharacteristicAddress copyWith(void Function(CharacteristicAddress) updates) => super.copyWith((message) => updates(message as CharacteristicAddress)) as CharacteristicAddress; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static CharacteristicAddress create() => CharacteristicAddress._(); CharacteristicAddress createEmptyInstance() => create(); @@ -1283,28 +1690,29 @@ class CharacteristicAddress extends $pb.GeneratedMessage { } class ServiceDataEntry extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ServiceDataEntry', createEmptyInstance: create) - ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'serviceUuid', protoName: 'serviceUuid', subBuilder: Uuid.create) - ..a<$core.List<$core.int>>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'data', $pb.PbFieldType.OY) - ..hasRequiredFields = false - ; - - ServiceDataEntry._() : super(); factory ServiceDataEntry({ Uuid? serviceUuid, $core.List<$core.int>? data, }) { - final _result = create(); + final $result = create(); if (serviceUuid != null) { - _result.serviceUuid = serviceUuid; + $result.serviceUuid = serviceUuid; } if (data != null) { - _result.data = data; + $result.data = data; } - return _result; + return $result; } + ServiceDataEntry._() : super(); factory ServiceDataEntry.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory ServiceDataEntry.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ServiceDataEntry', createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'serviceUuid', protoName: 'serviceUuid', subBuilder: Uuid.create) + ..a<$core.List<$core.int>>(2, _omitFieldNames ? '' : 'data', $pb.PbFieldType.OY) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1314,8 +1722,10 @@ class ServiceDataEntry extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - ServiceDataEntry copyWith(void Function(ServiceDataEntry) updates) => super.copyWith((message) => updates(message as ServiceDataEntry)) as ServiceDataEntry; // ignore: deprecated_member_use + ServiceDataEntry copyWith(void Function(ServiceDataEntry) updates) => super.copyWith((message) => updates(message as ServiceDataEntry)) as ServiceDataEntry; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static ServiceDataEntry create() => ServiceDataEntry._(); ServiceDataEntry createEmptyInstance() => create(); @@ -1346,23 +1756,24 @@ class ServiceDataEntry extends $pb.GeneratedMessage { } class ServicesWithCharacteristics extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ServicesWithCharacteristics', createEmptyInstance: create) - ..pc(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'items', $pb.PbFieldType.PM, subBuilder: ServiceWithCharacteristics.create) - ..hasRequiredFields = false - ; - - ServicesWithCharacteristics._() : super(); factory ServicesWithCharacteristics({ $core.Iterable? items, }) { - final _result = create(); + final $result = create(); if (items != null) { - _result.items.addAll(items); + $result.items.addAll(items); } - return _result; + return $result; } + ServicesWithCharacteristics._() : super(); factory ServicesWithCharacteristics.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory ServicesWithCharacteristics.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ServicesWithCharacteristics', createEmptyInstance: create) + ..pc(1, _omitFieldNames ? '' : 'items', $pb.PbFieldType.PM, subBuilder: ServiceWithCharacteristics.create) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1372,8 +1783,10 @@ class ServicesWithCharacteristics extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - ServicesWithCharacteristics copyWith(void Function(ServicesWithCharacteristics) updates) => super.copyWith((message) => updates(message as ServicesWithCharacteristics)) as ServicesWithCharacteristics; // ignore: deprecated_member_use + ServicesWithCharacteristics copyWith(void Function(ServicesWithCharacteristics) updates) => super.copyWith((message) => updates(message as ServicesWithCharacteristics)) as ServicesWithCharacteristics; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static ServicesWithCharacteristics create() => ServicesWithCharacteristics._(); ServicesWithCharacteristics createEmptyInstance() => create(); @@ -1387,28 +1800,29 @@ class ServicesWithCharacteristics extends $pb.GeneratedMessage { } class ServiceWithCharacteristics extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ServiceWithCharacteristics', createEmptyInstance: create) - ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'serviceId', protoName: 'serviceId', subBuilder: Uuid.create) - ..pc(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'characteristics', $pb.PbFieldType.PM, subBuilder: Uuid.create) - ..hasRequiredFields = false - ; - - ServiceWithCharacteristics._() : super(); factory ServiceWithCharacteristics({ Uuid? serviceId, $core.Iterable? characteristics, }) { - final _result = create(); + final $result = create(); if (serviceId != null) { - _result.serviceId = serviceId; + $result.serviceId = serviceId; } if (characteristics != null) { - _result.characteristics.addAll(characteristics); + $result.characteristics.addAll(characteristics); } - return _result; + return $result; } + ServiceWithCharacteristics._() : super(); factory ServiceWithCharacteristics.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory ServiceWithCharacteristics.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ServiceWithCharacteristics', createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'serviceId', protoName: 'serviceId', subBuilder: Uuid.create) + ..pc(2, _omitFieldNames ? '' : 'characteristics', $pb.PbFieldType.PM, subBuilder: Uuid.create) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1418,8 +1832,10 @@ class ServiceWithCharacteristics extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - ServiceWithCharacteristics copyWith(void Function(ServiceWithCharacteristics) updates) => super.copyWith((message) => updates(message as ServiceWithCharacteristics)) as ServiceWithCharacteristics; // ignore: deprecated_member_use + ServiceWithCharacteristics copyWith(void Function(ServiceWithCharacteristics) updates) => super.copyWith((message) => updates(message as ServiceWithCharacteristics)) as ServiceWithCharacteristics; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static ServiceWithCharacteristics create() => ServiceWithCharacteristics._(); ServiceWithCharacteristics createEmptyInstance() => create(); @@ -1444,23 +1860,24 @@ class ServiceWithCharacteristics extends $pb.GeneratedMessage { } class DiscoverServicesRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DiscoverServicesRequest', createEmptyInstance: create) - ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deviceId', protoName: 'deviceId') - ..hasRequiredFields = false - ; - - DiscoverServicesRequest._() : super(); factory DiscoverServicesRequest({ $core.String? deviceId, }) { - final _result = create(); + final $result = create(); if (deviceId != null) { - _result.deviceId = deviceId; + $result.deviceId = deviceId; } - return _result; + return $result; } + DiscoverServicesRequest._() : super(); factory DiscoverServicesRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory DiscoverServicesRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DiscoverServicesRequest', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceId', protoName: 'deviceId') + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1470,8 +1887,10 @@ class DiscoverServicesRequest extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - DiscoverServicesRequest copyWith(void Function(DiscoverServicesRequest) updates) => super.copyWith((message) => updates(message as DiscoverServicesRequest)) as DiscoverServicesRequest; // ignore: deprecated_member_use + DiscoverServicesRequest copyWith(void Function(DiscoverServicesRequest) updates) => super.copyWith((message) => updates(message as DiscoverServicesRequest)) as DiscoverServicesRequest; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static DiscoverServicesRequest create() => DiscoverServicesRequest._(); DiscoverServicesRequest createEmptyInstance() => create(); @@ -1491,28 +1910,29 @@ class DiscoverServicesRequest extends $pb.GeneratedMessage { } class DiscoverServicesInfo extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DiscoverServicesInfo', createEmptyInstance: create) - ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deviceId', protoName: 'deviceId') - ..pc(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'services', $pb.PbFieldType.PM, subBuilder: DiscoveredService.create) - ..hasRequiredFields = false - ; - - DiscoverServicesInfo._() : super(); factory DiscoverServicesInfo({ $core.String? deviceId, $core.Iterable? services, }) { - final _result = create(); + final $result = create(); if (deviceId != null) { - _result.deviceId = deviceId; + $result.deviceId = deviceId; } if (services != null) { - _result.services.addAll(services); + $result.services.addAll(services); } - return _result; + return $result; } + DiscoverServicesInfo._() : super(); factory DiscoverServicesInfo.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory DiscoverServicesInfo.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DiscoverServicesInfo', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceId', protoName: 'deviceId') + ..pc(2, _omitFieldNames ? '' : 'services', $pb.PbFieldType.PM, subBuilder: DiscoveredService.create) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1522,8 +1942,10 @@ class DiscoverServicesInfo extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - DiscoverServicesInfo copyWith(void Function(DiscoverServicesInfo) updates) => super.copyWith((message) => updates(message as DiscoverServicesInfo)) as DiscoverServicesInfo; // ignore: deprecated_member_use + DiscoverServicesInfo copyWith(void Function(DiscoverServicesInfo) updates) => super.copyWith((message) => updates(message as DiscoverServicesInfo)) as DiscoverServicesInfo; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static DiscoverServicesInfo create() => DiscoverServicesInfo._(); DiscoverServicesInfo createEmptyInstance() => create(); @@ -1546,16 +1968,6 @@ class DiscoverServicesInfo extends $pb.GeneratedMessage { } class DiscoveredService extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DiscoveredService', createEmptyInstance: create) - ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'serviceUuid', protoName: 'serviceUuid', subBuilder: Uuid.create) - ..pc(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'characteristicUuids', $pb.PbFieldType.PM, protoName: 'characteristicUuids', subBuilder: Uuid.create) - ..pc(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'includedServices', $pb.PbFieldType.PM, protoName: 'includedServices', subBuilder: DiscoveredService.create) - ..pc(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'characteristics', $pb.PbFieldType.PM, subBuilder: DiscoveredCharacteristic.create) - ..aOS(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'serviceInstanceId', protoName: 'serviceInstanceId') - ..hasRequiredFields = false - ; - - DiscoveredService._() : super(); factory DiscoveredService({ Uuid? serviceUuid, $core.Iterable? characteristicUuids, @@ -1563,26 +1975,37 @@ class DiscoveredService extends $pb.GeneratedMessage { $core.Iterable? characteristics, $core.String? serviceInstanceId, }) { - final _result = create(); + final $result = create(); if (serviceUuid != null) { - _result.serviceUuid = serviceUuid; + $result.serviceUuid = serviceUuid; } if (characteristicUuids != null) { - _result.characteristicUuids.addAll(characteristicUuids); + $result.characteristicUuids.addAll(characteristicUuids); } if (includedServices != null) { - _result.includedServices.addAll(includedServices); + $result.includedServices.addAll(includedServices); } if (characteristics != null) { - _result.characteristics.addAll(characteristics); + $result.characteristics.addAll(characteristics); } if (serviceInstanceId != null) { - _result.serviceInstanceId = serviceInstanceId; + $result.serviceInstanceId = serviceInstanceId; } - return _result; + return $result; } + DiscoveredService._() : super(); factory DiscoveredService.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory DiscoveredService.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DiscoveredService', createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'serviceUuid', protoName: 'serviceUuid', subBuilder: Uuid.create) + ..pc(2, _omitFieldNames ? '' : 'characteristicUuids', $pb.PbFieldType.PM, protoName: 'characteristicUuids', subBuilder: Uuid.create) + ..pc(3, _omitFieldNames ? '' : 'includedServices', $pb.PbFieldType.PM, protoName: 'includedServices', subBuilder: DiscoveredService.create) + ..pc(4, _omitFieldNames ? '' : 'characteristics', $pb.PbFieldType.PM, subBuilder: DiscoveredCharacteristic.create) + ..aOS(5, _omitFieldNames ? '' : 'serviceInstanceId', protoName: 'serviceInstanceId') + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1592,8 +2015,10 @@ class DiscoveredService extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - DiscoveredService copyWith(void Function(DiscoveredService) updates) => super.copyWith((message) => updates(message as DiscoveredService)) as DiscoveredService; // ignore: deprecated_member_use + DiscoveredService copyWith(void Function(DiscoveredService) updates) => super.copyWith((message) => updates(message as DiscoveredService)) as DiscoveredService; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static DiscoveredService create() => DiscoveredService._(); DiscoveredService createEmptyInstance() => create(); @@ -1633,19 +2058,6 @@ class DiscoveredService extends $pb.GeneratedMessage { } class DiscoveredCharacteristic extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'DiscoveredCharacteristic', createEmptyInstance: create) - ..aOM(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'characteristicId', protoName: 'characteristicId', subBuilder: Uuid.create) - ..aOM(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'serviceId', protoName: 'serviceId', subBuilder: Uuid.create) - ..aOB(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'isReadable', protoName: 'isReadable') - ..aOB(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'isWritableWithResponse', protoName: 'isWritableWithResponse') - ..aOB(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'isWritableWithoutResponse', protoName: 'isWritableWithoutResponse') - ..aOB(6, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'isNotifiable', protoName: 'isNotifiable') - ..aOB(7, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'isIndicatable', protoName: 'isIndicatable') - ..aOS(8, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'characteristicInstanceId', protoName: 'characteristicInstanceId') - ..hasRequiredFields = false - ; - - DiscoveredCharacteristic._() : super(); factory DiscoveredCharacteristic({ Uuid? characteristicId, Uuid? serviceId, @@ -1656,35 +2068,49 @@ class DiscoveredCharacteristic extends $pb.GeneratedMessage { $core.bool? isIndicatable, $core.String? characteristicInstanceId, }) { - final _result = create(); + final $result = create(); if (characteristicId != null) { - _result.characteristicId = characteristicId; + $result.characteristicId = characteristicId; } if (serviceId != null) { - _result.serviceId = serviceId; + $result.serviceId = serviceId; } if (isReadable != null) { - _result.isReadable = isReadable; + $result.isReadable = isReadable; } if (isWritableWithResponse != null) { - _result.isWritableWithResponse = isWritableWithResponse; + $result.isWritableWithResponse = isWritableWithResponse; } if (isWritableWithoutResponse != null) { - _result.isWritableWithoutResponse = isWritableWithoutResponse; + $result.isWritableWithoutResponse = isWritableWithoutResponse; } if (isNotifiable != null) { - _result.isNotifiable = isNotifiable; + $result.isNotifiable = isNotifiable; } if (isIndicatable != null) { - _result.isIndicatable = isIndicatable; + $result.isIndicatable = isIndicatable; } if (characteristicInstanceId != null) { - _result.characteristicInstanceId = characteristicInstanceId; + $result.characteristicInstanceId = characteristicInstanceId; } - return _result; + return $result; } + DiscoveredCharacteristic._() : super(); factory DiscoveredCharacteristic.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory DiscoveredCharacteristic.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'DiscoveredCharacteristic', createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'characteristicId', protoName: 'characteristicId', subBuilder: Uuid.create) + ..aOM(2, _omitFieldNames ? '' : 'serviceId', protoName: 'serviceId', subBuilder: Uuid.create) + ..aOB(3, _omitFieldNames ? '' : 'isReadable', protoName: 'isReadable') + ..aOB(4, _omitFieldNames ? '' : 'isWritableWithResponse', protoName: 'isWritableWithResponse') + ..aOB(5, _omitFieldNames ? '' : 'isWritableWithoutResponse', protoName: 'isWritableWithoutResponse') + ..aOB(6, _omitFieldNames ? '' : 'isNotifiable', protoName: 'isNotifiable') + ..aOB(7, _omitFieldNames ? '' : 'isIndicatable', protoName: 'isIndicatable') + ..aOS(8, _omitFieldNames ? '' : 'characteristicInstanceId', protoName: 'characteristicInstanceId') + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1694,8 +2120,10 @@ class DiscoveredCharacteristic extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - DiscoveredCharacteristic copyWith(void Function(DiscoveredCharacteristic) updates) => super.copyWith((message) => updates(message as DiscoveredCharacteristic)) as DiscoveredCharacteristic; // ignore: deprecated_member_use + DiscoveredCharacteristic copyWith(void Function(DiscoveredCharacteristic) updates) => super.copyWith((message) => updates(message as DiscoveredCharacteristic)) as DiscoveredCharacteristic; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static DiscoveredCharacteristic create() => DiscoveredCharacteristic._(); DiscoveredCharacteristic createEmptyInstance() => create(); @@ -1782,23 +2210,24 @@ class DiscoveredCharacteristic extends $pb.GeneratedMessage { } class ReadRssiRequest extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ReadRssiRequest', createEmptyInstance: create) - ..aOS(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'deviceId', protoName: 'deviceId') - ..hasRequiredFields = false - ; - - ReadRssiRequest._() : super(); factory ReadRssiRequest({ $core.String? deviceId, }) { - final _result = create(); + final $result = create(); if (deviceId != null) { - _result.deviceId = deviceId; + $result.deviceId = deviceId; } - return _result; + return $result; } + ReadRssiRequest._() : super(); factory ReadRssiRequest.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory ReadRssiRequest.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ReadRssiRequest', createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'deviceId', protoName: 'deviceId') + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1808,8 +2237,10 @@ class ReadRssiRequest extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - ReadRssiRequest copyWith(void Function(ReadRssiRequest) updates) => super.copyWith((message) => updates(message as ReadRssiRequest)) as ReadRssiRequest; // ignore: deprecated_member_use + ReadRssiRequest copyWith(void Function(ReadRssiRequest) updates) => super.copyWith((message) => updates(message as ReadRssiRequest)) as ReadRssiRequest; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static ReadRssiRequest create() => ReadRssiRequest._(); ReadRssiRequest createEmptyInstance() => create(); @@ -1829,23 +2260,24 @@ class ReadRssiRequest extends $pb.GeneratedMessage { } class ReadRssiResult extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ReadRssiResult', createEmptyInstance: create) - ..a<$core.int>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'rssi', $pb.PbFieldType.O3) - ..hasRequiredFields = false - ; - - ReadRssiResult._() : super(); factory ReadRssiResult({ $core.int? rssi, }) { - final _result = create(); + final $result = create(); if (rssi != null) { - _result.rssi = rssi; + $result.rssi = rssi; } - return _result; + return $result; } + ReadRssiResult._() : super(); factory ReadRssiResult.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory ReadRssiResult.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ReadRssiResult', createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'rssi', $pb.PbFieldType.O3) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1855,8 +2287,10 @@ class ReadRssiResult extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - ReadRssiResult copyWith(void Function(ReadRssiResult) updates) => super.copyWith((message) => updates(message as ReadRssiResult)) as ReadRssiResult; // ignore: deprecated_member_use + ReadRssiResult copyWith(void Function(ReadRssiResult) updates) => super.copyWith((message) => updates(message as ReadRssiResult)) as ReadRssiResult; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static ReadRssiResult create() => ReadRssiResult._(); ReadRssiResult createEmptyInstance() => create(); @@ -1876,23 +2310,24 @@ class ReadRssiResult extends $pb.GeneratedMessage { } class Uuid extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'Uuid', createEmptyInstance: create) - ..a<$core.List<$core.int>>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'data', $pb.PbFieldType.OY) - ..hasRequiredFields = false - ; - - Uuid._() : super(); factory Uuid({ $core.List<$core.int>? data, }) { - final _result = create(); + final $result = create(); if (data != null) { - _result.data = data; + $result.data = data; } - return _result; + return $result; } + Uuid._() : super(); factory Uuid.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory Uuid.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Uuid', createEmptyInstance: create) + ..a<$core.List<$core.int>>(1, _omitFieldNames ? '' : 'data', $pb.PbFieldType.OY) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1902,8 +2337,10 @@ class Uuid extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - Uuid copyWith(void Function(Uuid) updates) => super.copyWith((message) => updates(message as Uuid)) as Uuid; // ignore: deprecated_member_use + Uuid copyWith(void Function(Uuid) updates) => super.copyWith((message) => updates(message as Uuid)) as Uuid; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static Uuid create() => Uuid._(); Uuid createEmptyInstance() => create(); @@ -1923,28 +2360,29 @@ class Uuid extends $pb.GeneratedMessage { } class GenericFailure extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'GenericFailure', createEmptyInstance: create) - ..a<$core.int>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'code', $pb.PbFieldType.O3) - ..aOS(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'message') - ..hasRequiredFields = false - ; - - GenericFailure._() : super(); factory GenericFailure({ $core.int? code, $core.String? message, }) { - final _result = create(); + final $result = create(); if (code != null) { - _result.code = code; + $result.code = code; } if (message != null) { - _result.message = message; + $result.message = message; } - return _result; + return $result; } + GenericFailure._() : super(); factory GenericFailure.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory GenericFailure.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'GenericFailure', createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'code', $pb.PbFieldType.O3) + ..aOS(2, _omitFieldNames ? '' : 'message') + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -1954,8 +2392,10 @@ class GenericFailure extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - GenericFailure copyWith(void Function(GenericFailure) updates) => super.copyWith((message) => updates(message as GenericFailure)) as GenericFailure; // ignore: deprecated_member_use + GenericFailure copyWith(void Function(GenericFailure) updates) => super.copyWith((message) => updates(message as GenericFailure)) as GenericFailure; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static GenericFailure create() => GenericFailure._(); GenericFailure createEmptyInstance() => create(); @@ -1984,23 +2424,24 @@ class GenericFailure extends $pb.GeneratedMessage { } class IsConnectable extends $pb.GeneratedMessage { - static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'IsConnectable', createEmptyInstance: create) - ..a<$core.int>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'code', $pb.PbFieldType.O3) - ..hasRequiredFields = false - ; - - IsConnectable._() : super(); factory IsConnectable({ $core.int? code, }) { - final _result = create(); + final $result = create(); if (code != null) { - _result.code = code; + $result.code = code; } - return _result; + return $result; } + IsConnectable._() : super(); factory IsConnectable.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); factory IsConnectable.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'IsConnectable', createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'code', $pb.PbFieldType.O3) + ..hasRequiredFields = false + ; + @$core.Deprecated( 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' @@ -2010,8 +2451,10 @@ class IsConnectable extends $pb.GeneratedMessage { 'Using this can add significant overhead to your binary. ' 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' 'Will be removed in next major version') - IsConnectable copyWith(void Function(IsConnectable) updates) => super.copyWith((message) => updates(message as IsConnectable)) as IsConnectable; // ignore: deprecated_member_use + IsConnectable copyWith(void Function(IsConnectable) updates) => super.copyWith((message) => updates(message as IsConnectable)) as IsConnectable; + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') static IsConnectable create() => IsConnectable._(); IsConnectable createEmptyInstance() => create(); @@ -2030,3 +2473,6 @@ class IsConnectable extends $pb.GeneratedMessage { void clearCode() => clearField(1); } + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/packages/reactive_ble_mobile/lib/src/generated/bledata.pbenum.dart b/packages/reactive_ble_mobile/lib/src/generated/bledata.pbenum.dart index 1ccca4dd..8a2d2991 100644 --- a/packages/reactive_ble_mobile/lib/src/generated/bledata.pbenum.dart +++ b/packages/reactive_ble_mobile/lib/src/generated/bledata.pbenum.dart @@ -1,7 +1,34 @@ -/// +// // Generated code. Do not modify. // source: bledata.proto // // @dart = 2.12 -// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +class EstablishBondingInfo_BondState extends $pb.ProtobufEnum { + static const EstablishBondingInfo_BondState NONE = EstablishBondingInfo_BondState._(0, _omitEnumNames ? '' : 'NONE'); + static const EstablishBondingInfo_BondState BONDING = EstablishBondingInfo_BondState._(1, _omitEnumNames ? '' : 'BONDING'); + static const EstablishBondingInfo_BondState BONDED = EstablishBondingInfo_BondState._(2, _omitEnumNames ? '' : 'BONDED'); + + static const $core.List values = [ + NONE, + BONDING, + BONDED, + ]; + + static final $core.Map<$core.int, EstablishBondingInfo_BondState> _byValue = $pb.ProtobufEnum.initByValue(values); + static EstablishBondingInfo_BondState? valueOf($core.int value) => _byValue[value]; + + const EstablishBondingInfo_BondState._($core.int v, $core.String n) : super(v, n); +} + + +const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/packages/reactive_ble_mobile/lib/src/generated/bledata.pbjson.dart b/packages/reactive_ble_mobile/lib/src/generated/bledata.pbjson.dart index aaa1515f..ca459502 100644 --- a/packages/reactive_ble_mobile/lib/src/generated/bledata.pbjson.dart +++ b/packages/reactive_ble_mobile/lib/src/generated/bledata.pbjson.dart @@ -1,361 +1,571 @@ -/// +// // Generated code. Do not modify. // source: bledata.proto // // @dart = 2.12 -// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name -import 'dart:core' as $core; +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + import 'dart:convert' as $convert; +import 'dart:core' as $core; import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use launchCompanionRequestDescriptor instead') +const LaunchCompanionRequest$json = { + '1': 'LaunchCompanionRequest', + '2': [ + {'1': 'deviceNamePattern', '3': 1, '4': 1, '5': 9, '10': 'deviceNamePattern'}, + {'1': 'singleDeviceScan', '3': 2, '4': 1, '5': 8, '10': 'singleDeviceScan'}, + {'1': 'forceConfirmation', '3': 3, '4': 1, '5': 8, '10': 'forceConfirmation'}, + ], +}; + +/// Descriptor for `LaunchCompanionRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List launchCompanionRequestDescriptor = $convert.base64Decode( + 'ChZMYXVuY2hDb21wYW5pb25SZXF1ZXN0EiwKEWRldmljZU5hbWVQYXR0ZXJuGAEgASgJUhFkZX' + 'ZpY2VOYW1lUGF0dGVybhIqChBzaW5nbGVEZXZpY2VTY2FuGAIgASgIUhBzaW5nbGVEZXZpY2VT' + 'Y2FuEiwKEWZvcmNlQ29uZmlybWF0aW9uGAMgASgIUhFmb3JjZUNvbmZpcm1hdGlvbg=='); + +@$core.Deprecated('Use deviceAssociationInfoDescriptor instead') +const DeviceAssociationInfo$json = { + '1': 'DeviceAssociationInfo', + '2': [ + {'1': 'macAddress', '3': 1, '4': 1, '5': 9, '10': 'macAddress'}, + ], +}; + +/// Descriptor for `DeviceAssociationInfo`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List deviceAssociationInfoDescriptor = $convert.base64Decode( + 'ChVEZXZpY2VBc3NvY2lhdGlvbkluZm8SHgoKbWFjQWRkcmVzcxgBIAEoCVIKbWFjQWRkcmVzcw' + '=='); + @$core.Deprecated('Use scanForDevicesRequestDescriptor instead') -const ScanForDevicesRequest$json = const { +const ScanForDevicesRequest$json = { '1': 'ScanForDevicesRequest', - '2': const [ - const {'1': 'serviceUuids', '3': 1, '4': 3, '5': 11, '6': '.Uuid', '10': 'serviceUuids'}, - const {'1': 'scanMode', '3': 2, '4': 1, '5': 5, '10': 'scanMode'}, - const {'1': 'requireLocationServicesEnabled', '3': 3, '4': 1, '5': 8, '10': 'requireLocationServicesEnabled'}, + '2': [ + {'1': 'serviceUuids', '3': 1, '4': 3, '5': 11, '6': '.Uuid', '10': 'serviceUuids'}, + {'1': 'scanMode', '3': 2, '4': 1, '5': 5, '10': 'scanMode'}, + {'1': 'requireLocationServicesEnabled', '3': 3, '4': 1, '5': 8, '10': 'requireLocationServicesEnabled'}, ], }; /// Descriptor for `ScanForDevicesRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List scanForDevicesRequestDescriptor = $convert.base64Decode('ChVTY2FuRm9yRGV2aWNlc1JlcXVlc3QSKQoMc2VydmljZVV1aWRzGAEgAygLMgUuVXVpZFIMc2VydmljZVV1aWRzEhoKCHNjYW5Nb2RlGAIgASgFUghzY2FuTW9kZRJGCh5yZXF1aXJlTG9jYXRpb25TZXJ2aWNlc0VuYWJsZWQYAyABKAhSHnJlcXVpcmVMb2NhdGlvblNlcnZpY2VzRW5hYmxlZA=='); +final $typed_data.Uint8List scanForDevicesRequestDescriptor = $convert.base64Decode( + 'ChVTY2FuRm9yRGV2aWNlc1JlcXVlc3QSKQoMc2VydmljZVV1aWRzGAEgAygLMgUuVXVpZFIMc2' + 'VydmljZVV1aWRzEhoKCHNjYW5Nb2RlGAIgASgFUghzY2FuTW9kZRJGCh5yZXF1aXJlTG9jYXRp' + 'b25TZXJ2aWNlc0VuYWJsZWQYAyABKAhSHnJlcXVpcmVMb2NhdGlvblNlcnZpY2VzRW5hYmxlZA' + '=='); + @$core.Deprecated('Use deviceScanInfoDescriptor instead') -const DeviceScanInfo$json = const { +const DeviceScanInfo$json = { '1': 'DeviceScanInfo', - '2': const [ - const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, - const {'1': 'name', '3': 2, '4': 1, '5': 9, '10': 'name'}, - const {'1': 'failure', '3': 3, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, - const {'1': 'serviceData', '3': 4, '4': 3, '5': 11, '6': '.ServiceDataEntry', '10': 'serviceData'}, - const {'1': 'manufacturerData', '3': 6, '4': 1, '5': 12, '10': 'manufacturerData'}, - const {'1': 'serviceUuids', '3': 7, '4': 3, '5': 11, '6': '.Uuid', '10': 'serviceUuids'}, - const {'1': 'rssi', '3': 5, '4': 1, '5': 5, '10': 'rssi'}, - const {'1': 'isConnectable', '3': 8, '4': 1, '5': 11, '6': '.IsConnectable', '10': 'isConnectable'}, + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, + {'1': 'name', '3': 2, '4': 1, '5': 9, '10': 'name'}, + {'1': 'failure', '3': 3, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, + {'1': 'serviceData', '3': 4, '4': 3, '5': 11, '6': '.ServiceDataEntry', '10': 'serviceData'}, + {'1': 'manufacturerData', '3': 6, '4': 1, '5': 12, '10': 'manufacturerData'}, + {'1': 'serviceUuids', '3': 7, '4': 3, '5': 11, '6': '.Uuid', '10': 'serviceUuids'}, + {'1': 'rssi', '3': 5, '4': 1, '5': 5, '10': 'rssi'}, + {'1': 'isConnectable', '3': 8, '4': 1, '5': 11, '6': '.IsConnectable', '10': 'isConnectable'}, ], }; /// Descriptor for `DeviceScanInfo`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List deviceScanInfoDescriptor = $convert.base64Decode('Cg5EZXZpY2VTY2FuSW5mbxIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIpCgdmYWlsdXJlGAMgASgLMg8uR2VuZXJpY0ZhaWx1cmVSB2ZhaWx1cmUSMwoLc2VydmljZURhdGEYBCADKAsyES5TZXJ2aWNlRGF0YUVudHJ5UgtzZXJ2aWNlRGF0YRIqChBtYW51ZmFjdHVyZXJEYXRhGAYgASgMUhBtYW51ZmFjdHVyZXJEYXRhEikKDHNlcnZpY2VVdWlkcxgHIAMoCzIFLlV1aWRSDHNlcnZpY2VVdWlkcxISCgRyc3NpGAUgASgFUgRyc3NpEjQKDWlzQ29ubmVjdGFibGUYCCABKAsyDi5Jc0Nvbm5lY3RhYmxlUg1pc0Nvbm5lY3RhYmxl'); +final $typed_data.Uint8List deviceScanInfoDescriptor = $convert.base64Decode( + 'Cg5EZXZpY2VTY2FuSW5mbxIOCgJpZBgBIAEoCVICaWQSEgoEbmFtZRgCIAEoCVIEbmFtZRIpCg' + 'dmYWlsdXJlGAMgASgLMg8uR2VuZXJpY0ZhaWx1cmVSB2ZhaWx1cmUSMwoLc2VydmljZURhdGEY' + 'BCADKAsyES5TZXJ2aWNlRGF0YUVudHJ5UgtzZXJ2aWNlRGF0YRIqChBtYW51ZmFjdHVyZXJEYX' + 'RhGAYgASgMUhBtYW51ZmFjdHVyZXJEYXRhEikKDHNlcnZpY2VVdWlkcxgHIAMoCzIFLlV1aWRS' + 'DHNlcnZpY2VVdWlkcxISCgRyc3NpGAUgASgFUgRyc3NpEjQKDWlzQ29ubmVjdGFibGUYCCABKA' + 'syDi5Jc0Nvbm5lY3RhYmxlUg1pc0Nvbm5lY3RhYmxl'); + +@$core.Deprecated('Use establishBondingRequestDescriptor instead') +const EstablishBondingRequest$json = { + '1': 'EstablishBondingRequest', + '2': [ + {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, + ], +}; + +/// Descriptor for `EstablishBondingRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List establishBondingRequestDescriptor = $convert.base64Decode( + 'ChdFc3RhYmxpc2hCb25kaW5nUmVxdWVzdBIaCghkZXZpY2VJZBgBIAEoCVIIZGV2aWNlSWQ='); + +@$core.Deprecated('Use establishBondingInfoDescriptor instead') +const EstablishBondingInfo$json = { + '1': 'EstablishBondingInfo', + '2': [ + {'1': 'status', '3': 1, '4': 1, '5': 14, '6': '.EstablishBondingInfo.BondState', '10': 'status'}, + ], + '4': [EstablishBondingInfo_BondState$json], +}; + +@$core.Deprecated('Use establishBondingInfoDescriptor instead') +const EstablishBondingInfo_BondState$json = { + '1': 'BondState', + '2': [ + {'1': 'NONE', '2': 0}, + {'1': 'BONDING', '2': 1}, + {'1': 'BONDED', '2': 2}, + ], +}; + +/// Descriptor for `EstablishBondingInfo`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List establishBondingInfoDescriptor = $convert.base64Decode( + 'ChRFc3RhYmxpc2hCb25kaW5nSW5mbxI3CgZzdGF0dXMYASABKA4yHy5Fc3RhYmxpc2hCb25kaW' + '5nSW5mby5Cb25kU3RhdGVSBnN0YXR1cyIuCglCb25kU3RhdGUSCAoETk9ORRAAEgsKB0JPTkRJ' + 'TkcQARIKCgZCT05ERUQQAg=='); + @$core.Deprecated('Use connectToDeviceRequestDescriptor instead') -const ConnectToDeviceRequest$json = const { +const ConnectToDeviceRequest$json = { '1': 'ConnectToDeviceRequest', - '2': const [ - const {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, - const {'1': 'servicesWithCharacteristicsToDiscover', '3': 2, '4': 1, '5': 11, '6': '.ServicesWithCharacteristics', '10': 'servicesWithCharacteristicsToDiscover'}, - const {'1': 'timeoutInMs', '3': 3, '4': 1, '5': 5, '10': 'timeoutInMs'}, + '2': [ + {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, + {'1': 'servicesWithCharacteristicsToDiscover', '3': 2, '4': 1, '5': 11, '6': '.ServicesWithCharacteristics', '10': 'servicesWithCharacteristicsToDiscover'}, + {'1': 'timeoutInMs', '3': 3, '4': 1, '5': 5, '10': 'timeoutInMs'}, ], }; /// Descriptor for `ConnectToDeviceRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List connectToDeviceRequestDescriptor = $convert.base64Decode('ChZDb25uZWN0VG9EZXZpY2VSZXF1ZXN0EhoKCGRldmljZUlkGAEgASgJUghkZXZpY2VJZBJyCiVzZXJ2aWNlc1dpdGhDaGFyYWN0ZXJpc3RpY3NUb0Rpc2NvdmVyGAIgASgLMhwuU2VydmljZXNXaXRoQ2hhcmFjdGVyaXN0aWNzUiVzZXJ2aWNlc1dpdGhDaGFyYWN0ZXJpc3RpY3NUb0Rpc2NvdmVyEiAKC3RpbWVvdXRJbk1zGAMgASgFUgt0aW1lb3V0SW5Ncw=='); +final $typed_data.Uint8List connectToDeviceRequestDescriptor = $convert.base64Decode( + 'ChZDb25uZWN0VG9EZXZpY2VSZXF1ZXN0EhoKCGRldmljZUlkGAEgASgJUghkZXZpY2VJZBJyCi' + 'VzZXJ2aWNlc1dpdGhDaGFyYWN0ZXJpc3RpY3NUb0Rpc2NvdmVyGAIgASgLMhwuU2VydmljZXNX' + 'aXRoQ2hhcmFjdGVyaXN0aWNzUiVzZXJ2aWNlc1dpdGhDaGFyYWN0ZXJpc3RpY3NUb0Rpc2Nvdm' + 'VyEiAKC3RpbWVvdXRJbk1zGAMgASgFUgt0aW1lb3V0SW5Ncw=='); + @$core.Deprecated('Use deviceInfoDescriptor instead') -const DeviceInfo$json = const { +const DeviceInfo$json = { '1': 'DeviceInfo', - '2': const [ - const {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, - const {'1': 'connectionState', '3': 2, '4': 1, '5': 5, '10': 'connectionState'}, - const {'1': 'failure', '3': 3, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, + {'1': 'connectionState', '3': 2, '4': 1, '5': 5, '10': 'connectionState'}, + {'1': 'failure', '3': 3, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, ], }; /// Descriptor for `DeviceInfo`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List deviceInfoDescriptor = $convert.base64Decode('CgpEZXZpY2VJbmZvEg4KAmlkGAEgASgJUgJpZBIoCg9jb25uZWN0aW9uU3RhdGUYAiABKAVSD2Nvbm5lY3Rpb25TdGF0ZRIpCgdmYWlsdXJlGAMgASgLMg8uR2VuZXJpY0ZhaWx1cmVSB2ZhaWx1cmU='); +final $typed_data.Uint8List deviceInfoDescriptor = $convert.base64Decode( + 'CgpEZXZpY2VJbmZvEg4KAmlkGAEgASgJUgJpZBIoCg9jb25uZWN0aW9uU3RhdGUYAiABKAVSD2' + 'Nvbm5lY3Rpb25TdGF0ZRIpCgdmYWlsdXJlGAMgASgLMg8uR2VuZXJpY0ZhaWx1cmVSB2ZhaWx1' + 'cmU='); + +@$core.Deprecated('Use getDeviceNameRequestDescriptor instead') +const GetDeviceNameRequest$json = { + '1': 'GetDeviceNameRequest', + '2': [ + {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, + ], +}; + +/// Descriptor for `GetDeviceNameRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List getDeviceNameRequestDescriptor = $convert.base64Decode( + 'ChRHZXREZXZpY2VOYW1lUmVxdWVzdBIaCghkZXZpY2VJZBgBIAEoCVIIZGV2aWNlSWQ='); + +@$core.Deprecated('Use deviceNameInfoDescriptor instead') +const DeviceNameInfo$json = { + '1': 'DeviceNameInfo', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, + {'1': 'deviceName', '3': 2, '4': 1, '5': 9, '10': 'deviceName'}, + ], +}; + +/// Descriptor for `DeviceNameInfo`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List deviceNameInfoDescriptor = $convert.base64Decode( + 'Cg5EZXZpY2VOYW1lSW5mbxIOCgJpZBgBIAEoCVICaWQSHgoKZGV2aWNlTmFtZRgCIAEoCVIKZG' + 'V2aWNlTmFtZQ=='); + @$core.Deprecated('Use disconnectFromDeviceRequestDescriptor instead') -const DisconnectFromDeviceRequest$json = const { +const DisconnectFromDeviceRequest$json = { '1': 'DisconnectFromDeviceRequest', - '2': const [ - const {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, + '2': [ + {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, ], }; /// Descriptor for `DisconnectFromDeviceRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List disconnectFromDeviceRequestDescriptor = $convert.base64Decode('ChtEaXNjb25uZWN0RnJvbURldmljZVJlcXVlc3QSGgoIZGV2aWNlSWQYASABKAlSCGRldmljZUlk'); +final $typed_data.Uint8List disconnectFromDeviceRequestDescriptor = $convert.base64Decode( + 'ChtEaXNjb25uZWN0RnJvbURldmljZVJlcXVlc3QSGgoIZGV2aWNlSWQYASABKAlSCGRldmljZU' + 'lk'); + @$core.Deprecated('Use clearGattCacheRequestDescriptor instead') -const ClearGattCacheRequest$json = const { +const ClearGattCacheRequest$json = { '1': 'ClearGattCacheRequest', - '2': const [ - const {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, + '2': [ + {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, ], }; /// Descriptor for `ClearGattCacheRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List clearGattCacheRequestDescriptor = $convert.base64Decode('ChVDbGVhckdhdHRDYWNoZVJlcXVlc3QSGgoIZGV2aWNlSWQYASABKAlSCGRldmljZUlk'); +final $typed_data.Uint8List clearGattCacheRequestDescriptor = $convert.base64Decode( + 'ChVDbGVhckdhdHRDYWNoZVJlcXVlc3QSGgoIZGV2aWNlSWQYASABKAlSCGRldmljZUlk'); + @$core.Deprecated('Use clearGattCacheInfoDescriptor instead') -const ClearGattCacheInfo$json = const { +const ClearGattCacheInfo$json = { '1': 'ClearGattCacheInfo', - '2': const [ - const {'1': 'failure', '3': 1, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, + '2': [ + {'1': 'failure', '3': 1, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, ], }; /// Descriptor for `ClearGattCacheInfo`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List clearGattCacheInfoDescriptor = $convert.base64Decode('ChJDbGVhckdhdHRDYWNoZUluZm8SKQoHZmFpbHVyZRgBIAEoCzIPLkdlbmVyaWNGYWlsdXJlUgdmYWlsdXJl'); +final $typed_data.Uint8List clearGattCacheInfoDescriptor = $convert.base64Decode( + 'ChJDbGVhckdhdHRDYWNoZUluZm8SKQoHZmFpbHVyZRgBIAEoCzIPLkdlbmVyaWNGYWlsdXJlUg' + 'dmYWlsdXJl'); + @$core.Deprecated('Use notifyCharacteristicRequestDescriptor instead') -const NotifyCharacteristicRequest$json = const { +const NotifyCharacteristicRequest$json = { '1': 'NotifyCharacteristicRequest', - '2': const [ - const {'1': 'characteristic', '3': 1, '4': 1, '5': 11, '6': '.CharacteristicAddress', '10': 'characteristic'}, + '2': [ + {'1': 'characteristic', '3': 1, '4': 1, '5': 11, '6': '.CharacteristicAddress', '10': 'characteristic'}, ], }; /// Descriptor for `NotifyCharacteristicRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List notifyCharacteristicRequestDescriptor = $convert.base64Decode('ChtOb3RpZnlDaGFyYWN0ZXJpc3RpY1JlcXVlc3QSPgoOY2hhcmFjdGVyaXN0aWMYASABKAsyFi5DaGFyYWN0ZXJpc3RpY0FkZHJlc3NSDmNoYXJhY3RlcmlzdGlj'); +final $typed_data.Uint8List notifyCharacteristicRequestDescriptor = $convert.base64Decode( + 'ChtOb3RpZnlDaGFyYWN0ZXJpc3RpY1JlcXVlc3QSPgoOY2hhcmFjdGVyaXN0aWMYASABKAsyFi' + '5DaGFyYWN0ZXJpc3RpY0FkZHJlc3NSDmNoYXJhY3RlcmlzdGlj'); + @$core.Deprecated('Use notifyNoMoreCharacteristicRequestDescriptor instead') -const NotifyNoMoreCharacteristicRequest$json = const { +const NotifyNoMoreCharacteristicRequest$json = { '1': 'NotifyNoMoreCharacteristicRequest', - '2': const [ - const {'1': 'characteristic', '3': 1, '4': 1, '5': 11, '6': '.CharacteristicAddress', '10': 'characteristic'}, + '2': [ + {'1': 'characteristic', '3': 1, '4': 1, '5': 11, '6': '.CharacteristicAddress', '10': 'characteristic'}, ], }; /// Descriptor for `NotifyNoMoreCharacteristicRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List notifyNoMoreCharacteristicRequestDescriptor = $convert.base64Decode('CiFOb3RpZnlOb01vcmVDaGFyYWN0ZXJpc3RpY1JlcXVlc3QSPgoOY2hhcmFjdGVyaXN0aWMYASABKAsyFi5DaGFyYWN0ZXJpc3RpY0FkZHJlc3NSDmNoYXJhY3RlcmlzdGlj'); +final $typed_data.Uint8List notifyNoMoreCharacteristicRequestDescriptor = $convert.base64Decode( + 'CiFOb3RpZnlOb01vcmVDaGFyYWN0ZXJpc3RpY1JlcXVlc3QSPgoOY2hhcmFjdGVyaXN0aWMYAS' + 'ABKAsyFi5DaGFyYWN0ZXJpc3RpY0FkZHJlc3NSDmNoYXJhY3RlcmlzdGlj'); + @$core.Deprecated('Use readCharacteristicRequestDescriptor instead') -const ReadCharacteristicRequest$json = const { +const ReadCharacteristicRequest$json = { '1': 'ReadCharacteristicRequest', - '2': const [ - const {'1': 'characteristic', '3': 1, '4': 1, '5': 11, '6': '.CharacteristicAddress', '10': 'characteristic'}, + '2': [ + {'1': 'characteristic', '3': 1, '4': 1, '5': 11, '6': '.CharacteristicAddress', '10': 'characteristic'}, ], }; /// Descriptor for `ReadCharacteristicRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List readCharacteristicRequestDescriptor = $convert.base64Decode('ChlSZWFkQ2hhcmFjdGVyaXN0aWNSZXF1ZXN0Ej4KDmNoYXJhY3RlcmlzdGljGAEgASgLMhYuQ2hhcmFjdGVyaXN0aWNBZGRyZXNzUg5jaGFyYWN0ZXJpc3RpYw=='); +final $typed_data.Uint8List readCharacteristicRequestDescriptor = $convert.base64Decode( + 'ChlSZWFkQ2hhcmFjdGVyaXN0aWNSZXF1ZXN0Ej4KDmNoYXJhY3RlcmlzdGljGAEgASgLMhYuQ2' + 'hhcmFjdGVyaXN0aWNBZGRyZXNzUg5jaGFyYWN0ZXJpc3RpYw=='); + @$core.Deprecated('Use characteristicValueInfoDescriptor instead') -const CharacteristicValueInfo$json = const { +const CharacteristicValueInfo$json = { '1': 'CharacteristicValueInfo', - '2': const [ - const {'1': 'characteristic', '3': 1, '4': 1, '5': 11, '6': '.CharacteristicAddress', '10': 'characteristic'}, - const {'1': 'value', '3': 2, '4': 1, '5': 12, '10': 'value'}, - const {'1': 'failure', '3': 3, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, + '2': [ + {'1': 'characteristic', '3': 1, '4': 1, '5': 11, '6': '.CharacteristicAddress', '10': 'characteristic'}, + {'1': 'value', '3': 2, '4': 1, '5': 12, '10': 'value'}, + {'1': 'failure', '3': 3, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, ], }; /// Descriptor for `CharacteristicValueInfo`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List characteristicValueInfoDescriptor = $convert.base64Decode('ChdDaGFyYWN0ZXJpc3RpY1ZhbHVlSW5mbxI+Cg5jaGFyYWN0ZXJpc3RpYxgBIAEoCzIWLkNoYXJhY3RlcmlzdGljQWRkcmVzc1IOY2hhcmFjdGVyaXN0aWMSFAoFdmFsdWUYAiABKAxSBXZhbHVlEikKB2ZhaWx1cmUYAyABKAsyDy5HZW5lcmljRmFpbHVyZVIHZmFpbHVyZQ=='); +final $typed_data.Uint8List characteristicValueInfoDescriptor = $convert.base64Decode( + 'ChdDaGFyYWN0ZXJpc3RpY1ZhbHVlSW5mbxI+Cg5jaGFyYWN0ZXJpc3RpYxgBIAEoCzIWLkNoYX' + 'JhY3RlcmlzdGljQWRkcmVzc1IOY2hhcmFjdGVyaXN0aWMSFAoFdmFsdWUYAiABKAxSBXZhbHVl' + 'EikKB2ZhaWx1cmUYAyABKAsyDy5HZW5lcmljRmFpbHVyZVIHZmFpbHVyZQ=='); + @$core.Deprecated('Use writeCharacteristicRequestDescriptor instead') -const WriteCharacteristicRequest$json = const { +const WriteCharacteristicRequest$json = { '1': 'WriteCharacteristicRequest', - '2': const [ - const {'1': 'characteristic', '3': 1, '4': 1, '5': 11, '6': '.CharacteristicAddress', '10': 'characteristic'}, - const {'1': 'value', '3': 2, '4': 1, '5': 12, '10': 'value'}, + '2': [ + {'1': 'characteristic', '3': 1, '4': 1, '5': 11, '6': '.CharacteristicAddress', '10': 'characteristic'}, + {'1': 'value', '3': 2, '4': 1, '5': 12, '10': 'value'}, ], }; /// Descriptor for `WriteCharacteristicRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List writeCharacteristicRequestDescriptor = $convert.base64Decode('ChpXcml0ZUNoYXJhY3RlcmlzdGljUmVxdWVzdBI+Cg5jaGFyYWN0ZXJpc3RpYxgBIAEoCzIWLkNoYXJhY3RlcmlzdGljQWRkcmVzc1IOY2hhcmFjdGVyaXN0aWMSFAoFdmFsdWUYAiABKAxSBXZhbHVl'); +final $typed_data.Uint8List writeCharacteristicRequestDescriptor = $convert.base64Decode( + 'ChpXcml0ZUNoYXJhY3RlcmlzdGljUmVxdWVzdBI+Cg5jaGFyYWN0ZXJpc3RpYxgBIAEoCzIWLk' + 'NoYXJhY3RlcmlzdGljQWRkcmVzc1IOY2hhcmFjdGVyaXN0aWMSFAoFdmFsdWUYAiABKAxSBXZh' + 'bHVl'); + @$core.Deprecated('Use writeCharacteristicInfoDescriptor instead') -const WriteCharacteristicInfo$json = const { +const WriteCharacteristicInfo$json = { '1': 'WriteCharacteristicInfo', - '2': const [ - const {'1': 'characteristic', '3': 1, '4': 1, '5': 11, '6': '.CharacteristicAddress', '10': 'characteristic'}, - const {'1': 'failure', '3': 3, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, + '2': [ + {'1': 'characteristic', '3': 1, '4': 1, '5': 11, '6': '.CharacteristicAddress', '10': 'characteristic'}, + {'1': 'failure', '3': 3, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, ], }; /// Descriptor for `WriteCharacteristicInfo`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List writeCharacteristicInfoDescriptor = $convert.base64Decode('ChdXcml0ZUNoYXJhY3RlcmlzdGljSW5mbxI+Cg5jaGFyYWN0ZXJpc3RpYxgBIAEoCzIWLkNoYXJhY3RlcmlzdGljQWRkcmVzc1IOY2hhcmFjdGVyaXN0aWMSKQoHZmFpbHVyZRgDIAEoCzIPLkdlbmVyaWNGYWlsdXJlUgdmYWlsdXJl'); +final $typed_data.Uint8List writeCharacteristicInfoDescriptor = $convert.base64Decode( + 'ChdXcml0ZUNoYXJhY3RlcmlzdGljSW5mbxI+Cg5jaGFyYWN0ZXJpc3RpYxgBIAEoCzIWLkNoYX' + 'JhY3RlcmlzdGljQWRkcmVzc1IOY2hhcmFjdGVyaXN0aWMSKQoHZmFpbHVyZRgDIAEoCzIPLkdl' + 'bmVyaWNGYWlsdXJlUgdmYWlsdXJl'); + @$core.Deprecated('Use negotiateMtuRequestDescriptor instead') -const NegotiateMtuRequest$json = const { +const NegotiateMtuRequest$json = { '1': 'NegotiateMtuRequest', - '2': const [ - const {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, - const {'1': 'mtuSize', '3': 2, '4': 1, '5': 5, '10': 'mtuSize'}, + '2': [ + {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, + {'1': 'mtuSize', '3': 2, '4': 1, '5': 5, '10': 'mtuSize'}, ], }; /// Descriptor for `NegotiateMtuRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List negotiateMtuRequestDescriptor = $convert.base64Decode('ChNOZWdvdGlhdGVNdHVSZXF1ZXN0EhoKCGRldmljZUlkGAEgASgJUghkZXZpY2VJZBIYCgdtdHVTaXplGAIgASgFUgdtdHVTaXpl'); +final $typed_data.Uint8List negotiateMtuRequestDescriptor = $convert.base64Decode( + 'ChNOZWdvdGlhdGVNdHVSZXF1ZXN0EhoKCGRldmljZUlkGAEgASgJUghkZXZpY2VJZBIYCgdtdH' + 'VTaXplGAIgASgFUgdtdHVTaXpl'); + @$core.Deprecated('Use negotiateMtuInfoDescriptor instead') -const NegotiateMtuInfo$json = const { +const NegotiateMtuInfo$json = { '1': 'NegotiateMtuInfo', - '2': const [ - const {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, - const {'1': 'mtuSize', '3': 2, '4': 1, '5': 5, '10': 'mtuSize'}, - const {'1': 'failure', '3': 3, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, + '2': [ + {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, + {'1': 'mtuSize', '3': 2, '4': 1, '5': 5, '10': 'mtuSize'}, + {'1': 'failure', '3': 3, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, ], }; /// Descriptor for `NegotiateMtuInfo`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List negotiateMtuInfoDescriptor = $convert.base64Decode('ChBOZWdvdGlhdGVNdHVJbmZvEhoKCGRldmljZUlkGAEgASgJUghkZXZpY2VJZBIYCgdtdHVTaXplGAIgASgFUgdtdHVTaXplEikKB2ZhaWx1cmUYAyABKAsyDy5HZW5lcmljRmFpbHVyZVIHZmFpbHVyZQ=='); +final $typed_data.Uint8List negotiateMtuInfoDescriptor = $convert.base64Decode( + 'ChBOZWdvdGlhdGVNdHVJbmZvEhoKCGRldmljZUlkGAEgASgJUghkZXZpY2VJZBIYCgdtdHVTaX' + 'plGAIgASgFUgdtdHVTaXplEikKB2ZhaWx1cmUYAyABKAsyDy5HZW5lcmljRmFpbHVyZVIHZmFp' + 'bHVyZQ=='); + @$core.Deprecated('Use bleStatusInfoDescriptor instead') -const BleStatusInfo$json = const { +const BleStatusInfo$json = { '1': 'BleStatusInfo', - '2': const [ - const {'1': 'status', '3': 1, '4': 1, '5': 5, '10': 'status'}, + '2': [ + {'1': 'status', '3': 1, '4': 1, '5': 5, '10': 'status'}, ], }; /// Descriptor for `BleStatusInfo`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List bleStatusInfoDescriptor = $convert.base64Decode('Cg1CbGVTdGF0dXNJbmZvEhYKBnN0YXR1cxgBIAEoBVIGc3RhdHVz'); +final $typed_data.Uint8List bleStatusInfoDescriptor = $convert.base64Decode( + 'Cg1CbGVTdGF0dXNJbmZvEhYKBnN0YXR1cxgBIAEoBVIGc3RhdHVz'); + @$core.Deprecated('Use changeConnectionPriorityRequestDescriptor instead') -const ChangeConnectionPriorityRequest$json = const { +const ChangeConnectionPriorityRequest$json = { '1': 'ChangeConnectionPriorityRequest', - '2': const [ - const {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, - const {'1': 'priority', '3': 2, '4': 1, '5': 5, '10': 'priority'}, + '2': [ + {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, + {'1': 'priority', '3': 2, '4': 1, '5': 5, '10': 'priority'}, ], }; /// Descriptor for `ChangeConnectionPriorityRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List changeConnectionPriorityRequestDescriptor = $convert.base64Decode('Ch9DaGFuZ2VDb25uZWN0aW9uUHJpb3JpdHlSZXF1ZXN0EhoKCGRldmljZUlkGAEgASgJUghkZXZpY2VJZBIaCghwcmlvcml0eRgCIAEoBVIIcHJpb3JpdHk='); +final $typed_data.Uint8List changeConnectionPriorityRequestDescriptor = $convert.base64Decode( + 'Ch9DaGFuZ2VDb25uZWN0aW9uUHJpb3JpdHlSZXF1ZXN0EhoKCGRldmljZUlkGAEgASgJUghkZX' + 'ZpY2VJZBIaCghwcmlvcml0eRgCIAEoBVIIcHJpb3JpdHk='); + @$core.Deprecated('Use changeConnectionPriorityInfoDescriptor instead') -const ChangeConnectionPriorityInfo$json = const { +const ChangeConnectionPriorityInfo$json = { '1': 'ChangeConnectionPriorityInfo', - '2': const [ - const {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, - const {'1': 'failure', '3': 2, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, + '2': [ + {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, + {'1': 'failure', '3': 2, '4': 1, '5': 11, '6': '.GenericFailure', '10': 'failure'}, ], }; /// Descriptor for `ChangeConnectionPriorityInfo`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List changeConnectionPriorityInfoDescriptor = $convert.base64Decode('ChxDaGFuZ2VDb25uZWN0aW9uUHJpb3JpdHlJbmZvEhoKCGRldmljZUlkGAEgASgJUghkZXZpY2VJZBIpCgdmYWlsdXJlGAIgASgLMg8uR2VuZXJpY0ZhaWx1cmVSB2ZhaWx1cmU='); +final $typed_data.Uint8List changeConnectionPriorityInfoDescriptor = $convert.base64Decode( + 'ChxDaGFuZ2VDb25uZWN0aW9uUHJpb3JpdHlJbmZvEhoKCGRldmljZUlkGAEgASgJUghkZXZpY2' + 'VJZBIpCgdmYWlsdXJlGAIgASgLMg8uR2VuZXJpY0ZhaWx1cmVSB2ZhaWx1cmU='); + @$core.Deprecated('Use characteristicAddressDescriptor instead') -const CharacteristicAddress$json = const { +const CharacteristicAddress$json = { '1': 'CharacteristicAddress', - '2': const [ - const {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, - const {'1': 'serviceUuid', '3': 2, '4': 1, '5': 11, '6': '.Uuid', '10': 'serviceUuid'}, - const {'1': 'characteristicUuid', '3': 3, '4': 1, '5': 11, '6': '.Uuid', '10': 'characteristicUuid'}, - const {'1': 'serviceInstanceId', '3': 4, '4': 1, '5': 9, '10': 'serviceInstanceId'}, - const {'1': 'characteristicInstanceId', '3': 5, '4': 1, '5': 9, '10': 'characteristicInstanceId'}, + '2': [ + {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, + {'1': 'serviceUuid', '3': 2, '4': 1, '5': 11, '6': '.Uuid', '10': 'serviceUuid'}, + {'1': 'characteristicUuid', '3': 3, '4': 1, '5': 11, '6': '.Uuid', '10': 'characteristicUuid'}, + {'1': 'serviceInstanceId', '3': 4, '4': 1, '5': 9, '10': 'serviceInstanceId'}, + {'1': 'characteristicInstanceId', '3': 5, '4': 1, '5': 9, '10': 'characteristicInstanceId'}, ], }; /// Descriptor for `CharacteristicAddress`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List characteristicAddressDescriptor = $convert.base64Decode('ChVDaGFyYWN0ZXJpc3RpY0FkZHJlc3MSGgoIZGV2aWNlSWQYASABKAlSCGRldmljZUlkEicKC3NlcnZpY2VVdWlkGAIgASgLMgUuVXVpZFILc2VydmljZVV1aWQSNQoSY2hhcmFjdGVyaXN0aWNVdWlkGAMgASgLMgUuVXVpZFISY2hhcmFjdGVyaXN0aWNVdWlkEiwKEXNlcnZpY2VJbnN0YW5jZUlkGAQgASgJUhFzZXJ2aWNlSW5zdGFuY2VJZBI6ChhjaGFyYWN0ZXJpc3RpY0luc3RhbmNlSWQYBSABKAlSGGNoYXJhY3RlcmlzdGljSW5zdGFuY2VJZA=='); +final $typed_data.Uint8List characteristicAddressDescriptor = $convert.base64Decode( + 'ChVDaGFyYWN0ZXJpc3RpY0FkZHJlc3MSGgoIZGV2aWNlSWQYASABKAlSCGRldmljZUlkEicKC3' + 'NlcnZpY2VVdWlkGAIgASgLMgUuVXVpZFILc2VydmljZVV1aWQSNQoSY2hhcmFjdGVyaXN0aWNV' + 'dWlkGAMgASgLMgUuVXVpZFISY2hhcmFjdGVyaXN0aWNVdWlkEiwKEXNlcnZpY2VJbnN0YW5jZU' + 'lkGAQgASgJUhFzZXJ2aWNlSW5zdGFuY2VJZBI6ChhjaGFyYWN0ZXJpc3RpY0luc3RhbmNlSWQY' + 'BSABKAlSGGNoYXJhY3RlcmlzdGljSW5zdGFuY2VJZA=='); + @$core.Deprecated('Use serviceDataEntryDescriptor instead') -const ServiceDataEntry$json = const { +const ServiceDataEntry$json = { '1': 'ServiceDataEntry', - '2': const [ - const {'1': 'serviceUuid', '3': 1, '4': 1, '5': 11, '6': '.Uuid', '10': 'serviceUuid'}, - const {'1': 'data', '3': 2, '4': 1, '5': 12, '10': 'data'}, + '2': [ + {'1': 'serviceUuid', '3': 1, '4': 1, '5': 11, '6': '.Uuid', '10': 'serviceUuid'}, + {'1': 'data', '3': 2, '4': 1, '5': 12, '10': 'data'}, ], }; /// Descriptor for `ServiceDataEntry`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List serviceDataEntryDescriptor = $convert.base64Decode('ChBTZXJ2aWNlRGF0YUVudHJ5EicKC3NlcnZpY2VVdWlkGAEgASgLMgUuVXVpZFILc2VydmljZVV1aWQSEgoEZGF0YRgCIAEoDFIEZGF0YQ=='); +final $typed_data.Uint8List serviceDataEntryDescriptor = $convert.base64Decode( + 'ChBTZXJ2aWNlRGF0YUVudHJ5EicKC3NlcnZpY2VVdWlkGAEgASgLMgUuVXVpZFILc2VydmljZV' + 'V1aWQSEgoEZGF0YRgCIAEoDFIEZGF0YQ=='); + @$core.Deprecated('Use servicesWithCharacteristicsDescriptor instead') -const ServicesWithCharacteristics$json = const { +const ServicesWithCharacteristics$json = { '1': 'ServicesWithCharacteristics', - '2': const [ - const {'1': 'items', '3': 1, '4': 3, '5': 11, '6': '.ServiceWithCharacteristics', '10': 'items'}, + '2': [ + {'1': 'items', '3': 1, '4': 3, '5': 11, '6': '.ServiceWithCharacteristics', '10': 'items'}, ], }; /// Descriptor for `ServicesWithCharacteristics`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List servicesWithCharacteristicsDescriptor = $convert.base64Decode('ChtTZXJ2aWNlc1dpdGhDaGFyYWN0ZXJpc3RpY3MSMQoFaXRlbXMYASADKAsyGy5TZXJ2aWNlV2l0aENoYXJhY3RlcmlzdGljc1IFaXRlbXM='); +final $typed_data.Uint8List servicesWithCharacteristicsDescriptor = $convert.base64Decode( + 'ChtTZXJ2aWNlc1dpdGhDaGFyYWN0ZXJpc3RpY3MSMQoFaXRlbXMYASADKAsyGy5TZXJ2aWNlV2' + 'l0aENoYXJhY3RlcmlzdGljc1IFaXRlbXM='); + @$core.Deprecated('Use serviceWithCharacteristicsDescriptor instead') -const ServiceWithCharacteristics$json = const { +const ServiceWithCharacteristics$json = { '1': 'ServiceWithCharacteristics', - '2': const [ - const {'1': 'serviceId', '3': 1, '4': 1, '5': 11, '6': '.Uuid', '10': 'serviceId'}, - const {'1': 'characteristics', '3': 2, '4': 3, '5': 11, '6': '.Uuid', '10': 'characteristics'}, + '2': [ + {'1': 'serviceId', '3': 1, '4': 1, '5': 11, '6': '.Uuid', '10': 'serviceId'}, + {'1': 'characteristics', '3': 2, '4': 3, '5': 11, '6': '.Uuid', '10': 'characteristics'}, ], }; /// Descriptor for `ServiceWithCharacteristics`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List serviceWithCharacteristicsDescriptor = $convert.base64Decode('ChpTZXJ2aWNlV2l0aENoYXJhY3RlcmlzdGljcxIjCglzZXJ2aWNlSWQYASABKAsyBS5VdWlkUglzZXJ2aWNlSWQSLwoPY2hhcmFjdGVyaXN0aWNzGAIgAygLMgUuVXVpZFIPY2hhcmFjdGVyaXN0aWNz'); +final $typed_data.Uint8List serviceWithCharacteristicsDescriptor = $convert.base64Decode( + 'ChpTZXJ2aWNlV2l0aENoYXJhY3RlcmlzdGljcxIjCglzZXJ2aWNlSWQYASABKAsyBS5VdWlkUg' + 'lzZXJ2aWNlSWQSLwoPY2hhcmFjdGVyaXN0aWNzGAIgAygLMgUuVXVpZFIPY2hhcmFjdGVyaXN0' + 'aWNz'); + @$core.Deprecated('Use discoverServicesRequestDescriptor instead') -const DiscoverServicesRequest$json = const { +const DiscoverServicesRequest$json = { '1': 'DiscoverServicesRequest', - '2': const [ - const {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, + '2': [ + {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, ], }; /// Descriptor for `DiscoverServicesRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List discoverServicesRequestDescriptor = $convert.base64Decode('ChdEaXNjb3ZlclNlcnZpY2VzUmVxdWVzdBIaCghkZXZpY2VJZBgBIAEoCVIIZGV2aWNlSWQ='); +final $typed_data.Uint8List discoverServicesRequestDescriptor = $convert.base64Decode( + 'ChdEaXNjb3ZlclNlcnZpY2VzUmVxdWVzdBIaCghkZXZpY2VJZBgBIAEoCVIIZGV2aWNlSWQ='); + @$core.Deprecated('Use discoverServicesInfoDescriptor instead') -const DiscoverServicesInfo$json = const { +const DiscoverServicesInfo$json = { '1': 'DiscoverServicesInfo', - '2': const [ - const {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, - const {'1': 'services', '3': 2, '4': 3, '5': 11, '6': '.DiscoveredService', '10': 'services'}, + '2': [ + {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, + {'1': 'services', '3': 2, '4': 3, '5': 11, '6': '.DiscoveredService', '10': 'services'}, ], }; /// Descriptor for `DiscoverServicesInfo`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List discoverServicesInfoDescriptor = $convert.base64Decode('ChREaXNjb3ZlclNlcnZpY2VzSW5mbxIaCghkZXZpY2VJZBgBIAEoCVIIZGV2aWNlSWQSLgoIc2VydmljZXMYAiADKAsyEi5EaXNjb3ZlcmVkU2VydmljZVIIc2VydmljZXM='); +final $typed_data.Uint8List discoverServicesInfoDescriptor = $convert.base64Decode( + 'ChREaXNjb3ZlclNlcnZpY2VzSW5mbxIaCghkZXZpY2VJZBgBIAEoCVIIZGV2aWNlSWQSLgoIc2' + 'VydmljZXMYAiADKAsyEi5EaXNjb3ZlcmVkU2VydmljZVIIc2VydmljZXM='); + @$core.Deprecated('Use discoveredServiceDescriptor instead') -const DiscoveredService$json = const { +const DiscoveredService$json = { '1': 'DiscoveredService', - '2': const [ - const {'1': 'serviceUuid', '3': 1, '4': 1, '5': 11, '6': '.Uuid', '10': 'serviceUuid'}, - const {'1': 'characteristicUuids', '3': 2, '4': 3, '5': 11, '6': '.Uuid', '10': 'characteristicUuids'}, - const {'1': 'includedServices', '3': 3, '4': 3, '5': 11, '6': '.DiscoveredService', '10': 'includedServices'}, - const {'1': 'characteristics', '3': 4, '4': 3, '5': 11, '6': '.DiscoveredCharacteristic', '10': 'characteristics'}, - const {'1': 'serviceInstanceId', '3': 5, '4': 1, '5': 9, '10': 'serviceInstanceId'}, + '2': [ + {'1': 'serviceUuid', '3': 1, '4': 1, '5': 11, '6': '.Uuid', '10': 'serviceUuid'}, + {'1': 'characteristicUuids', '3': 2, '4': 3, '5': 11, '6': '.Uuid', '10': 'characteristicUuids'}, + {'1': 'includedServices', '3': 3, '4': 3, '5': 11, '6': '.DiscoveredService', '10': 'includedServices'}, + {'1': 'characteristics', '3': 4, '4': 3, '5': 11, '6': '.DiscoveredCharacteristic', '10': 'characteristics'}, + {'1': 'serviceInstanceId', '3': 5, '4': 1, '5': 9, '10': 'serviceInstanceId'}, ], }; /// Descriptor for `DiscoveredService`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List discoveredServiceDescriptor = $convert.base64Decode('ChFEaXNjb3ZlcmVkU2VydmljZRInCgtzZXJ2aWNlVXVpZBgBIAEoCzIFLlV1aWRSC3NlcnZpY2VVdWlkEjcKE2NoYXJhY3RlcmlzdGljVXVpZHMYAiADKAsyBS5VdWlkUhNjaGFyYWN0ZXJpc3RpY1V1aWRzEj4KEGluY2x1ZGVkU2VydmljZXMYAyADKAsyEi5EaXNjb3ZlcmVkU2VydmljZVIQaW5jbHVkZWRTZXJ2aWNlcxJDCg9jaGFyYWN0ZXJpc3RpY3MYBCADKAsyGS5EaXNjb3ZlcmVkQ2hhcmFjdGVyaXN0aWNSD2NoYXJhY3RlcmlzdGljcxIsChFzZXJ2aWNlSW5zdGFuY2VJZBgFIAEoCVIRc2VydmljZUluc3RhbmNlSWQ='); +final $typed_data.Uint8List discoveredServiceDescriptor = $convert.base64Decode( + 'ChFEaXNjb3ZlcmVkU2VydmljZRInCgtzZXJ2aWNlVXVpZBgBIAEoCzIFLlV1aWRSC3NlcnZpY2' + 'VVdWlkEjcKE2NoYXJhY3RlcmlzdGljVXVpZHMYAiADKAsyBS5VdWlkUhNjaGFyYWN0ZXJpc3Rp' + 'Y1V1aWRzEj4KEGluY2x1ZGVkU2VydmljZXMYAyADKAsyEi5EaXNjb3ZlcmVkU2VydmljZVIQaW' + '5jbHVkZWRTZXJ2aWNlcxJDCg9jaGFyYWN0ZXJpc3RpY3MYBCADKAsyGS5EaXNjb3ZlcmVkQ2hh' + 'cmFjdGVyaXN0aWNSD2NoYXJhY3RlcmlzdGljcxIsChFzZXJ2aWNlSW5zdGFuY2VJZBgFIAEoCV' + 'IRc2VydmljZUluc3RhbmNlSWQ='); + @$core.Deprecated('Use discoveredCharacteristicDescriptor instead') -const DiscoveredCharacteristic$json = const { +const DiscoveredCharacteristic$json = { '1': 'DiscoveredCharacteristic', - '2': const [ - const {'1': 'characteristicId', '3': 1, '4': 1, '5': 11, '6': '.Uuid', '10': 'characteristicId'}, - const {'1': 'serviceId', '3': 2, '4': 1, '5': 11, '6': '.Uuid', '10': 'serviceId'}, - const {'1': 'isReadable', '3': 3, '4': 1, '5': 8, '10': 'isReadable'}, - const {'1': 'isWritableWithResponse', '3': 4, '4': 1, '5': 8, '10': 'isWritableWithResponse'}, - const {'1': 'isWritableWithoutResponse', '3': 5, '4': 1, '5': 8, '10': 'isWritableWithoutResponse'}, - const {'1': 'isNotifiable', '3': 6, '4': 1, '5': 8, '10': 'isNotifiable'}, - const {'1': 'isIndicatable', '3': 7, '4': 1, '5': 8, '10': 'isIndicatable'}, - const {'1': 'characteristicInstanceId', '3': 8, '4': 1, '5': 9, '10': 'characteristicInstanceId'}, + '2': [ + {'1': 'characteristicId', '3': 1, '4': 1, '5': 11, '6': '.Uuid', '10': 'characteristicId'}, + {'1': 'serviceId', '3': 2, '4': 1, '5': 11, '6': '.Uuid', '10': 'serviceId'}, + {'1': 'isReadable', '3': 3, '4': 1, '5': 8, '10': 'isReadable'}, + {'1': 'isWritableWithResponse', '3': 4, '4': 1, '5': 8, '10': 'isWritableWithResponse'}, + {'1': 'isWritableWithoutResponse', '3': 5, '4': 1, '5': 8, '10': 'isWritableWithoutResponse'}, + {'1': 'isNotifiable', '3': 6, '4': 1, '5': 8, '10': 'isNotifiable'}, + {'1': 'isIndicatable', '3': 7, '4': 1, '5': 8, '10': 'isIndicatable'}, + {'1': 'characteristicInstanceId', '3': 8, '4': 1, '5': 9, '10': 'characteristicInstanceId'}, ], }; /// Descriptor for `DiscoveredCharacteristic`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List discoveredCharacteristicDescriptor = $convert.base64Decode('ChhEaXNjb3ZlcmVkQ2hhcmFjdGVyaXN0aWMSMQoQY2hhcmFjdGVyaXN0aWNJZBgBIAEoCzIFLlV1aWRSEGNoYXJhY3RlcmlzdGljSWQSIwoJc2VydmljZUlkGAIgASgLMgUuVXVpZFIJc2VydmljZUlkEh4KCmlzUmVhZGFibGUYAyABKAhSCmlzUmVhZGFibGUSNgoWaXNXcml0YWJsZVdpdGhSZXNwb25zZRgEIAEoCFIWaXNXcml0YWJsZVdpdGhSZXNwb25zZRI8Chlpc1dyaXRhYmxlV2l0aG91dFJlc3BvbnNlGAUgASgIUhlpc1dyaXRhYmxlV2l0aG91dFJlc3BvbnNlEiIKDGlzTm90aWZpYWJsZRgGIAEoCFIMaXNOb3RpZmlhYmxlEiQKDWlzSW5kaWNhdGFibGUYByABKAhSDWlzSW5kaWNhdGFibGUSOgoYY2hhcmFjdGVyaXN0aWNJbnN0YW5jZUlkGAggASgJUhhjaGFyYWN0ZXJpc3RpY0luc3RhbmNlSWQ='); +final $typed_data.Uint8List discoveredCharacteristicDescriptor = $convert.base64Decode( + 'ChhEaXNjb3ZlcmVkQ2hhcmFjdGVyaXN0aWMSMQoQY2hhcmFjdGVyaXN0aWNJZBgBIAEoCzIFLl' + 'V1aWRSEGNoYXJhY3RlcmlzdGljSWQSIwoJc2VydmljZUlkGAIgASgLMgUuVXVpZFIJc2Vydmlj' + 'ZUlkEh4KCmlzUmVhZGFibGUYAyABKAhSCmlzUmVhZGFibGUSNgoWaXNXcml0YWJsZVdpdGhSZX' + 'Nwb25zZRgEIAEoCFIWaXNXcml0YWJsZVdpdGhSZXNwb25zZRI8Chlpc1dyaXRhYmxlV2l0aG91' + 'dFJlc3BvbnNlGAUgASgIUhlpc1dyaXRhYmxlV2l0aG91dFJlc3BvbnNlEiIKDGlzTm90aWZpYW' + 'JsZRgGIAEoCFIMaXNOb3RpZmlhYmxlEiQKDWlzSW5kaWNhdGFibGUYByABKAhSDWlzSW5kaWNh' + 'dGFibGUSOgoYY2hhcmFjdGVyaXN0aWNJbnN0YW5jZUlkGAggASgJUhhjaGFyYWN0ZXJpc3RpY0' + 'luc3RhbmNlSWQ='); + @$core.Deprecated('Use readRssiRequestDescriptor instead') -const ReadRssiRequest$json = const { +const ReadRssiRequest$json = { '1': 'ReadRssiRequest', - '2': const [ - const {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, + '2': [ + {'1': 'deviceId', '3': 1, '4': 1, '5': 9, '10': 'deviceId'}, ], }; /// Descriptor for `ReadRssiRequest`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List readRssiRequestDescriptor = $convert.base64Decode('Cg9SZWFkUnNzaVJlcXVlc3QSGgoIZGV2aWNlSWQYASABKAlSCGRldmljZUlk'); +final $typed_data.Uint8List readRssiRequestDescriptor = $convert.base64Decode( + 'Cg9SZWFkUnNzaVJlcXVlc3QSGgoIZGV2aWNlSWQYASABKAlSCGRldmljZUlk'); + @$core.Deprecated('Use readRssiResultDescriptor instead') -const ReadRssiResult$json = const { +const ReadRssiResult$json = { '1': 'ReadRssiResult', - '2': const [ - const {'1': 'rssi', '3': 1, '4': 1, '5': 5, '10': 'rssi'}, + '2': [ + {'1': 'rssi', '3': 1, '4': 1, '5': 5, '10': 'rssi'}, ], }; /// Descriptor for `ReadRssiResult`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List readRssiResultDescriptor = $convert.base64Decode('Cg5SZWFkUnNzaVJlc3VsdBISCgRyc3NpGAEgASgFUgRyc3Np'); +final $typed_data.Uint8List readRssiResultDescriptor = $convert.base64Decode( + 'Cg5SZWFkUnNzaVJlc3VsdBISCgRyc3NpGAEgASgFUgRyc3Np'); + @$core.Deprecated('Use uuidDescriptor instead') -const Uuid$json = const { +const Uuid$json = { '1': 'Uuid', - '2': const [ - const {'1': 'data', '3': 1, '4': 1, '5': 12, '10': 'data'}, + '2': [ + {'1': 'data', '3': 1, '4': 1, '5': 12, '10': 'data'}, ], }; /// Descriptor for `Uuid`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List uuidDescriptor = $convert.base64Decode('CgRVdWlkEhIKBGRhdGEYASABKAxSBGRhdGE='); +final $typed_data.Uint8List uuidDescriptor = $convert.base64Decode( + 'CgRVdWlkEhIKBGRhdGEYASABKAxSBGRhdGE='); + @$core.Deprecated('Use genericFailureDescriptor instead') -const GenericFailure$json = const { +const GenericFailure$json = { '1': 'GenericFailure', - '2': const [ - const {'1': 'code', '3': 1, '4': 1, '5': 5, '10': 'code'}, - const {'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'}, + '2': [ + {'1': 'code', '3': 1, '4': 1, '5': 5, '10': 'code'}, + {'1': 'message', '3': 2, '4': 1, '5': 9, '10': 'message'}, ], }; /// Descriptor for `GenericFailure`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List genericFailureDescriptor = $convert.base64Decode('Cg5HZW5lcmljRmFpbHVyZRISCgRjb2RlGAEgASgFUgRjb2RlEhgKB21lc3NhZ2UYAiABKAlSB21lc3NhZ2U='); +final $typed_data.Uint8List genericFailureDescriptor = $convert.base64Decode( + 'Cg5HZW5lcmljRmFpbHVyZRISCgRjb2RlGAEgASgFUgRjb2RlEhgKB21lc3NhZ2UYAiABKAlSB2' + '1lc3NhZ2U='); + @$core.Deprecated('Use isConnectableDescriptor instead') -const IsConnectable$json = const { +const IsConnectable$json = { '1': 'IsConnectable', - '2': const [ - const {'1': 'code', '3': 1, '4': 1, '5': 5, '10': 'code'}, + '2': [ + {'1': 'code', '3': 1, '4': 1, '5': 5, '10': 'code'}, ], }; /// Descriptor for `IsConnectable`. Decode as a `google.protobuf.DescriptorProto`. -final $typed_data.Uint8List isConnectableDescriptor = $convert.base64Decode('Cg1Jc0Nvbm5lY3RhYmxlEhIKBGNvZGUYASABKAVSBGNvZGU='); +final $typed_data.Uint8List isConnectableDescriptor = $convert.base64Decode( + 'Cg1Jc0Nvbm5lY3RhYmxlEhIKBGNvZGUYASABKAVSBGNvZGU='); + diff --git a/packages/reactive_ble_mobile/lib/src/generated/bledata.pbserver.dart b/packages/reactive_ble_mobile/lib/src/generated/bledata.pbserver.dart index d859c88b..bca5dade 100644 --- a/packages/reactive_ble_mobile/lib/src/generated/bledata.pbserver.dart +++ b/packages/reactive_ble_mobile/lib/src/generated/bledata.pbserver.dart @@ -1,9 +1,14 @@ -/// +// // Generated code. Do not modify. // source: bledata.proto // // @dart = 2.12 -// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import export 'bledata.pb.dart'; diff --git a/packages/reactive_ble_mobile/lib/src/reactive_ble_mobile_platform.dart b/packages/reactive_ble_mobile/lib/src/reactive_ble_mobile_platform.dart index 2c36a366..d21980f9 100644 --- a/packages/reactive_ble_mobile/lib/src/reactive_ble_mobile_platform.dart +++ b/packages/reactive_ble_mobile/lib/src/reactive_ble_mobile_platform.dart @@ -95,6 +95,30 @@ class ReactiveBleMobilePlatform extends ReactiveBlePlatform { return _bleMethodChannel.invokeMethod("deinitialize"); } + @override + Future launchCompanionWorkflow({ + required String pattern, + required bool singleDeviceScan, + required bool forceConfirmation, + }) async { + final bytes = await _bleMethodChannel.invokeMethod>( + 'launchCompanionWorkflow', + _argsToProtobufConverter + .createLaunchCompanionWorkflowRequest( + deviceNamePattern: pattern, + singleDeviceScan: singleDeviceScan, + forceConfirmation: forceConfirmation, + ) + .writeToBuffer(), + ); + + if (bytes == null) { + return null; + } + + return _protobufConverter.associationInfoFrom(bytes); + } + @override Stream scanForDevices({ required List withServices, @@ -118,6 +142,20 @@ class ReactiveBleMobilePlatform extends ReactiveBlePlatform { .asStream(); } + @override + Future establishBonding(String deviceId) { + _logger?.log('Establish bond with device: $deviceId'); + + return _bleMethodChannel + .invokeMethod>( + "establishBonding", + _argsToProtobufConverter + .createEstablishBondingArgs(deviceId) + .writeToBuffer(), + ) + .then((data) => _protobufConverter.bondingStatusFrom(data!)); + } + @override Stream connectToDevice( String id, @@ -141,6 +179,19 @@ class ReactiveBleMobilePlatform extends ReactiveBlePlatform { .asStream(); } + @override + Future retrieveDeviceName(String id) { + _logger?.log( + 'Retrieve device name: $id', + ); + return _bleMethodChannel + .invokeMethod>( + 'retrieveDeviceName', + _argsToProtobufConverter.createGetDeviceNameArgs(id).writeToBuffer(), + ) + .then((data) => _protobufConverter.deviceNameFrom(data!)); + } + @override Future disconnectDevice(String deviceId) { _logger?.log( diff --git a/packages/reactive_ble_mobile/protos/bledata.proto b/packages/reactive_ble_mobile/protos/bledata.proto index 4e80f442..30962542 100644 --- a/packages/reactive_ble_mobile/protos/bledata.proto +++ b/packages/reactive_ble_mobile/protos/bledata.proto @@ -2,6 +2,16 @@ syntax = "proto3"; option java_package = "com.signify.hue.flutterreactiveble"; option java_outer_classname = "ProtobufModel"; +message LaunchCompanionRequest { + string deviceNamePattern = 1; + bool singleDeviceScan = 2; + bool forceConfirmation = 3; +} + +message DeviceAssociationInfo { + string macAddress = 1; +} + message ScanForDevicesRequest { repeated Uuid serviceUuids = 1; int32 scanMode = 2; @@ -19,6 +29,20 @@ message DeviceScanInfo { IsConnectable isConnectable = 8; } +message EstablishBondingRequest { + string deviceId = 1; +} + +message EstablishBondingInfo { + enum BondState { + NONE = 0; + BONDING = 1; + BONDED = 2; + } + + BondState status = 1; +} + message ConnectToDeviceRequest { string deviceId = 1; ServicesWithCharacteristics servicesWithCharacteristicsToDiscover = 2; @@ -31,6 +55,15 @@ message DeviceInfo { GenericFailure failure = 3; } +message GetDeviceNameRequest { + string deviceId = 1; +} + +message DeviceNameInfo { + string id = 1; + string deviceName = 2; +} + message DisconnectFromDeviceRequest { string deviceId = 1; } diff --git a/packages/reactive_ble_mobile/test/converter/args_to_protobuf_converter_test.dart b/packages/reactive_ble_mobile/test/converter/args_to_protobuf_converter_test.dart index d674e8c3..758ba04c 100644 --- a/packages/reactive_ble_mobile/test/converter/args_to_protobuf_converter_test.dart +++ b/packages/reactive_ble_mobile/test/converter/args_to_protobuf_converter_test.dart @@ -7,6 +7,19 @@ void main() { group('$ArgsToProtobufConverter', () { const _sut = ArgsToProtobufConverterImpl(); + group('Establish bonding args', () { + const deviceId = '123'; + late pb.EstablishBondingRequest result; + + setUp(() { + result = _sut.createEstablishBondingArgs(deviceId); + }); + + test('It converts deviceId', () { + expect(result.deviceId, deviceId); + }); + }); + group('Connect to device args', () { const deviceId = '123'; Map>? servicesToDiscover; @@ -71,6 +84,19 @@ void main() { }); }); + group('Get Device Name', () { + const deviceId = '123'; + late pb.GetDeviceNameRequest result; + + setUp(() { + result = _sut.createGetDeviceNameArgs(deviceId); + }); + + test('It converts deviceId', () { + expect(result.deviceId, deviceId); + }); + }); + group('Disconnect device', () { const deviceId = '123'; late pb.DisconnectFromDeviceRequest result; @@ -211,6 +237,31 @@ void main() { }); }); + group('Launch Companion Workflow', () { + const deviceNamePattern = '123'; + const singleDeviceScan = true; + const forceConfirmation = false; + late pb.LaunchCompanionRequest result; + + setUp(() { + result = _sut.createLaunchCompanionWorkflowRequest( + deviceNamePattern: deviceNamePattern, + singleDeviceScan: singleDeviceScan, + forceConfirmation: forceConfirmation, + ); + }); + + test('It converts device name pattern', () { + expect(result.deviceNamePattern, deviceNamePattern); + }); + test('It converts single device scan flag', () { + expect(result.singleDeviceScan, singleDeviceScan); + }); + test('It converts force confirmation flag', () { + expect(result.forceConfirmation, forceConfirmation); + }); + }); + group('Scan for devices request', () { late pb.ScanForDevicesRequest result; const scanMode = ScanMode.lowLatency; diff --git a/packages/reactive_ble_mobile/test/converter/protobuf_converter_test.dart b/packages/reactive_ble_mobile/test/converter/protobuf_converter_test.dart index 6a6cc4c5..ec3e9830 100644 --- a/packages/reactive_ble_mobile/test/converter/protobuf_converter_test.dart +++ b/packages/reactive_ble_mobile/test/converter/protobuf_converter_test.dart @@ -3,6 +3,7 @@ import 'dart:typed_data'; import 'package:flutter_test/flutter_test.dart'; import 'package:reactive_ble_mobile/src/converter/protobuf_converter.dart'; import 'package:reactive_ble_mobile/src/generated/bledata.pb.dart' as pb; +import 'package:reactive_ble_mobile/src/generated/bledata.pbenum.dart'; import 'package:reactive_ble_platform_interface/reactive_ble_platform_interface.dart'; void main() { @@ -463,6 +464,15 @@ void main() { }); }); + group('decoding ${pb.EstablishBondingInfo}', () { + test('converts valid status', () { + final message = pb.EstablishBondingInfo() + ..status = EstablishBondingInfo_BondState.BONDED; + expect(sut.bondingStatusFrom(message.writeToBuffer()), + BondingStatus.bonded); + }); + }); + group('decoding ${pb.BleStatusInfo}', () { test('converts valid status', () { final message = pb.BleStatusInfo()..status = 5; diff --git a/packages/reactive_ble_mobile/test/reactive_ble_platform_test.mocks.dart b/packages/reactive_ble_mobile/test/reactive_ble_platform_test.mocks.dart index caea5db2..702916cd 100644 --- a/packages/reactive_ble_mobile/test/reactive_ble_platform_test.mocks.dart +++ b/packages/reactive_ble_mobile/test/reactive_ble_platform_test.mocks.dart @@ -1,14 +1,15 @@ -// Mocks generated by Mockito 5.4.0 from annotations +// Mocks generated by Mockito 5.4.4 from annotations // in reactive_ble_mobile/test/reactive_ble_platform_test.dart. // Do not manually edit this file. // ignore_for_file: no_leading_underscores_for_library_prefixes -import 'dart:async' as _i9; +import 'dart:async' as _i10; import 'package:flutter/src/services/binary_messenger.dart' as _i5; import 'package:flutter/src/services/message_codec.dart' as _i4; -import 'package:flutter/src/services/platform_channel.dart' as _i8; +import 'package:flutter/src/services/platform_channel.dart' as _i9; import 'package:mockito/mockito.dart' as _i1; +import 'package:mockito/src/dummies.dart' as _i8; import 'package:reactive_ble_mobile/src/converter/args_to_protubuf_converter.dart' as _i6; import 'package:reactive_ble_mobile/src/converter/protobuf_converter.dart' @@ -21,6 +22,8 @@ import 'package:reactive_ble_platform_interface/reactive_ble_platform_interface. // ignore_for_file: avoid_redundant_argument_values // ignore_for_file: avoid_setters_without_getters // ignore_for_file: comment_references +// ignore_for_file: deprecated_member_use +// ignore_for_file: deprecated_member_use_from_same_package // ignore_for_file: implementation_imports // ignore_for_file: invalid_use_of_visible_for_testing_member // ignore_for_file: prefer_const_constructors @@ -28,9 +31,31 @@ import 'package:reactive_ble_platform_interface/reactive_ble_platform_interface. // ignore_for_file: camel_case_types // ignore_for_file: subtype_of_sealed_class -class _FakeConnectToDeviceRequest_0 extends _i1.SmartFake +class _FakeEstablishBondingRequest_0 extends _i1.SmartFake + implements _i2.EstablishBondingRequest { + _FakeEstablishBondingRequest_0( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeConnectToDeviceRequest_1 extends _i1.SmartFake implements _i2.ConnectToDeviceRequest { - _FakeConnectToDeviceRequest_0( + _FakeConnectToDeviceRequest_1( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeGetDeviceNameRequest_2 extends _i1.SmartFake + implements _i2.GetDeviceNameRequest { + _FakeGetDeviceNameRequest_2( Object parent, Invocation parentInvocation, ) : super( @@ -39,9 +64,9 @@ class _FakeConnectToDeviceRequest_0 extends _i1.SmartFake ); } -class _FakeDisconnectFromDeviceRequest_1 extends _i1.SmartFake +class _FakeDisconnectFromDeviceRequest_3 extends _i1.SmartFake implements _i2.DisconnectFromDeviceRequest { - _FakeDisconnectFromDeviceRequest_1( + _FakeDisconnectFromDeviceRequest_3( Object parent, Invocation parentInvocation, ) : super( @@ -50,9 +75,9 @@ class _FakeDisconnectFromDeviceRequest_1 extends _i1.SmartFake ); } -class _FakeReadCharacteristicRequest_2 extends _i1.SmartFake +class _FakeReadCharacteristicRequest_4 extends _i1.SmartFake implements _i2.ReadCharacteristicRequest { - _FakeReadCharacteristicRequest_2( + _FakeReadCharacteristicRequest_4( Object parent, Invocation parentInvocation, ) : super( @@ -61,9 +86,9 @@ class _FakeReadCharacteristicRequest_2 extends _i1.SmartFake ); } -class _FakeWriteCharacteristicRequest_3 extends _i1.SmartFake +class _FakeWriteCharacteristicRequest_5 extends _i1.SmartFake implements _i2.WriteCharacteristicRequest { - _FakeWriteCharacteristicRequest_3( + _FakeWriteCharacteristicRequest_5( Object parent, Invocation parentInvocation, ) : super( @@ -72,9 +97,9 @@ class _FakeWriteCharacteristicRequest_3 extends _i1.SmartFake ); } -class _FakeNotifyCharacteristicRequest_4 extends _i1.SmartFake +class _FakeNotifyCharacteristicRequest_6 extends _i1.SmartFake implements _i2.NotifyCharacteristicRequest { - _FakeNotifyCharacteristicRequest_4( + _FakeNotifyCharacteristicRequest_6( Object parent, Invocation parentInvocation, ) : super( @@ -83,9 +108,9 @@ class _FakeNotifyCharacteristicRequest_4 extends _i1.SmartFake ); } -class _FakeNotifyNoMoreCharacteristicRequest_5 extends _i1.SmartFake +class _FakeNotifyNoMoreCharacteristicRequest_7 extends _i1.SmartFake implements _i2.NotifyNoMoreCharacteristicRequest { - _FakeNotifyNoMoreCharacteristicRequest_5( + _FakeNotifyNoMoreCharacteristicRequest_7( Object parent, Invocation parentInvocation, ) : super( @@ -94,9 +119,9 @@ class _FakeNotifyNoMoreCharacteristicRequest_5 extends _i1.SmartFake ); } -class _FakeNegotiateMtuRequest_6 extends _i1.SmartFake +class _FakeNegotiateMtuRequest_8 extends _i1.SmartFake implements _i2.NegotiateMtuRequest { - _FakeNegotiateMtuRequest_6( + _FakeNegotiateMtuRequest_8( Object parent, Invocation parentInvocation, ) : super( @@ -105,9 +130,9 @@ class _FakeNegotiateMtuRequest_6 extends _i1.SmartFake ); } -class _FakeChangeConnectionPriorityRequest_7 extends _i1.SmartFake +class _FakeChangeConnectionPriorityRequest_9 extends _i1.SmartFake implements _i2.ChangeConnectionPriorityRequest { - _FakeChangeConnectionPriorityRequest_7( + _FakeChangeConnectionPriorityRequest_9( Object parent, Invocation parentInvocation, ) : super( @@ -116,9 +141,20 @@ class _FakeChangeConnectionPriorityRequest_7 extends _i1.SmartFake ); } -class _FakeScanForDevicesRequest_8 extends _i1.SmartFake +class _FakeLaunchCompanionRequest_10 extends _i1.SmartFake + implements _i2.LaunchCompanionRequest { + _FakeLaunchCompanionRequest_10( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeScanForDevicesRequest_11 extends _i1.SmartFake implements _i2.ScanForDevicesRequest { - _FakeScanForDevicesRequest_8( + _FakeScanForDevicesRequest_11( Object parent, Invocation parentInvocation, ) : super( @@ -127,9 +163,9 @@ class _FakeScanForDevicesRequest_8 extends _i1.SmartFake ); } -class _FakeClearGattCacheRequest_9 extends _i1.SmartFake +class _FakeClearGattCacheRequest_12 extends _i1.SmartFake implements _i2.ClearGattCacheRequest { - _FakeClearGattCacheRequest_9( + _FakeClearGattCacheRequest_12( Object parent, Invocation parentInvocation, ) : super( @@ -138,9 +174,9 @@ class _FakeClearGattCacheRequest_9 extends _i1.SmartFake ); } -class _FakeDiscoverServicesRequest_10 extends _i1.SmartFake +class _FakeDiscoverServicesRequest_13 extends _i1.SmartFake implements _i2.DiscoverServicesRequest { - _FakeDiscoverServicesRequest_10( + _FakeDiscoverServicesRequest_13( Object parent, Invocation parentInvocation, ) : super( @@ -149,9 +185,9 @@ class _FakeDiscoverServicesRequest_10 extends _i1.SmartFake ); } -class _FakeReadRssiRequest_11 extends _i1.SmartFake +class _FakeReadRssiRequest_14 extends _i1.SmartFake implements _i2.ReadRssiRequest { - _FakeReadRssiRequest_11( + _FakeReadRssiRequest_14( Object parent, Invocation parentInvocation, ) : super( @@ -160,8 +196,9 @@ class _FakeReadRssiRequest_11 extends _i1.SmartFake ); } -class _FakeScanResult_12 extends _i1.SmartFake implements _i3.ScanResult { - _FakeScanResult_12( +class _FakeDeviceAssociationInfo_15 extends _i1.SmartFake + implements _i3.DeviceAssociationInfo { + _FakeDeviceAssociationInfo_15( Object parent, Invocation parentInvocation, ) : super( @@ -170,9 +207,19 @@ class _FakeScanResult_12 extends _i1.SmartFake implements _i3.ScanResult { ); } -class _FakeConnectionStateUpdate_13 extends _i1.SmartFake +class _FakeScanResult_16 extends _i1.SmartFake implements _i3.ScanResult { + _FakeScanResult_16( + Object parent, + Invocation parentInvocation, + ) : super( + parent, + parentInvocation, + ); +} + +class _FakeConnectionStateUpdate_17 extends _i1.SmartFake implements _i3.ConnectionStateUpdate { - _FakeConnectionStateUpdate_13( + _FakeConnectionStateUpdate_17( Object parent, Invocation parentInvocation, ) : super( @@ -181,9 +228,9 @@ class _FakeConnectionStateUpdate_13 extends _i1.SmartFake ); } -class _FakeResult_14 extends _i1.SmartFake +class _FakeResult_18 extends _i1.SmartFake implements _i3.Result { - _FakeResult_14( + _FakeResult_18( Object parent, Invocation parentInvocation, ) : super( @@ -192,9 +239,9 @@ class _FakeResult_14 extends _i1.SmartFake ); } -class _FakeCharacteristicValue_15 extends _i1.SmartFake +class _FakeCharacteristicValue_19 extends _i1.SmartFake implements _i3.CharacteristicValue { - _FakeCharacteristicValue_15( + _FakeCharacteristicValue_19( Object parent, Invocation parentInvocation, ) : super( @@ -203,9 +250,9 @@ class _FakeCharacteristicValue_15 extends _i1.SmartFake ); } -class _FakeWriteCharacteristicInfo_16 extends _i1.SmartFake +class _FakeWriteCharacteristicInfo_20 extends _i1.SmartFake implements _i3.WriteCharacteristicInfo { - _FakeWriteCharacteristicInfo_16( + _FakeWriteCharacteristicInfo_20( Object parent, Invocation parentInvocation, ) : super( @@ -214,9 +261,9 @@ class _FakeWriteCharacteristicInfo_16 extends _i1.SmartFake ); } -class _FakeConnectionPriorityInfo_17 extends _i1.SmartFake +class _FakeConnectionPriorityInfo_21 extends _i1.SmartFake implements _i3.ConnectionPriorityInfo { - _FakeConnectionPriorityInfo_17( + _FakeConnectionPriorityInfo_21( Object parent, Invocation parentInvocation, ) : super( @@ -225,8 +272,8 @@ class _FakeConnectionPriorityInfo_17 extends _i1.SmartFake ); } -class _FakeMethodCodec_18 extends _i1.SmartFake implements _i4.MethodCodec { - _FakeMethodCodec_18( +class _FakeMethodCodec_22 extends _i1.SmartFake implements _i4.MethodCodec { + _FakeMethodCodec_22( Object parent, Invocation parentInvocation, ) : super( @@ -235,9 +282,9 @@ class _FakeMethodCodec_18 extends _i1.SmartFake implements _i4.MethodCodec { ); } -class _FakeBinaryMessenger_19 extends _i1.SmartFake +class _FakeBinaryMessenger_23 extends _i1.SmartFake implements _i5.BinaryMessenger { - _FakeBinaryMessenger_19( + _FakeBinaryMessenger_23( Object parent, Invocation parentInvocation, ) : super( @@ -255,6 +302,22 @@ class MockArgsToProtobufConverter extends _i1.Mock _i1.throwOnMissingStub(this); } + @override + _i2.EstablishBondingRequest createEstablishBondingArgs(String? id) => + (super.noSuchMethod( + Invocation.method( + #createEstablishBondingArgs, + [id], + ), + returnValue: _FakeEstablishBondingRequest_0( + this, + Invocation.method( + #createEstablishBondingArgs, + [id], + ), + ), + ) as _i2.EstablishBondingRequest); + @override _i2.ConnectToDeviceRequest createConnectToDeviceArgs( String? id, @@ -270,7 +333,7 @@ class MockArgsToProtobufConverter extends _i1.Mock connectionTimeout, ], ), - returnValue: _FakeConnectToDeviceRequest_0( + returnValue: _FakeConnectToDeviceRequest_1( this, Invocation.method( #createConnectToDeviceArgs, @@ -282,6 +345,23 @@ class MockArgsToProtobufConverter extends _i1.Mock ), ), ) as _i2.ConnectToDeviceRequest); + + @override + _i2.GetDeviceNameRequest createGetDeviceNameArgs(String? id) => + (super.noSuchMethod( + Invocation.method( + #createGetDeviceNameArgs, + [id], + ), + returnValue: _FakeGetDeviceNameRequest_2( + this, + Invocation.method( + #createGetDeviceNameArgs, + [id], + ), + ), + ) as _i2.GetDeviceNameRequest); + @override _i2.DisconnectFromDeviceRequest createDisconnectDeviceArgs( String? deviceId) => @@ -290,7 +370,7 @@ class MockArgsToProtobufConverter extends _i1.Mock #createDisconnectDeviceArgs, [deviceId], ), - returnValue: _FakeDisconnectFromDeviceRequest_1( + returnValue: _FakeDisconnectFromDeviceRequest_3( this, Invocation.method( #createDisconnectDeviceArgs, @@ -298,6 +378,7 @@ class MockArgsToProtobufConverter extends _i1.Mock ), ), ) as _i2.DisconnectFromDeviceRequest); + @override _i2.ReadCharacteristicRequest createReadCharacteristicRequest( _i3.CharacteristicInstance? characteristic) => @@ -306,7 +387,7 @@ class MockArgsToProtobufConverter extends _i1.Mock #createReadCharacteristicRequest, [characteristic], ), - returnValue: _FakeReadCharacteristicRequest_2( + returnValue: _FakeReadCharacteristicRequest_4( this, Invocation.method( #createReadCharacteristicRequest, @@ -314,6 +395,7 @@ class MockArgsToProtobufConverter extends _i1.Mock ), ), ) as _i2.ReadCharacteristicRequest); + @override _i2.WriteCharacteristicRequest createWriteCharacteristicRequest( _i3.CharacteristicInstance? characteristic, @@ -327,7 +409,7 @@ class MockArgsToProtobufConverter extends _i1.Mock value, ], ), - returnValue: _FakeWriteCharacteristicRequest_3( + returnValue: _FakeWriteCharacteristicRequest_5( this, Invocation.method( #createWriteCharacteristicRequest, @@ -338,6 +420,7 @@ class MockArgsToProtobufConverter extends _i1.Mock ), ), ) as _i2.WriteCharacteristicRequest); + @override _i2.NotifyCharacteristicRequest createNotifyCharacteristicRequest( _i3.CharacteristicInstance? characteristic) => @@ -346,7 +429,7 @@ class MockArgsToProtobufConverter extends _i1.Mock #createNotifyCharacteristicRequest, [characteristic], ), - returnValue: _FakeNotifyCharacteristicRequest_4( + returnValue: _FakeNotifyCharacteristicRequest_6( this, Invocation.method( #createNotifyCharacteristicRequest, @@ -354,6 +437,7 @@ class MockArgsToProtobufConverter extends _i1.Mock ), ), ) as _i2.NotifyCharacteristicRequest); + @override _i2.NotifyNoMoreCharacteristicRequest createNotifyNoMoreCharacteristicRequest( _i3.CharacteristicInstance? characteristic) => @@ -362,7 +446,7 @@ class MockArgsToProtobufConverter extends _i1.Mock #createNotifyNoMoreCharacteristicRequest, [characteristic], ), - returnValue: _FakeNotifyNoMoreCharacteristicRequest_5( + returnValue: _FakeNotifyNoMoreCharacteristicRequest_7( this, Invocation.method( #createNotifyNoMoreCharacteristicRequest, @@ -370,6 +454,7 @@ class MockArgsToProtobufConverter extends _i1.Mock ), ), ) as _i2.NotifyNoMoreCharacteristicRequest); + @override _i2.NegotiateMtuRequest createNegotiateMtuRequest( String? deviceId, @@ -383,7 +468,7 @@ class MockArgsToProtobufConverter extends _i1.Mock mtu, ], ), - returnValue: _FakeNegotiateMtuRequest_6( + returnValue: _FakeNegotiateMtuRequest_8( this, Invocation.method( #createNegotiateMtuRequest, @@ -394,6 +479,7 @@ class MockArgsToProtobufConverter extends _i1.Mock ), ), ) as _i2.NegotiateMtuRequest); + @override _i2.ChangeConnectionPriorityRequest createChangeConnectionPrioRequest( String? deviceId, @@ -407,7 +493,7 @@ class MockArgsToProtobufConverter extends _i1.Mock priority, ], ), - returnValue: _FakeChangeConnectionPriorityRequest_7( + returnValue: _FakeChangeConnectionPriorityRequest_9( this, Invocation.method( #createChangeConnectionPrioRequest, @@ -418,6 +504,37 @@ class MockArgsToProtobufConverter extends _i1.Mock ), ), ) as _i2.ChangeConnectionPriorityRequest); + + @override + _i2.LaunchCompanionRequest createLaunchCompanionWorkflowRequest({ + required String? deviceNamePattern, + required bool? singleDeviceScan, + required bool? forceConfirmation, + }) => + (super.noSuchMethod( + Invocation.method( + #createLaunchCompanionWorkflowRequest, + [], + { + #deviceNamePattern: deviceNamePattern, + #singleDeviceScan: singleDeviceScan, + #forceConfirmation: forceConfirmation, + }, + ), + returnValue: _FakeLaunchCompanionRequest_10( + this, + Invocation.method( + #createLaunchCompanionWorkflowRequest, + [], + { + #deviceNamePattern: deviceNamePattern, + #singleDeviceScan: singleDeviceScan, + #forceConfirmation: forceConfirmation, + }, + ), + ), + ) as _i2.LaunchCompanionRequest); + @override _i2.ScanForDevicesRequest createScanForDevicesRequest({ required List<_i3.Uuid>? withServices, @@ -434,7 +551,7 @@ class MockArgsToProtobufConverter extends _i1.Mock #requireLocationServicesEnabled: requireLocationServicesEnabled, }, ), - returnValue: _FakeScanForDevicesRequest_8( + returnValue: _FakeScanForDevicesRequest_11( this, Invocation.method( #createScanForDevicesRequest, @@ -447,6 +564,7 @@ class MockArgsToProtobufConverter extends _i1.Mock ), ), ) as _i2.ScanForDevicesRequest); + @override _i2.ClearGattCacheRequest createClearGattCacheRequest(String? deviceId) => (super.noSuchMethod( @@ -454,7 +572,7 @@ class MockArgsToProtobufConverter extends _i1.Mock #createClearGattCacheRequest, [deviceId], ), - returnValue: _FakeClearGattCacheRequest_9( + returnValue: _FakeClearGattCacheRequest_12( this, Invocation.method( #createClearGattCacheRequest, @@ -462,6 +580,7 @@ class MockArgsToProtobufConverter extends _i1.Mock ), ), ) as _i2.ClearGattCacheRequest); + @override _i2.DiscoverServicesRequest createDiscoverServicesRequest(String? deviceId) => (super.noSuchMethod( @@ -469,7 +588,7 @@ class MockArgsToProtobufConverter extends _i1.Mock #createDiscoverServicesRequest, [deviceId], ), - returnValue: _FakeDiscoverServicesRequest_10( + returnValue: _FakeDiscoverServicesRequest_13( this, Invocation.method( #createDiscoverServicesRequest, @@ -477,6 +596,7 @@ class MockArgsToProtobufConverter extends _i1.Mock ), ), ) as _i2.DiscoverServicesRequest); + @override _i2.ReadRssiRequest createReadRssiRequest(String? deviceId) => (super.noSuchMethod( @@ -484,7 +604,7 @@ class MockArgsToProtobufConverter extends _i1.Mock #createReadRssiRequest, [deviceId], ), - returnValue: _FakeReadRssiRequest_11( + returnValue: _FakeReadRssiRequest_14( this, Invocation.method( #createReadRssiRequest, @@ -502,6 +622,15 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { _i1.throwOnMissingStub(this); } + @override + _i3.BondingStatus bondingStatusFrom(List? data) => (super.noSuchMethod( + Invocation.method( + #bondingStatusFrom, + [data], + ), + returnValue: _i3.BondingStatus.none, + ) as _i3.BondingStatus); + @override _i3.BleStatus bleStatusFrom(List? data) => (super.noSuchMethod( Invocation.method( @@ -510,13 +639,30 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { ), returnValue: _i3.BleStatus.unknown, ) as _i3.BleStatus); + + @override + _i3.DeviceAssociationInfo associationInfoFrom(List? data) => + (super.noSuchMethod( + Invocation.method( + #associationInfoFrom, + [data], + ), + returnValue: _FakeDeviceAssociationInfo_15( + this, + Invocation.method( + #associationInfoFrom, + [data], + ), + ), + ) as _i3.DeviceAssociationInfo); + @override _i3.ScanResult scanResultFrom(List? data) => (super.noSuchMethod( Invocation.method( #scanResultFrom, [data], ), - returnValue: _FakeScanResult_12( + returnValue: _FakeScanResult_16( this, Invocation.method( #scanResultFrom, @@ -524,6 +670,22 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { ), ), ) as _i3.ScanResult); + + @override + String deviceNameFrom(List? data) => (super.noSuchMethod( + Invocation.method( + #deviceNameFrom, + [data], + ), + returnValue: _i8.dummyValue( + this, + Invocation.method( + #deviceNameFrom, + [data], + ), + ), + ) as String); + @override _i3.ConnectionStateUpdate connectionStateUpdateFrom(List? data) => (super.noSuchMethod( @@ -531,7 +693,7 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { #connectionStateUpdateFrom, [data], ), - returnValue: _FakeConnectionStateUpdate_13( + returnValue: _FakeConnectionStateUpdate_17( this, Invocation.method( #connectionStateUpdateFrom, @@ -539,6 +701,7 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { ), ), ) as _i3.ConnectionStateUpdate); + @override _i3.Result<_i3.Unit, _i3.GenericFailure<_i3.ClearGattCacheError>?> clearGattCacheResultFrom(List? data) => (super.noSuchMethod( @@ -546,7 +709,7 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { #clearGattCacheResultFrom, [data], ), - returnValue: _FakeResult_14<_i3.Unit, + returnValue: _FakeResult_18<_i3.Unit, _i3.GenericFailure<_i3.ClearGattCacheError>?>( this, Invocation.method( @@ -556,6 +719,7 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { ), ) as _i3 .Result<_i3.Unit, _i3.GenericFailure<_i3.ClearGattCacheError>?>); + @override _i3.CharacteristicValue characteristicValueFrom(List? data) => (super.noSuchMethod( @@ -563,7 +727,7 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { #characteristicValueFrom, [data], ), - returnValue: _FakeCharacteristicValue_15( + returnValue: _FakeCharacteristicValue_19( this, Invocation.method( #characteristicValueFrom, @@ -571,6 +735,7 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { ), ), ) as _i3.CharacteristicValue); + @override _i3.WriteCharacteristicInfo writeCharacteristicInfoFrom(List? data) => (super.noSuchMethod( @@ -578,7 +743,7 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { #writeCharacteristicInfoFrom, [data], ), - returnValue: _FakeWriteCharacteristicInfo_16( + returnValue: _FakeWriteCharacteristicInfo_20( this, Invocation.method( #writeCharacteristicInfoFrom, @@ -586,6 +751,7 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { ), ), ) as _i3.WriteCharacteristicInfo); + @override _i3.ConnectionPriorityInfo connectionPriorityInfoFrom(List? data) => (super.noSuchMethod( @@ -593,7 +759,7 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { #connectionPriorityInfoFrom, [data], ), - returnValue: _FakeConnectionPriorityInfo_17( + returnValue: _FakeConnectionPriorityInfo_21( this, Invocation.method( #connectionPriorityInfoFrom, @@ -601,6 +767,7 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { ), ), ) as _i3.ConnectionPriorityInfo); + @override int mtuSizeFrom(List? data) => (super.noSuchMethod( Invocation.method( @@ -609,6 +776,7 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { ), returnValue: 0, ) as int); + @override List<_i3.DiscoveredService> discoveredServicesFrom(List? data) => (super.noSuchMethod( @@ -618,6 +786,7 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { ), returnValue: <_i3.DiscoveredService>[], ) as List<_i3.DiscoveredService>); + @override int readRssiResultFrom(List? data) => (super.noSuchMethod( Invocation.method( @@ -631,7 +800,7 @@ class MockProtobufConverter extends _i1.Mock implements _i7.ProtobufConverter { /// A class which mocks [MethodChannel]. /// /// See the documentation for Mockito's code generation for more information. -class MockMethodChannel extends _i1.Mock implements _i8.MethodChannel { +class MockMethodChannel extends _i1.Mock implements _i9.MethodChannel { MockMethodChannel() { _i1.throwOnMissingStub(this); } @@ -639,26 +808,32 @@ class MockMethodChannel extends _i1.Mock implements _i8.MethodChannel { @override String get name => (super.noSuchMethod( Invocation.getter(#name), - returnValue: '', + returnValue: _i8.dummyValue( + this, + Invocation.getter(#name), + ), ) as String); + @override _i4.MethodCodec get codec => (super.noSuchMethod( Invocation.getter(#codec), - returnValue: _FakeMethodCodec_18( + returnValue: _FakeMethodCodec_22( this, Invocation.getter(#codec), ), ) as _i4.MethodCodec); + @override _i5.BinaryMessenger get binaryMessenger => (super.noSuchMethod( Invocation.getter(#binaryMessenger), - returnValue: _FakeBinaryMessenger_19( + returnValue: _FakeBinaryMessenger_23( this, Invocation.getter(#binaryMessenger), ), ) as _i5.BinaryMessenger); + @override - _i9.Future invokeMethod( + _i10.Future invokeMethod( String? method, [ dynamic arguments, ]) => @@ -670,10 +845,11 @@ class MockMethodChannel extends _i1.Mock implements _i8.MethodChannel { arguments, ], ), - returnValue: _i9.Future.value(), - ) as _i9.Future); + returnValue: _i10.Future.value(), + ) as _i10.Future); + @override - _i9.Future?> invokeListMethod( + _i10.Future?> invokeListMethod( String? method, [ dynamic arguments, ]) => @@ -685,10 +861,11 @@ class MockMethodChannel extends _i1.Mock implements _i8.MethodChannel { arguments, ], ), - returnValue: _i9.Future?>.value(), - ) as _i9.Future?>); + returnValue: _i10.Future?>.value(), + ) as _i10.Future?>); + @override - _i9.Future?> invokeMapMethod( + _i10.Future?> invokeMapMethod( String? method, [ dynamic arguments, ]) => @@ -700,11 +877,12 @@ class MockMethodChannel extends _i1.Mock implements _i8.MethodChannel { arguments, ], ), - returnValue: _i9.Future?>.value(), - ) as _i9.Future?>); + returnValue: _i10.Future?>.value(), + ) as _i10.Future?>); + @override void setMethodCallHandler( - _i9.Future Function(_i4.MethodCall)? handler) => + _i10.Future Function(_i4.MethodCall)? handler) => super.noSuchMethod( Invocation.method( #setMethodCallHandler, diff --git a/packages/reactive_ble_platform_interface/lib/src/model/bonding_status.dart b/packages/reactive_ble_platform_interface/lib/src/model/bonding_status.dart new file mode 100644 index 00000000..62320b9d --- /dev/null +++ b/packages/reactive_ble_platform_interface/lib/src/model/bonding_status.dart @@ -0,0 +1,10 @@ +enum BondingStatus { + /// The device is not bonded. + none, + + /// Bonding is in progress + bonding, + + /// Bonding is complete + bonded, +} diff --git a/packages/reactive_ble_platform_interface/lib/src/model/device_association_info.dart b/packages/reactive_ble_platform_interface/lib/src/model/device_association_info.dart new file mode 100644 index 00000000..10d9bf2f --- /dev/null +++ b/packages/reactive_ble_platform_interface/lib/src/model/device_association_info.dart @@ -0,0 +1,19 @@ +import 'package:functional_data/functional_data.dart'; +import 'package:meta/meta.dart'; + +part 'device_association_info.g.dart'; + +//ignore_for_file: annotate_overrides + +/// Result of a device association request performed by the Android companion +/// workflow. The resulting [macAddress] can be used to connect to the device +/// directly. +@immutable +@FunctionalData() +class DeviceAssociationInfo extends $DeviceAssociationInfo { + final String macAddress; + + const DeviceAssociationInfo({ + required this.macAddress, + }); +} diff --git a/packages/reactive_ble_platform_interface/lib/src/model/device_association_info.g.dart b/packages/reactive_ble_platform_interface/lib/src/model/device_association_info.g.dart new file mode 100644 index 00000000..00c34818 --- /dev/null +++ b/packages/reactive_ble_platform_interface/lib/src/model/device_association_info.g.dart @@ -0,0 +1,64 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'device_association_info.dart'; + +// ************************************************************************** +// FunctionalDataGenerator +// ************************************************************************** + +abstract class $DeviceAssociationInfo { + const $DeviceAssociationInfo(); + + String get macAddress; + + DeviceAssociationInfo copyWith({ + String? macAddress, + }) => + DeviceAssociationInfo( + macAddress: macAddress ?? this.macAddress, + ); + + DeviceAssociationInfo copyUsing( + void Function(DeviceAssociationInfo$Change change) mutator) { + final change = DeviceAssociationInfo$Change._( + this.macAddress, + ); + mutator(change); + return DeviceAssociationInfo( + macAddress: change.macAddress, + ); + } + + @override + String toString() => "DeviceAssociationInfo(macAddress: $macAddress)"; + + @override + // ignore: avoid_equals_and_hash_code_on_mutable_classes + bool operator ==(Object other) => + other is DeviceAssociationInfo && + other.runtimeType == runtimeType && + macAddress == other.macAddress; + + @override + // ignore: avoid_equals_and_hash_code_on_mutable_classes + int get hashCode { + return macAddress.hashCode; + } +} + +class DeviceAssociationInfo$Change { + DeviceAssociationInfo$Change._( + this.macAddress, + ); + + String macAddress; +} + +// ignore: avoid_classes_with_only_static_members +class DeviceAssociationInfo$ { + static final macAddress = Lens( + (macAddressContainer) => macAddressContainer.macAddress, + (macAddressContainer, macAddress) => + macAddressContainer.copyWith(macAddress: macAddress), + ); +} diff --git a/packages/reactive_ble_platform_interface/lib/src/models.dart b/packages/reactive_ble_platform_interface/lib/src/models.dart index e86bb64a..faef0524 100644 --- a/packages/reactive_ble_platform_interface/lib/src/models.dart +++ b/packages/reactive_ble_platform_interface/lib/src/models.dart @@ -1,9 +1,11 @@ export './model/ble_status.dart'; +export './model/bonding_status.dart'; export './model/characteristic_instance.dart'; export './model/characteristic_value.dart'; export './model/clear_gatt_cache_error.dart'; export './model/connection_priority.dart'; export './model/connection_state_update.dart'; +export './model/device_association_info.dart'; export './model/discovered_characteristic.dart'; export './model/discovered_device.dart'; export './model/discovered_service.dart'; diff --git a/packages/reactive_ble_platform_interface/lib/src/reactive_ble_platform_interface.dart b/packages/reactive_ble_platform_interface/lib/src/reactive_ble_platform_interface.dart index 6c620641..252f218e 100644 --- a/packages/reactive_ble_platform_interface/lib/src/reactive_ble_platform_interface.dart +++ b/packages/reactive_ble_platform_interface/lib/src/reactive_ble_platform_interface.dart @@ -68,6 +68,37 @@ abstract class ReactiveBlePlatform extends PlatformInterface { throw UnimplementedError('deInitialize() has not been implemented.'); } + /// Launch Companion workflow for connecting a Ble device (Android only) + /// + /// This method launches the companion workflow for connecting a BLE device. + /// + /// Calling this method will open the native companion user interface. The user + /// will be able to select a device from a list of BLE devices that are currently + /// advertising. The user will then be able to select the device. + /// + /// The result of the selection will be returned as a [DeviceAssociationInfo]. + /// + /// The [pattern] parameter is used to filter the list of BLE devices that are + /// displayed to the user. The pattern is matched against the advertised name. + /// It is a regular expression. + /// + /// The [singleDeviceScan] parameter is used to determine if the user should be + /// able to select multiple devices or not. If set to true, no list interface + /// will be shown to the user. Instead, the user will confirm the selection + /// directly. + /// + /// The [forceConfirmation] parameter is used to determine if the user should + /// explictely confirm the selection or not. If set to true, the user will be + /// asked to confirm the selection. + Future launchCompanionWorkflow({ + required String pattern, + required bool singleDeviceScan, + required bool forceConfirmation, + }) { + throw UnimplementedError( + 'launchCompanionWorkflow() has not been implemented.'); + } + /// Stream that handles triggers scanning for Ble devices. /// /// As long as the stream has been `listened` to the scanning continues. When @@ -87,6 +118,11 @@ abstract class ReactiveBlePlatform extends PlatformInterface { throw UnimplementedError('clearGattCache() has not been implemented.'); } + /// Creates a bond with the peripheral. This is a Android-only operation. + Future establishBonding(String deviceId) { + throw UnimplementedError('establishBonding() has not been implemented.'); + } + Future readRssi(String deviceId) async { throw UnimplementedError( 'readRssi(String deviceId) has not been implemented.'); @@ -104,6 +140,11 @@ abstract class ReactiveBlePlatform extends PlatformInterface { throw UnimplementedError('connectToDevice has not been implemented.'); } + /// Retrieve the device name. + Future retrieveDeviceName(String id) { + throw UnimplementedError('retrieveDeviceName has not been implemented.'); + } + /// Operation that disconnects the host with the peripheral. Future disconnectDevice(String deviceId) { throw UnimplementedError('disconnectDevice has not been implemented.');