From febed8179b5dd02fa6ae9e0eac6b6d569a896293 Mon Sep 17 00:00:00 2001 From: Gilles Boccon-Gibod Date: Tue, 22 Apr 2025 16:15:58 -0700 Subject: [PATCH 1/2] fix numeric entries and phy request --- apps/bench.py | 6 ++++-- .../java/com/github/google/bumble/btbench/MainActivity.kt | 6 ++++-- .../src/main/java/com/github/google/bumble/btbench/Model.kt | 5 ++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/apps/bench.py b/apps/bench.py index 860f58c..c306f19 100644 --- a/apps/bench.py +++ b/apps/bench.py @@ -1291,8 +1291,10 @@ class Central(Connection.Listener): logging.info(color('### Connected', 'cyan')) self.connection.listener = self print_connection(self.connection) - phy = await self.connection.get_phy() - print_connection_phy(phy) + + if not self.classic: + phy = await self.connection.get_phy() + print_connection_phy(phy) # Switch roles if needed. if self.role_switch: diff --git a/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/MainActivity.kt b/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/MainActivity.kt index bb3e558..7b1fb4d 100644 --- a/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/MainActivity.kt +++ b/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/MainActivity.kt @@ -381,7 +381,7 @@ fun MainView( label = { Text(text = "Packet Interval (ms)") }, - value = appViewModel.senderPacketInterval.toString(), + value = (if (appViewModel.senderPacketInterval != 0) appViewModel.senderPacketInterval else "").toString(), modifier = Modifier .fillMaxWidth() .focusRequester(focusRequester), @@ -389,7 +389,9 @@ fun MainView( keyboardType = KeyboardType.Number, imeAction = ImeAction.Done ), onValueChange = { - if (it.isNotEmpty()) { + if (it.isEmpty()) { + appViewModel.updateSenderPacketInterval(0) + } else { val interval = it.toIntOrNull() if (interval != null) { appViewModel.updateSenderPacketInterval(interval) diff --git a/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Model.kt b/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Model.kt index 5b69949..74c81fa 100644 --- a/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Model.kt +++ b/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Model.kt @@ -27,8 +27,8 @@ val DEFAULT_RFCOMM_UUID: UUID = UUID.fromString("E6D55659-C8B4-4B85-96BB-B1143AF const val DEFAULT_PEER_BLUETOOTH_ADDRESS = "AA:BB:CC:DD:EE:FF" const val DEFAULT_STARTUP_DELAY = 3000 const val DEFAULT_SENDER_PACKET_COUNT = 100 -const val DEFAULT_SENDER_PACKET_SIZE = 1024 -const val DEFAULT_SENDER_PACKET_INTERVAL = 100 +const val DEFAULT_SENDER_PACKET_SIZE = 970 // 970 is a value that works well on Android. +const val DEFAULT_SENDER_PACKET_INTERVAL = 0 const val DEFAULT_PSM = 128 const val L2CAP_CLIENT_MODE = "L2CAP Client" @@ -192,7 +192,6 @@ class AppViewModel : ViewModel() { } else if (senderPacketSizeSlider < 0.5F) { 512 } else if (senderPacketSizeSlider < 0.7F) { - // 970 is a value that works well on Android. 970 } else if (senderPacketSizeSlider < 0.9F) { 2048 From ab60b42b85eb75bfdac75599a2d9a0e8fc962346 Mon Sep 17 00:00:00 2001 From: Gilles Boccon-Gibod Date: Thu, 24 Apr 2025 17:22:25 -0700 Subject: [PATCH 2/2] minor fix --- bumble/device.py | 3 +++ bumble/hci.py | 16 ++++++++++++++-- .../github/google/bumble/btbench/Advertiser.kt | 1 + 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/bumble/device.py b/bumble/device.py index 97a32f3..b1b423a 100644 --- a/bumble/device.py +++ b/bumble/device.py @@ -3953,6 +3953,9 @@ class Device(utils.CompositeEventEmitter): return result.return_parameters.rssi async def get_connection_phy(self, connection: Connection) -> ConnectionPHY: + if not self.host.supports_command(hci.HCI_LE_READ_PHY_COMMAND): + return ConnectionPHY(hci.Phy.LE_1M, hci.Phy.LE_1M) + result = await self.send_command( hci.HCI_LE_Read_PHY_Command(connection_handle=connection.handle), check_result=True, diff --git a/bumble/hci.py b/bumble/hci.py index 1fa56bc..4c9259f 100644 --- a/bumble/hci.py +++ b/bumble/hci.py @@ -5825,12 +5825,18 @@ class HCI_LE_Advertising_Report_Event(HCI_LE_Meta_Event): return HCI_LE_Advertising_Report_Event.event_type_name(self.event_type) def to_string(self, indentation='', _=None): + def data_to_str(data): + try: + return data.hex() + ': ' + str(AdvertisingData.from_bytes(data)) + except Exception: + return data.hex() + return super().to_string( indentation, { 'event_type': HCI_LE_Advertising_Report_Event.event_type_name, 'address_type': Address.address_type_name, - 'data': lambda x: str(AdvertisingData.from_bytes(x)), + 'data': data_to_str, }, ) @@ -6055,12 +6061,18 @@ class HCI_LE_Extended_Advertising_Report_Event(HCI_LE_Meta_Event): def to_string(self, indentation='', _=None): # pylint: disable=line-too-long + def data_to_str(data): + try: + return data.hex() + ': ' + str(AdvertisingData.from_bytes(data)) + except Exception: + return data.hex() + return super().to_string( indentation, { 'event_type': HCI_LE_Extended_Advertising_Report_Event.event_type_string, 'address_type': Address.address_type_name, - 'data': lambda x: str(AdvertisingData.from_bytes(x)), + 'data': data_to_str, }, ) diff --git a/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Advertiser.kt b/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Advertiser.kt index b7370a8..17d1ade 100644 --- a/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Advertiser.kt +++ b/extras/android/BtBench/app/src/main/java/com/github/google/bumble/btbench/Advertiser.kt @@ -26,6 +26,7 @@ class Advertiser(private val bluetoothAdapter: BluetoothAdapter) : AdvertiseCall @SuppressLint("MissingPermission") fun stop() { + Log.info("stopping advertiser") bluetoothAdapter.bluetoothLeAdvertiser.stopAdvertising(this) }