Loading system/stack/btm/btm_ble_gap.cc +13 −14 Original line number Diff line number Diff line Loading @@ -1696,22 +1696,21 @@ tBTM_STATUS btm_ble_read_remote_name(const RawAddress& remote_bda, } /* read remote device name using GATT procedure */ if (btm_cb.btm_inq_vars.rnr.remname_active) { log::warn( "Unable to start GATT RNR procedure for peer:{} busy with peer:{}", remote_bda, btm_cb.btm_inq_vars.rnr.remname_bda); if (btm_cb.rnr.remname_active) { log::warn("Unable to start GATT RNR procedure for peer:{} busy with peer:{}", remote_bda, btm_cb.rnr.remname_bda); return BTM_BUSY; } if (!GAP_BleReadPeerDevName(remote_bda, btm_ble_read_remote_name_cmpl)) return BTM_BUSY; btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb = p_cb; btm_cb.btm_inq_vars.rnr.remname_active = true; btm_cb.btm_inq_vars.rnr.remname_bda = remote_bda; btm_cb.btm_inq_vars.rnr.remname_dev_type = BT_DEVICE_TYPE_BLE; btm_cb.rnr.p_remname_cmpl_cb = p_cb; btm_cb.rnr.remname_active = true; btm_cb.rnr.remname_bda = remote_bda; btm_cb.rnr.remname_dev_type = BT_DEVICE_TYPE_BLE; alarm_set_on_mloop(btm_cb.btm_inq_vars.rnr.remote_name_timer, BTM_EXT_BLE_RMT_NAME_TIMEOUT_MS, alarm_set_on_mloop(btm_cb.rnr.remote_name_timer, BTM_EXT_BLE_RMT_NAME_TIMEOUT_MS, btm_inq_remote_name_timer_timeout, NULL); return BTM_CMD_STARTED; Loading @@ -1733,10 +1732,10 @@ bool btm_ble_cancel_remote_name(const RawAddress& remote_bda) { status = GAP_BleCancelReadPeerDevName(remote_bda); btm_cb.btm_inq_vars.rnr.remname_active = false; btm_cb.btm_inq_vars.rnr.remname_bda = RawAddress::kEmpty; btm_cb.btm_inq_vars.rnr.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; alarm_cancel(btm_cb.btm_inq_vars.rnr.remote_name_timer); btm_cb.rnr.remname_active = false; btm_cb.rnr.remname_bda = RawAddress::kEmpty; btm_cb.rnr.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; alarm_cancel(btm_cb.rnr.remote_name_timer); return status; } Loading system/stack/btm/btm_inq.cc +39 −46 Original line number Diff line number Diff line Loading @@ -859,14 +859,14 @@ tBTM_STATUS BTM_CancelRemoteDeviceName(void) { bool is_le; /* Make sure there is not already one in progress */ if (!btm_cb.btm_inq_vars.rnr.remname_active) { if (!btm_cb.rnr.remname_active) { return (BTM_WRONG_MODE); } if (com::android::bluetooth::flags::rnr_store_device_type()) { is_le = (btm_cb.btm_inq_vars.rnr.remname_dev_type == BT_DEVICE_TYPE_BLE); is_le = (btm_cb.rnr.remname_dev_type == BT_DEVICE_TYPE_BLE); } else { is_le = BTM_UseLeLink(btm_cb.btm_inq_vars.rnr.remname_bda); is_le = BTM_UseLeLink(btm_cb.rnr.remname_bda); } if (is_le) { Loading @@ -874,11 +874,9 @@ tBTM_STATUS BTM_CancelRemoteDeviceName(void) { * callback. */ btm_inq_rmt_name_failed_cancelled(); } else { bluetooth::shim::ACL_CancelRemoteNameRequest( btm_cb.btm_inq_vars.rnr.remname_bda); bluetooth::shim::ACL_CancelRemoteNameRequest(btm_cb.rnr.remname_bda); if (com::android::bluetooth::flags::rnr_reset_state_at_cancel()) { btm_process_remote_name(&btm_cb.btm_inq_vars.rnr.remname_bda, nullptr, 0, HCI_ERR_UNSPECIFIED); btm_process_remote_name(&btm_cb.rnr.remname_bda, nullptr, 0, HCI_ERR_UNSPECIFIED); } } return (BTM_CMD_STARTED); Loading Loading @@ -1049,18 +1047,18 @@ void btm_inq_db_reset(void) { /* Cancel a remote name request if active, and notify the caller (if waiting) */ if (btm_cb.btm_inq_vars.rnr.remname_active) { alarm_cancel(btm_cb.btm_inq_vars.rnr.remote_name_timer); btm_cb.btm_inq_vars.rnr.remname_active = false; btm_cb.btm_inq_vars.rnr.remname_bda = RawAddress::kEmpty; btm_cb.btm_inq_vars.rnr.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; if (btm_cb.rnr.remname_active) { alarm_cancel(btm_cb.rnr.remote_name_timer); btm_cb.rnr.remname_active = false; btm_cb.rnr.remname_bda = RawAddress::kEmpty; btm_cb.rnr.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; if (btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb) { if (btm_cb.rnr.p_remname_cmpl_cb) { rem_name.status = BTM_DEV_RESET; rem_name.hci_status = HCI_SUCCESS; (*btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb)(&rem_name); btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb = NULL; (*btm_cb.rnr.p_remname_cmpl_cb)(&rem_name); btm_cb.rnr.p_remname_cmpl_cb = NULL; } } Loading Loading @@ -1876,7 +1874,7 @@ tBTM_STATUS btm_initiate_rem_name(const RawAddress& remote_bda, tBTM_NAME_CMPL_CB* p_cb) { /*** Make sure the device is ready ***/ if (!BTM_IsDeviceUp()) return (BTM_WRONG_MODE); if (btm_cb.btm_inq_vars.rnr.remname_active) { if (btm_cb.rnr.remname_active) { return (BTM_BUSY); } else { /* If the database entry exists for the device, use its clock offset */ Loading Loading @@ -1915,15 +1913,14 @@ tBTM_STATUS btm_initiate_rem_name(const RawAddress& remote_bda, clock_offset); } btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb = p_cb; btm_cb.btm_inq_vars.rnr.remname_bda = remote_bda; btm_cb.btm_inq_vars.rnr.remname_dev_type = BT_DEVICE_TYPE_BREDR; btm_cb.btm_inq_vars.rnr.remname_active = true; btm_cb.rnr.p_remname_cmpl_cb = p_cb; btm_cb.rnr.remname_bda = remote_bda; btm_cb.rnr.remname_dev_type = BT_DEVICE_TYPE_BREDR; btm_cb.rnr.remname_active = true; alarm_set_on_mloop(btm_cb.btm_inq_vars.rnr.remote_name_timer, timeout_ms, btm_inq_remote_name_timer_timeout, NULL); alarm_set_on_mloop(btm_cb.rnr.remote_name_timer, timeout_ms, btm_inq_remote_name_timer_timeout, NULL); btm_cb.btm_inq_vars.rnr.remname_active = true; return BTM_CMD_STARTED; } } Loading @@ -1950,26 +1947,24 @@ void btm_process_remote_name(const RawAddress* bda, const BD_NAME bdn, bool on_le_link; if (com::android::bluetooth::flags::rnr_store_device_type()) { on_le_link = (btm_cb.btm_inq_vars.rnr.remname_dev_type == BT_DEVICE_TYPE_BLE); on_le_link = (btm_cb.rnr.remname_dev_type == BT_DEVICE_TYPE_BLE); } else { on_le_link = BTM_UseLeLink(btm_cb.btm_inq_vars.rnr.remname_bda); on_le_link = BTM_UseLeLink(btm_cb.rnr.remname_bda); } /* If the inquire BDA and remote DBA are the same, then stop the timer and set * the active to false */ if (btm_cb.btm_inq_vars.rnr.remname_active) { if (rem_name.bd_addr == RawAddress::kEmpty || rem_name.bd_addr == btm_cb.btm_inq_vars.rnr.remname_bda) { if (btm_cb.rnr.remname_active) { if (rem_name.bd_addr == RawAddress::kEmpty || rem_name.bd_addr == btm_cb.rnr.remname_bda) { log::info( "RNR received expected name bd_addr:{} hci_status:{} le_link:{}", rem_name.bd_addr.ToRedactedStringForLogging(), hci_status_code_text(hci_status), on_le_link); if (on_le_link && hci_status == HCI_ERR_UNSPECIFIED) { btm_ble_cancel_remote_name(btm_cb.btm_inq_vars.rnr.remname_bda); btm_ble_cancel_remote_name(btm_cb.rnr.remname_bda); } alarm_cancel(btm_cb.btm_inq_vars.rnr.remote_name_timer); alarm_cancel(btm_cb.rnr.remote_name_timer); /* Clean up and return the status if the command was not successful */ /* Note: If part of the inquiry, the name is not stored, and the */ /* inquiry complete callback is called. */ Loading @@ -1987,12 +1982,12 @@ 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.rnr.remname_active = false; btm_cb.btm_inq_vars.rnr.remname_bda = RawAddress::kEmpty; btm_cb.btm_inq_vars.rnr.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; btm_cb.rnr.remname_active = false; btm_cb.rnr.remname_bda = RawAddress::kEmpty; btm_cb.rnr.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; tBTM_NAME_CMPL_CB* p_cb = btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb; btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb = nullptr; tBTM_NAME_CMPL_CB* p_cb = btm_cb.rnr.p_remname_cmpl_cb; btm_cb.rnr.p_remname_cmpl_cb = nullptr; if (p_cb) (p_cb)(&rem_name); } else { log::warn("RNR received UNKNOWN name bd_addr:{} hci_status:{} le_link:{}", Loading @@ -2004,9 +1999,8 @@ void btm_process_remote_name(const RawAddress* bda, const BD_NAME bdn, "RNR received UNEXPECTED name bd_addr:{} inq_addr:{} hci_status:{} " "le_link:{} rnr_active:{}", rem_name.bd_addr.ToRedactedStringForLogging(), btm_cb.btm_inq_vars.rnr.remname_bda.ToRedactedStringForLogging(), hci_status_code_text(hci_status), on_le_link, btm_cb.btm_inq_vars.rnr.remname_active); btm_cb.rnr.remname_bda.ToRedactedStringForLogging(), hci_status_code_text(hci_status), on_le_link, btm_cb.rnr.remname_active); } } Loading @@ -2026,11 +2020,10 @@ void btm_inq_remote_name_timer_timeout(void* /* data */) { * ******************************************************************************/ void btm_inq_rmt_name_failed_cancelled(void) { log::error("remname_active={}", btm_cb.btm_inq_vars.rnr.remname_active); log::error("remname_active={}", btm_cb.rnr.remname_active); if (btm_cb.btm_inq_vars.rnr.remname_active) { btm_process_remote_name(&btm_cb.btm_inq_vars.rnr.remname_bda, NULL, 0, HCI_ERR_UNSPECIFIED); if (btm_cb.rnr.remname_active) { btm_process_remote_name(&btm_cb.rnr.remname_bda, NULL, 0, HCI_ERR_UNSPECIFIED); } btm_sec_rmt_name_request_complete(NULL, NULL, HCI_ERR_UNSPECIFIED); Loading system/stack/btm/btm_int_types.h +6 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ #include <string> #include "common/circular_buffer.h" #include "internal_include/bt_target.h" #include "osi/include/fixed_queue.h" #include "stack/acl/acl.h" #include "stack/btm/btm_ble_int_types.h" Loading @@ -33,6 +32,7 @@ #include "stack/btm/neighbor_inquiry.h" #include "stack/include/btm_ble_api_types.h" #include "stack/include/security_client_callbacks.h" #include "stack/rnr/remote_name_request.h" #include "types/raw_address.h" constexpr size_t kMaxLogSize = 255; Loading Loading @@ -172,6 +172,8 @@ typedef struct tBTM_CB { kMaxInquiryScanHistory); } neighbor; bluetooth::rnr::RemoteNameRequest rnr; void Init() { memset(&devcb, 0, sizeof(devcb)); memset(&ble_ctr_cb, 0, sizeof(ble_ctr_cb)); Loading @@ -182,6 +184,8 @@ typedef struct tBTM_CB { acl_cb_ = {}; neighbor = {}; rnr = {}; rnr.remote_name_timer = alarm_new("rnr.remote_name_timer"); /* Initialize BTM component structures */ btm_inq_vars.Init(); /* Inquiry Database and Structures */ Loading @@ -196,6 +200,7 @@ typedef struct tBTM_CB { } void Free() { alarm_free(rnr.remote_name_timer); history_.reset(); devcb.Free(); Loading system/stack/btm/neighbor_inquiry.h +1 −11 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ #include "stack/include/bt_name.h" #include "stack/include/btm_api_types.h" #include "stack/include/hci_error_code.h" #include "stack/rnr/remote_name_request.h" #include "types/ble_address_with_type.h" #include "types/raw_address.h" Loading Loading @@ -211,8 +210,6 @@ struct tBTM_INQUIRY_VAR_ST { uint16_t inq_scan_type; uint16_t page_scan_type; /* current page scan type */ bluetooth::rnr::RemoteNameRequest rnr; tBTM_CMPL_CB* p_inq_cmpl_cb; tBTM_INQ_RESULTS_CB* p_inq_results_cb; uint32_t inq_counter; /* Counter incremented each time an inquiry completes */ Loading @@ -238,12 +235,8 @@ struct tBTM_INQUIRY_VAR_ST { bool registered_for_hci_events; void Init() { alarm_free(rnr.remote_name_timer); alarm_free(classic_inquiry_timer); rnr = {}; rnr.remote_name_timer = alarm_new("rnr.remote_name_timer"); classic_inquiry_timer = alarm_new("btm_inq.classic_inquiry_timer"); discoverable_mode = BTM_NON_DISCOVERABLE; Loading @@ -269,10 +262,7 @@ struct tBTM_INQUIRY_VAR_ST { inq_active = 0; registered_for_hci_events = false; } void Free() { alarm_free(rnr.remote_name_timer); alarm_free(classic_inquiry_timer); } void Free() { alarm_free(classic_inquiry_timer); } }; bool btm_inq_find_bdaddr(const RawAddress& p_bda); Loading system/stack/include/btm_api.h +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include "stack/btm/neighbor_inquiry.h" #include "stack/include/btm_api_types.h" #include "stack/include/btm_status.h" #include "stack/rnr/remote_name_request.h" #include "types/bt_transport.h" #include "types/raw_address.h" Loading Loading
system/stack/btm/btm_ble_gap.cc +13 −14 Original line number Diff line number Diff line Loading @@ -1696,22 +1696,21 @@ tBTM_STATUS btm_ble_read_remote_name(const RawAddress& remote_bda, } /* read remote device name using GATT procedure */ if (btm_cb.btm_inq_vars.rnr.remname_active) { log::warn( "Unable to start GATT RNR procedure for peer:{} busy with peer:{}", remote_bda, btm_cb.btm_inq_vars.rnr.remname_bda); if (btm_cb.rnr.remname_active) { log::warn("Unable to start GATT RNR procedure for peer:{} busy with peer:{}", remote_bda, btm_cb.rnr.remname_bda); return BTM_BUSY; } if (!GAP_BleReadPeerDevName(remote_bda, btm_ble_read_remote_name_cmpl)) return BTM_BUSY; btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb = p_cb; btm_cb.btm_inq_vars.rnr.remname_active = true; btm_cb.btm_inq_vars.rnr.remname_bda = remote_bda; btm_cb.btm_inq_vars.rnr.remname_dev_type = BT_DEVICE_TYPE_BLE; btm_cb.rnr.p_remname_cmpl_cb = p_cb; btm_cb.rnr.remname_active = true; btm_cb.rnr.remname_bda = remote_bda; btm_cb.rnr.remname_dev_type = BT_DEVICE_TYPE_BLE; alarm_set_on_mloop(btm_cb.btm_inq_vars.rnr.remote_name_timer, BTM_EXT_BLE_RMT_NAME_TIMEOUT_MS, alarm_set_on_mloop(btm_cb.rnr.remote_name_timer, BTM_EXT_BLE_RMT_NAME_TIMEOUT_MS, btm_inq_remote_name_timer_timeout, NULL); return BTM_CMD_STARTED; Loading @@ -1733,10 +1732,10 @@ bool btm_ble_cancel_remote_name(const RawAddress& remote_bda) { status = GAP_BleCancelReadPeerDevName(remote_bda); btm_cb.btm_inq_vars.rnr.remname_active = false; btm_cb.btm_inq_vars.rnr.remname_bda = RawAddress::kEmpty; btm_cb.btm_inq_vars.rnr.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; alarm_cancel(btm_cb.btm_inq_vars.rnr.remote_name_timer); btm_cb.rnr.remname_active = false; btm_cb.rnr.remname_bda = RawAddress::kEmpty; btm_cb.rnr.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; alarm_cancel(btm_cb.rnr.remote_name_timer); return status; } Loading
system/stack/btm/btm_inq.cc +39 −46 Original line number Diff line number Diff line Loading @@ -859,14 +859,14 @@ tBTM_STATUS BTM_CancelRemoteDeviceName(void) { bool is_le; /* Make sure there is not already one in progress */ if (!btm_cb.btm_inq_vars.rnr.remname_active) { if (!btm_cb.rnr.remname_active) { return (BTM_WRONG_MODE); } if (com::android::bluetooth::flags::rnr_store_device_type()) { is_le = (btm_cb.btm_inq_vars.rnr.remname_dev_type == BT_DEVICE_TYPE_BLE); is_le = (btm_cb.rnr.remname_dev_type == BT_DEVICE_TYPE_BLE); } else { is_le = BTM_UseLeLink(btm_cb.btm_inq_vars.rnr.remname_bda); is_le = BTM_UseLeLink(btm_cb.rnr.remname_bda); } if (is_le) { Loading @@ -874,11 +874,9 @@ tBTM_STATUS BTM_CancelRemoteDeviceName(void) { * callback. */ btm_inq_rmt_name_failed_cancelled(); } else { bluetooth::shim::ACL_CancelRemoteNameRequest( btm_cb.btm_inq_vars.rnr.remname_bda); bluetooth::shim::ACL_CancelRemoteNameRequest(btm_cb.rnr.remname_bda); if (com::android::bluetooth::flags::rnr_reset_state_at_cancel()) { btm_process_remote_name(&btm_cb.btm_inq_vars.rnr.remname_bda, nullptr, 0, HCI_ERR_UNSPECIFIED); btm_process_remote_name(&btm_cb.rnr.remname_bda, nullptr, 0, HCI_ERR_UNSPECIFIED); } } return (BTM_CMD_STARTED); Loading Loading @@ -1049,18 +1047,18 @@ void btm_inq_db_reset(void) { /* Cancel a remote name request if active, and notify the caller (if waiting) */ if (btm_cb.btm_inq_vars.rnr.remname_active) { alarm_cancel(btm_cb.btm_inq_vars.rnr.remote_name_timer); btm_cb.btm_inq_vars.rnr.remname_active = false; btm_cb.btm_inq_vars.rnr.remname_bda = RawAddress::kEmpty; btm_cb.btm_inq_vars.rnr.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; if (btm_cb.rnr.remname_active) { alarm_cancel(btm_cb.rnr.remote_name_timer); btm_cb.rnr.remname_active = false; btm_cb.rnr.remname_bda = RawAddress::kEmpty; btm_cb.rnr.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; if (btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb) { if (btm_cb.rnr.p_remname_cmpl_cb) { rem_name.status = BTM_DEV_RESET; rem_name.hci_status = HCI_SUCCESS; (*btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb)(&rem_name); btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb = NULL; (*btm_cb.rnr.p_remname_cmpl_cb)(&rem_name); btm_cb.rnr.p_remname_cmpl_cb = NULL; } } Loading Loading @@ -1876,7 +1874,7 @@ tBTM_STATUS btm_initiate_rem_name(const RawAddress& remote_bda, tBTM_NAME_CMPL_CB* p_cb) { /*** Make sure the device is ready ***/ if (!BTM_IsDeviceUp()) return (BTM_WRONG_MODE); if (btm_cb.btm_inq_vars.rnr.remname_active) { if (btm_cb.rnr.remname_active) { return (BTM_BUSY); } else { /* If the database entry exists for the device, use its clock offset */ Loading Loading @@ -1915,15 +1913,14 @@ tBTM_STATUS btm_initiate_rem_name(const RawAddress& remote_bda, clock_offset); } btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb = p_cb; btm_cb.btm_inq_vars.rnr.remname_bda = remote_bda; btm_cb.btm_inq_vars.rnr.remname_dev_type = BT_DEVICE_TYPE_BREDR; btm_cb.btm_inq_vars.rnr.remname_active = true; btm_cb.rnr.p_remname_cmpl_cb = p_cb; btm_cb.rnr.remname_bda = remote_bda; btm_cb.rnr.remname_dev_type = BT_DEVICE_TYPE_BREDR; btm_cb.rnr.remname_active = true; alarm_set_on_mloop(btm_cb.btm_inq_vars.rnr.remote_name_timer, timeout_ms, btm_inq_remote_name_timer_timeout, NULL); alarm_set_on_mloop(btm_cb.rnr.remote_name_timer, timeout_ms, btm_inq_remote_name_timer_timeout, NULL); btm_cb.btm_inq_vars.rnr.remname_active = true; return BTM_CMD_STARTED; } } Loading @@ -1950,26 +1947,24 @@ void btm_process_remote_name(const RawAddress* bda, const BD_NAME bdn, bool on_le_link; if (com::android::bluetooth::flags::rnr_store_device_type()) { on_le_link = (btm_cb.btm_inq_vars.rnr.remname_dev_type == BT_DEVICE_TYPE_BLE); on_le_link = (btm_cb.rnr.remname_dev_type == BT_DEVICE_TYPE_BLE); } else { on_le_link = BTM_UseLeLink(btm_cb.btm_inq_vars.rnr.remname_bda); on_le_link = BTM_UseLeLink(btm_cb.rnr.remname_bda); } /* If the inquire BDA and remote DBA are the same, then stop the timer and set * the active to false */ if (btm_cb.btm_inq_vars.rnr.remname_active) { if (rem_name.bd_addr == RawAddress::kEmpty || rem_name.bd_addr == btm_cb.btm_inq_vars.rnr.remname_bda) { if (btm_cb.rnr.remname_active) { if (rem_name.bd_addr == RawAddress::kEmpty || rem_name.bd_addr == btm_cb.rnr.remname_bda) { log::info( "RNR received expected name bd_addr:{} hci_status:{} le_link:{}", rem_name.bd_addr.ToRedactedStringForLogging(), hci_status_code_text(hci_status), on_le_link); if (on_le_link && hci_status == HCI_ERR_UNSPECIFIED) { btm_ble_cancel_remote_name(btm_cb.btm_inq_vars.rnr.remname_bda); btm_ble_cancel_remote_name(btm_cb.rnr.remname_bda); } alarm_cancel(btm_cb.btm_inq_vars.rnr.remote_name_timer); alarm_cancel(btm_cb.rnr.remote_name_timer); /* Clean up and return the status if the command was not successful */ /* Note: If part of the inquiry, the name is not stored, and the */ /* inquiry complete callback is called. */ Loading @@ -1987,12 +1982,12 @@ 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.rnr.remname_active = false; btm_cb.btm_inq_vars.rnr.remname_bda = RawAddress::kEmpty; btm_cb.btm_inq_vars.rnr.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; btm_cb.rnr.remname_active = false; btm_cb.rnr.remname_bda = RawAddress::kEmpty; btm_cb.rnr.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN; tBTM_NAME_CMPL_CB* p_cb = btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb; btm_cb.btm_inq_vars.rnr.p_remname_cmpl_cb = nullptr; tBTM_NAME_CMPL_CB* p_cb = btm_cb.rnr.p_remname_cmpl_cb; btm_cb.rnr.p_remname_cmpl_cb = nullptr; if (p_cb) (p_cb)(&rem_name); } else { log::warn("RNR received UNKNOWN name bd_addr:{} hci_status:{} le_link:{}", Loading @@ -2004,9 +1999,8 @@ void btm_process_remote_name(const RawAddress* bda, const BD_NAME bdn, "RNR received UNEXPECTED name bd_addr:{} inq_addr:{} hci_status:{} " "le_link:{} rnr_active:{}", rem_name.bd_addr.ToRedactedStringForLogging(), btm_cb.btm_inq_vars.rnr.remname_bda.ToRedactedStringForLogging(), hci_status_code_text(hci_status), on_le_link, btm_cb.btm_inq_vars.rnr.remname_active); btm_cb.rnr.remname_bda.ToRedactedStringForLogging(), hci_status_code_text(hci_status), on_le_link, btm_cb.rnr.remname_active); } } Loading @@ -2026,11 +2020,10 @@ void btm_inq_remote_name_timer_timeout(void* /* data */) { * ******************************************************************************/ void btm_inq_rmt_name_failed_cancelled(void) { log::error("remname_active={}", btm_cb.btm_inq_vars.rnr.remname_active); log::error("remname_active={}", btm_cb.rnr.remname_active); if (btm_cb.btm_inq_vars.rnr.remname_active) { btm_process_remote_name(&btm_cb.btm_inq_vars.rnr.remname_bda, NULL, 0, HCI_ERR_UNSPECIFIED); if (btm_cb.rnr.remname_active) { btm_process_remote_name(&btm_cb.rnr.remname_bda, NULL, 0, HCI_ERR_UNSPECIFIED); } btm_sec_rmt_name_request_complete(NULL, NULL, HCI_ERR_UNSPECIFIED); Loading
system/stack/btm/btm_int_types.h +6 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ #include <string> #include "common/circular_buffer.h" #include "internal_include/bt_target.h" #include "osi/include/fixed_queue.h" #include "stack/acl/acl.h" #include "stack/btm/btm_ble_int_types.h" Loading @@ -33,6 +32,7 @@ #include "stack/btm/neighbor_inquiry.h" #include "stack/include/btm_ble_api_types.h" #include "stack/include/security_client_callbacks.h" #include "stack/rnr/remote_name_request.h" #include "types/raw_address.h" constexpr size_t kMaxLogSize = 255; Loading Loading @@ -172,6 +172,8 @@ typedef struct tBTM_CB { kMaxInquiryScanHistory); } neighbor; bluetooth::rnr::RemoteNameRequest rnr; void Init() { memset(&devcb, 0, sizeof(devcb)); memset(&ble_ctr_cb, 0, sizeof(ble_ctr_cb)); Loading @@ -182,6 +184,8 @@ typedef struct tBTM_CB { acl_cb_ = {}; neighbor = {}; rnr = {}; rnr.remote_name_timer = alarm_new("rnr.remote_name_timer"); /* Initialize BTM component structures */ btm_inq_vars.Init(); /* Inquiry Database and Structures */ Loading @@ -196,6 +200,7 @@ typedef struct tBTM_CB { } void Free() { alarm_free(rnr.remote_name_timer); history_.reset(); devcb.Free(); Loading
system/stack/btm/neighbor_inquiry.h +1 −11 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ #include "stack/include/bt_name.h" #include "stack/include/btm_api_types.h" #include "stack/include/hci_error_code.h" #include "stack/rnr/remote_name_request.h" #include "types/ble_address_with_type.h" #include "types/raw_address.h" Loading Loading @@ -211,8 +210,6 @@ struct tBTM_INQUIRY_VAR_ST { uint16_t inq_scan_type; uint16_t page_scan_type; /* current page scan type */ bluetooth::rnr::RemoteNameRequest rnr; tBTM_CMPL_CB* p_inq_cmpl_cb; tBTM_INQ_RESULTS_CB* p_inq_results_cb; uint32_t inq_counter; /* Counter incremented each time an inquiry completes */ Loading @@ -238,12 +235,8 @@ struct tBTM_INQUIRY_VAR_ST { bool registered_for_hci_events; void Init() { alarm_free(rnr.remote_name_timer); alarm_free(classic_inquiry_timer); rnr = {}; rnr.remote_name_timer = alarm_new("rnr.remote_name_timer"); classic_inquiry_timer = alarm_new("btm_inq.classic_inquiry_timer"); discoverable_mode = BTM_NON_DISCOVERABLE; Loading @@ -269,10 +262,7 @@ struct tBTM_INQUIRY_VAR_ST { inq_active = 0; registered_for_hci_events = false; } void Free() { alarm_free(rnr.remote_name_timer); alarm_free(classic_inquiry_timer); } void Free() { alarm_free(classic_inquiry_timer); } }; bool btm_inq_find_bdaddr(const RawAddress& p_bda); Loading
system/stack/include/btm_api.h +1 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ #include "stack/btm/neighbor_inquiry.h" #include "stack/include/btm_api_types.h" #include "stack/include/btm_status.h" #include "stack/rnr/remote_name_request.h" #include "types/bt_transport.h" #include "types/raw_address.h" Loading