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

Commit 9c8568ed authored by Chienyuan's avatar Chienyuan Committed by Chienyuan Huang
Browse files

Add empty filter when CSIS discovery start

Tag: #refactor
Bug: 201757963
Bug: 150670922
Test: manual
BYPASS_LONG_LINES_REASON: Bluetooth likes 120 lines

Change-Id: I182307dd7c028e5aa5711f2a91cec686958d473a
parent 38cab987
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -295,6 +295,7 @@ cc_test {
    ],
    srcs : [
        ":TestMockBtif",
        ":TestMockMainShimLeScanning",
        "csis/csis_client.cc",
        "csis/csis_client_test.cc",
        "groups/groups.cc",
+3 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include "csis_types.h"
#include "gap_api.h"
#include "gatt_api.h"
#include "main/shim/le_scanning_manager.h"
#include "osi/include/osi.h"
#include "osi/include/properties.h"
#include "stack/btm/btm_dev.h"
@@ -1126,6 +1127,8 @@ class CsisClientImpl : public CsisClient {
  void CsisActiveObserverSet(bool enable) {
    LOG(INFO) << __func__ << " CSIS Discovery SET: " << enable;

    bluetooth::shim::set_empty_filter(enable);

    BTA_DmBleCsisObserve(
        enable, [](tBTA_DM_SEARCH_EVT event, tBTA_DM_SEARCH* p_data) {
          /* If there's no instance we are most likely shutting
+1 −1
Original line number Diff line number Diff line
@@ -674,7 +674,7 @@ struct LeScanningManager::impl : public bluetooth::hci::LeAddressManagerCallback
                advertising_filter_parameter.delivery_mode,
                advertising_filter_parameter.onfound_timeout,
                advertising_filter_parameter.onfound_timeout_cnt,
                advertising_filter_parameter.rssi_low_thres,
                advertising_filter_parameter.rssi_low_thresh,
                advertising_filter_parameter.onlost_timeout,
                advertising_filter_parameter.num_of_tracking_entries),
            module_handler_->BindOnceOn(this, &impl::on_advertising_filter_complete));
+1 −1
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ class AdvertisingFilterParameter {
  DeliveryMode delivery_mode;
  uint16_t onfound_timeout;
  uint8_t onfound_timeout_cnt;
  uint8_t rssi_low_thres;
  uint8_t rssi_low_thresh;
  uint16_t onlost_timeout;
  uint16_t num_of_tracking_entries;
};
+22 −1
Original line number Diff line number Diff line
@@ -47,6 +47,10 @@ using bluetooth::ToGdAddress;

namespace {
constexpr char kBtmLogTag[] = "SCAN";
constexpr uint16_t kAllowAllFilter = 0x00;
constexpr uint16_t kListLogicOr = 0x01;
constexpr uint8_t kFilterLogicOr = 0x00;
constexpr uint8_t kLowestRssiValue = 129;
}

extern void btm_ble_process_adv_pkt_cont_for_inquiry(
@@ -123,7 +127,7 @@ class BleScannerInterfaceImpl : public BleScannerInterface,
            filt_param->found_timeout;
        advertising_filter_parameter.onfound_timeout_cnt =
            filt_param->found_timeout_cnt;
        advertising_filter_parameter.rssi_low_thres =
        advertising_filter_parameter.rssi_low_thresh =
            filt_param->rssi_low_thres;
        advertising_filter_parameter.onlost_timeout = filt_param->lost_timeout;
        advertising_filter_parameter.num_of_tracking_entries =
@@ -539,3 +543,20 @@ BleScannerInterface* bluetooth::shim::get_ble_scanner_instance() {
void bluetooth::shim::init_scanning_manager() {
  bt_le_scanner_instance->Init();
}

void bluetooth::shim::set_empty_filter(bool enable) {
  bluetooth::hci::AdvertisingFilterParameter advertising_filter_parameter;
  bluetooth::shim::GetScanning()->ScanFilterParameterSetup(
      bluetooth::hci::ApcfAction::DELETE, 0x00, advertising_filter_parameter);
  if (enable) {
    /* Add an allow-all filter on index 0 */
    advertising_filter_parameter.delivery_mode =
        bluetooth::hci::DeliveryMode::IMMEDIATE;
    advertising_filter_parameter.feature_selection = kAllowAllFilter;
    advertising_filter_parameter.list_logic_type = kListLogicOr;
    advertising_filter_parameter.filter_logic_type = kFilterLogicOr;
    advertising_filter_parameter.rssi_high_thresh = kLowestRssiValue;
    bluetooth::shim::GetScanning()->ScanFilterParameterSetup(
        bluetooth::hci::ApcfAction::ADD, 0x00, advertising_filter_parameter);
  }
}
 No newline at end of file
Loading