From 2c0a6c7825c65d665e5d9fc524e101640d593d15 Mon Sep 17 00:00:00 2001 From: Chris Manton Date: Sat, 3 Oct 2020 10:01:53 -0700 Subject: [PATCH] Re-align read remote version information on legacy Bug: 166280067 Tag: #refactor Test: act.py -tc BleCocTest Test: ble paired 2 phones Test: classic paired Bose SoundLink Change-Id: I7be1ecba73234431194ad9702ec3ea06b09c60bc --- stack/acl/btm_acl.cc | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/stack/acl/btm_acl.cc b/stack/acl/btm_acl.cc index d1cd58910..fb6c7142f 100644 --- a/stack/acl/btm_acl.cc +++ b/stack/acl/btm_acl.cc @@ -810,34 +810,46 @@ void BTM_default_block_role_switch() { * Returns void * ******************************************************************************/ -static void btm_process_remote_version_complete(uint8_t status, uint16_t handle, - uint8_t lmp_version, - uint16_t manufacturer, - uint16_t lmp_subversion) { +static void maybe_chain_more_commands_after_read_remote_version_complete( + uint8_t status, uint16_t handle) { tACL_CONN* p_acl_cb = internal_.acl_get_connection_from_handle(handle); if (p_acl_cb == nullptr) { LOG_WARN("Received remote version complete for unknown device"); return; } + switch (p_acl_cb->transport) { + case BT_TRANSPORT_LE: + l2cble_notify_le_connection(p_acl_cb->remote_addr); + l2cble_use_preferred_conn_params(p_acl_cb->remote_addr); + break; + case BT_TRANSPORT_BR_EDR: + if (status == HCI_SUCCESS) { + internal_.btm_read_remote_features(p_acl_cb->hci_handle); + } + } +} + +void btm_process_remote_version_complete(uint8_t status, uint16_t handle, + uint8_t lmp_version, + uint16_t manufacturer, + uint16_t lmp_subversion) { + tACL_CONN* p_acl_cb = internal_.acl_get_connection_from_handle(handle); + if (p_acl_cb == nullptr) { + LOG_WARN("Received remote version complete for unknown acl"); + return; + } + if (status == HCI_SUCCESS) { p_acl_cb->lmp_version = lmp_version; p_acl_cb->manufacturer = manufacturer; p_acl_cb->lmp_subversion = lmp_subversion; - if (p_acl_cb->transport == BT_TRANSPORT_BR_EDR) { - internal_.btm_read_remote_features(p_acl_cb->hci_handle); - } bluetooth::common::LogRemoteVersionInfo(handle, status, lmp_version, manufacturer, lmp_subversion); } else { bluetooth::common::LogRemoteVersionInfo(handle, status, 0, 0, 0); } - - if (p_acl_cb->transport == BT_TRANSPORT_LE) { - l2cble_notify_le_connection(p_acl_cb->remote_addr); - l2cble_use_preferred_conn_params(p_acl_cb->remote_addr); - } } void btm_read_remote_version_complete(uint8_t* p) { @@ -855,6 +867,7 @@ void btm_read_remote_version_complete(uint8_t* p) { btm_process_remote_version_complete(status, handle, lmp_version, manufacturer, lmp_subversion); + maybe_chain_more_commands_after_read_remote_version_complete(status, handle); } /******************************************************************************* -- 2.11.0