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

Commit 6c26e1e0 authored by Jakub Pawłowski's avatar Jakub Pawłowski Committed by Automerger Merge Worker
Browse files

Merge "Move callback for GATT discovered through SDP to bta_dm_disc_result"...

Merge "Move callback for GATT discovered through SDP to bta_dm_disc_result" into main am: 2b019843

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/3060324



Change-Id: I087654d2debaf67e7c13422b35fa14b3b084d331
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 6ed84b3f 2b019843
Loading
Loading
Loading
Loading
+12 −15
Original line number Original line Diff line number Diff line
@@ -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) ||
  if ((sdp_result == SDP_SUCCESS) || (sdp_result == SDP_NO_RECS_MATCH) ||
      (sdp_result == SDP_DB_FULL)) {
      (sdp_result == SDP_DB_FULL)) {
    log::verbose("sdp_result::0x{:x}", sdp_result);
    log::verbose("sdp_result::0x{:x}", sdp_result);
    std::vector<Uuid> gatt_uuids;

    do {
    do {
      p_sdp_rec = NULL;
      p_sdp_rec = NULL;
      if (bta_dm_discovery_cb.service_index == (BTA_USER_SERVICE_ID + 1)) {
      if (bta_dm_discovery_cb.service_index == (BTA_USER_SERVICE_ID + 1)) {
@@ -419,9 +421,6 @@ static void bta_dm_sdp_result(tSDP_STATUS sdp_result) {
       * service UUID */
       * service UUID */
      if (bta_dm_discovery_cb.service_index == BTA_MAX_SERVICE_ID) {
      if (bta_dm_discovery_cb.service_index == BTA_MAX_SERVICE_ID) {
        /* all GATT based services */
        /* all GATT based services */

        std::vector<Uuid> gatt_uuids;

        do {
        do {
          /* find a service record, report it */
          /* find a service record, report it */
          p_sdp_rec = get_legacy_stack_sdp_api()->db.SDP_FindServiceInDb(
          p_sdp_rec = get_legacy_stack_sdp_api()->db.SDP_FindServiceInDb(
@@ -437,11 +436,6 @@ static void bta_dm_sdp_result(tSDP_STATUS sdp_result) {


        if (!gatt_uuids.empty()) {
        if (!gatt_uuids.empty()) {
          log::info("GATT services discovered using SDP");
          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 {
      } else {
        if ((p_sdp_rec != NULL)) {
        if ((p_sdp_rec != NULL)) {
@@ -518,6 +512,7 @@ static void bta_dm_sdp_result(tSDP_STATUS sdp_result) {


      disc_result.result = BTA_SUCCESS;
      disc_result.result = BTA_SUCCESS;
      disc_result.uuids = std::move(uuid_list);
      disc_result.uuids = std::move(uuid_list);
      disc_result.gatt_uuids = std::move(gatt_uuids);
      // Copy the raw_data to the discovery result structure
      // Copy the raw_data to the discovery result structure
      if (bta_dm_discovery_cb.p_sdp_db != NULL &&
      if (bta_dm_discovery_cb.p_sdp_db != NULL &&
          bta_dm_discovery_cb.p_sdp_db->raw_used != 0 &&
          bta_dm_discovery_cb.p_sdp_db->raw_used != 0 &&
@@ -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) {
static void bta_dm_disc_result(tBTA_DM_SVC_RES& disc_result) {
  log::verbose("");
  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 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;
    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(
    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 {
  } else {
    GAP_BleReadPeerPrefConnParams(bta_dm_discovery_cb.peer_bdaddr);
    GAP_BleReadPeerPrefConnParams(bta_dm_discovery_cb.peer_bdaddr);


@@ -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{
      std::make_unique<tBTA_DM_MSG>(tBTA_DM_SVC_RES{
          .bd_addr = bta_dm_discovery_cb.peer_bdaddr,
          .bd_addr = bta_dm_discovery_cb.peer_bdaddr,
          .services = bta_dm_discovery_cb.services_found,
          .services = bta_dm_discovery_cb.services_found,
          .device_type = BT_DEVICE_TYPE_BLE,
          .is_gatt_over_ble = true,
          .gatt_uuids = std::move(gatt_services),
          .gatt_uuids = std::move(gatt_services),
          .result = (status == GATT_SUCCESS) ? BTA_SUCCESS : BTA_FAILURE}));
          .result = (status == GATT_SUCCESS) ? BTA_SUCCESS : BTA_FAILURE}));


+1 −1
Original line number Original line Diff line number Diff line
@@ -59,7 +59,7 @@ typedef struct {
typedef struct {
typedef struct {
  RawAddress bd_addr;          /* BD address peer device. */
  RawAddress bd_addr;          /* BD address peer device. */
  tBTA_SERVICE_MASK services;  /* Services found on 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> uuids;
  std::vector<bluetooth::Uuid> gatt_uuids;
  std::vector<bluetooth::Uuid> gatt_uuids;
  tBTA_STATUS result;
  tBTA_STATUS result;
+1 −1
Original line number Original line Diff line number Diff line
@@ -920,7 +920,7 @@ static void bta_dm_disc_result(tBTA_DM_SVC_RES& disc_result) {
  if (!is_gatt_over_ble) {
  if (!is_gatt_over_ble) {
    auto& r = disc_result;
    auto& r = disc_result;
    bta_dm_search_cb.service_search_cbacks.on_service_discovery_results(
    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.
  /* Services were discovered while device search is in progress.
+0 −1
Original line number Original line Diff line number Diff line
@@ -297,7 +297,6 @@ typedef void(tBTA_DM_NAME_READ_CBACK)(RawAddress bd_addr,
                                      tHCI_ERROR_CODE hci_status,
                                      tHCI_ERROR_CODE hci_status,
                                      const BD_NAME bd_name);
                                      const BD_NAME bd_name);
typedef void(tBTA_DM_DISC_CBACK)(RawAddress bd_addr, tBTA_SERVICE_MASK services,
typedef void(tBTA_DM_DISC_CBACK)(RawAddress bd_addr, tBTA_SERVICE_MASK services,
                                 tBT_DEVICE_TYPE device_type,
                                 const std::vector<bluetooth::Uuid>& uuids,
                                 const std::vector<bluetooth::Uuid>& uuids,
                                 tBTA_STATUS result, tHCI_STATUS hci_status);
                                 tBTA_STATUS result, tHCI_STATUS hci_status);
struct service_discovery_callbacks {
struct service_discovery_callbacks {
+6 −6
Original line number Original line Diff line number Diff line
@@ -177,8 +177,8 @@ TEST_F(BtaInitializedTest,
       bta_dm_disc_start_service_discovery__BT_TRANSPORT_AUTO) {
       bta_dm_disc_start_service_discovery__BT_TRANSPORT_AUTO) {
  bta_dm_disc_start_service_discovery(
  bta_dm_disc_start_service_discovery(
      {nullptr, nullptr, nullptr,
      {nullptr, nullptr, nullptr,
       [](RawAddress, tBTA_SERVICE_MASK, tBT_DEVICE_TYPE,
       [](RawAddress, tBTA_SERVICE_MASK, const std::vector<bluetooth::Uuid>&,
          const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}},
          tBTA_STATUS, tHCI_STATUS) {}},
      kRawAddress, BT_TRANSPORT_AUTO);
      kRawAddress, BT_TRANSPORT_AUTO);
}
}


@@ -186,8 +186,8 @@ TEST_F(BtaInitializedTest,
       bta_dm_disc_start_service_discovery__BT_TRANSPORT_BR_EDR) {
       bta_dm_disc_start_service_discovery__BT_TRANSPORT_BR_EDR) {
  bta_dm_disc_start_service_discovery(
  bta_dm_disc_start_service_discovery(
      {nullptr, nullptr, nullptr,
      {nullptr, nullptr, nullptr,
       [](RawAddress, tBTA_SERVICE_MASK, tBT_DEVICE_TYPE,
       [](RawAddress, tBTA_SERVICE_MASK, const std::vector<bluetooth::Uuid>&,
          const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}},
          tBTA_STATUS, tHCI_STATUS) {}},
      kRawAddress, BT_TRANSPORT_BR_EDR);
      kRawAddress, BT_TRANSPORT_BR_EDR);
}
}


@@ -195,8 +195,8 @@ TEST_F(BtaInitializedTest,
       bta_dm_disc_start_service_discovery__BT_TRANSPORT_LE) {
       bta_dm_disc_start_service_discovery__BT_TRANSPORT_LE) {
  bta_dm_disc_start_service_discovery(
  bta_dm_disc_start_service_discovery(
      {nullptr, nullptr, nullptr,
      {nullptr, nullptr, nullptr,
       [](RawAddress, tBTA_SERVICE_MASK, tBT_DEVICE_TYPE,
       [](RawAddress, tBTA_SERVICE_MASK, const std::vector<bluetooth::Uuid>&,
          const std::vector<bluetooth::Uuid>&, tBTA_STATUS, tHCI_STATUS) {}},
          tBTA_STATUS, tHCI_STATUS) {}},
      kRawAddress, BT_TRANSPORT_LE);
      kRawAddress, BT_TRANSPORT_LE);
}
}


Loading