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

Commit 5f37b73b authored by Jakub Pawlowski's avatar Jakub Pawlowski
Browse files

Batch scan simplification

Bug: 30622771
Test: sl4a UniqueFilteringTest BleOpportunisticScanTest
Change-Id: I0e6ca8ed3d7d98057277a5187e684246f410d978
parent 1874cc73
Loading
Loading
Loading
Loading
+0 −149
Original line number Diff line number Diff line
@@ -4378,155 +4378,6 @@ void bta_dm_ble_set_data_length(tBTA_DM_MSG* p_data) {
  }
}

/*******************************************************************************
 *
 * Function         bta_dm_ble_setup_storage
 *
 * Description      This function configures up the storage parameters for ADV
 *                  batch scanning
 *
 * Parameters:
 *
 ******************************************************************************/
void bta_dm_ble_setup_storage(uint8_t batch_scan_full_max,
                              uint8_t batch_scan_trunc_max,
                              uint8_t batch_scan_notify_threshold,
                              tBTA_BLE_SCAN_SETUP_CBACK* p_setup_cback,
                              tBTA_BLE_SCAN_THRESHOLD_CBACK* p_thres_cback,
                              tBTA_BLE_SCAN_REP_CBACK* p_read_rep_cback,
                              tBTM_BLE_REF_VALUE ref_value) {
  tBTM_STATUS btm_status = BTM_BleSetStorageConfig(
      batch_scan_full_max, batch_scan_trunc_max, batch_scan_notify_threshold,
      p_setup_cback, p_thres_cback, p_read_rep_cback, ref_value);
  if (btm_status != BTM_CMD_STARTED)
    bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_CFG_STRG_EVT, ref_value,
                          btm_status);
}

/*******************************************************************************
 *
 * Function         bta_dm_ble_enable_batch_scan
 *
 * Description      This function sets up the parameters and enables batch scan
 *
 * Parameters:
 *
 ******************************************************************************/
void bta_dm_ble_enable_batch_scan(tBTA_BLE_BATCH_SCAN_MODE scan_mode,
                                  uint32_t scan_int, uint32_t scan_window,
                                  tBTA_BLE_DISCARD_RULE discard_rule,
                                  tBLE_ADDR_TYPE addr_type,
                                  tBTM_BLE_REF_VALUE ref_value) {
  tBTM_STATUS btm_status = BTM_BleEnableBatchScan(
      scan_mode, scan_int, scan_window, discard_rule, addr_type, ref_value);
  if (BTM_CMD_STARTED != btm_status)
    bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_ENABLE_EVT, ref_value, btm_status);
}

/*******************************************************************************
 *
 * Function         bta_dm_ble_disable_batch_scan
 *
 * Description      This function disables the batch scan
 *
 * Parameters:
 *
 ******************************************************************************/
void bta_dm_ble_disable_batch_scan(tBTM_BLE_REF_VALUE ref_value) {
  tBTM_STATUS btm_status = BTM_BleDisableBatchScan(ref_value);
  if (btm_status != BTM_CMD_STARTED)
    bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_DISABLE_EVT, ref_value,
                          btm_status);
}

/*******************************************************************************
 *
 * Function         bta_dm_ble_read_scan_reports
 *
 * Description      This function reads the batch scan reports
 *
 * Parameters:
 *
 ******************************************************************************/
void bta_dm_ble_read_scan_reports(tBTA_BLE_BATCH_SCAN_MODE scan_type,
                                  tBTM_BLE_REF_VALUE ref_value) {
  tBTM_STATUS btm_status = BTM_BleReadScanReports(scan_type, ref_value);
  if (btm_status != BTM_CMD_STARTED)
    bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_READ_REPTS_EVT, ref_value,
                          btm_status);
}

/*******************************************************************************
 *
 * Function         bta_dm_ble_track_advertiser
 *
 * Description      This function tracks the specific advertiser
 *
 * Parameters:
 *
 ******************************************************************************/
