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

Commit 9f7f064d authored by Zach Johnson's avatar Zach Johnson Committed by Gerrit Code Review
Browse files

Merge changes If3136d44,I7a3ee025,I734ece7f

* changes:
  Remove inquiry filtering from shim
  Remove unused filter_cond
  max_resps is always 0: unlimited
parents 3bd4d7ab a2e7b607
Loading
Loading
Loading
Loading
+0 −26
Original line number Diff line number Diff line
@@ -334,32 +334,6 @@ void Btm::OnInquiryComplete(bluetooth::hci::ErrorCode status) {
  active_inquiry_mode_ = kInquiryModeOff;
}

bool Btm::SetInquiryFilter(uint8_t mode, uint8_t type,
                           tBTM_INQ_FILT_COND data) {
  switch (mode) {
    case kInquiryModeOff:
      break;
    case kLimitedInquiryMode:
      LOG_WARN("UNIMPLEMENTED %s", __func__);
      break;
    case kGeneralInquiryMode:
      LOG_WARN("UNIMPLEMENTED %s", __func__);
      break;
    default:
      LOG_WARN("%s Unknown inquiry mode:%d", __func__, mode);
      return false;
  }
  return true;
}

void Btm::SetFilterInquiryOnAddress() {
  LOG_WARN("UNIMPLEMENTED %s", __func__);
}

void Btm::SetFilterInquiryOnDevice() { LOG_WARN("UNIMPLEMENTED %s", __func__); }

void Btm::ClearInquiryFilter() { LOG_WARN("UNIMPLEMENTED %s", __func__); }

void Btm::SetStandardInquiryResultMode() {
  GetInquiry()->SetStandardInquiryResultMode();
}
+0 −11
Original line number Diff line number Diff line
@@ -61,11 +61,6 @@ static constexpr int kStandardInquiryResult = 0;
static constexpr int kInquiryResultWithRssi = 1;
static constexpr int kExtendedInquiryResult = 2;

/* Inquiry filter types */
static constexpr int kClearInquiryFilter = 0;
static constexpr int kFilterOnDeviceClass = 1;
static constexpr int kFilterOnAddress = 2;

