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

Commit 5825472d authored by Myles Watson's avatar Myles Watson Committed by Gerrit Code Review
Browse files

Merge changes I6c4b3618,I4e1f61a3,I979b3b2d,I98575c17 into main

* changes:
  Remove StartInquiry from legacy HCI
  Wait for the callback to start Inquiry
  Remove btm_acl_update_inquiry_status
  Remove unused btm_cb.is_inquiry
parents 7fc500ce dda17256
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -39,7 +39,6 @@

#include "bta/include/bta_dm_acl.h"
#include "bta/sys/bta_sys.h"
#include "btif/include/btif_acl.h"
#include "common/init_flags.h"
#include "common/metrics.h"
#include "device/include/controller.h"
@@ -528,11 +527,6 @@ void btm_acl_device_down(void) {
  BTM_db_reset();
}

void btm_acl_update_inquiry_status(uint8_t status) {
  btm_cb.is_inquiry = status == BTM_INQUIRY_STARTED;
  BTIF_dm_report_inquiry_status_change(status);
}

tBTM_STATUS BTM_GetRole(const RawAddress& remote_bd_addr, tHCI_ROLE* p_role) {
  if (p_role == nullptr) {
    return BTM_ILLEGAL_VALUE;
+27 −7
Original line number Diff line number Diff line
@@ -36,11 +36,14 @@
#include <mutex>

#include "advertise_data_parser.h"
#include "btif/include/btif_acl.h"
#include "btif/include/btif_config.h"
#include "common/time_util.h"
#include "device/include/controller.h"
#include "hci/hci_layer.h"
#include "include/check.h"
#include "internal_include/bt_target.h"
#include "main/shim/entry.h"
#include "main/shim/shim.h"
#include "os/log.h"
#include "osi/include/allocator.h"
@@ -49,7 +52,6 @@
#include "osi/include/stack_power_telemetry.h"
#include "stack/btm/btm_int_types.h"
#include "stack/btm/btm_sec.h"
#include "stack/include/acl_api.h"
#include "stack/include/acl_api_types.h"
#include "stack/include/bt_hdr.h"
#include "stack/include/bt_lap.h"
@@ -60,6 +62,7 @@
#include "stack/include/btm_log_history.h"
#include "stack/include/hcimsgs.h"
#include "stack/include/inq_hci_link_interface.h"
#include "stack/include/main_thread.h"
#include "types/bluetooth/uuid.h"
#include "types/raw_address.h"

@@ -673,10 +676,11 @@ tBTM_STATUS BTM_StartInquiry(tBTM_INQ_RESULTS_CB* p_results_cb,
    }
  }

  btm_acl_update_inquiry_status(BTM_INQUIRY_STARTED);

  if (btm_cb.btm_inq_vars.inq_active & BTM_SSP_INQUIRY_ACTIVE) {
    LOG_INFO("Not starting inquiry as SSP is in progress");
    // Report the status here because inq_complete will cancel it below
    BTIF_dm_report_inquiry_status_change(BTM_INQUIRY_STARTED);

    btm_process_inq_complete(HCI_ERR_MAX_NUM_OF_CONNECTIONS,
                             BTM_GENERAL_INQUIRY);
    return BTM_CMD_STARTED;
@@ -686,8 +690,24 @@ tBTM_STATUS BTM_StartInquiry(tBTM_INQ_RESULTS_CB* p_results_cb,

  btm_init_inq_result_flt();

  bluetooth::legacy::hci::GetInterface().StartInquiry(
      general_inq_lap, btm_cb.btm_inq_vars.inqparms.duration, 0);
  bluetooth::hci::Lap lap;
  lap.lap_ = general_inq_lap[2];

  // TODO: Register for the inquiry interface and use that
  bluetooth::shim::GetHciLayer()->EnqueueCommand(
      bluetooth::hci::InquiryBuilder::Create(
          lap, btm_cb.btm_inq_vars.inqparms.duration, 0),
      get_main_thread()->BindOnce(
          [](bluetooth::hci::CommandStatusView status_view) {
            ASSERT(status_view.IsValid());
            auto status = status_view.GetStatus();
            if (status == bluetooth::hci::ErrorCode::SUCCESS) {
              BTIF_dm_report_inquiry_status_change(BTM_INQUIRY_STARTED);
            } else {
              LOG_INFO("Inquiry failed to start status: %s",
                       bluetooth::hci::ErrorCodeText(status).c_str());
            }
          }));

  // If we are only doing classic discovery, we should also set a timeout for
  // the inquiry if a duration is set.
@@ -1475,7 +1495,7 @@ void btm_process_inq_complete(tHCI_STATUS status, uint8_t mode) {
  btm_cb.btm_inq_vars.inqparms.mode &= ~(mode);
  const auto inq_active = btm_cb.btm_inq_vars.inq_active;

  btm_acl_update_inquiry_status(BTM_INQUIRY_COMPLETE);
  BTIF_dm_report_inquiry_status_change(BTM_INQUIRY_COMPLETE);

  if (status != HCI_SUCCESS) {
    LOG_WARN("Received unexpected hci status:%s",
@@ -1569,7 +1589,7 @@ void btm_process_inq_complete(tHCI_STATUS status, uint8_t mode) {
 *
 ******************************************************************************/
void btm_process_cancel_complete(tHCI_STATUS status, uint8_t mode) {
  btm_acl_update_inquiry_status(BTM_INQUIRY_CANCELLED);
  BTIF_dm_report_inquiry_status_change(BTM_INQUIRY_CANCELLED);
  btm_process_inq_complete(status, mode);
}
/*******************************************************************************
+0 −1
Original line number Diff line number Diff line
@@ -157,7 +157,6 @@ typedef struct tBTM_CB {

  uint16_t disc_handle{0};          /* for legacy devices */
  uint8_t disc_reason{0};           /* for legacy devices */
  bool is_inquiry{false}; /* true, if inquiry is in progess */

  fixed_queue_t* sec_pending_q{nullptr}; /* pending sequrity requests in
                                            tBTM_SEC_QUEUE_ENTRY format */
+0 −7
Original line number Diff line number Diff line
@@ -1229,13 +1229,6 @@ static void btu_hcif_hdl_command_status(uint16_t opcode, uint8_t status,
  uint16_t handle;

  switch (opcode) {
    // Link Control Commands
    case HCI_INQUIRY:
      if (status != HCI_SUCCESS) {
        // Tell inquiry processing that we are done
        btm_process_inq_complete(hci_status, BTM_BR_INQUIRY_MASK);
      }
      break;
    case HCI_SWITCH_ROLE:
      if (status != HCI_SUCCESS) {
        // Tell BTM that the command failed
+0 −22
Original line number Diff line number Diff line
@@ -482,24 +482,6 @@
#define HCIC_PARAM_SIZE_BLE_RC_PARAM_REQ_REPLY 14
#define HCIC_PARAM_SIZE_BLE_RC_PARAM_REQ_NEG_REPLY 3

static void btsnd_hcic_inquiry(const LAP inq_lap, uint8_t duration,
                               uint8_t response_cnt) {
  BT_HDR* p = (BT_HDR*)osi_malloc(HCI_CMD_BUF_SIZE);
  uint8_t* pp = (uint8_t*)(p + 1);

  p->len = HCIC_PREAMBLE_SIZE + HCIC_PARAM_SIZE_INQUIRY;
  p->offset = 0;

  UINT16_TO_STREAM(pp, HCI_INQUIRY);
  UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_INQUIRY);

  LAP_TO_STREAM(pp, inq_lap);
  UINT8_TO_STREAM(pp, duration);
  UINT8_TO_STREAM(pp, response_cnt);

  btu_hcif_send_cmd(LOCAL_BR_EDR_CONTROLLER_ID, p);
}

static void btsnd_hcic_inq_cancel(void) {
  BT_HDR* p = (BT_HDR*)osi_malloc(HCI_CMD_BUF_SIZE);
  uint8_t* pp = (uint8_t*)(p + 1);
@@ -1690,10 +1672,6 @@ void btsnd_hcic_configure_data_path(hci_data_direction_t data_path_direction,

namespace bluetooth::legacy::hci {
class InterfaceImpl : public Interface {
  void StartInquiry(const uint8_t* inq_lap, uint8_t duration,
                    uint8_t response_cnt) const override {
    btsnd_hcic_inquiry(inq_lap, duration, response_cnt);
  }
  void InquiryCancel() const override { btsnd_hcic_inq_cancel(); }
  void Disconnect(uint16_t handle, uint8_t reason) const override {
    btsnd_hcic_disconnect(handle, reason);
Loading