From 27cb4c586bb0478c820a04a6505227a293550186 Mon Sep 17 00:00:00 2001 From: zxzxwu <92432172+zxzxwu@users.noreply.github.com> Date: Thu, 18 Aug 2022 05:20:32 +0800 Subject: [PATCH] Delegate Classic connectable and discoverable (#27) For remote-initiated test cases, we need the device to be scan-configurable. --- bumble/device.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bumble/device.py b/bumble/device.py index 2a7d4b2..ad9fe00 100644 --- a/bumble/device.py +++ b/bumble/device.py @@ -315,6 +315,8 @@ class DeviceConfiguration: self.le_simultaneous_enabled = True self.classic_sc_enabled = True self.classic_ssp_enabled = True + self.connectable = True + self.discoverable = True self.advertising_data = bytes( AdvertisingData([(AdvertisingData.COMPLETE_LOCAL_NAME, bytes(self.name, 'utf-8'))]) ) @@ -333,6 +335,8 @@ class DeviceConfiguration: self.le_simultaneous_enabled = config.get('le_simultaneous_enabled', self.le_simultaneous_enabled) self.classic_sc_enabled = config.get('classic_sc_enabled', self.classic_sc_enabled) self.classic_ssp_enabled = config.get('classic_ssp_enabled', self.classic_ssp_enabled) + self.connectable = config.get('connectable', self.connectable) + self.discoverable = config.get('discoverable', self.discoverable) # Load or synthesize an IRK irk = config.get('irk') @@ -454,8 +458,6 @@ class Device(CompositeEventEmitter): self.disconnecting = False self.connections = {} # Connections, by connection handle self.classic_enabled = False - self.discoverable = False - self.connectable = False self.inquiry_response = None self.address_resolver = None @@ -476,6 +478,8 @@ class Device(CompositeEventEmitter): self.le_simultaneous_enabled = config.le_simultaneous_enabled self.classic_ssp_enabled = config.classic_ssp_enabled self.classic_sc_enabled = config.classic_sc_enabled + self.discoverable = config.discoverable + self.connectable = config.connectable # If a name is passed, override the name from the config if name: @@ -623,6 +627,8 @@ class Device(CompositeEventEmitter): HCI_Write_Secure_Connections_Host_Support_Command( secure_connections_host_support=int(self.classic_sc_enabled)) ) + await self.set_connectable(self.connectable) + await self.set_discoverable(self.discoverable) # Let the SMP manager know about the address # TODO: allow using a public address