Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2809a5c9 authored by Jakub Pawłowski's avatar Jakub Pawłowski Committed by Gerrit Code Review
Browse files

Merge changes I7b11a7df,I8ca78f91,I6c269fbc into main

* changes:
  bta_dm_find_services: reduce indendation
  bta_dm_find_services: add log describing SDP end
  bta_dm_find_services
parents 362ba731 a5c8cb8a
Loading
Loading
Loading
Loading
+51 −45
Original line number Diff line number Diff line
@@ -741,16 +741,29 @@ static void bta_dm_execute_queued_discovery_request() {
 ******************************************************************************/
static void bta_dm_find_services(const RawAddress& bd_addr) {
  while (bta_dm_discovery_cb.service_index < BTA_MAX_SERVICE_ID) {
    Uuid uuid = Uuid::kEmpty;
    if (bta_dm_discovery_cb.services_to_search &
        (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(
            bta_dm_discovery_cb.service_index))) {
      bta_dm_discovery_cb.p_sdp_db =
          (tSDP_DISCOVERY_DB*)osi_malloc(BTA_DM_SDP_DB_SIZE);
      break;
    }
    bta_dm_discovery_cb.service_index++;
  }

  /* no more services to be discovered */
  if (bta_dm_discovery_cb.service_index >= BTA_MAX_SERVICE_ID) {
    log::info("SDP - no more services to discover");
    bta_dm_disc_sm_execute(BTA_DM_DISCOVERY_RESULT_EVT,
                           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,
                               .result = BTA_SUCCESS}));
    return;
  }

  /* try to search all services by search based on L2CAP UUID */
  log::info("services_to_search={:08x}",
            bta_dm_discovery_cb.services_to_search);
  Uuid uuid = Uuid::kEmpty;
  if (bta_dm_discovery_cb.services_to_search & BTA_RES_SERVICE_MASK) {
    uuid = Uuid::From16Bit(bta_service_id_to_uuid_lkup_tbl[0]);
    bta_dm_discovery_cb.services_to_search &= ~BTA_RES_SERVICE_MASK;
@@ -759,6 +772,9 @@ static void bta_dm_find_services(const RawAddress& bd_addr) {
    bta_dm_discovery_cb.services_to_search = 0;
  }

  bta_dm_discovery_cb.p_sdp_db =
      (tSDP_DISCOVERY_DB*)osi_malloc(BTA_DM_SDP_DB_SIZE);

  log::info("search UUID = {}", uuid.ToString());
  get_legacy_stack_sdp_api()->service.SDP_InitDiscoveryDb(
      bta_dm_discovery_cb.p_sdp_db, BTA_DM_SDP_DB_SIZE, 1, &uuid, 0, NULL);
@@ -768,18 +784,23 @@ static void bta_dm_find_services(const RawAddress& bd_addr) {

  bta_dm_discovery_cb.p_sdp_db->raw_size = MAX_DISC_RAW_DATA_BUF;

      if (!get_legacy_stack_sdp_api()
               ->service.SDP_ServiceSearchAttributeRequest(
                   bd_addr, bta_dm_discovery_cb.p_sdp_db,
                   &bta_dm_sdp_callback)) {
  if (!get_legacy_stack_sdp_api()->service.SDP_ServiceSearchAttributeRequest(
          bd_addr, bta_dm_discovery_cb.p_sdp_db, &bta_dm_sdp_callback)) {
    /*
     * If discovery is not successful with this device, then
     * proceed with the next one.
     */
    osi_free_and_reset((void**)&bta_dm_discovery_cb.p_sdp_db);
    bta_dm_discovery_cb.service_index = BTA_MAX_SERVICE_ID;
    log::info("SDP not successful");
    bta_dm_disc_sm_execute(BTA_DM_DISCOVERY_RESULT_EVT,
                           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,
                               .result = BTA_SUCCESS}));
    return;
  }

      } else {
  if (uuid == Uuid::From16Bit(UUID_PROTOCOL_L2CAP)) {
    if (!is_sdp_pbap_pce_disabled(bd_addr)) {
      log::debug("SDP search for PBAP Client");
@@ -787,21 +808,6 @@ static void bta_dm_find_services(const RawAddress& bd_addr) {
    }
  }
  bta_dm_discovery_cb.service_index++;
        return;
      }
    }

    bta_dm_discovery_cb.service_index++;
  }

  /* no more services to be discovered */
  if (bta_dm_discovery_cb.service_index >= BTA_MAX_SERVICE_ID) {
    bta_dm_disc_sm_execute(BTA_DM_DISCOVERY_RESULT_EVT,
                           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,
                               .result = BTA_SUCCESS}));
  }
}

/*******************************************************************************