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

Commit cbd68d32 authored by Chris Manton's avatar Chris Manton
Browse files

bta: Formalize legacy bta device and service discovery APIs

Bug: 310712967
Test: atest net_test_bta

Change-Id: I647051369291ea6b7fc51ca35a839d5bde82c7b1
parent 2f981470
Loading
Loading
Loading
Loading
+3 −26
Original line number Diff line number Diff line
@@ -80,18 +80,11 @@ void BTA_DmSetDeviceName(const char* p_name) {
 *                  performs an inquiry and gets the remote name for devices.
 *                  Service discovery is done if services is non zero
 *
 *
 * Returns          void
 *
 ******************************************************************************/
void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback) {
  tBTA_DM_API_SEARCH* p_msg =
      (tBTA_DM_API_SEARCH*)osi_calloc(sizeof(tBTA_DM_API_SEARCH));

  p_msg->hdr.event = BTA_DM_API_SEARCH_EVT;
  p_msg->p_cback = p_cback;

  bta_sys_sendmsg(p_msg);
  bta_dm_disc_start_device_discovery(p_cback);
}

/*******************************************************************************
@@ -100,18 +93,10 @@ void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback) {
 *
 * Description      This function  cancels a search initiated by BTA_DmSearch
 *
 *
 * Returns          void
 *
 ******************************************************************************/
void BTA_DmSearchCancel(void) {
  tBTA_DM_API_DISCOVERY_CANCEL* p_msg =
      (tBTA_DM_API_DISCOVERY_CANCEL*)osi_calloc(
          sizeof(tBTA_DM_API_DISCOVERY_CANCEL));

  p_msg->hdr.event = BTA_DM_API_SEARCH_CANCEL_EVT;
  bta_sys_sendmsg(p_msg);
}
void BTA_DmSearchCancel(void) { bta_dm_disc_stop_device_discovery(); }

/*******************************************************************************
 *
@@ -126,15 +111,7 @@ void BTA_DmSearchCancel(void) {
 ******************************************************************************/
void BTA_DmDiscover(const RawAddress& bd_addr, tBTA_DM_SEARCH_CBACK* p_cback,
                    tBT_TRANSPORT transport) {
  tBTA_DM_API_DISCOVER* p_msg =
      (tBTA_DM_API_DISCOVER*)osi_calloc(sizeof(tBTA_DM_API_DISCOVER));

  p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT;
  p_msg->bd_addr = bd_addr;
  p_msg->transport = transport;
  p_msg->p_cback = p_cback;

  bta_sys_sendmsg(p_msg);
  bta_dm_disc_start_service_discovery(p_cback, bd_addr, transport);
}