void bta_dm_ble_track_advertiser(tBTA_DM_MSG* p_data) {
  tBTM_STATUS btm_status = 0;
  BD_ADDR bda;
  memset(&bda, 0, sizeof(BD_ADDR));
  tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
  tBTA_DM_BLE_TRACK_ADV_DATA track_adv_data;

  BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);

  if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) {
    btm_status = BTM_BleTrackAdvertiser(
        (tBTM_BLE_TRACK_ADV_CBACK*)p_data->ble_track_advert.p_track_adv_cback,
        p_data->ble_track_advert.ref_value);
  }

  if (BTM_CMD_STARTED != btm_status) {
    memset(&track_adv_data, 0, sizeof(tBTA_DM_BLE_TRACK_ADV_DATA));
    track_adv_data.advertiser_info_present =
        NO_ADV_INFO_PRESENT; /* Indicates failure */
    track_adv_data.client_if = (uint8_t)p_data->ble_track_advert.ref_value;
    p_data->ble_track_advert.p_track_adv_cback(&track_adv_data);
  }
}

/*******************************************************************************
 *
 * Function         bta_ble_scan_setup_cb
 *
 * Description      Handle the setup callback from BTM layer and forward it to
 *                  app layer
 *
 * Parameters:
 *
 ******************************************************************************/
void bta_ble_scan_setup_cb(tBTM_BLE_BATCH_SCAN_EVT evt,
                           tBTM_BLE_REF_VALUE ref_value, tBTM_STATUS status) {
  tBTA_BLE_BATCH_SCAN_EVT bta_evt = 0;

  APPL_TRACE_DEBUG("bta_ble_scan_setup_cb : evt: %d, ref_value: %d, status:%d",
                   evt, ref_value, status);

  switch (evt) {
    case BTM_BLE_BATCH_SCAN_ENABLE_EVT:
      bta_evt = BTA_BLE_BATCH_SCAN_ENB_EVT;
      break;
    case BTM_BLE_BATCH_SCAN_CFG_STRG_EVT:
      bta_evt = BTA_BLE_BATCH_SCAN_CFG_STRG_EVT;
      break;
    case BTM_BLE_BATCH_SCAN_DISABLE_EVT:
      bta_evt = BTA_BLE_BATCH_SCAN_DIS_EVT;
      break;
    case BTM_BLE_BATCH_SCAN_PARAM_EVT:
      bta_evt = BTA_BLE_BATCH_SCAN_PARAM_EVT;
      break;
    default:
      break;
  }

  if (NULL != bta_dm_cb.p_setup_cback)
    bta_dm_cb.p_setup_cback(bta_evt, ref_value, status);
}

/*******************************************************************************
 *
 * Function         bta_ble_enable_scan_cmpl
+0 −154
Original line number Diff line number Diff line
@@ -783,160 +783,6 @@ void BTA_DmSetBleConnScanParams(uint32_t scan_interval, uint32_t scan_window) {
  bta_sys_sendmsg(p_msg);
}

/*******************************************************************************
 *
 * Function         BTA_DmSetBleScanParams
 *
 * Description      This function is called to set scan parameters
 *
 * Parameters:      client_if - Client IF
 *                  scan_interval - scan interval
 *                  scan_window - scan window
 *                  scan_mode - scan mode
 *                  scan_param_setup_status_cback - Set scan param status
 *                                                  callback
 *
 * Returns          void
 *
 ******************************************************************************/

void BTA_DmSetBleScanParams(
    tGATT_IF client_if, uint32_t scan_interval, uint32_t scan_window,
    tBLE_SCAN_MODE scan_mode,
    tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback) {
  do_in_bta_thread(FROM_HERE,
                   base::Bind(&BTM_BleSetScanParams, client_if, scan_interval,
                              scan_window, scan_mode, scan_param_setup_cback));
}

/*******************************************************************************
 *                      BLE ADV data management API
 ******************************************************************************/

/*******************************************************************************
 *
 * Function         BTA_DmBleSetStorageParams
 *
 * Description      This function is called to override the BTA scan response.
 *
 * Parameters       batch_scan_full_max -Max storage space (in %) allocated to
 *                                       full scanning
 *                  batch_scan_trunc_max -Max storage space (in %) allocated to
 *                                        truncated scanning
 *                  batch_scan_notify_threshold -Setup notification level based
 *                                               on total space
 *                  p_setup_cback - Setup callback pointer
 *                  p_thres_cback - Threshold callback pointer
 *                  p_rep_cback - Reports callback pointer
 *                  ref_value - Ref value
 *
 * Returns          None
 *
 ******************************************************************************/
