Loading system/bta/dm/bta_dm_disc.cc +12 −15 Original line number Diff line number Diff line Loading @@ -399,6 +399,8 @@ static void bta_dm_sdp_result(tSDP_STATUS sdp_result) { if ((sdp_result == SDP_SUCCESS) || (sdp_result == SDP_NO_RECS_MATCH) || (sdp_result == SDP_DB_FULL)) { log::verbose("sdp_result::0x{:x}", sdp_result); std::vector<Uuid> gatt_uuids; do { p_sdp_rec = NULL; if (bta_dm_discovery_cb.service_index == (BTA_USER_SERVICE_ID + 1)) { Loading @@ -419,9 +421,6 @@ static void bta_dm_sdp_result(tSDP_STATUS sdp_result) { * service UUID */ if (bta_dm_discovery_cb.service_index == BTA_MAX_SERVICE_ID) { /* all GATT based services */ std::vector<Uuid> gatt_uuids; do { /* find a service record, report it */ p_sdp_rec = get_legacy_stack_sdp_api()->db.SDP_FindServiceInDb( Loading @@ -437,11 +436,6 @@ static void bta_dm_sdp_result(tSDP_STATUS sdp_result) { if (!gatt_uuids.empty()) { log::info("GATT services discovered using SDP"); // send all result back to app bta_dm_discovery_cb.service_search_cbacks.on_gatt_results( bta_dm_discovery_cb.peer_bdaddr, BD_NAME{}, gatt_uuids, /* transport_le */ false); } } else { if ((p_sdp_rec != NULL)) { Loading Loading @@ -518,6 +512,7 @@ static void bta_dm_sdp_result(tSDP_STATUS sdp_result) { disc_result.result = BTA_SUCCESS; disc_result.uuids = std::move(uuid_list); disc_result.gatt_uuids = std::move(gatt_uuids); // Copy the raw_data to the discovery result structure if (bta_dm_discovery_cb.p_sdp_db != NULL && bta_dm_discovery_cb.p_sdp_db->raw_used != 0 && Loading Loading @@ -602,15 +597,17 @@ static void bta_dm_read_dis_cmpl(const RawAddress& addr, static void bta_dm_disc_result(tBTA_DM_SVC_RES& disc_result) { log::verbose(""); /* disc_res.device_type is set only when GATT discovery is finished in * bta_dm_gatt_disc_complete */ bool is_gatt_over_ble = ((disc_result.device_type & BT_DEVICE_TYPE_BLE) != 0); /* if any BR/EDR service discovery has been done, report the event */ if (!is_gatt_over_ble) { if (!disc_result.is_gatt_over_ble) { auto& r = disc_result; if (!r.gatt_uuids.empty()) { log::info("Sending GATT services discovered using SDP"); // send GATT result back to app, if any bta_dm_discovery_cb.service_search_cbacks.on_gatt_results( r.bd_addr, BD_NAME{}, r.gatt_uuids, /* transport_le */ false); } bta_dm_discovery_cb.service_search_cbacks.on_service_discovery_results( r.bd_addr, r.services, r.device_type, r.uuids, r.result, r.hci_status); r.bd_addr, r.services, r.uuids, r.result, r.hci_status); } else { GAP_BleReadPeerPrefConnParams(bta_dm_discovery_cb.peer_bdaddr); Loading Loading @@ -928,7 +925,7 @@ static void bta_dm_gatt_disc_complete(uint16_t conn_id, tGATT_STATUS status) { std::make_unique<tBTA_DM_MSG>(tBTA_DM_SVC_RES{ .bd_addr = bta_dm_discovery_cb.peer_bdaddr, .services = bta_dm_discovery_cb.services_found, .device_type = BT_DEVICE_TYPE_BLE, .is_gatt_over_ble = true, .gatt_uuids = std::move(gatt_services), .result = (status == GATT_SUCCESS) ? BTA_SUCCESS : BTA_FAILURE})); Loading system/bta/dm/bta_dm_disc_int.h +1 −1 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ typedef struct { typedef struct { RawAddress bd_addr; /* BD address peer device. */ tBTA_SERVICE_MASK services; /* Services found on peer device. */ tBT_DEVICE_TYPE device_type; /* device type in case it is BLE device */ bool is_gatt_over_ble; std::vector<bluetooth::Uuid> uuids; std::vector<bluetooth::Uuid> gatt_uuids; tBTA_STATUS result; Loading system/bta/dm/bta_dm_disc_legacy.cc +1 −1 Original line number Diff line number Diff line Loading @@ -920,7 +920,7 @@ static void bta_dm_disc_result(tBTA_DM_SVC_RES& disc_result) { if (!is_gatt_over_ble) { auto& r = disc_result; bta_dm_search_cb.service_search_cbacks.on_service_discovery_results( r.bd_addr, r.services, r.device_type, r.uuids, r.result, r.hci_status); r.bd_addr, r.services, r.uuids, r.result, r.hci_status); } /* Services were discovered while device search is in progress. Loading system/bta/include/bta_api.h +0 −1 Original line number Diff line number Diff line Loading @@ -297,7 +297,6 @@ typedef void(tBTA_DM_NAME_READ_CBACK)(RawAddress bd_addr, tHCI_ERROR_CODE hci_status, const BD_NAME bd_name); typedef void(tBTA_DM_DISC_CBACK)(RawAddress bd_addr, tBTA_SERVICE_MASK services, tBT_DEVICE_TYPE device_type, const std::vector<bluetooth::Uuid>& uuids, tBTA_STATUS result, tHCI_STATUS hci_status); struct service_discovery_callbacks { Loading system/bta/test/bta_disc_test.cc +6 −6 Original line number Diff line number Diff line Loading @@ -177,8 +177,8 @@ TEST_F(BtaInitializedTest, bta_dm_disc_start_service_discovery__BT_TRANSPORT_AUTO) { bta_dm_disc_start_service_discovery( {nullptr, nullptr, nullptr, [](RawAddress, tBTA_SERVICE_MASK, tBT_DEVICE_TYPE, const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}}, [](RawAddress, tBTA_SERVICE_MASK, const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}}, kRawAddress, BT_TRANSPORT_AUTO); } Loading @@ -186,8 +186,8 @@ TEST_F(BtaInitializedTest, bta_dm_disc_start_service_discovery__BT_TRANSPORT_BR_EDR) { bta_dm_disc_start_service_discovery( {nullptr, nullptr, nullptr, [](RawAddress, tBTA_SERVICE_MASK, tBT_DEVICE_TYPE, const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}}, [](RawAddress, tBTA_SERVICE_MASK, const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}}, kRawAddress, BT_TRANSPORT_BR_EDR); } Loading @@ -195,8 +195,8 @@ TEST_F(BtaInitializedTest, bta_dm_disc_start_service_discovery__BT_TRANSPORT_LE) { bta_dm_disc_start_service_discovery( {nullptr, nullptr, nullptr, [](RawAddress, tBTA_SERVICE_MASK, tBT_DEVICE_TYPE, const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}}, [](RawAddress, tBTA_SERVICE_MASK, const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}}, kRawAddress, BT_TRANSPORT_LE); } Loading Loading
system/bta/dm/bta_dm_disc.cc +12 −15 Original line number Diff line number Diff line Loading @@ -399,6 +399,8 @@ static void bta_dm_sdp_result(tSDP_STATUS sdp_result) { if ((sdp_result == SDP_SUCCESS) || (sdp_result == SDP_NO_RECS_MATCH) || (sdp_result == SDP_DB_FULL)) { log::verbose("sdp_result::0x{:x}", sdp_result); std::vector<Uuid> gatt_uuids; do { p_sdp_rec = NULL; if (bta_dm_discovery_cb.service_index == (BTA_USER_SERVICE_ID + 1)) { Loading @@ -419,9 +421,6 @@ static void bta_dm_sdp_result(tSDP_STATUS sdp_result) { * service UUID */ if (bta_dm_discovery_cb.service_index == BTA_MAX_SERVICE_ID) { /* all GATT based services */ std::vector<Uuid> gatt_uuids; do { /* find a service record, report it */ p_sdp_rec = get_legacy_stack_sdp_api()->db.SDP_FindServiceInDb( Loading @@ -437,11 +436,6 @@ static void bta_dm_sdp_result(tSDP_STATUS sdp_result) { if (!gatt_uuids.empty()) { log::info("GATT services discovered using SDP"); // send all result back to app bta_dm_discovery_cb.service_search_cbacks.on_gatt_results( bta_dm_discovery_cb.peer_bdaddr, BD_NAME{}, gatt_uuids, /* transport_le */ false); } } else { if ((p_sdp_rec != NULL)) { Loading Loading @@ -518,6 +512,7 @@ static void bta_dm_sdp_result(tSDP_STATUS sdp_result) { disc_result.result = BTA_SUCCESS; disc_result.uuids = std::move(uuid_list); disc_result.gatt_uuids = std::move(gatt_uuids); // Copy the raw_data to the discovery result structure if (bta_dm_discovery_cb.p_sdp_db != NULL && bta_dm_discovery_cb.p_sdp_db->raw_used != 0 && Loading Loading @@ -602,15 +597,17 @@ static void bta_dm_read_dis_cmpl(const RawAddress& addr, static void bta_dm_disc_result(tBTA_DM_SVC_RES& disc_result) { log::verbose(""); /* disc_res.device_type is set only when GATT discovery is finished in * bta_dm_gatt_disc_complete */ bool is_gatt_over_ble = ((disc_result.device_type & BT_DEVICE_TYPE_BLE) != 0); /* if any BR/EDR service discovery has been done, report the event */ if (!is_gatt_over_ble) { if (!disc_result.is_gatt_over_ble) { auto& r = disc_result; if (!r.gatt_uuids.empty()) { log::info("Sending GATT services discovered using SDP"); // send GATT result back to app, if any bta_dm_discovery_cb.service_search_cbacks.on_gatt_results( r.bd_addr, BD_NAME{}, r.gatt_uuids, /* transport_le */ false); } bta_dm_discovery_cb.service_search_cbacks.on_service_discovery_results( r.bd_addr, r.services, r.device_type, r.uuids, r.result, r.hci_status); r.bd_addr, r.services, r.uuids, r.result, r.hci_status); } else { GAP_BleReadPeerPrefConnParams(bta_dm_discovery_cb.peer_bdaddr); Loading Loading @@ -928,7 +925,7 @@ static void bta_dm_gatt_disc_complete(uint16_t conn_id, tGATT_STATUS status) { std::make_unique<tBTA_DM_MSG>(tBTA_DM_SVC_RES{ .bd_addr = bta_dm_discovery_cb.peer_bdaddr, .services = bta_dm_discovery_cb.services_found, .device_type = BT_DEVICE_TYPE_BLE, .is_gatt_over_ble = true, .gatt_uuids = std::move(gatt_services), .result = (status == GATT_SUCCESS) ? BTA_SUCCESS : BTA_FAILURE})); Loading
system/bta/dm/bta_dm_disc_int.h +1 −1 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ typedef struct { typedef struct { RawAddress bd_addr; /* BD address peer device. */ tBTA_SERVICE_MASK services; /* Services found on peer device. */ tBT_DEVICE_TYPE device_type; /* device type in case it is BLE device */ bool is_gatt_over_ble; std::vector<bluetooth::Uuid> uuids; std::vector<bluetooth::Uuid> gatt_uuids; tBTA_STATUS result; Loading
system/bta/dm/bta_dm_disc_legacy.cc +1 −1 Original line number Diff line number Diff line Loading @@ -920,7 +920,7 @@ static void bta_dm_disc_result(tBTA_DM_SVC_RES& disc_result) { if (!is_gatt_over_ble) { auto& r = disc_result; bta_dm_search_cb.service_search_cbacks.on_service_discovery_results( r.bd_addr, r.services, r.device_type, r.uuids, r.result, r.hci_status); r.bd_addr, r.services, r.uuids, r.result, r.hci_status); } /* Services were discovered while device search is in progress. Loading
system/bta/include/bta_api.h +0 −1 Original line number Diff line number Diff line Loading @@ -297,7 +297,6 @@ typedef void(tBTA_DM_NAME_READ_CBACK)(RawAddress bd_addr, tHCI_ERROR_CODE hci_status, const BD_NAME bd_name); typedef void(tBTA_DM_DISC_CBACK)(RawAddress bd_addr, tBTA_SERVICE_MASK services, tBT_DEVICE_TYPE device_type, const std::vector<bluetooth::Uuid>& uuids, tBTA_STATUS result, tHCI_STATUS hci_status); struct service_discovery_callbacks { Loading
system/bta/test/bta_disc_test.cc +6 −6 Original line number Diff line number Diff line Loading @@ -177,8 +177,8 @@ TEST_F(BtaInitializedTest, bta_dm_disc_start_service_discovery__BT_TRANSPORT_AUTO) { bta_dm_disc_start_service_discovery( {nullptr, nullptr, nullptr, [](RawAddress, tBTA_SERVICE_MASK, tBT_DEVICE_TYPE, const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}}, [](RawAddress, tBTA_SERVICE_MASK, const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}}, kRawAddress, BT_TRANSPORT_AUTO); } Loading @@ -186,8 +186,8 @@ TEST_F(BtaInitializedTest, bta_dm_disc_start_service_discovery__BT_TRANSPORT_BR_EDR) { bta_dm_disc_start_service_discovery( {nullptr, nullptr, nullptr, [](RawAddress, tBTA_SERVICE_MASK, tBT_DEVICE_TYPE, const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}}, [](RawAddress, tBTA_SERVICE_MASK, const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}}, kRawAddress, BT_TRANSPORT_BR_EDR); } Loading @@ -195,8 +195,8 @@ TEST_F(BtaInitializedTest, bta_dm_disc_start_service_discovery__BT_TRANSPORT_LE) { bta_dm_disc_start_service_discovery( {nullptr, nullptr, nullptr, [](RawAddress, tBTA_SERVICE_MASK, tBT_DEVICE_TYPE, const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}}, [](RawAddress, tBTA_SERVICE_MASK, const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}}, kRawAddress, BT_TRANSPORT_LE); } Loading