aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChienyuan <chienyuanhuang@google.com>2021-11-02 20:01:04 +0800
committerChienyuan <chienyuanhuang@google.com>2021-11-03 10:47:33 +0800
commit6d927a98f249362c562a7eaeb482473979808600 (patch)
treefd5ecb155f0c11fed595a23e32ee965faf610992
parent1e4468fc7bb683ad8f4db550e29a6d8c79eb5987 (diff)
downloadbt-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.cc15
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;
}
}