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

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

Merge "Split p_search_cback into device and service search callbacks" into main am: b206ee85

parents f048aa39 b206ee85
Loading
Loading
Loading
Loading
+34 −20
Original line number Diff line number Diff line
@@ -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 =
@@ -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;
@@ -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
        {
@@ -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");
  }
@@ -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 {
@@ -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

@@ -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();
@@ -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
@@ -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,
@@ -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");
@@ -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:
@@ -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
+2 −1
Original line number Diff line number Diff line
@@ -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;
+2 −1
Original line number Diff line number Diff line
@@ -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);
+0 −14
Original line number Diff line number Diff line
@@ -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);
@@ -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;
@@ -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;