diff options
author | Chienyuan <chienyuanhuang@google.com> | 2021-11-02 20:01:04 +0800 |
---|---|---|
committer | Chienyuan <chienyuanhuang@google.com> | 2021-11-03 10:47:33 +0800 |
commit | 6d927a98f249362c562a7eaeb482473979808600 (patch) | |
tree | fd5ecb155f0c11fed595a23e32ee965faf610992 | |
parent | 1e4468fc7bb683ad8f4db550e29a6d8c79eb5987 (diff) | |
download | bt-6d927a98f249362c562a7eaeb482473979808600.tar.gz |
Fix wrong address type of DUAL mode device
Tag: #refactor
Bug: 204847594
Test: manual
BYPASS_LONG_LINES_REASON: Bluetooth likes 120 lines
Change-Id: I55ef8accec2539a17f7594fa8da570cfb1f2f92b
-rw-r--r-- | stack/btm/btm_ble.cc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/stack/btm/btm_ble.cc b/stack/btm/btm_ble.cc index 805a1e285..3d0228de5 100644 --- a/stack/btm/btm_ble.cc +++ b/stack/btm/btm_ble.cc @@ -485,16 +485,21 @@ void BTM_ReadDevInfo(const RawAddress& remote_bda, tBT_DEVICE_TYPE* p_dev_type, p_dev_rec->device_type = p_inq_info->results.device_type; p_dev_rec->ble.ble_addr_type = p_inq_info->results.ble_addr_type; } - if (p_dev_rec->bd_addr == remote_bda && p_dev_rec->device_type != 0) { + + if (p_dev_rec->bd_addr == remote_bda && + p_dev_rec->ble.pseudo_addr == remote_bda) { *p_dev_type = p_dev_rec->device_type; *p_addr_type = p_dev_rec->ble.ble_addr_type; } else if (p_dev_rec->ble.pseudo_addr == remote_bda) { *p_dev_type = BT_DEVICE_TYPE_BLE; *p_addr_type = p_dev_rec->ble.ble_addr_type; - } else /* matching static adddress only */ - { - LOG(ERROR) << __func__ << " device_type not set; assuming BR/EDR"; - *p_dev_type = BT_DEVICE_TYPE_BREDR; + } else /* matching static adddress only */ { + if (p_dev_rec->device_type != BT_DEVICE_TYPE_UNKNOWN) { + *p_dev_type = p_dev_rec->device_type; + } else { + LOG_WARN("device_type not set; assuming BR/EDR"); + *p_dev_type = BT_DEVICE_TYPE_BREDR; + } *p_addr_type = BLE_ADDR_PUBLIC; } } |