Loading system/bta/dm/bta_dm_disc.cc +34 −20 Original line number Diff line number Diff line Loading @@ -274,7 +274,7 @@ static void bta_dm_search_start(tBTA_DM_MSG* p_data) { get_btm_client_interface().db.BTM_ClearInqDb(nullptr); /* save search params */ bta_dm_search_cb.p_search_cback = p_data->search.p_cback; bta_dm_search_cb.p_device_search_cback = p_data->search.p_cback; bta_dm_search_cb.services = p_data->search.services; const tBTM_STATUS btm_status = Loading Loading @@ -341,7 +341,7 @@ static void bta_dm_discover(tBTA_DM_MSG* p_data) { bta_dm_gattc_register(); bta_dm_search_cb.p_search_cback = p_data->discover.p_cback; bta_dm_search_cb.p_service_search_cback = p_data->discover.p_cback; bta_dm_search_cb.services_to_search = bta_dm_search_cb.services; bta_dm_search_cb.service_index = 0; bta_dm_search_cb.services_found = 0; Loading Loading @@ -484,7 +484,8 @@ static void bta_dm_remote_name_cmpl(const tBTA_DM_MSG* p_data) { } // Callback with this property if (bta_dm_search_cb.p_search_cback != nullptr) { if (bta_dm_search_cb.p_device_search_cback != nullptr || bta_dm_search_cb.p_service_search_cback != nullptr) { tBTA_DM_SEARCH search_data = { .disc_res = // tBTA_DM_DISC_RES { Loading @@ -502,7 +503,15 @@ static void bta_dm_remote_name_cmpl(const tBTA_DM_MSG* p_data) { if (remote_name_msg.hci_status == HCI_SUCCESS) { bd_name_copy(search_data.disc_res.bd_name, remote_name_msg.bd_name); } bta_dm_search_cb.p_search_cback(BTA_DM_NAME_READ_EVT, &search_data); // Both device and service search callbacks end up sending event to java. // It's enough to send callback to just one of them. if (bta_dm_search_cb.p_device_search_cback != nullptr) { bta_dm_search_cb.p_device_search_cback(BTA_DM_NAME_READ_EVT, &search_data); } else if (bta_dm_search_cb.p_service_search_cback != nullptr) { bta_dm_search_cb.p_service_search_cback(BTA_DM_NAME_READ_EVT, &search_data); } } else { log::warn("Received remote name complete without callback"); } Loading Loading @@ -659,7 +668,7 @@ static void bta_dm_sdp_result(tBTA_DM_MSG* p_data) { bta_dm_get_remname()); result.disc_ble_res.services = &gatt_uuids; bta_dm_search_cb.p_search_cback(BTA_DM_GATT_OVER_SDP_RES_EVT, bta_dm_search_cb.p_service_search_cback(BTA_DM_GATT_OVER_SDP_RES_EVT, &result); } } else { Loading Loading @@ -726,7 +735,7 @@ static void bta_dm_sdp_result(tBTA_DM_MSG* p_data) { result.did_res.vendor_id = di_record.rec.vendor; result.did_res.product_id = di_record.rec.product; result.did_res.version = di_record.rec.version; bta_dm_search_cb.p_search_cback(BTA_DM_DID_RES_EVT, &result); bta_dm_search_cb.p_service_search_cback(BTA_DM_DID_RES_EVT, &result); } #endif Loading Loading @@ -838,7 +847,7 @@ static void bta_dm_read_dis_cmpl(const RawAddress& addr, result.did_res.vendor_id = p_dis_value->pnp_id.vendor_id; result.did_res.product_id = p_dis_value->pnp_id.product_id; result.did_res.version = p_dis_value->pnp_id.product_version; bta_dm_search_cb.p_search_cback(BTA_DM_DID_RES_EVT, &result); bta_dm_search_cb.p_service_search_cback(BTA_DM_DID_RES_EVT, &result); } bta_dm_execute_queued_request(); Loading Loading @@ -904,11 +913,16 @@ static void bta_dm_search_cmpl() { // send all result back to app if (send_gatt_results) { if (bta_dm_search_cb.p_service_search_cback) { log::info("Sending GATT results to upper layer"); bta_dm_search_cb.p_search_cback(BTA_DM_GATT_OVER_LE_RES_EVT, &result); bta_dm_search_cb.p_service_search_cback(BTA_DM_GATT_OVER_LE_RES_EVT, &result); } } bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, nullptr); if (bta_dm_search_cb.p_device_search_cback) { bta_dm_search_cb.p_device_search_cback(BTA_DM_DISC_CMPL_EVT, nullptr); } bta_dm_search_cb.gatt_disc_active = false; #if TARGET_FLOSS Loading Loading @@ -944,7 +958,7 @@ static void bta_dm_disc_result(tBTA_DM_MSG* p_data) { if (!is_gatt_over_ble && (bta_dm_search_cb.services & ((BTA_ALL_SERVICE_MASK | BTA_USER_SERVICE_MASK) & ~BTA_BLE_SERVICE_MASK))) bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, bta_dm_search_cb.p_service_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result); get_gatt_interface().BTA_GATTC_CancelOpen(0, bta_dm_search_cb.peer_bdaddr, Loading @@ -971,8 +985,8 @@ static void bta_dm_search_result(tBTA_DM_MSG* p_data) { if ((!bta_dm_search_cb.services) || ((bta_dm_search_cb.services) && (p_data->disc_result.result.disc_res.services))) { if (bta_dm_search_cb.p_search_cback) { bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, if (bta_dm_search_cb.p_service_search_cback) { bta_dm_search_cb.p_service_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result); } else { log::warn("Received search result without valid callback"); Loading Loading @@ -1125,8 +1139,8 @@ static void bta_dm_search_clear_queue() { * ******************************************************************************/ static void bta_dm_search_cancel_notify() { if (bta_dm_search_cb.p_search_cback) { bta_dm_search_cb.p_search_cback(BTA_DM_SEARCH_CANCEL_CMPL_EVT, NULL); if (bta_dm_search_cb.p_device_search_cback) { bta_dm_search_cb.p_device_search_cback(BTA_DM_SEARCH_CANCEL_CMPL_EVT, NULL); } switch (bta_dm_search_get_state()) { case BTA_DM_SEARCH_ACTIVE: Loading Loading @@ -1511,8 +1525,8 @@ static void bta_dm_inq_results_cb(tBTM_INQ_RESULTS* p_inq, const uint8_t* p_eir, result.inq_res.remt_name_not_required = false; } if (bta_dm_search_cb.p_search_cback) bta_dm_search_cb.p_search_cback(BTA_DM_INQ_RES_EVT, &result); if (bta_dm_search_cb.p_device_search_cback) bta_dm_search_cb.p_device_search_cback(BTA_DM_INQ_RES_EVT, &result); if (p_inq_info) { /* application indicates if it knows the remote name, inside the callback Loading system/bta/dm/bta_dm_disc_int.h +2 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,8 @@ inline std::string bta_dm_state_text(const tBTA_DM_STATE& state) { /* DM search control block */ typedef struct { tBTA_DM_SEARCH_CBACK* p_search_cback; tBTA_DM_SEARCH_CBACK* p_device_search_cback; tBTA_DM_SEARCH_CBACK* p_service_search_cback; tBTM_INQ_INFO* p_btm_inq_info; tBTA_SERVICE_MASK services; tBTA_SERVICE_MASK services_to_search; Loading system/bta/test/bta_dm_test.cc +2 −1 Original line number Diff line number Diff line Loading @@ -405,7 +405,8 @@ TEST_F(BtaDmTest, bta_dm_remname_cback__typical) { TEST_F(BtaDmTest, bta_dm_remname_cback__wrong_address) { tBTA_DM_SEARCH_CB search_cb = bluetooth::legacy::testing::bta_dm_disc_get_search_cb(); search_cb.p_search_cback = nullptr; search_cb.p_device_search_cback = nullptr; search_cb.p_service_search_cback = nullptr; search_cb.peer_bdaddr = kRawAddress; search_cb.name_discover_done = false; bluetooth::legacy::testing::bta_dm_disc_search_cb(search_cb); Loading system/btif/src/btif_dm.cc +0 −14 Original line number Diff line number Diff line Loading @@ -1685,9 +1685,6 @@ static void btif_dm_search_devices_evt(tBTA_DM_SEARCH_EVT event, } } break; case BTA_DM_INQ_CMPL_EVT: { /* do nothing */ } break; case BTA_DM_DISC_CMPL_EVT: { GetInterfaceToProfiles()->events->invoke_discovery_state_changed_cb( BT_DISCOVERY_STOPPED); Loading @@ -1707,9 +1704,6 @@ static void btif_dm_search_devices_evt(tBTA_DM_SEARCH_EVT event, BT_DISCOVERY_STOPPED); } } break; case BTA_DM_GATT_OVER_LE_RES_EVT: case BTA_DM_DID_RES_EVT: case BTA_DM_GATT_OVER_SDP_RES_EVT: default: log::warn("Unhandled event:{}", bta_dm_search_evt_text(event)); break; Loading Loading @@ -1935,14 +1929,6 @@ static void btif_dm_search_services_evt(tBTA_DM_SEARCH_EVT event, } } break; case BTA_DM_DISC_CMPL_EVT: /* fixme */ break; case BTA_DM_SEARCH_CANCEL_CMPL_EVT: /* no-op */ break; case BTA_DM_GATT_OVER_SDP_RES_EVT: case BTA_DM_GATT_OVER_LE_RES_EVT: { int num_properties = 0; Loading Loading
system/bta/dm/bta_dm_disc.cc +34 −20 Original line number Diff line number Diff line Loading @@ -274,7 +274,7 @@ static void bta_dm_search_start(tBTA_DM_MSG* p_data) { get_btm_client_interface().db.BTM_ClearInqDb(nullptr); /* save search params */ bta_dm_search_cb.p_search_cback = p_data->search.p_cback; bta_dm_search_cb.p_device_search_cback = p_data->search.p_cback; bta_dm_search_cb.services = p_data->search.services; const tBTM_STATUS btm_status = Loading Loading @@ -341,7 +341,7 @@ static void bta_dm_discover(tBTA_DM_MSG* p_data) { bta_dm_gattc_register(); bta_dm_search_cb.p_search_cback = p_data->discover.p_cback; bta_dm_search_cb.p_service_search_cback = p_data->discover.p_cback; bta_dm_search_cb.services_to_search = bta_dm_search_cb.services; bta_dm_search_cb.service_index = 0; bta_dm_search_cb.services_found = 0; Loading Loading @@ -484,7 +484,8 @@ static void bta_dm_remote_name_cmpl(const tBTA_DM_MSG* p_data) { } // Callback with this property if (bta_dm_search_cb.p_search_cback != nullptr) { if (bta_dm_search_cb.p_device_search_cback != nullptr || bta_dm_search_cb.p_service_search_cback != nullptr) { tBTA_DM_SEARCH search_data = { .disc_res = // tBTA_DM_DISC_RES { Loading @@ -502,7 +503,15 @@ static void bta_dm_remote_name_cmpl(const tBTA_DM_MSG* p_data) { if (remote_name_msg.hci_status == HCI_SUCCESS) { bd_name_copy(search_data.disc_res.bd_name, remote_name_msg.bd_name); } bta_dm_search_cb.p_search_cback(BTA_DM_NAME_READ_EVT, &search_data); // Both device and service search callbacks end up sending event to java. // It's enough to send callback to just one of them. if (bta_dm_search_cb.p_device_search_cback != nullptr) { bta_dm_search_cb.p_device_search_cback(BTA_DM_NAME_READ_EVT, &search_data); } else if (bta_dm_search_cb.p_service_search_cback != nullptr) { bta_dm_search_cb.p_service_search_cback(BTA_DM_NAME_READ_EVT, &search_data); } } else { log::warn("Received remote name complete without callback"); } Loading Loading @@ -659,7 +668,7 @@ static void bta_dm_sdp_result(tBTA_DM_MSG* p_data) { bta_dm_get_remname()); result.disc_ble_res.services = &gatt_uuids; bta_dm_search_cb.p_search_cback(BTA_DM_GATT_OVER_SDP_RES_EVT, bta_dm_search_cb.p_service_search_cback(BTA_DM_GATT_OVER_SDP_RES_EVT, &result); } } else { Loading Loading @@ -726,7 +735,7 @@ static void bta_dm_sdp_result(tBTA_DM_MSG* p_data) { result.did_res.vendor_id = di_record.rec.vendor; result.did_res.product_id = di_record.rec.product; result.did_res.version = di_record.rec.version; bta_dm_search_cb.p_search_cback(BTA_DM_DID_RES_EVT, &result); bta_dm_search_cb.p_service_search_cback(BTA_DM_DID_RES_EVT, &result); } #endif Loading Loading @@ -838,7 +847,7 @@ static void bta_dm_read_dis_cmpl(const RawAddress& addr, result.did_res.vendor_id = p_dis_value->pnp_id.vendor_id; result.did_res.product_id = p_dis_value->pnp_id.product_id; result.did_res.version = p_dis_value->pnp_id.product_version; bta_dm_search_cb.p_search_cback(BTA_DM_DID_RES_EVT, &result); bta_dm_search_cb.p_service_search_cback(BTA_DM_DID_RES_EVT, &result); } bta_dm_execute_queued_request(); Loading Loading @@ -904,11 +913,16 @@ static void bta_dm_search_cmpl() { // send all result back to app if (send_gatt_results) { if (bta_dm_search_cb.p_service_search_cback) { log::info("Sending GATT results to upper layer"); bta_dm_search_cb.p_search_cback(BTA_DM_GATT_OVER_LE_RES_EVT, &result); bta_dm_search_cb.p_service_search_cback(BTA_DM_GATT_OVER_LE_RES_EVT, &result); } } bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, nullptr); if (bta_dm_search_cb.p_device_search_cback) { bta_dm_search_cb.p_device_search_cback(BTA_DM_DISC_CMPL_EVT, nullptr); } bta_dm_search_cb.gatt_disc_active = false; #if TARGET_FLOSS Loading Loading @@ -944,7 +958,7 @@ static void bta_dm_disc_result(tBTA_DM_MSG* p_data) { if (!is_gatt_over_ble && (bta_dm_search_cb.services & ((BTA_ALL_SERVICE_MASK | BTA_USER_SERVICE_MASK) & ~BTA_BLE_SERVICE_MASK))) bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, bta_dm_search_cb.p_service_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result); get_gatt_interface().BTA_GATTC_CancelOpen(0, bta_dm_search_cb.peer_bdaddr, Loading @@ -971,8 +985,8 @@ static void bta_dm_search_result(tBTA_DM_MSG* p_data) { if ((!bta_dm_search_cb.services) || ((bta_dm_search_cb.services) && (p_data->disc_result.result.disc_res.services))) { if (bta_dm_search_cb.p_search_cback) { bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, if (bta_dm_search_cb.p_service_search_cback) { bta_dm_search_cb.p_service_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result); } else { log::warn("Received search result without valid callback"); Loading Loading @@ -1125,8 +1139,8 @@ static void bta_dm_search_clear_queue() { * ******************************************************************************/ static void bta_dm_search_cancel_notify() { if (bta_dm_search_cb.p_search_cback) { bta_dm_search_cb.p_search_cback(BTA_DM_SEARCH_CANCEL_CMPL_EVT, NULL); if (bta_dm_search_cb.p_device_search_cback) { bta_dm_search_cb.p_device_search_cback(BTA_DM_SEARCH_CANCEL_CMPL_EVT, NULL); } switch (bta_dm_search_get_state()) { case BTA_DM_SEARCH_ACTIVE: Loading Loading @@ -1511,8 +1525,8 @@ static void bta_dm_inq_results_cb(tBTM_INQ_RESULTS* p_inq, const uint8_t* p_eir, result.inq_res.remt_name_not_required = false; } if (bta_dm_search_cb.p_search_cback) bta_dm_search_cb.p_search_cback(BTA_DM_INQ_RES_EVT, &result); if (bta_dm_search_cb.p_device_search_cback) bta_dm_search_cb.p_device_search_cback(BTA_DM_INQ_RES_EVT, &result); if (p_inq_info) { /* application indicates if it knows the remote name, inside the callback Loading
system/bta/dm/bta_dm_disc_int.h +2 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,8 @@ inline std::string bta_dm_state_text(const tBTA_DM_STATE& state) { /* DM search control block */ typedef struct { tBTA_DM_SEARCH_CBACK* p_search_cback; tBTA_DM_SEARCH_CBACK* p_device_search_cback; tBTA_DM_SEARCH_CBACK* p_service_search_cback; tBTM_INQ_INFO* p_btm_inq_info; tBTA_SERVICE_MASK services; tBTA_SERVICE_MASK services_to_search; Loading
system/bta/test/bta_dm_test.cc +2 −1 Original line number Diff line number Diff line Loading @@ -405,7 +405,8 @@ TEST_F(BtaDmTest, bta_dm_remname_cback__typical) { TEST_F(BtaDmTest, bta_dm_remname_cback__wrong_address) { tBTA_DM_SEARCH_CB search_cb = bluetooth::legacy::testing::bta_dm_disc_get_search_cb(); search_cb.p_search_cback = nullptr; search_cb.p_device_search_cback = nullptr; search_cb.p_service_search_cback = nullptr; search_cb.peer_bdaddr = kRawAddress; search_cb.name_discover_done = false; bluetooth::legacy::testing::bta_dm_disc_search_cb(search_cb); Loading
system/btif/src/btif_dm.cc +0 −14 Original line number Diff line number Diff line Loading @@ -1685,9 +1685,6 @@ static void btif_dm_search_devices_evt(tBTA_DM_SEARCH_EVT event, } } break; case BTA_DM_INQ_CMPL_EVT: { /* do nothing */ } break; case BTA_DM_DISC_CMPL_EVT: { GetInterfaceToProfiles()->events->invoke_discovery_state_changed_cb( BT_DISCOVERY_STOPPED); Loading @@ -1707,9 +1704,6 @@ static void btif_dm_search_devices_evt(tBTA_DM_SEARCH_EVT event, BT_DISCOVERY_STOPPED); } } break; case BTA_DM_GATT_OVER_LE_RES_EVT: case BTA_DM_DID_RES_EVT: case BTA_DM_GATT_OVER_SDP_RES_EVT: default: log::warn("Unhandled event:{}", bta_dm_search_evt_text(event)); break; Loading Loading @@ -1935,14 +1929,6 @@ static void btif_dm_search_services_evt(tBTA_DM_SEARCH_EVT event, } } break; case BTA_DM_DISC_CMPL_EVT: /* fixme */ break; case BTA_DM_SEARCH_CANCEL_CMPL_EVT: /* no-op */ break; case BTA_DM_GATT_OVER_SDP_RES_EVT: case BTA_DM_GATT_OVER_LE_RES_EVT: { int num_properties = 0; Loading