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

Commit 9aff5801 authored by Chris Manton's avatar Chris Manton
Browse files

IA2: Use btm_interface for bta::dm::discovery

Bug: 291994773
Test: m .

Change-Id: Ib98c8445a4707b1e694589fe63325ede616b9f7d
parent 5eead8cb
Loading
Loading
Loading
Loading
+16 −10
Original line number Diff line number Diff line
@@ -1083,8 +1083,8 @@ static bool bta_dm_read_remote_device_name(const RawAddress& bd_addr,
  bta_dm_search_cb.peer_bdaddr = bd_addr;
  bta_dm_search_cb.peer_name[0] = 0;

  btm_status = BTM_ReadRemoteDeviceName(bta_dm_search_cb.peer_bdaddr,
                                        bta_dm_remname_cback, transport);
  btm_status = get_btm_client_interface().peer.BTM_ReadRemoteDeviceName(
      bta_dm_search_cb.peer_bdaddr, bta_dm_remname_cback, transport);

  if (btm_status == BTM_CMD_STARTED) {
    APPL_TRACE_DEBUG("%s: BTM_ReadRemoteDeviceName is started", __func__);
@@ -1097,7 +1097,8 @@ static bool bta_dm_read_remote_device_name(const RawAddress& bd_addr,
     * "bta_dm_remname_cback" */
    /* adding callback to get notified that current reading remote name done */

    BTM_SecAddRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
    get_btm_client_interface().security.BTM_SecAddRmtNameNotifyCallback(
        &bta_dm_service_search_remname_cback);

    return (true);
  } else {
@@ -1423,7 +1424,8 @@ void bta_dm_sdp_result(tBTA_DM_MSG* p_data) {
      /* callbacks */
      /* start next bd_addr if necessary */

      BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
      get_btm_client_interface().security.BTM_SecDeleteRmtNameNotifyCallback(
          &bta_dm_service_search_remname_cback);

      BTM_LogHistory(
          kBtmLogTag, bta_dm_search_cb.peer_bdaddr, "Discovery completed",
@@ -1493,7 +1495,8 @@ void bta_dm_sdp_result(tBTA_DM_MSG* p_data) {
    if (bta_dm_search_cb.p_sdp_db)
      osi_free_and_reset((void**)&bta_dm_search_cb.p_sdp_db);

    BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
    get_btm_client_interface().security.BTM_SecDeleteRmtNameNotifyCallback(
        &bta_dm_service_search_remname_cback);

    p_msg = (tBTA_DM_MSG*)osi_calloc(sizeof(tBTA_DM_MSG));
    p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT;
@@ -2056,8 +2059,8 @@ static void bta_dm_discover_device(const RawAddress& remote_bd_addr) {
         if connection exists, we don't have to wait for ACL
         link to go down to start search on next device */
      if (transport == BT_TRANSPORT_BR_EDR) {
        if (BTM_IsAclConnectionUp(bta_dm_search_cb.peer_bdaddr,
                                  BT_TRANSPORT_BR_EDR))
        if (get_btm_client_interface().peer.BTM_IsAclConnectionUp(
                bta_dm_search_cb.peer_bdaddr, BT_TRANSPORT_BR_EDR))
          bta_dm_search_cb.wait_disc = false;
        else
          bta_dm_search_cb.wait_disc = true;
@@ -2272,13 +2275,15 @@ static void bta_dm_remname_cback(const tBTM_REMOTE_DEV_NAME* p_remote_name) {
      p_remote_name->remote_bd_name[0], p_remote_name->length);

  if (bta_dm_search_cb.peer_bdaddr == p_remote_name->bd_addr) {
    BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
    get_btm_client_interface().security.BTM_SecDeleteRmtNameNotifyCallback(
        &bta_dm_service_search_remname_cback);
  } else {
    // if we got a different response, maybe ignore it
    // we will have made a request directly from BTM_ReadRemoteDeviceName so we
    // expect a dedicated response for us
    if (p_remote_name->hci_status == HCI_ERR_CONNECTION_EXISTS) {
      BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
      get_btm_client_interface().security.BTM_SecDeleteRmtNameNotifyCallback(
          &bta_dm_service_search_remname_cback);
      LOG_INFO(
          "Assume command failed due to disconnection hci_status:%s peer:%s",
          hci_error_code_text(p_remote_name->hci_status).c_str(),
@@ -3182,7 +3187,8 @@ static const char* bta_dm_get_remname(void) {

  /* If the name isn't already stored, try retrieving from BTM */
  if (*p_name == '\0') {
    const char* p_temp = BTM_SecReadDevName(bta_dm_search_cb.peer_bdaddr);
    const char* p_temp = get_btm_client_interface().security.BTM_SecReadDevName(
        bta_dm_search_cb.peer_bdaddr);
    if (p_temp != NULL) p_name = (const char*)p_temp;
  }

+17 −2
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@
#include "test/mock/mock_osi_alarm.h"
#include "test/mock/mock_osi_allocator.h"
#include "test/mock/mock_stack_acl.h"
#include "test/mock/mock_stack_btm.h"
#include "test/mock/mock_stack_btm_ble.h"
#include "test/mock/mock_stack_btm_inq.h"
#include "test/mock/mock_stack_btm_sec.h"
@@ -50,8 +51,6 @@
using namespace std::chrono_literals;
using ::testing::ElementsAre;

extern struct btm_client_interface_t btm_client_interface;

namespace base {
class MessageLoop;
}  // namespace base
@@ -106,6 +105,7 @@ class BtaDmTest : public testing::Test {
    bluetooth::legacy::testing::bta_dm_deinit_cb();
    post_on_bt_main([]() { LOG_INFO("Main thread shutting down"); });
    main_thread_shut_down();
    btm_client_interface = {};
  }

  std::unique_ptr<test::fake::FakeOsi> fake_osi_;
@@ -392,6 +392,11 @@ TEST_F(BtaDmTest, bta_dm_remname_cback__typical) {
  strlcpy(reinterpret_cast<char*>(&name.remote_bd_name), kRemoteName,
          strlen(kRemoteName));

  btm_client_interface.security.BTM_SecDeleteRmtNameNotifyCallback =
      [](tBTM_RMT_NAME_CALLBACK*) -> bool {
    inc_func_call_count("BTM_SecDeleteRmtNameNotifyCallback");
    return true;
  };
  bluetooth::legacy::testing::bta_dm_remname_cback(&name);

  sync_main_handler();
@@ -416,6 +421,11 @@ TEST_F(BtaDmTest, bta_dm_remname_cback__wrong_address) {
  strlcpy(reinterpret_cast<char*>(&name.remote_bd_name), kRemoteName,
          strlen(kRemoteName));

  btm_client_interface.security.BTM_SecDeleteRmtNameNotifyCallback =
      [](tBTM_RMT_NAME_CALLBACK*) -> bool {
    inc_func_call_count("BTM_SecDeleteRmtNameNotifyCallback");
    return true;
  };
  bluetooth::legacy::testing::bta_dm_remname_cback(&name);

  sync_main_handler();
@@ -440,6 +450,11 @@ TEST_F(BtaDmTest, bta_dm_remname_cback__HCI_ERR_CONNECTION_EXISTS) {
  strlcpy(reinterpret_cast<char*>(&name.remote_bd_name), kRemoteName,
          strlen(kRemoteName));

  btm_client_interface.security.BTM_SecDeleteRmtNameNotifyCallback =
      [](tBTM_RMT_NAME_CALLBACK*) -> bool {
    inc_func_call_count("BTM_SecDeleteRmtNameNotifyCallback");
    return true;
  };
  bluetooth::legacy::testing::bta_dm_remname_cback(&name);

  sync_main_handler();
+8 −0
Original line number Diff line number Diff line
@@ -30,6 +30,10 @@
void BTA_dm_on_hw_on();
void BTA_dm_on_hw_off();

namespace {
const char kName[] = "Hello";
}

class BtaSdpTest : public testing::Test {
 protected:
  void SetUp() override {
@@ -100,5 +104,9 @@ TEST_F(BtaSdpRegisteredTest, bta_dm_sdp_result_SDP_SUCCESS) {
              .sdp_result = SDP_SUCCESS,
          },
  };
  btm_client_interface.security.BTM_SecReadDevName =
      [](const RawAddress& bd_addr) -> const char* { return kName; };
  btm_client_interface.security.BTM_SecDeleteRmtNameNotifyCallback =
      [](tBTM_RMT_NAME_CALLBACK*) -> bool { return true; };
  bta_dm_sdp_result(&msg);
}