diff --git a/system/bta/dm/bta_dm_act.cc b/system/bta/dm/bta_dm_act.cc index 479fe72f7902cfc863d5ef454b6649b4169c5276..af2d4ba3a6db39cbafc163be4062aef95885615a 100644 --- a/system/bta/dm/bta_dm_act.cc +++ b/system/bta/dm/bta_dm_act.cc @@ -1469,11 +1469,6 @@ void bta_dm_queue_disc(tBTA_DM_MSG* p_data) { ******************************************************************************/ void bta_dm_execute_queued_request() { if (bta_dm_search_cb.p_pending_search) { - // Updated queued event to search event to trigger start search - if (bta_dm_search_cb.p_pending_search->hdr.event == - BTA_DM_API_QUEUE_SEARCH_EVT) { - bta_dm_search_cb.p_pending_search->hdr.event = BTA_DM_API_SEARCH_EVT; - } LOG_INFO("%s Start pending search", __func__); bta_sys_sendmsg(bta_dm_search_cb.p_pending_search); bta_dm_search_cb.p_pending_search = NULL; @@ -1481,9 +1476,6 @@ void bta_dm_execute_queued_request() { tBTA_DM_MSG* p_pending_discovery = (tBTA_DM_MSG*)fixed_queue_try_dequeue( bta_dm_search_cb.pending_discovery_queue); if (p_pending_discovery) { - if (p_pending_discovery->hdr.event == BTA_DM_API_QUEUE_DISCOVER_EVT) { - p_pending_discovery->hdr.event = BTA_DM_API_DISCOVER_EVT; - } LOG_INFO("%s Start pending discovery", __func__); bta_sys_sendmsg(p_pending_discovery); } diff --git a/system/bta/dm/bta_dm_api.cc b/system/bta/dm/bta_dm_api.cc index 2bdeee6df1d498a5918102f17e6edd1a68a603c4..25d72841d1cac076706f4d2ad3262d6844997d17 100644 --- a/system/bta/dm/bta_dm_api.cc +++ b/system/bta/dm/bta_dm_api.cc @@ -80,16 +80,11 @@ void BTA_DmSetDeviceName(const char* p_name) { * Returns void * ******************************************************************************/ -void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp) { +void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback) { tBTA_DM_API_SEARCH* p_msg = (tBTA_DM_API_SEARCH*)osi_calloc(sizeof(tBTA_DM_API_SEARCH)); - /* Queue request if a device is bonding or performing service discovery */ - if (is_bonding_or_sdp) { - p_msg->hdr.event = BTA_DM_API_QUEUE_SEARCH_EVT; - } else { - p_msg->hdr.event = BTA_DM_API_SEARCH_EVT; - } + p_msg->hdr.event = BTA_DM_API_SEARCH_EVT; p_msg->p_cback = p_cback; bta_sys_sendmsg(p_msg); @@ -138,15 +133,11 @@ void BTA_DmSearchCancel(void) { * ******************************************************************************/ void BTA_DmDiscover(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, - tBT_TRANSPORT transport, bool is_bonding_or_sdp) { + tBT_TRANSPORT transport) { tBTA_DM_API_DISCOVER* p_msg = (tBTA_DM_API_DISCOVER*)osi_calloc(sizeof(tBTA_DM_API_DISCOVER)); - if (is_bonding_or_sdp) { - p_msg->hdr.event = BTA_DM_API_QUEUE_DISCOVER_EVT; - } else { - p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT; - } + p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT; p_msg->bd_addr = bd_addr; p_msg->transport = transport; p_msg->p_cback = p_cback; diff --git a/system/bta/dm/bta_dm_int.h b/system/bta/dm/bta_dm_int.h index 2de81f9e5b33b4910ebff002ad162d8ac0a66d1b..0d868bb3628b2de9d4b0bc94fde3bcaa17842a0b 100644 --- a/system/bta/dm/bta_dm_int.h +++ b/system/bta/dm/bta_dm_int.h @@ -71,18 +71,16 @@ enum { BTA_DM_SEARCH_CMPL_EVT, BTA_DM_DISCOVERY_RESULT_EVT, BTA_DM_DISC_CLOSE_TOUT_EVT, - BTA_DM_API_QUEUE_SEARCH_EVT, - BTA_DM_API_QUEUE_DISCOVER_EVT }; -/* data type for BTA_DM_API_SEARCH_EVT and BTA_DM_API_QUEUE_SEARCH_EVT */ +/* data type for BTA_DM_API_SEARCH_EVT */ typedef struct { BT_HDR_RIGID hdr; tBTA_SERVICE_MASK services; tBTA_DM_SEARCH_CBACK* p_cback; } tBTA_DM_API_SEARCH; -/* data type for BTA_DM_API_DISCOVER_EVT and BTA_DM_API_QUEUE_DISCOVER_EVT */ +/* data type for BTA_DM_API_DISCOVER_EVT */ typedef struct { BT_HDR_RIGID hdr; RawAddress bd_addr; diff --git a/system/bta/dm/bta_dm_main.cc b/system/bta/dm/bta_dm_main.cc index 523831b9da2e76ca5358caa01c9c099268ee5d5d..e84479084556c015101ce62c7774e4abaa47d755 100644 --- a/system/bta/dm/bta_dm_main.cc +++ b/system/bta/dm/bta_dm_main.cc @@ -82,12 +82,6 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) { case BTA_DM_DISC_CLOSE_TOUT_EVT: bta_dm_close_gatt_conn(message); break; - case BTA_DM_API_QUEUE_SEARCH_EVT: - bta_dm_queue_search(message); - break; - case BTA_DM_API_QUEUE_DISCOVER_EVT: - bta_dm_queue_disc(message); - break; } break; case BTA_DM_SEARCH_ACTIVE: @@ -108,7 +102,6 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) { bta_dm_close_gatt_conn(message); break; case BTA_DM_API_DISCOVER_EVT: - case BTA_DM_API_QUEUE_DISCOVER_EVT: bta_dm_queue_disc(message); break; } @@ -116,11 +109,9 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) { case BTA_DM_SEARCH_CANCELLING: switch (p_msg->event) { case BTA_DM_API_SEARCH_EVT: - case BTA_DM_API_QUEUE_SEARCH_EVT: bta_dm_queue_search(message); break; case BTA_DM_API_DISCOVER_EVT: - case BTA_DM_API_QUEUE_DISCOVER_EVT: bta_dm_queue_disc(message); break; case BTA_DM_SDP_RESULT_EVT: @@ -149,11 +140,9 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) { bta_dm_disc_result(message); break; case BTA_DM_API_SEARCH_EVT: - case BTA_DM_API_QUEUE_SEARCH_EVT: bta_dm_queue_search(message); break; case BTA_DM_API_DISCOVER_EVT: - case BTA_DM_API_QUEUE_DISCOVER_EVT: bta_dm_queue_disc(message); break; } diff --git a/system/bta/include/bta_api.h b/system/bta/include/bta_api.h index 4e905c582a6ef9529f96cc6fd701f10dcda97ee0..d6b0f75146ce1c249a57b93eb41ba590d27d5c9f 100644 --- a/system/bta/include/bta_api.h +++ b/system/bta/include/bta_api.h @@ -718,15 +718,13 @@ extern bool BTA_DmSetVisibility(bt_scan_mode_t mode); * first performs an inquiry; for each device found from the * inquiry it gets the remote name of the device. If * parameter services is nonzero, service discovery will be - * performed on each device for the services specified. If the - * parameter is_bonding_or_sdp is true, the request will be - * queued until bonding or sdp completes + * performed on each device for the services specified. * * * Returns void * ******************************************************************************/ -extern void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp); +extern void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback); /******************************************************************************* * @@ -754,7 +752,7 @@ extern void BTA_DmSearchCancel(void); ******************************************************************************/ extern void BTA_DmDiscover(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, - tBT_TRANSPORT transport, bool is_bonding_or_sdp); + tBT_TRANSPORT transport); /******************************************************************************* * diff --git a/system/btif/src/btif_dm.cc b/system/btif/src/btif_dm.cc index a9c56c743e0bdd2bd952e9801b4b7ca63e176436..b4ff72f09664fd66761f40b9109fee5430da0dd0 100644 --- a/system/btif/src/btif_dm.cc +++ b/system/btif/src/btif_dm.cc @@ -1933,6 +1933,7 @@ static void bta_energy_info_cb(tBTM_BLE_TX_TIME_MS tx_time, void btif_dm_start_discovery(void) { BTIF_TRACE_EVENT("%s", __func__); + /* no race here because we're guaranteed to be in the main thread */ if (bta_dm_is_search_request_queued()) { LOG_INFO("%s skipping start discovery because a request is queued", __func__); @@ -1942,7 +1943,7 @@ void btif_dm_start_discovery(void) { /* Will be enabled to true once inquiry busy level has been received */ btif_dm_inquiry_in_progress = false; /* find nearby devices */ - BTA_DmSearch(btif_dm_search_devices_evt, is_bonding_or_sdp()); + BTA_DmSearch(btif_dm_search_devices_evt); } /******************************************************************************* @@ -2425,10 +2426,7 @@ void btif_dm_get_remote_services(RawAddress remote_addr, const int transport) { BTIF_TRACE_EVENT("%s: transport=%d, remote_addr=%s", __func__, transport, remote_addr.ToString().c_str()); - BTA_DmDiscover(remote_addr, btif_dm_search_services_evt, transport, - remote_addr != pairing_cb.bd_addr && - remote_addr != pairing_cb.static_bdaddr && - is_bonding_or_sdp()); + BTA_DmDiscover(remote_addr, btif_dm_search_services_evt, transport); } void btif_dm_enable_service(tBTA_SERVICE_ID service_id, bool enable) { diff --git a/system/test/mock/mock_bta_dm_api.cc b/system/test/mock/mock_bta_dm_api.cc index 4cbab7ef4b5e308bdb399b4cea36f7b962d9c1ab..bbb46abd9f34de2e4bd0b8c80a6dfa843a68e7dc 100644 --- a/system/test/mock/mock_bta_dm_api.cc +++ b/system/test/mock/mock_bta_dm_api.cc @@ -163,10 +163,9 @@ void BTA_DmConfirm(const RawAddress& bd_addr, bool accept) { test::mock::bta_dm_api::BTA_DmConfirm(bd_addr, accept); } void BTA_DmDiscover(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, - tBT_TRANSPORT transport, bool is_bonding_or_sd) { + tBT_TRANSPORT transport) { mock_function_count_map[__func__]++; - test::mock::bta_dm_api::BTA_DmDiscover(bd_addr, p_cback, transport, - is_bonding_or_sd); + test::mock::bta_dm_api::BTA_DmDiscover(bd_addr, p_cback, transport); } bool BTA_DmGetConnectionState(const RawAddress& bd_addr) { mock_function_count_map[__func__]++; @@ -185,9 +184,9 @@ tBTA_STATUS BTA_DmRemoveDevice(const RawAddress& bd_addr) { mock_function_count_map[__func__]++; return test::mock::bta_dm_api::BTA_DmRemoveDevice(bd_addr); } -void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp) { +void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback) { mock_function_count_map[__func__]++; - test::mock::bta_dm_api::BTA_DmSearch(p_cback, is_bonding_or_sdp); + test::mock::bta_dm_api::BTA_DmSearch(p_cback); } void BTA_DmSearchCancel(void) { mock_function_count_map[__func__]++; diff --git a/system/test/mock/mock_bta_dm_api.h b/system/test/mock/mock_bta_dm_api.h index d9dd9ba4ed9bc0d6744e887d244fa1a735989af1..3e64ff3679aa546e107920954dfb851355cea1c9 100644 --- a/system/test/mock/mock_bta_dm_api.h +++ b/system/test/mock/mock_bta_dm_api.h @@ -280,15 +280,15 @@ extern struct BTA_DmConfirm BTA_DmConfirm; // Name: BTA_DmDiscover // Params: const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, -// tBT_TRANSPORT transport, bool is_bonding_or_sd Return: void +// tBT_TRANSPORT transport Return: void struct BTA_DmDiscover { std::function<void(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, - tBT_TRANSPORT transport, bool is_bonding_or_sd)> + tBT_TRANSPORT transport)> body{[](const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, - tBT_TRANSPORT transport, bool is_bonding_or_sd) {}}; + tBT_TRANSPORT transport) {}}; void operator()(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, - tBT_TRANSPORT transport, bool is_bonding_or_sd) { - body(bd_addr, p_cback, transport, is_bonding_or_sd); + tBT_TRANSPORT transport) { + body(bd_addr, p_cback, transport); }; }; extern struct BTA_DmDiscover BTA_DmDiscover; @@ -340,14 +340,12 @@ struct BTA_DmRemoveDevice { extern struct BTA_DmRemoveDevice BTA_DmRemoveDevice; // Name: BTA_DmSearch -// Params: tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp +// Params: tBTA_DM_SEARCH_CBACK* p_cback // Return: void struct BTA_DmSearch { - std::function<void(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp)> - body{[](tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp) {}}; - void operator()(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp) { - body(p_cback, is_bonding_or_sdp); - }; + std::function<void(tBTA_DM_SEARCH_CBACK* p_cback)> body{ + [](tBTA_DM_SEARCH_CBACK* p_cback) {}}; + void operator()(tBTA_DM_SEARCH_CBACK* p_cback) { body(p_cback); }; }; extern struct BTA_DmSearch BTA_DmSearch;