Loading system/bta/dm/bta_dm_act.cc +62 −17 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ #include "main/shim/btm_api.h" #include "main/shim/dumpsys.h" #include "main/shim/shim.h" #include "osi/include/fixed_queue.h" #include "osi/include/log.h" #include "osi/include/osi.h" #include "stack/btm/btm_sec.h" Loading Loading @@ -312,6 +313,8 @@ void BTA_dm_on_hw_off() { /* hw is ready, go on with BTA DM initialization */ alarm_free(bta_dm_search_cb.search_timer); alarm_free(bta_dm_search_cb.gatt_close_timer); osi_free(bta_dm_search_cb.p_pending_search); fixed_queue_free(bta_dm_search_cb.pending_discovery_queue, osi_free); memset(&bta_dm_search_cb, 0, sizeof(bta_dm_search_cb)); /* notify BTA DM is now unactive */ Loading @@ -335,6 +338,8 @@ void BTA_dm_on_hw_on() { /* hw is ready, go on with BTA DM initialization */ alarm_free(bta_dm_search_cb.search_timer); alarm_free(bta_dm_search_cb.gatt_close_timer); osi_free(bta_dm_search_cb.p_pending_search); fixed_queue_free(bta_dm_search_cb.pending_discovery_queue, osi_free); memset(&bta_dm_search_cb, 0, sizeof(bta_dm_search_cb)); /* * TODO: Should alarm_free() the bta_dm_search_cb timers during Loading @@ -343,6 +348,7 @@ void BTA_dm_on_hw_on() { bta_dm_search_cb.search_timer = alarm_new("bta_dm_search.search_timer"); bta_dm_search_cb.gatt_close_timer = alarm_new("bta_dm_search.gatt_close_timer"); bta_dm_search_cb.pending_discovery_queue = fixed_queue_new(SIZE_MAX); memset(&bta_dm_conn_srvcs, 0, sizeof(bta_dm_conn_srvcs)); memset(&bta_dm_di_cb, 0, sizeof(tBTA_DM_DI_CB)); Loading Loading @@ -1311,6 +1317,8 @@ void bta_dm_search_cmpl() { bta_dm_search_cb.p_search_cback(BTA_DM_DISC_BLE_RES_EVT, &result); bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, nullptr); bta_dm_execute_queued_request(); } /******************************************************************************* Loading Loading @@ -1407,13 +1415,13 @@ void bta_dm_free_sdp_db() { * * Function bta_dm_queue_search * * Description Queues search command while search is being cancelled * Description Queues search command * * Returns void * ******************************************************************************/ void bta_dm_queue_search(tBTA_DM_MSG* p_data) { bta_dm_search_clear_queue(); osi_free_and_reset((void**)&bta_dm_search_cb.p_pending_search); bta_dm_search_cb.p_pending_search = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_API_SEARCH)); memcpy(bta_dm_search_cb.p_pending_search, p_data, sizeof(tBTA_DM_API_SEARCH)); Loading @@ -1423,17 +1431,62 @@ void bta_dm_queue_search(tBTA_DM_MSG* p_data) { * * Function bta_dm_queue_disc * * Description Queues discovery command while search is being cancelled * Description Queues discovery command * * Returns void * ******************************************************************************/ void bta_dm_queue_disc(tBTA_DM_MSG* p_data) { bta_dm_search_clear_queue(); bta_dm_search_cb.p_pending_discovery = tBTA_DM_MSG* p_pending_discovery = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_API_DISCOVER)); memcpy(bta_dm_search_cb.p_pending_discovery, p_data, sizeof(tBTA_DM_API_DISCOVER)); memcpy(p_pending_discovery, p_data, sizeof(tBTA_DM_API_DISCOVER)); fixed_queue_enqueue(bta_dm_search_cb.pending_discovery_queue, p_pending_discovery); } /******************************************************************************* * * Function bta_dm_execute_queued_request * * Description Executes queued request if one exists * * Returns void * ******************************************************************************/ 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; } else { 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); } } } /******************************************************************************* * * Function bta_dm_is_search_request_queued * * Description Checks if there is a queued search request * * Returns bool * ******************************************************************************/ bool bta_dm_is_search_request_queued() { return bta_dm_search_cb.p_pending_search != NULL; } /******************************************************************************* Loading @@ -1447,7 +1500,7 @@ void bta_dm_queue_disc(tBTA_DM_MSG* p_data) { ******************************************************************************/ void bta_dm_search_clear_queue() { osi_free_and_reset((void**)&bta_dm_search_cb.p_pending_search); osi_free_and_reset((void**)&bta_dm_search_cb.p_pending_discovery); fixed_queue_flush(bta_dm_search_cb.pending_discovery_queue, osi_free); } /******************************************************************************* Loading @@ -1459,15 +1512,7 @@ void bta_dm_search_clear_queue() { * Returns void * ******************************************************************************/ void bta_dm_search_cancel_cmpl() { if (bta_dm_search_cb.p_pending_search) { bta_sys_sendmsg(bta_dm_search_cb.p_pending_search); bta_dm_search_cb.p_pending_search = NULL; } else if (bta_dm_search_cb.p_pending_discovery) { bta_sys_sendmsg(bta_dm_search_cb.p_pending_discovery); bta_dm_search_cb.p_pending_discovery = NULL; } } void bta_dm_search_cancel_cmpl() { bta_dm_execute_queued_request(); } /******************************************************************************* * Loading system/bta/dm/bta_dm_api.cc +13 −4 Original line number Diff line number Diff line Loading @@ -77,11 +77,16 @@ void BTA_DmSetDeviceName(char* p_name) { * Returns void * ******************************************************************************/ void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback) { void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp) { 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->p_cback = p_cback; bta_sys_sendmsg(p_msg); Loading Loading @@ -129,11 +134,15 @@ void BTA_DmSearchCancel(void) { * ******************************************************************************/ void BTA_DmDiscover(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, tBT_TRANSPORT transport) { tBT_TRANSPORT transport, bool is_bonding_or_sdp) { 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->bd_addr = bd_addr; p_msg->transport = transport; p_msg->p_cback = p_cback; Loading system/bta/dm/bta_dm_int.h +8 −4 Original line number Diff line number Diff line Loading @@ -66,17 +66,19 @@ enum { BTA_DM_SDP_RESULT_EVT, BTA_DM_SEARCH_CMPL_EVT, BTA_DM_DISCOVERY_RESULT_EVT, BTA_DM_DISC_CLOSE_TOUT_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 */ /* data type for BTA_DM_API_SEARCH_EVT and BTA_DM_API_QUEUE_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 */ /* data type for BTA_DM_API_DISCOVER_EVT and BTA_DM_API_QUEUE_DISCOVER_EVT */ typedef struct { BT_HDR_RIGID hdr; RawAddress bd_addr; Loading Loading @@ -362,7 +364,7 @@ typedef struct { alarm_t* search_timer; uint8_t service_index; tBTA_DM_MSG* p_pending_search; tBTA_DM_MSG* p_pending_discovery; fixed_queue_t* pending_discovery_queue; bool wait_disc; bool sdp_results; bluetooth::Uuid uuid; Loading Loading @@ -540,6 +542,8 @@ extern void bta_dm_search_result(tBTA_DM_MSG* p_data); extern void bta_dm_discovery_cmpl(tBTA_DM_MSG* p_data); extern void bta_dm_queue_search(tBTA_DM_MSG* p_data); extern void bta_dm_queue_disc(tBTA_DM_MSG* p_data); extern void bta_dm_execute_queued_request(); extern bool bta_dm_is_search_request_queued(); extern void bta_dm_search_clear_queue(); extern void bta_dm_search_cancel_cmpl(); extern void bta_dm_search_cancel_notify(); Loading system/bta/dm/bta_dm_main.cc +20 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,12 @@ 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: Loading @@ -100,14 +106,20 @@ 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_DISCOVER_EVT: case BTA_DM_API_QUEUE_DISCOVER_EVT: bta_dm_queue_disc(message); break; } break; 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: Loading Loading @@ -135,6 +147,14 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) { case BTA_DM_DISCOVERY_RESULT_EVT: 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; } break; } Loading system/bta/include/bta_api.h +5 −3 Original line number Diff line number Diff line Loading @@ -698,13 +698,15 @@ 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. * 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 * * * Returns void * ******************************************************************************/ extern void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback); extern void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp); /******************************************************************************* * Loading Loading @@ -732,7 +734,7 @@ extern void BTA_DmSearchCancel(void); ******************************************************************************/ extern void BTA_DmDiscover(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, tBT_TRANSPORT transport); tBT_TRANSPORT transport, bool is_bonding_or_sdp); /******************************************************************************* * Loading Loading
system/bta/dm/bta_dm_act.cc +62 −17 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ #include "main/shim/btm_api.h" #include "main/shim/dumpsys.h" #include "main/shim/shim.h" #include "osi/include/fixed_queue.h" #include "osi/include/log.h" #include "osi/include/osi.h" #include "stack/btm/btm_sec.h" Loading Loading @@ -312,6 +313,8 @@ void BTA_dm_on_hw_off() { /* hw is ready, go on with BTA DM initialization */ alarm_free(bta_dm_search_cb.search_timer); alarm_free(bta_dm_search_cb.gatt_close_timer); osi_free(bta_dm_search_cb.p_pending_search); fixed_queue_free(bta_dm_search_cb.pending_discovery_queue, osi_free); memset(&bta_dm_search_cb, 0, sizeof(bta_dm_search_cb)); /* notify BTA DM is now unactive */ Loading @@ -335,6 +338,8 @@ void BTA_dm_on_hw_on() { /* hw is ready, go on with BTA DM initialization */ alarm_free(bta_dm_search_cb.search_timer); alarm_free(bta_dm_search_cb.gatt_close_timer); osi_free(bta_dm_search_cb.p_pending_search); fixed_queue_free(bta_dm_search_cb.pending_discovery_queue, osi_free); memset(&bta_dm_search_cb, 0, sizeof(bta_dm_search_cb)); /* * TODO: Should alarm_free() the bta_dm_search_cb timers during Loading @@ -343,6 +348,7 @@ void BTA_dm_on_hw_on() { bta_dm_search_cb.search_timer = alarm_new("bta_dm_search.search_timer"); bta_dm_search_cb.gatt_close_timer = alarm_new("bta_dm_search.gatt_close_timer"); bta_dm_search_cb.pending_discovery_queue = fixed_queue_new(SIZE_MAX); memset(&bta_dm_conn_srvcs, 0, sizeof(bta_dm_conn_srvcs)); memset(&bta_dm_di_cb, 0, sizeof(tBTA_DM_DI_CB)); Loading Loading @@ -1311,6 +1317,8 @@ void bta_dm_search_cmpl() { bta_dm_search_cb.p_search_cback(BTA_DM_DISC_BLE_RES_EVT, &result); bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, nullptr); bta_dm_execute_queued_request(); } /******************************************************************************* Loading Loading @@ -1407,13 +1415,13 @@ void bta_dm_free_sdp_db() { * * Function bta_dm_queue_search * * Description Queues search command while search is being cancelled * Description Queues search command * * Returns void * ******************************************************************************/ void bta_dm_queue_search(tBTA_DM_MSG* p_data) { bta_dm_search_clear_queue(); osi_free_and_reset((void**)&bta_dm_search_cb.p_pending_search); bta_dm_search_cb.p_pending_search = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_API_SEARCH)); memcpy(bta_dm_search_cb.p_pending_search, p_data, sizeof(tBTA_DM_API_SEARCH)); Loading @@ -1423,17 +1431,62 @@ void bta_dm_queue_search(tBTA_DM_MSG* p_data) { * * Function bta_dm_queue_disc * * Description Queues discovery command while search is being cancelled * Description Queues discovery command * * Returns void * ******************************************************************************/ void bta_dm_queue_disc(tBTA_DM_MSG* p_data) { bta_dm_search_clear_queue(); bta_dm_search_cb.p_pending_discovery = tBTA_DM_MSG* p_pending_discovery = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_API_DISCOVER)); memcpy(bta_dm_search_cb.p_pending_discovery, p_data, sizeof(tBTA_DM_API_DISCOVER)); memcpy(p_pending_discovery, p_data, sizeof(tBTA_DM_API_DISCOVER)); fixed_queue_enqueue(bta_dm_search_cb.pending_discovery_queue, p_pending_discovery); } /******************************************************************************* * * Function bta_dm_execute_queued_request * * Description Executes queued request if one exists * * Returns void * ******************************************************************************/ 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; } else { 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); } } } /******************************************************************************* * * Function bta_dm_is_search_request_queued * * Description Checks if there is a queued search request * * Returns bool * ******************************************************************************/ bool bta_dm_is_search_request_queued() { return bta_dm_search_cb.p_pending_search != NULL; } /******************************************************************************* Loading @@ -1447,7 +1500,7 @@ void bta_dm_queue_disc(tBTA_DM_MSG* p_data) { ******************************************************************************/ void bta_dm_search_clear_queue() { osi_free_and_reset((void**)&bta_dm_search_cb.p_pending_search); osi_free_and_reset((void**)&bta_dm_search_cb.p_pending_discovery); fixed_queue_flush(bta_dm_search_cb.pending_discovery_queue, osi_free); } /******************************************************************************* Loading @@ -1459,15 +1512,7 @@ void bta_dm_search_clear_queue() { * Returns void * ******************************************************************************/ void bta_dm_search_cancel_cmpl() { if (bta_dm_search_cb.p_pending_search) { bta_sys_sendmsg(bta_dm_search_cb.p_pending_search); bta_dm_search_cb.p_pending_search = NULL; } else if (bta_dm_search_cb.p_pending_discovery) { bta_sys_sendmsg(bta_dm_search_cb.p_pending_discovery); bta_dm_search_cb.p_pending_discovery = NULL; } } void bta_dm_search_cancel_cmpl() { bta_dm_execute_queued_request(); } /******************************************************************************* * Loading
system/bta/dm/bta_dm_api.cc +13 −4 Original line number Diff line number Diff line Loading @@ -77,11 +77,16 @@ void BTA_DmSetDeviceName(char* p_name) { * Returns void * ******************************************************************************/ void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback) { void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp) { 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->p_cback = p_cback; bta_sys_sendmsg(p_msg); Loading Loading @@ -129,11 +134,15 @@ void BTA_DmSearchCancel(void) { * ******************************************************************************/ void BTA_DmDiscover(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, tBT_TRANSPORT transport) { tBT_TRANSPORT transport, bool is_bonding_or_sdp) { 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->bd_addr = bd_addr; p_msg->transport = transport; p_msg->p_cback = p_cback; Loading
system/bta/dm/bta_dm_int.h +8 −4 Original line number Diff line number Diff line Loading @@ -66,17 +66,19 @@ enum { BTA_DM_SDP_RESULT_EVT, BTA_DM_SEARCH_CMPL_EVT, BTA_DM_DISCOVERY_RESULT_EVT, BTA_DM_DISC_CLOSE_TOUT_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 */ /* data type for BTA_DM_API_SEARCH_EVT and BTA_DM_API_QUEUE_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 */ /* data type for BTA_DM_API_DISCOVER_EVT and BTA_DM_API_QUEUE_DISCOVER_EVT */ typedef struct { BT_HDR_RIGID hdr; RawAddress bd_addr; Loading Loading @@ -362,7 +364,7 @@ typedef struct { alarm_t* search_timer; uint8_t service_index; tBTA_DM_MSG* p_pending_search; tBTA_DM_MSG* p_pending_discovery; fixed_queue_t* pending_discovery_queue; bool wait_disc; bool sdp_results; bluetooth::Uuid uuid; Loading Loading @@ -540,6 +542,8 @@ extern void bta_dm_search_result(tBTA_DM_MSG* p_data); extern void bta_dm_discovery_cmpl(tBTA_DM_MSG* p_data); extern void bta_dm_queue_search(tBTA_DM_MSG* p_data); extern void bta_dm_queue_disc(tBTA_DM_MSG* p_data); extern void bta_dm_execute_queued_request(); extern bool bta_dm_is_search_request_queued(); extern void bta_dm_search_clear_queue(); extern void bta_dm_search_cancel_cmpl(); extern void bta_dm_search_cancel_notify(); Loading
system/bta/dm/bta_dm_main.cc +20 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,12 @@ 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: Loading @@ -100,14 +106,20 @@ 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_DISCOVER_EVT: case BTA_DM_API_QUEUE_DISCOVER_EVT: bta_dm_queue_disc(message); break; } break; 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: Loading Loading @@ -135,6 +147,14 @@ bool bta_dm_search_sm_execute(BT_HDR_RIGID* p_msg) { case BTA_DM_DISCOVERY_RESULT_EVT: 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; } break; } Loading
system/bta/include/bta_api.h +5 −3 Original line number Diff line number Diff line Loading @@ -698,13 +698,15 @@ 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. * 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 * * * Returns void * ******************************************************************************/ extern void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback); extern void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp); /******************************************************************************* * Loading Loading @@ -732,7 +734,7 @@ extern void BTA_DmSearchCancel(void); ******************************************************************************/ extern void BTA_DmDiscover(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback, tBT_TRANSPORT transport); tBT_TRANSPORT transport, bool is_bonding_or_sdp); /******************************************************************************* * Loading