Loading apex/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ apex { manifest: "apex_manifest.json", bootclasspath_fragments: ["com.android.btservices-bootclasspath-fragment"], systemserverclasspath_fragments: ["com.android.btservices-systemserverclasspath-fragment"], compat_configs: ["bluetooth-compat-config"], apps: ["Bluetooth"], multilib: { Loading Loading @@ -55,6 +56,7 @@ apex { manifest: "apex_manifest.json", bootclasspath_fragments: ["com.android.btservices-bootclasspath-fragment"], systemserverclasspath_fragments: ["com.android.btservices-systemserverclasspath-fragment"], compat_configs: ["bluetooth-compat-config"], apps: ["Bluetooth"], multilib: { Loading service/Android.bp +6 −0 Original line number Diff line number Diff line Loading @@ -127,3 +127,9 @@ java_library { ], min_sdk_version: "Tiramisu" } platform_compat_config { name: "bluetooth-compat-config", src: ":service-bluetooth-pre-jarjar", } system/bta/dm/bta_dm_act.cc +59 −23 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ #include "main/shim/shim.h" #include "osi/include/allocator.h" #include "osi/include/compat.h" #include "osi/include/fixed_queue.h" #include "osi/include/log.h" #include "osi/include/osi.h" #include "stack/btm/btm_ble_int.h" Loading Loading @@ -320,6 +321,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)); } Loading @@ -339,6 +342,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 @@ -347,6 +352,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 @@ -990,7 +996,7 @@ static bool bta_dm_read_remote_device_name(const RawAddress& bd_addr, void bta_dm_inq_cmpl(uint8_t num) { if (bta_dm_search_get_state() == BTA_DM_SEARCH_CANCELLING) { bta_dm_search_set_state(BTA_DM_SEARCH_IDLE); bta_dm_search_cancel_cmpl(); bta_dm_execute_queued_request(); return; } Loading Loading @@ -1289,6 +1295,7 @@ void bta_dm_search_cmpl() { /* no BLE connection, i.e. Classic service discovery end */ if (conn_id == GATT_INVALID_CONN_ID) { bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, nullptr); bta_dm_execute_queued_request(); return; } Loading @@ -1299,6 +1306,7 @@ void bta_dm_search_cmpl() { if (count == 0) { LOG_INFO("Empty GATT database - no BLE services discovered"); bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, nullptr); bta_dm_execute_queued_request(); return; } Loading @@ -1323,6 +1331,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 @@ -1419,13 +1429,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 @@ -1435,50 +1445,76 @@ 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_search_clear_queue * Function bta_dm_execute_queued_request * * Description Clears the queue if API search cancel is called * Description Executes queued request if one exists * * Returns void * ******************************************************************************/ 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); 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_search_cancel_cmpl * Function bta_dm_is_search_request_queued * * Description Search cancel is complete * Description Checks if there is a queued search request * * Returns void * Returns bool * ******************************************************************************/ 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; bool bta_dm_is_search_request_queued() { return bta_dm_search_cb.p_pending_search != NULL; } /******************************************************************************* * * Function bta_dm_search_clear_queue * * Description Clears the queue if API search cancel is called * * Returns void * ******************************************************************************/ void bta_dm_search_clear_queue() { osi_free_and_reset((void**)&bta_dm_search_cb.p_pending_search); fixed_queue_flush(bta_dm_search_cb.pending_discovery_queue, osi_free); } /******************************************************************************* Loading system/bta/dm/bta_dm_api.cc +15 −5 Original line number Diff line number Diff line Loading @@ -80,11 +80,16 @@ void BTA_DmSetDeviceName(const 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 @@ -101,6 +106,8 @@ void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback) { * ******************************************************************************/ void BTA_DmSearchCancel(void) { bta_dm_search_clear_queue(); switch (bta_dm_search_get_state()) { case BTA_DM_SEARCH_IDLE: bta_dm_search_cancel_notify(); Loading @@ -110,7 +117,6 @@ void BTA_DmSearchCancel(void) { bta_dm_search_cancel(); break; case BTA_DM_SEARCH_CANCELLING: bta_dm_search_clear_queue(); bta_dm_search_cancel_notify(); break; case BTA_DM_DISCOVER_ACTIVE: Loading @@ -132,11 +138,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 −5 Original line number Diff line number Diff line Loading @@ -70,17 +70,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 @@ -356,7 +358,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 @@ -533,8 +535,9 @@ 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(); extern void bta_dm_disc_rmt_name(tBTA_DM_MSG* p_data); extern tBTA_DM_PEER_DEVICE* bta_dm_find_peer_device( Loading Loading
apex/Android.bp +2 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ apex { manifest: "apex_manifest.json", bootclasspath_fragments: ["com.android.btservices-bootclasspath-fragment"], systemserverclasspath_fragments: ["com.android.btservices-systemserverclasspath-fragment"], compat_configs: ["bluetooth-compat-config"], apps: ["Bluetooth"], multilib: { Loading Loading @@ -55,6 +56,7 @@ apex { manifest: "apex_manifest.json", bootclasspath_fragments: ["com.android.btservices-bootclasspath-fragment"], systemserverclasspath_fragments: ["com.android.btservices-systemserverclasspath-fragment"], compat_configs: ["bluetooth-compat-config"], apps: ["Bluetooth"], multilib: { Loading
service/Android.bp +6 −0 Original line number Diff line number Diff line Loading @@ -127,3 +127,9 @@ java_library { ], min_sdk_version: "Tiramisu" } platform_compat_config { name: "bluetooth-compat-config", src: ":service-bluetooth-pre-jarjar", }
system/bta/dm/bta_dm_act.cc +59 −23 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ #include "main/shim/shim.h" #include "osi/include/allocator.h" #include "osi/include/compat.h" #include "osi/include/fixed_queue.h" #include "osi/include/log.h" #include "osi/include/osi.h" #include "stack/btm/btm_ble_int.h" Loading Loading @@ -320,6 +321,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)); } Loading @@ -339,6 +342,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 @@ -347,6 +352,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 @@ -990,7 +996,7 @@ static bool bta_dm_read_remote_device_name(const RawAddress& bd_addr, void bta_dm_inq_cmpl(uint8_t num) { if (bta_dm_search_get_state() == BTA_DM_SEARCH_CANCELLING) { bta_dm_search_set_state(BTA_DM_SEARCH_IDLE); bta_dm_search_cancel_cmpl(); bta_dm_execute_queued_request(); return; } Loading Loading @@ -1289,6 +1295,7 @@ void bta_dm_search_cmpl() { /* no BLE connection, i.e. Classic service discovery end */ if (conn_id == GATT_INVALID_CONN_ID) { bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, nullptr); bta_dm_execute_queued_request(); return; } Loading @@ -1299,6 +1306,7 @@ void bta_dm_search_cmpl() { if (count == 0) { LOG_INFO("Empty GATT database - no BLE services discovered"); bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, nullptr); bta_dm_execute_queued_request(); return; } Loading @@ -1323,6 +1331,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 @@ -1419,13 +1429,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 @@ -1435,50 +1445,76 @@ 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_search_clear_queue * Function bta_dm_execute_queued_request * * Description Clears the queue if API search cancel is called * Description Executes queued request if one exists * * Returns void * ******************************************************************************/ 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); 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_search_cancel_cmpl * Function bta_dm_is_search_request_queued * * Description Search cancel is complete * Description Checks if there is a queued search request * * Returns void * Returns bool * ******************************************************************************/ 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; bool bta_dm_is_search_request_queued() { return bta_dm_search_cb.p_pending_search != NULL; } /******************************************************************************* * * Function bta_dm_search_clear_queue * * Description Clears the queue if API search cancel is called * * Returns void * ******************************************************************************/ void bta_dm_search_clear_queue() { osi_free_and_reset((void**)&bta_dm_search_cb.p_pending_search); fixed_queue_flush(bta_dm_search_cb.pending_discovery_queue, osi_free); } /******************************************************************************* Loading
system/bta/dm/bta_dm_api.cc +15 −5 Original line number Diff line number Diff line Loading @@ -80,11 +80,16 @@ void BTA_DmSetDeviceName(const 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 @@ -101,6 +106,8 @@ void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback) { * ******************************************************************************/ void BTA_DmSearchCancel(void) { bta_dm_search_clear_queue(); switch (bta_dm_search_get_state()) { case BTA_DM_SEARCH_IDLE: bta_dm_search_cancel_notify(); Loading @@ -110,7 +117,6 @@ void BTA_DmSearchCancel(void) { bta_dm_search_cancel(); break; case BTA_DM_SEARCH_CANCELLING: bta_dm_search_clear_queue(); bta_dm_search_cancel_notify(); break; case BTA_DM_DISCOVER_ACTIVE: Loading @@ -132,11 +138,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 −5 Original line number Diff line number Diff line Loading @@ -70,17 +70,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 @@ -356,7 +358,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 @@ -533,8 +535,9 @@ 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(); extern void bta_dm_disc_rmt_name(tBTA_DM_MSG* p_data); extern tBTA_DM_PEER_DEVICE* bta_dm_find_peer_device( Loading