/*******************************************************************************
+38 −0
Original line number Diff line number Diff line
@@ -2421,6 +2421,44 @@ void bta_dm_disc_acl_down(const RawAddress& bd_addr, tBT_TRANSPORT transport) {

void bta_dm_disc_stop() { bta_dm_disc_reset(); }

void bta_dm_disc_start_device_discovery(tBTA_DM_SEARCH_CBACK* p_cback) {
  tBTA_DM_API_SEARCH* p_msg =
      (tBTA_DM_API_SEARCH*)osi_calloc(sizeof(tBTA_DM_API_SEARCH));

  p_msg->hdr.event = BTA_DM_API_SEARCH_EVT;
  p_msg->p_cback = p_cback;

  bta_sys_sendmsg(p_msg);
}

void bta_dm_disc_stop_device_discovery() {
  tBTA_DM_API_DISCOVERY_CANCEL* p_msg =
      (tBTA_DM_API_DISCOVERY_CANCEL*)osi_calloc(
          sizeof(tBTA_DM_API_DISCOVERY_CANCEL));

  p_msg->hdr.event = BTA_DM_API_SEARCH_CANCEL_EVT;
  bta_sys_sendmsg(p_msg);
}

void bta_dm_disc_start_service_discovery(tBTA_DM_SEARCH_CBACK* p_cback,
                                         const RawAddress& bd_addr,
                                         tBT_TRANSPORT transport) {
  tBTA_DM_API_DISCOVER* p_msg =
      (tBTA_DM_API_DISCOVER*)osi_calloc(sizeof(tBTA_DM_API_DISCOVER));

  p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT;
  p_msg->bd_addr = bd_addr;
  p_msg->transport = transport;
  p_msg->p_cback = p_cback;

  bta_sys_sendmsg(p_msg);
}

void bta_dm_disc_stop_service_discovery(const RawAddress& bd_addr,
                                        tBT_TRANSPORT transport) {
  LOG_WARN("Stop service discovery not yet implemented for legacy module");
}

#define DUMPSYS_TAG "shim::legacy::bta::dm"
void DumpsysBtaDmDisc(int fd) {
  auto copy = search_state_history_.Pull();
+11 −0
Original line number Diff line number Diff line
@@ -25,6 +25,17 @@
void bta_dm_disc_start(bool delay_close_gatt);
void bta_dm_disc_stop();

// Bta device discovery start and stop entry points
void bta_dm_disc_start_device_discovery(tBTA_DM_SEARCH_CBACK*);
void bta_dm_disc_stop_device_discovery();

// Bta service discovery start and stop entry points
void bta_dm_disc_start_service_discovery(tBTA_DM_SEARCH_CBACK*,
                                         const RawAddress& bd_addr,
                                         tBT_TRANSPORT transport);
void bta_dm_disc_stop_service_discovery(const RawAddress& bd_addr,
                                        tBT_TRANSPORT transport);

// Bta subsystem entrypoint and lifecycle
bool bta_dm_search_sm_execute(const BT_HDR_RIGID* p_msg);
void bta_dm_search_sm_disable();
+39 −0
Original line number Diff line number Diff line
@@ -222,3 +222,42 @@ TEST_F(BtaDiscTest, store_avrcp_profile_feature) {
  tSDP_DISC_REC sdp_rec = {};
  bluetooth::legacy::testing::store_avrcp_profile_feature(&sdp_rec);
}

TEST_F(BtaDiscTest, bta_dm_disc_start_device_discovery) {
  bta_dm_disc_start_device_discovery(
      [](tBTA_DM_SEARCH_EVT event, tBTA_DM_SEARCH* p_data) {});
}

TEST_F(BtaDiscTest, bta_dm_disc_stop_device_discovery) {
  bta_dm_disc_stop_device_discovery();
}

TEST_F(BtaDiscTest, bta_dm_disc_start_service_discovery__BT_TRANSPORT_AUTO) {
  bta_dm_disc_start_service_discovery(
      [](tBTA_DM_SEARCH_EVT event, tBTA_DM_SEARCH* p_data) {}, kRawAddress,
      BT_TRANSPORT_AUTO);
}

TEST_F(BtaDiscTest, bta_dm_disc_start_service_discovery__BT_TRANSPORT_BR_EDR) {
  bta_dm_disc_start_service_discovery(
      [](tBTA_DM_SEARCH_EVT event, tBTA_DM_SEARCH* p_data) {}, kRawAddress,
      BT_TRANSPORT_BR_EDR);
}

TEST_F(BtaDiscTest, bta_dm_disc_start_service_discovery__BT_TRANSPORT_LE) {
  bta_dm_disc_start_service_discovery(
      [](tBTA_DM_SEARCH_EVT event, tBTA_DM_SEARCH* p_data) {}, kRawAddress,
      BT_TRANSPORT_LE);
}

TEST_F(BtaDiscTest, bta_dm_disc_stop_service_discovery__BT_TRANSPORT_AUTO) {
  bta_dm_disc_stop_service_discovery(kRawAddress, BT_TRANSPORT_AUTO);
}

TEST_F(BtaDiscTest, bta_dm_disc_stop_service_discovery__BT_TRANSPORT_BR_EDR) {
  bta_dm_disc_stop_service_discovery(kRawAddress, BT_TRANSPORT_BR_EDR);
}

TEST_F(BtaDiscTest, bta_dm_disc_stop_service_discovery__BT_TRANSPORT_LE) {
  bta_dm_disc_stop_service_discovery(kRawAddress, BT_TRANSPORT_LE);
}