Loading system/stack/btm/btm_ble_gap.cc +2 −0 Original line number Diff line number Diff line Loading @@ -1860,6 +1860,7 @@ tBTM_STATUS btm_ble_read_remote_name(const RawAddress& remote_bda, btm_cb.btm_inq_vars.p_remname_cmpl_cb = p_cb; btm_cb.btm_inq_vars.remname_active = true; btm_cb.btm_inq_vars.remname_bda = remote_bda; btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_BLE; alarm_set_on_mloop(btm_cb.btm_inq_vars.remote_name_timer, BTM_EXT_BLE_RMT_NAME_TIMEOUT_MS, Loading @@ -1886,6 +1887,7 @@ bool btm_ble_cancel_remote_name(const RawAddress& remote_bda) { btm_cb.btm_inq_vars.remname_active = false; btm_cb.btm_inq_vars.remname_bda = RawAddress::kEmpty; btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; alarm_cancel(btm_cb.btm_inq_vars.remote_name_timer); return status; Loading system/stack/btm/btm_inq.cc +17 −2 Original line number Diff line number Diff line Loading @@ -855,10 +855,17 @@ tBTM_STATUS BTM_ReadRemoteDeviceName(const RawAddress& remote_bda, ******************************************************************************/ tBTM_STATUS BTM_CancelRemoteDeviceName(void) { log::verbose(""); bool is_le; /* Make sure there is not already one in progress */ if (btm_cb.btm_inq_vars.remname_active) { if (BTM_UseLeLink(btm_cb.btm_inq_vars.remname_bda)) { if (com::android::bluetooth::flags::rnr_store_device_type()) { is_le = (btm_cb.btm_inq_vars.remname_dev_type == BT_DEVICE_TYPE_BLE); } else { is_le = BTM_UseLeLink(btm_cb.btm_inq_vars.remname_bda); } if (is_le) { /* Cancel remote name request for LE device, and process remote name * callback. */ btm_inq_rmt_name_failed_cancelled(); Loading Loading @@ -1044,6 +1051,7 @@ void btm_inq_db_reset(void) { alarm_cancel(btm_cb.btm_inq_vars.remote_name_timer); btm_cb.btm_inq_vars.remname_active = false; btm_cb.btm_inq_vars.remname_bda = RawAddress::kEmpty; btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; if (btm_cb.btm_inq_vars.p_remname_cmpl_cb) { rem_name.status = BTM_DEV_RESET; Loading Loading @@ -1888,6 +1896,7 @@ tBTM_STATUS btm_initiate_rem_name(const RawAddress& remote_bda, uint8_t origin, * and start timer */ btm_cb.btm_inq_vars.p_remname_cmpl_cb = p_cb; btm_cb.btm_inq_vars.remname_bda = remote_bda; btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_BREDR; alarm_set_on_mloop(btm_cb.btm_inq_vars.remote_name_timer, timeout_ms, btm_inq_remote_name_timer_timeout, NULL); Loading Loading @@ -1946,7 +1955,12 @@ void btm_process_remote_name(const RawAddress* bda, const BD_NAME bdn, .hci_status = hci_status, }; const bool on_le_link = BTM_UseLeLink(btm_cb.btm_inq_vars.remname_bda); bool on_le_link; if (com::android::bluetooth::flags::rnr_store_device_type()) { on_le_link = (btm_cb.btm_inq_vars.remname_dev_type == BT_DEVICE_TYPE_BLE); } else { on_le_link = BTM_UseLeLink(btm_cb.btm_inq_vars.remname_bda); } /* If the inquire BDA and remote DBA are the same, then stop the timer and set * the active to false */ Loading Loading @@ -1981,6 +1995,7 @@ void btm_process_remote_name(const RawAddress* bda, const BD_NAME bdn, /* Reset the remote BDA and call callback if possible */ btm_cb.btm_inq_vars.remname_active = false; btm_cb.btm_inq_vars.remname_bda = RawAddress::kEmpty; btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; tBTM_NAME_CMPL_CB* p_cb = btm_cb.btm_inq_vars.p_remname_cmpl_cb; btm_cb.btm_inq_vars.p_remname_cmpl_cb = nullptr; Loading system/stack/btm/neighbor_inquiry.h +2 −0 Original line number Diff line number Diff line Loading @@ -242,6 +242,7 @@ struct tBTM_INQUIRY_VAR_ST { RawAddress remname_bda; /* Name of bd addr for active remote name request */ #define BTM_RMT_NAME_EXT 0x1 /* Initiated through API */ bool remname_active; /* State of a remote name request by external API */ tBT_DEVICE_TYPE remname_dev_type; /* Whether it's LE or BREDR name request */ tBTM_CMPL_CB* p_inq_cmpl_cb; tBTM_INQ_RESULTS_CB* p_inq_results_cb; Loading Loading @@ -287,6 +288,7 @@ struct tBTM_INQUIRY_VAR_ST { remname_bda = {}; remname_active = false; remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; p_inq_cmpl_cb = nullptr; p_inq_results_cb = nullptr; Loading system/stack/test/btm/stack_btm_inq_test.cc +6 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ class BtmInqActiveTest : public BtmInqTest { btm_cb.btm_inq_vars.remname_active = true; btm_cb.btm_inq_vars.remname_bda = kRawAddress; btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_BREDR; btm_cb.btm_inq_vars.p_remname_cmpl_cb = [](const tBTM_REMOTE_DEV_NAME* name) { gBTM_REMOTE_DEV_NAME = *name; Loading @@ -75,6 +76,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__typical) { ASSERT_FALSE(btm_cb.btm_inq_vars.p_remname_cmpl_cb); ASSERT_FALSE(btm_cb.btm_inq_vars.remname_active); ASSERT_EQ(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty); ASSERT_EQ(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN); ASSERT_EQ(1, get_func_call_count("alarm_cancel")); ASSERT_TRUE(gBTM_REMOTE_DEV_NAME_sent); Loading @@ -89,6 +91,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__no_name) { ASSERT_FALSE(btm_cb.btm_inq_vars.p_remname_cmpl_cb); ASSERT_FALSE(btm_cb.btm_inq_vars.remname_active); ASSERT_EQ(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty); ASSERT_EQ(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN); ASSERT_EQ(1, get_func_call_count("alarm_cancel")); ASSERT_TRUE(gBTM_REMOTE_DEV_NAME_sent); Loading @@ -103,6 +106,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__bad_status) { ASSERT_FALSE(btm_cb.btm_inq_vars.p_remname_cmpl_cb); ASSERT_FALSE(btm_cb.btm_inq_vars.remname_active); ASSERT_EQ(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty); ASSERT_EQ(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN); ASSERT_EQ(1, get_func_call_count("alarm_cancel")); ASSERT_TRUE(gBTM_REMOTE_DEV_NAME_sent); Loading @@ -117,6 +121,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__no_address) { ASSERT_FALSE(btm_cb.btm_inq_vars.p_remname_cmpl_cb); ASSERT_FALSE(btm_cb.btm_inq_vars.remname_active); ASSERT_EQ(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty); ASSERT_EQ(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN); ASSERT_EQ(1, get_func_call_count("alarm_cancel")); ASSERT_TRUE(gBTM_REMOTE_DEV_NAME_sent); Loading @@ -132,6 +137,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__different_address) { ASSERT_TRUE(btm_cb.btm_inq_vars.p_remname_cmpl_cb); ASSERT_TRUE(btm_cb.btm_inq_vars.remname_active); ASSERT_NE(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty); ASSERT_NE(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN); ASSERT_EQ(0, get_func_call_count("alarm_cancel")); ASSERT_FALSE(gBTM_REMOTE_DEV_NAME_sent); Loading Loading
system/stack/btm/btm_ble_gap.cc +2 −0 Original line number Diff line number Diff line Loading @@ -1860,6 +1860,7 @@ tBTM_STATUS btm_ble_read_remote_name(const RawAddress& remote_bda, btm_cb.btm_inq_vars.p_remname_cmpl_cb = p_cb; btm_cb.btm_inq_vars.remname_active = true; btm_cb.btm_inq_vars.remname_bda = remote_bda; btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_BLE; alarm_set_on_mloop(btm_cb.btm_inq_vars.remote_name_timer, BTM_EXT_BLE_RMT_NAME_TIMEOUT_MS, Loading @@ -1886,6 +1887,7 @@ bool btm_ble_cancel_remote_name(const RawAddress& remote_bda) { btm_cb.btm_inq_vars.remname_active = false; btm_cb.btm_inq_vars.remname_bda = RawAddress::kEmpty; btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; alarm_cancel(btm_cb.btm_inq_vars.remote_name_timer); return status; Loading
system/stack/btm/btm_inq.cc +17 −2 Original line number Diff line number Diff line Loading @@ -855,10 +855,17 @@ tBTM_STATUS BTM_ReadRemoteDeviceName(const RawAddress& remote_bda, ******************************************************************************/ tBTM_STATUS BTM_CancelRemoteDeviceName(void) { log::verbose(""); bool is_le; /* Make sure there is not already one in progress */ if (btm_cb.btm_inq_vars.remname_active) { if (BTM_UseLeLink(btm_cb.btm_inq_vars.remname_bda)) { if (com::android::bluetooth::flags::rnr_store_device_type()) { is_le = (btm_cb.btm_inq_vars.remname_dev_type == BT_DEVICE_TYPE_BLE); } else { is_le = BTM_UseLeLink(btm_cb.btm_inq_vars.remname_bda); } if (is_le) { /* Cancel remote name request for LE device, and process remote name * callback. */ btm_inq_rmt_name_failed_cancelled(); Loading Loading @@ -1044,6 +1051,7 @@ void btm_inq_db_reset(void) { alarm_cancel(btm_cb.btm_inq_vars.remote_name_timer); btm_cb.btm_inq_vars.remname_active = false; btm_cb.btm_inq_vars.remname_bda = RawAddress::kEmpty; btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; if (btm_cb.btm_inq_vars.p_remname_cmpl_cb) { rem_name.status = BTM_DEV_RESET; Loading Loading @@ -1888,6 +1896,7 @@ tBTM_STATUS btm_initiate_rem_name(const RawAddress& remote_bda, uint8_t origin, * and start timer */ btm_cb.btm_inq_vars.p_remname_cmpl_cb = p_cb; btm_cb.btm_inq_vars.remname_bda = remote_bda; btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_BREDR; alarm_set_on_mloop(btm_cb.btm_inq_vars.remote_name_timer, timeout_ms, btm_inq_remote_name_timer_timeout, NULL); Loading Loading @@ -1946,7 +1955,12 @@ void btm_process_remote_name(const RawAddress* bda, const BD_NAME bdn, .hci_status = hci_status, }; const bool on_le_link = BTM_UseLeLink(btm_cb.btm_inq_vars.remname_bda); bool on_le_link; if (com::android::bluetooth::flags::rnr_store_device_type()) { on_le_link = (btm_cb.btm_inq_vars.remname_dev_type == BT_DEVICE_TYPE_BLE); } else { on_le_link = BTM_UseLeLink(btm_cb.btm_inq_vars.remname_bda); } /* If the inquire BDA and remote DBA are the same, then stop the timer and set * the active to false */ Loading Loading @@ -1981,6 +1995,7 @@ void btm_process_remote_name(const RawAddress* bda, const BD_NAME bdn, /* Reset the remote BDA and call callback if possible */ btm_cb.btm_inq_vars.remname_active = false; btm_cb.btm_inq_vars.remname_bda = RawAddress::kEmpty; btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; tBTM_NAME_CMPL_CB* p_cb = btm_cb.btm_inq_vars.p_remname_cmpl_cb; btm_cb.btm_inq_vars.p_remname_cmpl_cb = nullptr; Loading
system/stack/btm/neighbor_inquiry.h +2 −0 Original line number Diff line number Diff line Loading @@ -242,6 +242,7 @@ struct tBTM_INQUIRY_VAR_ST { RawAddress remname_bda; /* Name of bd addr for active remote name request */ #define BTM_RMT_NAME_EXT 0x1 /* Initiated through API */ bool remname_active; /* State of a remote name request by external API */ tBT_DEVICE_TYPE remname_dev_type; /* Whether it's LE or BREDR name request */ tBTM_CMPL_CB* p_inq_cmpl_cb; tBTM_INQ_RESULTS_CB* p_inq_results_cb; Loading Loading @@ -287,6 +288,7 @@ struct tBTM_INQUIRY_VAR_ST { remname_bda = {}; remname_active = false; remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; p_inq_cmpl_cb = nullptr; p_inq_results_cb = nullptr; Loading
system/stack/test/btm/stack_btm_inq_test.cc +6 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ class BtmInqActiveTest : public BtmInqTest { btm_cb.btm_inq_vars.remname_active = true; btm_cb.btm_inq_vars.remname_bda = kRawAddress; btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_BREDR; btm_cb.btm_inq_vars.p_remname_cmpl_cb = [](const tBTM_REMOTE_DEV_NAME* name) { gBTM_REMOTE_DEV_NAME = *name; Loading @@ -75,6 +76,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__typical) { ASSERT_FALSE(btm_cb.btm_inq_vars.p_remname_cmpl_cb); ASSERT_FALSE(btm_cb.btm_inq_vars.remname_active); ASSERT_EQ(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty); ASSERT_EQ(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN); ASSERT_EQ(1, get_func_call_count("alarm_cancel")); ASSERT_TRUE(gBTM_REMOTE_DEV_NAME_sent); Loading @@ -89,6 +91,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__no_name) { ASSERT_FALSE(btm_cb.btm_inq_vars.p_remname_cmpl_cb); ASSERT_FALSE(btm_cb.btm_inq_vars.remname_active); ASSERT_EQ(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty); ASSERT_EQ(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN); ASSERT_EQ(1, get_func_call_count("alarm_cancel")); ASSERT_TRUE(gBTM_REMOTE_DEV_NAME_sent); Loading @@ -103,6 +106,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__bad_status) { ASSERT_FALSE(btm_cb.btm_inq_vars.p_remname_cmpl_cb); ASSERT_FALSE(btm_cb.btm_inq_vars.remname_active); ASSERT_EQ(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty); ASSERT_EQ(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN); ASSERT_EQ(1, get_func_call_count("alarm_cancel")); ASSERT_TRUE(gBTM_REMOTE_DEV_NAME_sent); Loading @@ -117,6 +121,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__no_address) { ASSERT_FALSE(btm_cb.btm_inq_vars.p_remname_cmpl_cb); ASSERT_FALSE(btm_cb.btm_inq_vars.remname_active); ASSERT_EQ(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty); ASSERT_EQ(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN); ASSERT_EQ(1, get_func_call_count("alarm_cancel")); ASSERT_TRUE(gBTM_REMOTE_DEV_NAME_sent); Loading @@ -132,6 +137,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__different_address) { ASSERT_TRUE(btm_cb.btm_inq_vars.p_remname_cmpl_cb); ASSERT_TRUE(btm_cb.btm_inq_vars.remname_active); ASSERT_NE(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty); ASSERT_NE(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN); ASSERT_EQ(0, get_func_call_count("alarm_cancel")); ASSERT_FALSE(gBTM_REMOTE_DEV_NAME_sent); Loading