From 1c001ecd7ab68c3fe71a7ab265a8f3bb93e19af9 Mon Sep 17 00:00:00 2001 From: zhiweijian Date: Sat, 28 Apr 2018 16:22:38 +0800 Subject: [PATCH] Component/bt: fix version exchange issue - Android 7.0 version issue - version exchange late in some phones - can not get version in smp --- components/bt/bluedroid/stack/btm/btm_acl.c | 17 +++++++++++------ components/bt/bluedroid/stack/smp/smp_act.c | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/components/bt/bluedroid/stack/btm/btm_acl.c b/components/bt/bluedroid/stack/btm/btm_acl.c index 74a73b51d..21f3e3b52 100644 --- a/components/bt/bluedroid/stack/btm/btm_acl.c +++ b/components/bt/bluedroid/stack/btm/btm_acl.c @@ -335,7 +335,7 @@ void btm_acl_created (BD_ADDR bda, DEV_CLASS dc, BD_NAME bdn, btsnd_hcic_ble_read_remote_feat(p->hci_handle); } else if (HCI_LE_SLAVE_INIT_FEAT_EXC_SUPPORTED(controller_get_interface()->get_features_ble()->as_array) && link_role == HCI_ROLE_SLAVE) { - btsnd_hcic_ble_read_remote_feat(p->hci_handle); + btsnd_hcic_rmt_ver_req (p->hci_handle); } else { btm_establish_continue(p); } @@ -906,12 +906,17 @@ void btm_read_remote_version_complete (UINT8 *p) } #if BLE_INCLUDED == TRUE if (p_acl_cb->transport == BT_TRANSPORT_LE) { - if (HCI_LE_DATA_LEN_EXT_SUPPORTED(p_acl_cb->peer_le_features)) { - uint16_t data_length = controller_get_interface()->get_ble_default_data_packet_length(); - uint16_t data_txtime = controller_get_interface()->get_ble_default_data_packet_txtime(); - btsnd_hcic_ble_set_data_length(p_acl_cb->hci_handle, data_length, data_txtime); + if(p_acl_cb->link_role == HCI_ROLE_MASTER) { + if (HCI_LE_DATA_LEN_EXT_SUPPORTED(p_acl_cb->peer_le_features)) { + uint16_t data_length = controller_get_interface()->get_ble_default_data_packet_length(); + uint16_t data_txtime = controller_get_interface()->get_ble_default_data_packet_txtime(); + btsnd_hcic_ble_set_data_length(p_acl_cb->hci_handle, data_length, data_txtime); + } + l2cble_notify_le_connection (p_acl_cb->remote_addr); + } else { + //slave role, read remote feature + btsnd_hcic_ble_read_remote_feat(p_acl_cb->hci_handle); } - l2cble_notify_le_connection (p_acl_cb->remote_addr); } #endif break; diff --git a/components/bt/bluedroid/stack/smp/smp_act.c b/components/bt/bluedroid/stack/smp/smp_act.c index d088d3608..674a4e441 100644 --- a/components/bt/bluedroid/stack/smp/smp_act.c +++ b/components/bt/bluedroid/stack/smp/smp_act.c @@ -59,7 +59,7 @@ static bool lmp_version_below(BD_ADDR bda, uint8_t version) SMP_TRACE_WARNING("%s cannot retrieve LMP version...", __func__); return false; } - SMP_TRACE_WARNING("%s LMP version %d < %d", __func__, acl->lmp_version, version); + SMP_TRACE_DEBUG("%s LMP version %d < %d", __func__, acl->lmp_version, version); return acl->lmp_version < version; }