extern void BTA_DmBleSetStorageParams(
    uint8_t batch_scan_full_max, uint8_t batch_scan_trunc_max,
    uint8_t batch_scan_notify_threshold,
    tBTA_BLE_SCAN_SETUP_CBACK* p_setup_cback,
    tBTA_BLE_SCAN_THRESHOLD_CBACK* p_thres_cback,
    tBTA_BLE_SCAN_REP_CBACK* p_rep_cback, tBTM_BLE_REF_VALUE ref_value) {
  bta_dm_cb.p_setup_cback = p_setup_cback;
  do_in_bta_thread(
      FROM_HERE,
      base::Bind(&bta_dm_ble_setup_storage, batch_scan_full_max,
                 batch_scan_trunc_max, batch_scan_notify_threshold,
                 bta_ble_scan_setup_cb, p_thres_cback, p_rep_cback, ref_value));
}

/*******************************************************************************
 *
 * Function         BTA_DmBleEnableBatchScan
 *
 * Description      This function is called to enable the batch scan
 *
 * Parameters       scan_mode -Batch scan mode
 *                  scan_interval - Scan interval
 *                  scan_window - Scan window
 *                  discard_rule -Discard rules
 *                  addr_type - Address type
 *                  ref_value - Reference value
 *
 * Returns          None
 *
 ******************************************************************************/
extern void BTA_DmBleEnableBatchScan(tBTA_BLE_BATCH_SCAN_MODE scan_mode,
                                     uint32_t scan_interval,
                                     uint32_t scan_window,
                                     tBTA_BLE_DISCARD_RULE discard_rule,
                                     tBLE_ADDR_TYPE addr_type,
                                     tBTM_BLE_REF_VALUE ref_value) {
  do_in_bta_thread(FROM_HERE, base::Bind(&bta_dm_ble_enable_batch_scan,
                                         scan_mode, scan_interval, scan_window,
                                         discard_rule, addr_type, ref_value));
}

/*******************************************************************************
 *
 * Function         BTA_DmBleDisableBatchScan
 *
 * Description      This function is called to disable the batch scan
 *
 * Parameters       ref_value - Reference value
 *
 * Returns          None
 *
 ******************************************************************************/
extern void BTA_DmBleDisableBatchScan(tBTM_BLE_REF_VALUE ref_value) {
  do_in_bta_thread(FROM_HERE,
                   base::Bind(&bta_dm_ble_disable_batch_scan, ref_value));
}

/*******************************************************************************
 *
 * Function         BTA_DmBleReadScanReports
 *
 * Description      This function is called to read scan reports
 *
 * Parameters       scan_type -Batch scan mode
 *                  ref_value - Reference value
 *
 * Returns          None
 *
 ******************************************************************************/
extern void BTA_DmBleReadScanReports(tBTA_BLE_BATCH_SCAN_MODE scan_type,
                                     tBTM_BLE_REF_VALUE ref_value) {
  do_in_bta_thread(FROM_HERE, base::Bind(&bta_dm_ble_read_scan_reports,
                                         scan_type, ref_value));
}

/*******************************************************************************
 *
 * Function         BTA_DmBleTrackAdvertiser
 *
 * Description      This function is called to track advertiser
 *
 * Parameters       ref_value - Reference value
 *                  p_track_adv_cback - Track ADV callback
 *
 * Returns          None
 *
 ******************************************************************************/
extern void BTA_DmBleTrackAdvertiser(
    tBTM_BLE_REF_VALUE ref_value, tBTA_BLE_TRACK_ADV_CBACK* p_track_adv_cback) {
  tBTA_DM_API_TRACK_ADVERTISER* p_msg =
      (tBTA_DM_API_TRACK_ADVERTISER*)osi_malloc(
          sizeof(tBTA_DM_API_TRACK_ADVERTISER));

  p_msg->hdr.event = BTA_DM_API_BLE_TRACK_ADVERTISER_EVT;
  p_msg->p_track_adv_cback = p_track_adv_cback;
  p_msg->ref_value = ref_value;

  bta_sys_sendmsg(p_msg);
}

