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

Commit e768829b authored by Archie Pusaka's avatar Archie Pusaka Committed by Automerger Merge Worker
Browse files

Merge "Add device_type information for remote name lookup" into main am: a0590b59

parents a44d063c a0590b59
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1860,6 +1860,7 @@ tBTM_STATUS btm_ble_read_remote_name(const RawAddress& remote_bda,
  btm_cb.btm_inq_vars.p_remname_cmpl_cb = p_cb;
  btm_cb.btm_inq_vars.remname_active = true;
  btm_cb.btm_inq_vars.remname_bda = remote_bda;
  btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_BLE;

  alarm_set_on_mloop(btm_cb.btm_inq_vars.remote_name_timer,
                     BTM_EXT_BLE_RMT_NAME_TIMEOUT_MS,
@@ -1886,6 +1887,7 @@ bool btm_ble_cancel_remote_name(const RawAddress& remote_bda) {

  btm_cb.btm_inq_vars.remname_active = false;
  btm_cb.btm_inq_vars.remname_bda = RawAddress::kEmpty;
  btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN;
  alarm_cancel(btm_cb.btm_inq_vars.remote_name_timer);

  return status;
+17 −2
Original line number Diff line number Diff line
@@ -855,10 +855,17 @@ tBTM_STATUS BTM_ReadRemoteDeviceName(const RawAddress& remote_bda,
 ******************************************************************************/
tBTM_STATUS BTM_CancelRemoteDeviceName(void) {
  log::verbose("");
  bool is_le;

  /* Make sure there is not already one in progress */
  if (btm_cb.btm_inq_vars.remname_active) {
    if (BTM_UseLeLink(btm_cb.btm_inq_vars.remname_bda)) {
    if (com::android::bluetooth::flags::rnr_store_device_type()) {
      is_le = (btm_cb.btm_inq_vars.remname_dev_type == BT_DEVICE_TYPE_BLE);
    } else {
      is_le = BTM_UseLeLink(btm_cb.btm_inq_vars.remname_bda);
    }

    if (is_le) {
      /* Cancel remote name request for LE device, and process remote name
       * callback. */
      btm_inq_rmt_name_failed_cancelled();
@@ -1044,6 +1051,7 @@ void btm_inq_db_reset(void) {
    alarm_cancel(btm_cb.btm_inq_vars.remote_name_timer);
    btm_cb.btm_inq_vars.remname_active = false;
    btm_cb.btm_inq_vars.remname_bda = RawAddress::kEmpty;
    btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN;

    if (btm_cb.btm_inq_vars.p_remname_cmpl_cb) {
      rem_name.status = BTM_DEV_RESET;
@@ -1888,6 +1896,7 @@ tBTM_STATUS btm_initiate_rem_name(const RawAddress& remote_bda, uint8_t origin,
       * and start timer */
      btm_cb.btm_inq_vars.p_remname_cmpl_cb = p_cb;
      btm_cb.btm_inq_vars.remname_bda = remote_bda;
      btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_BREDR;

      alarm_set_on_mloop(btm_cb.btm_inq_vars.remote_name_timer, timeout_ms,
                         btm_inq_remote_name_timer_timeout, NULL);
@@ -1946,7 +1955,12 @@ void btm_process_remote_name(const RawAddress* bda, const BD_NAME bdn,
      .hci_status = hci_status,
  };

  const bool on_le_link = BTM_UseLeLink(btm_cb.btm_inq_vars.remname_bda);
  bool on_le_link;
  if (com::android::bluetooth::flags::rnr_store_device_type()) {
    on_le_link = (btm_cb.btm_inq_vars.remname_dev_type == BT_DEVICE_TYPE_BLE);
  } else {
    on_le_link = BTM_UseLeLink(btm_cb.btm_inq_vars.remname_bda);
  }

  /* If the inquire BDA and remote DBA are the same, then stop the timer and set
   * the active to false */
@@ -1981,6 +1995,7 @@ void btm_process_remote_name(const RawAddress* bda, const BD_NAME bdn,
      /* Reset the remote BDA and call callback if possible */
      btm_cb.btm_inq_vars.remname_active = false;
      btm_cb.btm_inq_vars.remname_bda = RawAddress::kEmpty;
      btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_UNKNOWN;

      tBTM_NAME_CMPL_CB* p_cb = btm_cb.btm_inq_vars.p_remname_cmpl_cb;
      btm_cb.btm_inq_vars.p_remname_cmpl_cb = nullptr;
+2 −0
Original line number Diff line number Diff line
@@ -242,6 +242,7 @@ struct tBTM_INQUIRY_VAR_ST {
  RawAddress remname_bda; /* Name of bd addr for active remote name request */
#define BTM_RMT_NAME_EXT 0x1 /* Initiated through API */
  bool remname_active; /* State of a remote name request by external API */
  tBT_DEVICE_TYPE remname_dev_type; /* Whether it's LE or BREDR name request */

  tBTM_CMPL_CB* p_inq_cmpl_cb;
  tBTM_INQ_RESULTS_CB* p_inq_results_cb;
@@ -287,6 +288,7 @@ struct tBTM_INQUIRY_VAR_ST {

    remname_bda = {};
    remname_active = false;
    remname_dev_type = BT_DEVICE_TYPE_UNKNOWN;

    p_inq_cmpl_cb = nullptr;
    p_inq_results_cb = nullptr;
+6 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ class BtmInqActiveTest : public BtmInqTest {

    btm_cb.btm_inq_vars.remname_active = true;
    btm_cb.btm_inq_vars.remname_bda = kRawAddress;
    btm_cb.btm_inq_vars.remname_dev_type = BT_DEVICE_TYPE_BREDR;
    btm_cb.btm_inq_vars.p_remname_cmpl_cb =
        [](const tBTM_REMOTE_DEV_NAME* name) {
          gBTM_REMOTE_DEV_NAME = *name;
@@ -75,6 +76,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__typical) {
  ASSERT_FALSE(btm_cb.btm_inq_vars.p_remname_cmpl_cb);
  ASSERT_FALSE(btm_cb.btm_inq_vars.remname_active);
  ASSERT_EQ(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty);
  ASSERT_EQ(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN);
  ASSERT_EQ(1, get_func_call_count("alarm_cancel"));

  ASSERT_TRUE(gBTM_REMOTE_DEV_NAME_sent);
@@ -89,6 +91,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__no_name) {
  ASSERT_FALSE(btm_cb.btm_inq_vars.p_remname_cmpl_cb);
  ASSERT_FALSE(btm_cb.btm_inq_vars.remname_active);
  ASSERT_EQ(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty);
  ASSERT_EQ(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN);
  ASSERT_EQ(1, get_func_call_count("alarm_cancel"));

  ASSERT_TRUE(gBTM_REMOTE_DEV_NAME_sent);
@@ -103,6 +106,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__bad_status) {
  ASSERT_FALSE(btm_cb.btm_inq_vars.p_remname_cmpl_cb);
  ASSERT_FALSE(btm_cb.btm_inq_vars.remname_active);
  ASSERT_EQ(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty);
  ASSERT_EQ(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN);
  ASSERT_EQ(1, get_func_call_count("alarm_cancel"));

  ASSERT_TRUE(gBTM_REMOTE_DEV_NAME_sent);
@@ -117,6 +121,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__no_address) {
  ASSERT_FALSE(btm_cb.btm_inq_vars.p_remname_cmpl_cb);
  ASSERT_FALSE(btm_cb.btm_inq_vars.remname_active);
  ASSERT_EQ(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty);
  ASSERT_EQ(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN);
  ASSERT_EQ(1, get_func_call_count("alarm_cancel"));

  ASSERT_TRUE(gBTM_REMOTE_DEV_NAME_sent);
@@ -132,6 +137,7 @@ TEST_F(BtmInqActiveTest, btm_process_remote_name__different_address) {
  ASSERT_TRUE(btm_cb.btm_inq_vars.p_remname_cmpl_cb);
  ASSERT_TRUE(btm_cb.btm_inq_vars.remname_active);
  ASSERT_NE(btm_cb.btm_inq_vars.remname_bda, RawAddress::kEmpty);
  ASSERT_NE(btm_cb.btm_inq_vars.remname_dev_type, BT_DEVICE_TYPE_UNKNOWN);
  ASSERT_EQ(0, get_func_call_count("alarm_cancel"));

  ASSERT_FALSE(gBTM_REMOTE_DEV_NAME_sent);