static constexpr uint8_t kPhyConnectionNone = 0x00;
static constexpr uint8_t kPhyConnectionLe1M = 0x01;
static constexpr uint8_t kPhyConnectionLe2M = 0x02;
@@ -122,12 +117,6 @@ class Btm {
  void OnExtendedInquiryResult(bluetooth::hci::ExtendedInquiryResultView view);
  void OnInquiryComplete(bluetooth::hci::ErrorCode status);

  // Inquiry API
  bool SetInquiryFilter(uint8_t mode, uint8_t type, tBTM_INQ_FILT_COND data);
  void SetFilterInquiryOnAddress();
  void SetFilterInquiryOnDevice();
  void ClearInquiryFilter();

  void SetStandardInquiryResultMode();
  void SetInquiryWithRssiResultMode();
  void SetExtendedInquiryResultMode();
+1 −60
Original line number Diff line number Diff line
@@ -61,20 +61,6 @@ extern void btm_set_eir_uuid(uint8_t* p_eir, tBTM_INQ_RESULTS* p_results);
extern void btm_sort_inq_result(void);
extern void btm_process_inq_complete(uint8_t status, uint8_t result_type);

static bool max_responses_reached() {
  return (btm_cb.btm_inq_vars.inqparms.max_resps &&
          btm_cb.btm_inq_vars.inq_cmpl_info.num_resp >=
              btm_cb.btm_inq_vars.inqparms.max_resps);
}

static bool is_periodic_inquiry_active() {
  return btm_cb.btm_inq_vars.inq_active & BTM_PERIODIC_INQUIRY_ACTIVE;
}

static bool has_le_device(tBT_DEVICE_TYPE device_type) {
  return device_type & BT_DEVICE_TYPE_BLE;
}

static bool is_classic_device(tBT_DEVICE_TYPE device_type) {
  return device_type == BT_DEVICE_TYPE_BREDR;
}
@@ -83,35 +69,11 @@ static bool has_classic_device(tBT_DEVICE_TYPE device_type) {
  return device_type & BT_DEVICE_TYPE_BREDR;
}

static bool is_dual_mode_device(tBT_DEVICE_TYPE device_type) {
  return device_type == BT_DEVICE_TYPE_DUMO;
}

static bool is_observing_or_active_scanning() {
  return btm_cb.btm_inq_vars.inqparms.mode & BTM_BLE_INQUIRY_MASK;
}

static void check_exceeded_responses(tBT_DEVICE_TYPE device_type,
                                     bool scan_rsp) {
  if (!is_periodic_inquiry_active() && max_responses_reached() &&
      ((is_observing_or_active_scanning() && is_dual_mode_device(device_type) &&
        scan_rsp) ||
       (is_observing_or_active_scanning()))) {
    LOG_INFO("UNIMPLEMENTED %s Device max responses found...cancelling inquiry",
             __func__);
  }
}

void btm_api_process_inquiry_result(const RawAddress& raw_address,
                                    uint8_t page_scan_rep_mode,
                                    DEV_CLASS device_class,
                                    uint16_t clock_offset) {
  tINQ_DB_ENT* p_i = btm_inq_db_find(raw_address);
  if (max_responses_reached()) {
    if (p_i == nullptr || !has_le_device(p_i->inq_info.results.device_type)) {
      return;
    }
  }

  if (p_i == nullptr) {
    p_i = btm_inq_db_new(raw_address);
@@ -143,7 +105,6 @@ void btm_api_process_inquiry_result(const RawAddress& raw_address,
    p_i->inq_info.results.device_type |= BT_DEVICE_TYPE_BREDR;
  }

  check_exceeded_responses(p_i->inq_info.results.device_type, p_i->scan_rsp);
  if (btm_cb.btm_inq_vars.p_inq_results_cb == nullptr) {
    return;
  }
@@ -157,11 +118,6 @@ void btm_api_process_inquiry_result_with_rssi(RawAddress raw_address,
                                              uint16_t clock_offset,
                                              int8_t rssi) {
  tINQ_DB_ENT* p_i = btm_inq_db_find(raw_address);
  if (max_responses_reached()) {
    if (p_i == nullptr || !has_le_device(p_i->inq_info.results.device_type)) {
      return;
    }
  }

  bool update = false;
  if (btm_inq_find_bdaddr(raw_address)) {
@@ -206,7 +162,6 @@ void btm_api_process_inquiry_result_with_rssi(RawAddress raw_address,
    }
  }

  check_exceeded_responses(p_i->inq_info.results.device_type, p_i->scan_rsp);
  if (btm_cb.btm_inq_vars.p_inq_results_cb == nullptr) {
    return;
  }
@@ -222,11 +177,6 @@ void btm_api_process_extended_inquiry_result(RawAddress raw_address,
                                             const uint8_t* eir_data,
                                             size_t eir_len) {
  tINQ_DB_ENT* p_i = btm_inq_db_find(raw_address);
  if (max_responses_reached()) {
    if (p_i == nullptr || !has_le_device(p_i->inq_info.results.device_type)) {
      return;
    }
  }

  bool update = false;
  if (btm_inq_find_bdaddr(raw_address) && p_i != nullptr) {
@@ -266,7 +216,6 @@ void btm_api_process_extended_inquiry_result(RawAddress raw_address,
    }
  }

  check_exceeded_responses(p_i->inq_info.results.device_type, p_i->scan_rsp);
  if (btm_cb.btm_inq_vars.p_inq_results_cb == nullptr) {
    return;
  }
@@ -290,8 +239,6 @@ tBTM_STATUS bluetooth::shim::BTM_StartInquiry(tBTM_INQ_RESULTS_CB* p_results_cb,
  inqparms.mode = BTM_GENERAL_INQUIRY | BTM_BLE_GENERAL_INQUIRY;
  inqparms.duration = BTIF_DM_DEFAULT_INQ_MAX_DURATION;

  inqparms.max_resps = BTIF_DM_DEFAULT_INQ_MAX_RESULTS;

  std::lock_guard<std::mutex> lock(btm_cb_mutex_);

  btm_cb.btm_inq_vars.inq_cmpl_info.num_resp = 0;
@@ -310,14 +257,8 @@ tBTM_STATUS bluetooth::shim::BTM_StartInquiry(tBTM_INQ_RESULTS_CB* p_results_cb,
  Stack::GetInstance()->GetBtm()->StartActiveScanning();

  uint8_t classic_mode = inqparms.mode & 0x0f;
  if (!Stack::GetInstance()->GetBtm()->SetInquiryFilter(
          classic_mode, BTM_CLR_INQUIRY_FILTER, inqparms.filter_cond)) {
    LOG_WARN("%s Unable to set inquiry filter", __func__);
    return BTM_ERR_PROCESSING;
  }

  if (!Stack::GetInstance()->GetBtm()->StartInquiry(
          classic_mode, inqparms.duration, inqparms.max_resps,
          classic_mode, inqparms.duration, 0,
          [](uint16_t status, uint8_t inquiry_mode) {
            LOG_DEBUG("%s Inquiry is complete status:%hd inquiry_mode:%hhd",
                      __func__, status, inquiry_mode);
+0 −2
Original line number Diff line number Diff line
@@ -34,8 +34,6 @@ namespace shim {
 *                      mode - GENERAL or LIMITED inquiry
 *                      duration - length in 1.28 sec intervals (If '0', the
 *                                 inquiry is CANCELLED)
 *                      max_resps - maximum amount of devices to search for
 *                                  before ending the inquiry
 *                      filter_cond_type - BTM_CLR_INQUIRY_FILTER,
 *                                         BTM_FILTER_COND_DEVICE_CLASS, or
 *                                         BTM_FILTER_COND_BD_ADDR
+0 −23
Original line number Diff line number Diff line
@@ -1915,29 +1915,6 @@ void btm_ble_process_adv_pkt_cont(uint16_t evt_type, uint8_t addr_type,
  }

  if (!update) result &= ~BTM_BLE_INQ_RESULT;
  /* If the number of responses found and limited, issue a cancel inquiry */
  if (p_inq->inqparms.max_resps &&
      p_inq->inq_cmpl_info.num_resp == p_inq->inqparms.max_resps) {
    /* new device */
    if (p_i == NULL ||
        /* assume a DUMO device, BR/EDR inquiry is always active */
        (p_i &&
         (p_i->inq_info.results.device_type & BT_DEVICE_TYPE_BLE) ==
             BT_DEVICE_TYPE_BLE &&
         p_i->scan_rsp)) {
      BTM_TRACE_WARNING(
          "INQ RES: Extra Response Received...cancelling inquiry..");

      /* if is non-periodic inquiry active, cancel now */
      if ((p_inq->inq_active & BTM_BR_INQ_ACTIVE_MASK) != 0 &&
          (p_inq->inq_active & BTM_PERIODIC_INQUIRY_ACTIVE) == 0)
        btsnd_hcic_inq_cancel();

      btm_ble_stop_inquiry();

      btm_acl_update_inquiry_status(BTM_INQUIRY_COMPLETE);
    }
  }

  tBTM_INQ_RESULTS_CB* p_inq_results_cb = p_inq->p_inq_results_cb;
  if (p_inq_results_cb && (result & BTM_BLE_INQ_RESULT)) {
Loading