/*******************************************************************************
 *                      BLE ADV data management API
 ******************************************************************************/

/**
 * Set BLE connectable mode to auto connect
 */
+0 −26
Original line number Diff line number Diff line
@@ -89,7 +89,6 @@ enum {
  BTA_DM_API_LOCAL_PRIVACY_EVT,
#endif
  BTA_DM_API_SET_DATA_LENGTH_EVT,
  BTA_DM_API_BLE_TRACK_ADVERTISER_EVT,
  BTA_DM_API_BLE_ENERGY_INFO_EVT,

  BTA_DM_API_ENABLE_TEST_MODE_EVT,
@@ -414,13 +413,6 @@ typedef struct {

} tBTA_DM_API_BLE_FEATURE;

/* adv data structure */
typedef struct {
  BT_HDR hdr;
  tBTM_BLE_REF_VALUE ref_value;
  tBTA_BLE_TRACK_ADV_CBACK* p_track_adv_cback;
} tBTA_DM_API_TRACK_ADVERTISER;

typedef struct {
  BT_HDR hdr;
  tBTA_BLE_ENERGY_INFO_CBACK* p_energy_info_cback;
@@ -511,7 +503,6 @@ typedef union {
  tBTA_DM_API_UPDATE_CONN_PARAM ble_update_conn_params;
  tBTA_DM_API_BLE_SET_DATA_LENGTH ble_set_data_length;

  tBTA_DM_API_TRACK_ADVERTISER ble_track_advert;
  tBTA_DM_API_ENERGY_INFO ble_energy_info;

  tBTA_DM_API_REMOVE_ACL remove_acl;
@@ -617,7 +608,6 @@ typedef struct {
  bool is_bta_dm_active;
  tBTA_DM_ACTIVE_LINK device_list;
  tBTA_DM_SEC_CBACK* p_sec_cback;
  tBTA_BLE_SCAN_SETUP_CBACK* p_setup_cback;
  tBTA_BLE_ENERGY_INFO_CBACK* p_energy_info_cback;
  uint16_t state;
  bool disabling;
@@ -840,22 +830,6 @@ extern void bta_dm_ble_set_adv_params(uint16_t adv_int_min,

extern void bta_dm_ble_set_data_length(tBTA_DM_MSG* p_data);

extern void bta_dm_ble_setup_storage(
    uint8_t batch_scan_full_max, uint8_t batch_scan_trunc_max,
    uint8_t batch_scan_notify_threshold,
    tBTA_BLE_SCAN_SETUP_CBACK* p_setup_cback,
    tBTA_BLE_SCAN_THRESHOLD_CBACK* p_thres_cback,
    tBTA_BLE_SCAN_REP_CBACK* p_read_rep_cback, tBTM_BLE_REF_VALUE ref_value);
extern void bta_dm_ble_enable_batch_scan(tBTA_BLE_BATCH_SCAN_MODE scan_mode,
                                         uint32_t scan_int,
                                         uint32_t scan_window,
                                         tBTA_BLE_DISCARD_RULE discard_rule,
                                         tBLE_ADDR_TYPE addr_type,
                                         tBTM_BLE_REF_VALUE ref_value);
extern void bta_dm_ble_disable_batch_scan(tBTM_BLE_REF_VALUE ref_value);
extern void bta_dm_ble_read_scan_reports(tBTA_BLE_BATCH_SCAN_MODE scan_type,
                                         tBTM_BLE_REF_VALUE ref_value);
extern void bta_dm_ble_track_advertiser(tBTA_DM_MSG* p_data);
extern void bta_dm_ble_get_energy_info(tBTA_DM_MSG* p_data);

extern void bta_dm_set_encryption(tBTA_DM_MSG* p_data);
+0 −1
Original line number Diff line number Diff line
@@ -83,7 +83,6 @@ const tBTA_DM_ACTION bta_dm_action[] = {
    bta_dm_ble_config_local_privacy, /* BTA_DM_API_LOCAL_PRIVACY_EVT */
#endif
    bta_dm_ble_set_data_length, /* BTA_DM_API_SET_DATA_LENGTH_EVT */
    bta_dm_ble_track_advertiser,   /* BTA_DM_API_BLE_TRACK_ADVERTISER_EVT */
    bta_dm_ble_get_energy_info,    /* BTA_DM_API_BLE_ENERGY_INFO_EVT */

    bta_dm_enable_test_mode,  /*  BTA_DM_API_ENABLE_TEST_MODE_EVT     */
+0 −148
Original line number Diff line number Diff line
@@ -332,18 +332,6 @@ typedef uint8_t tBTA_BLE_DISCARD_RULE;
enum { BTA_BLE_ADV_SEEN_FIRST_TIME = 0, BTA_BLE_ADV_TRACKING_TIMEOUT = 1 };
typedef uint8_t tBTA_BLE_ADV_CHANGE_REASON;

enum {
  BTA_BLE_BATCH_SCAN_ENB_EVT = 1,
  BTA_BLE_BATCH_SCAN_CFG_STRG_EVT = 2,
  BTA_BLE_BATCH_SCAN_DATA_EVT = 3,
  BTA_BLE_BATCH_SCAN_THRES_EVT = 4,
  BTA_BLE_BATCH_SCAN_PARAM_EVT = 5,
  BTA_BLE_BATCH_SCAN_DIS_EVT = 6
};
typedef tBTM_BLE_BATCH_SCAN_EVT tBTA_BLE_BATCH_SCAN_EVT;

typedef tBTM_BLE_TRACK_ADV_ACTION tBTA_BLE_TRACK_ADV_ACTION;

/* BLE customer specific feature function type definitions */
/* data type used on customer specific feature for RSSI monitoring */
#define BTA_BLE_RSSI_ALERT_HI 0
@@ -828,25 +816,6 @@ typedef uint8_t tBTA_DM_BLE_ADV_INFO_PRESENT;
typedef uint8_t tBTA_DM_BLE_RSSI_VALUE;
typedef uint16_t tBTA_DM_BLE_ADV_INFO_TIMESTAMP;

typedef tBTM_BLE_TRACK_ADV_DATA tBTA_DM_BLE_TRACK_ADV_DATA;

typedef void(tBTA_BLE_SCAN_THRESHOLD_CBACK)(tBTM_BLE_REF_VALUE ref_value);

typedef void(tBTA_BLE_SCAN_REP_CBACK)(tBTM_BLE_REF_VALUE ref_value,
                                      uint8_t report_format,
                                      uint8_t num_records, uint16_t data_len,
                                      uint8_t* p_rep_data, tBTA_STATUS status);

typedef void(tBTA_BLE_SCAN_SETUP_CBACK)(tBTA_BLE_BATCH_SCAN_EVT evt,
                                        tBTM_BLE_REF_VALUE ref_value,
                                        tBTA_STATUS status);

typedef void(tBTA_BLE_TRACK_ADV_CMPL_CBACK)(int action, tBTA_STATUS status,
                                            tBTM_BLE_PF_AVBL_SPACE avbl_space,
                                            tBTM_BLE_REF_VALUE ref_value);

typedef void(tBTA_BLE_TRACK_ADV_CBACK)(tBTA_DM_BLE_TRACK_ADV_DATA* p_adv_data);

typedef void(tBTA_BLE_ENERGY_INFO_CBACK)(tBTA_DM_BLE_TX_TIME_MS tx_time,
                                         tBTA_DM_BLE_RX_TIME_MS rx_time,
                                         tBTA_DM_BLE_IDLE_TIME_MS idle_time,
@@ -1563,27 +1532,6 @@ extern void BTA_DmSetBlePrefConnParams(const BD_ADDR bd_addr,
extern void BTA_DmSetBleConnScanParams(uint32_t scan_interval,
                                       uint32_t scan_window);

/*******************************************************************************
 *
 * Function         BTA_DmSetBleScanParams
 *
 * Description      This function is called to set scan parameters
 *
 * Parameters:      client_if - Client IF
 *                  scan_interval - scan interval
 *                  scan_window - scan window
 *                  scan_mode - scan mode
 *                  scan_param_setup_status_cback - Set scan param status
 *                                                  callback
 *
 * Returns          void
 *
 ******************************************************************************/
extern void BTA_DmSetBleScanParams(
    tGATT_IF client_if, uint32_t scan_interval, uint32_t scan_window,
    tBLE_SCAN_MODE scan_mode,
    tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_status_cback);

/*******************************************************************************
 *
 * Function         BTA_DmSearchExt
@@ -1754,102 +1702,6 @@ extern void BTA_DmBleUpdateConnectionParams(const BD_ADDR bd_addr,
extern void BTA_DmBleSetDataLength(BD_ADDR remote_device,
                                   uint16_t tx_data_length);

/*******************************************************************************
 *
 * Function         BTA_DmBleSetStorageParams
 *
 * Description      This function is called to set the storage parameters
 *
 * Parameters       batch_scan_full_max -Max storage space (in %) allocated to
 *                                       full scanning
 *                  batch_scan_trunc_max -Max storage space (in %) allocated to
 *                                        truncated scanning
 *                  batch_scan_notify_threshold - Setup notification level based
 *                                                on total space consumed by
 *                                                both pools. Setting it to 0
 *                                                will disable threshold
 *                                                notification
 *                  p_setup_cback - Setup callback
 *                  p_thres_cback - Threshold callback
 *                  p_rep_cback - Reports callback
 *                  ref_value - Reference value
 *
 * Returns           None
 *
 ******************************************************************************/
extern void BTA_DmBleSetStorageParams(
    uint8_t batch_scan_full_max, uint8_t batch_scan_trunc_max,
    uint8_t batch_scan_notify_threshold,
    tBTA_BLE_SCAN_SETUP_CBACK* p_setup_cback,
    tBTA_BLE_SCAN_THRESHOLD_CBACK* p_thres_cback,
    tBTA_BLE_SCAN_REP_CBACK* p_rep_cback, tBTM_BLE_REF_VALUE ref_value);

/*******************************************************************************
 *
 * Function         BTA_DmBleEnableBatchScan
 *
 * Description      This function is called to enable the batch scan
 *
 * Parameters       scan_mode -Batch scan mode
 *                  scan_interval - Scan interval
 *                  scan_window - Scan window
 *                  discard_rule -Discard rules
 *                  addr_type - Address type
 *                  ref_value - Reference value
 *
 * Returns           None
 *
 ******************************************************************************/
extern void BTA_DmBleEnableBatchScan(tBTA_BLE_BATCH_SCAN_MODE scan_mode,
                                     uint32_t scan_interval,
                                     uint32_t scan_window,
                                     tBTA_BLE_DISCARD_RULE discard_rule,
                                     tBLE_ADDR_TYPE addr_type,
                                     tBTM_BLE_REF_VALUE ref_value);

/*******************************************************************************
 *
 * Function         BTA_DmBleReadScanReports
 *
 * Description      This function is called to read the batch scan reports
 *
 * Parameters       scan_mode -Batch scan mode
 *                  ref_value - Reference value
 *
 * Returns          None
 *
 ******************************************************************************/
extern void BTA_DmBleReadScanReports(tBTA_BLE_BATCH_SCAN_MODE scan_type,
                                     tBTM_BLE_REF_VALUE ref_value);

/*******************************************************************************
 *
 * Function         BTA_DmBleDisableBatchScan
 *
 * Description      This function is called to disable the batch scanning
 *
 * Parameters       ref_value - Reference value
 *
 * Returns          None
 *
 ******************************************************************************/
extern void BTA_DmBleDisableBatchScan(tBTM_BLE_REF_VALUE ref_value);

/*******************************************************************************
 *
 * Function         BTA_DmBleTrackAdvertiser
 *
 * Description      This function is called to track the advertiser
 *
 * Parameters    ref_value - Reference value
 *               p_track_adv_cback - ADV callback
 *
 * Returns          None
 *
 ******************************************************************************/
extern void BTA_DmBleTrackAdvertiser(
    tBTM_BLE_REF_VALUE ref_value, tBTA_BLE_TRACK_ADV_CBACK* p_track_adv_cback);

/*******************************************************************************
 *
 * Function         BTA_DmBleGetEnergyInfo
Loading