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

Commit 505080d0 authored by Jakub Pawlowski's avatar Jakub Pawlowski Committed by Gerrit Code Review
Browse files

Merge changes from topic 'ble_scanner_callbacks'

* changes:
  Use base::Callbacks in BleScannerInterface (2/3)
  Remove unnecessary extern declarations
parents d9dd7b63 0972e7ac
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -32,8 +32,6 @@ using base::Bind;
using base::Owned;
using std::vector;

extern bt_status_t do_in_jni_thread(const base::Closure& task);

namespace {

template <typename T>
+50 −149
Original line number Diff line number Diff line
@@ -50,7 +50,6 @@ using base::Owned;
using std::vector;
using RegisterCallback = BleScannerInterface::RegisterCallback;

extern bt_status_t do_in_jni_thread(const base::Closure& task);
extern const btgatt_callbacks_t* bt_gatt_callbacks;

#define SCAN_CBACK_IN_JNI(P_CBACK, ...)                              \
@@ -99,60 +98,6 @@ bool btif_gattc_find_bdaddr(BD_ADDR p_bda) {

void btif_gattc_init_dev_cb(void) { p_dev_cb.clear(); }

btgattc_error_t btif_gattc_translate_btm_status(tBTM_STATUS status) {
  switch (status) {
    case BTM_SUCCESS:
    case BTM_SUCCESS_NO_SECURITY:
      return BT_GATTC_COMMAND_SUCCESS;

    case BTM_CMD_STARTED:
      return BT_GATTC_COMMAND_STARTED;

    case BTM_BUSY:
      return BT_GATTC_COMMAND_BUSY;

    case BTM_CMD_STORED:
      return BT_GATTC_COMMAND_STORED;

    case BTM_NO_RESOURCES:
      return BT_GATTC_NO_RESOURCES;

    case BTM_MODE_UNSUPPORTED:
    case BTM_WRONG_MODE:
    case BTM_MODE4_LEVEL4_NOT_SUPPORTED:
      return BT_GATTC_MODE_UNSUPPORTED;

    case BTM_ILLEGAL_VALUE:
    case BTM_SCO_BAD_LENGTH:
      return BT_GATTC_ILLEGAL_VALUE;

    case BTM_UNKNOWN_ADDR:
      return BT_GATTC_UNKNOWN_ADDR;

    case BTM_DEVICE_TIMEOUT:
      return BT_GATTC_DEVICE_TIMEOUT;

    case BTM_FAILED_ON_SECURITY:
    case BTM_REPEATED_ATTEMPTS:
    case BTM_NOT_AUTHORIZED:
      return BT_GATTC_SECURITY_ERROR;

    case BTM_DEV_RESET:
    case BTM_ILLEGAL_ACTION:
      return BT_GATTC_INCORRECT_STATE;

    case BTM_BAD_VALUE_RET:
      return BT_GATTC_INVALID_CONTROLLER_OUTPUT;

    case BTM_DELAY_CHECK:
      return BT_GATTC_DELAYED_ENCRYPTION_CHECK;

    case BTM_ERR_PROCESSING:
    default:
      return BT_GATTC_ERR_PROCESSING;
  }
}

void btif_gatts_upstreams_evt(uint16_t event, char* p_param) {
  LOG_VERBOSE(LOG_TAG, "%s: Event %d", __func__, event);

@@ -180,30 +125,6 @@ void bta_gatts_cback(tBTA_GATTC_EVT event, tBTA_GATTC* p_data) {
  ASSERTC(status == BT_STATUS_SUCCESS, "Context transfer failed!", status);
}

void bta_scan_param_setup_cb(tGATT_IF client_if, tBTM_STATUS status) {
  SCAN_CBACK_IN_JNI(scan_parameter_setup_completed_cb, client_if,
                    btif_gattc_translate_btm_status(status));
}

void bta_scan_filt_cfg_cb(uint8_t filt_type, uint8_t client_if,
                          tBTM_BLE_PF_AVBL_SPACE avbl_space,
                          tBTM_BLE_PF_ACTION action, tBTA_STATUS status) {
  SCAN_CBACK_IN_JNI(scan_filter_cfg_cb, action, client_if, status, filt_type,
                    avbl_space);
}

void bta_scan_filt_param_setup_cb(tBTM_BLE_REF_VALUE ref_value,
                                  tBTM_BLE_PF_AVBL_SPACE avbl_space,
                                  uint8_t action_type, tBTA_STATUS status) {
  SCAN_CBACK_IN_JNI(scan_filter_param_cb, action_type, ref_value, status,
                    avbl_space);
}

void bta_scan_filt_status_cb(tBTM_BLE_REF_VALUE ref_value, uint8_t action,
                             tBTA_STATUS status) {
  SCAN_CBACK_IN_JNI(scan_filter_status_cb, action, ref_value, status);
}

void bta_batch_scan_threshold_cb(tBTM_BLE_REF_VALUE ref_value) {
  SCAN_CBACK_IN_JNI(batchscan_threshold_cb, ref_value);
}
@@ -310,18 +231,12 @@ class BleScannerInterfaceImpl : public BleScannerInterface {
  ~BleScannerInterfaceImpl(){};

  void RegisterScanner(RegisterCallback cb) override {
    do_in_bta_thread(
        FROM_HERE,
    do_in_bta_thread(FROM_HERE,
                     Bind(
                         [](RegisterCallback cb) {
                           BTA_GATTC_AppRegister(
                               bta_gatts_cback,
                  base::Bind(
                      [](RegisterCallback cb, uint8_t client_id,
                         uint8_t status) {
                        do_in_jni_thread(base::Bind(cb, client_id, status));
                      },
                      std::move(cb)));
                               jni_thread_wrapper(FROM_HERE, std::move(cb)));
                         },
                         std::move(cb)));
  }
@@ -344,7 +259,8 @@ class BleScannerInterfaceImpl : public BleScannerInterface {

  void ScanFilterParamSetup(
      uint8_t client_if, uint8_t action, uint8_t filt_index,
      std::unique_ptr<btgatt_filt_param_setup_t> filt_param) override {
      std::unique_ptr<btgatt_filt_param_setup_t> filt_param,
      FilterParamSetupCallback cb) override {
    BTIF_TRACE_DEBUG("%s", __func__);

    if (filt_param && filt_param->dely_mode == 1) {
@@ -353,20 +269,19 @@ class BleScannerInterfaceImpl : public BleScannerInterface {
                                client_if));
    }

    do_in_bta_thread(
        FROM_HERE,
    do_in_bta_thread(FROM_HERE,
                     base::Bind(&BTM_BleAdvFilterParamSetup, action, filt_index,
                                base::Passed(&filt_param),
                   base::Bind(&bta_scan_filt_param_setup_cb, client_if)));
                                jni_thread_wrapper(FROM_HERE, std::move(cb))));
  }

  void ScanFilterAddRemove(int client_if, int action, int filt_type,
                           int filt_index, int company_id, int company_id_mask,
  void ScanFilterAddRemove(int action, int filt_type, int filt_index,
                           int company_id, int company_id_mask,
                           const bt_uuid_t* p_uuid,
                           const bt_uuid_t* p_uuid_mask,
                           const bt_bdaddr_t* bd_addr, char addr_type,
                           vector<uint8_t> data,
                           vector<uint8_t> mask) override {
                           vector<uint8_t> data, vector<uint8_t> mask,
                           FilterConfigCallback cb) override {
    BTIF_TRACE_DEBUG("%s, %d, %d", __func__, action, filt_type);

    /* If data is passed, both mask and data have to be the same length */
@@ -383,7 +298,7 @@ class BleScannerInterfaceImpl : public BleScannerInterface {
            FROM_HERE,
            base::Bind(&BTM_LE_PF_addr_filter, action, filt_index,
                       std::move(target_addr),
                       Bind(&bta_scan_filt_cfg_cb, filt_type, client_if)));
                       jni_thread_wrapper(FROM_HERE, Bind(cb, filt_type))));
        return;
      }

@@ -402,7 +317,7 @@ class BleScannerInterfaceImpl : public BleScannerInterface {
              FROM_HERE,
              base::Bind(&BTM_LE_PF_uuid_filter, action, filt_index, filt_type,
                         bt_uuid, BTM_BLE_PF_LOGIC_AND, nullptr,
                         Bind(&bta_scan_filt_cfg_cb, filt_type, client_if)));
                         jni_thread_wrapper(FROM_HERE, Bind(cb, filt_type))));
          return;
        }

@@ -412,15 +327,16 @@ class BleScannerInterfaceImpl : public BleScannerInterface {
            FROM_HERE,
            base::Bind(&BTM_LE_PF_uuid_filter, action, filt_index, filt_type,
                       bt_uuid, BTM_BLE_PF_LOGIC_AND, base::Owned(mask),
                       Bind(&bta_scan_filt_cfg_cb, filt_type, client_if)));
                       jni_thread_wrapper(FROM_HERE, Bind(cb, filt_type))));
        return;
      }

      case BTM_BLE_PF_LOCAL_NAME: {
        do_in_bta_thread(
            FROM_HERE, base::Bind(&BTM_LE_PF_local_name, action, filt_index,
                                  std::move(data), Bind(&bta_scan_filt_cfg_cb,
                                                        filt_type, client_if)));
            FROM_HERE,
            base::Bind(&BTM_LE_PF_local_name, action, filt_index,
                       std::move(data),
                       jni_thread_wrapper(FROM_HERE, Bind(cb, filt_type))));
        return;
      }

@@ -429,7 +345,7 @@ class BleScannerInterfaceImpl : public BleScannerInterface {
            FROM_HERE,
            base::Bind(&BTM_LE_PF_manu_data, action, filt_index, company_id,
                       company_id_mask, std::move(data), std::move(mask),
                       Bind(&bta_scan_filt_cfg_cb, filt_type, client_if)));
                       jni_thread_wrapper(FROM_HERE, Bind(cb, filt_type))));
        return;
      }

@@ -438,7 +354,7 @@ class BleScannerInterfaceImpl : public BleScannerInterface {
            FROM_HERE,
            base::Bind(&BTM_LE_PF_srvc_data_pattern, action, filt_index,
                       std::move(data), std::move(mask),
                       Bind(&bta_scan_filt_cfg_cb, filt_type, client_if)));
                       jni_thread_wrapper(FROM_HERE, Bind(cb, filt_type))));
        return;
      }

@@ -448,70 +364,55 @@ class BleScannerInterfaceImpl : public BleScannerInterface {
    }
  }

  void ScanFilterClear(int client_if, int filter_index) override {
  void ScanFilterClear(int filter_index, FilterConfigCallback cb) override {
    BTIF_TRACE_DEBUG("%s: filter_index: %d", __func__, filter_index);
    do_in_bta_thread(FROM_HERE,
                     base::Bind(&BTM_LE_PF_clear, filter_index,
                                Bind(&bta_scan_filt_cfg_cb, BTM_BLE_PF_TYPE_ALL,
                                     client_if)));
                                jni_thread_wrapper(
                                    FROM_HERE, Bind(cb, BTM_BLE_PF_TYPE_ALL))));
  }

  void ScanFilterEnable(int client_if, bool enable) override {
  void ScanFilterEnable(bool enable, EnableCallback cb) override {
    BTIF_TRACE_DEBUG("%s: enable: %d", __func__, enable);

    uint8_t action = enable ? 1 : 0;
    do_in_bta_thread(
        FROM_HERE, base::Bind(&BTM_BleEnableDisableFilterFeature, action,
                              base::Bind(&bta_scan_filt_status_cb, client_if)));
    do_in_bta_thread(FROM_HERE,
                     base::Bind(&BTM_BleEnableDisableFilterFeature, action,
                                jni_thread_wrapper(FROM_HERE, std::move(cb))));
  }

  void SetScanParameters(int client_if, int scan_interval,
                         int scan_window) override {
  void SetScanParameters(int scan_interval, int scan_window,
                         Callback cb) override {
    do_in_bta_thread(
        FROM_HERE,
        base::Bind(&BTM_BleSetScanParams, client_if, scan_interval, scan_window,
                   BTM_BLE_SCAN_MODE_ACTI, bta_scan_param_setup_cb));
        FROM_HERE, base::Bind(&BTM_BleSetScanParams, scan_interval, scan_window,
                              BTM_BLE_SCAN_MODE_ACTI,
                              jni_thread_wrapper(FROM_HERE, std::move(cb))));
  }

  void BatchscanConfigStorage(int client_if, int batch_scan_full_max,
                              int batch_scan_trunc_max,
                              int batch_scan_notify_threshold) override {
    base::Callback<void(uint8_t /* status */)> cb = base::Bind(
        [](int client_if, uint8_t status) {
          SCAN_CBACK_IN_JNI(batchscan_cfg_storage_cb, client_if, status);
        },
        client_if);

                              int batch_scan_notify_threshold,
                              Callback cb) override {
    do_in_bta_thread(
        FROM_HERE,
        base::Bind(&BTM_BleSetStorageConfig, (uint8_t)batch_scan_full_max,
                   (uint8_t)batch_scan_trunc_max,
                   (uint8_t)batch_scan_notify_threshold, cb,
                   (uint8_t)batch_scan_notify_threshold,
                   jni_thread_wrapper(FROM_HERE, cb),
                   bta_batch_scan_threshold_cb, (tBTM_BLE_REF_VALUE)client_if));
  }

  void BatchscanEnable(int client_if, int scan_mode, int scan_interval,
                       int scan_window, int addr_type,
                       int discard_rule) override {
    auto cb = base::Bind(
        [](int client_if, uint8_t status) {
          SCAN_CBACK_IN_JNI(batchscan_enb_disable_cb, 1, client_if, status);
        },
        client_if);

  void BatchscanEnable(int scan_mode, int scan_interval, int scan_window,
                       int addr_type, int discard_rule, Callback cb) override {
    do_in_bta_thread(
        FROM_HERE, base::Bind(&BTM_BleEnableBatchScan, scan_mode, scan_interval,
                              scan_window, discard_rule, addr_type, cb));
                              scan_window, discard_rule, addr_type,
                              jni_thread_wrapper(FROM_HERE, cb)));
  }

  void BatchscanDisable(int client_if) override {
    auto cb = base::Bind(
        [](int client_if, uint8_t status) {
          SCAN_CBACK_IN_JNI(batchscan_enb_disable_cb, 1, client_if, status);
        },
        client_if);

    do_in_bta_thread(FROM_HERE, base::Bind(&BTM_BleDisableBatchScan, cb));
  void BatchscanDisable(Callback cb) override {
    do_in_bta_thread(FROM_HERE, base::Bind(&BTM_BleDisableBatchScan,
                                           jni_thread_wrapper(FROM_HERE, cb)));
  }

  void BatchscanReadReports(int client_if, int scan_mode) override {
+0 −1
Original line number Diff line number Diff line
@@ -55,7 +55,6 @@ using base::Bind;
using base::Owned;
using std::vector;

extern bt_status_t do_in_jni_thread(const base::Closure& task);
extern bt_status_t btif_gattc_test_command_impl(int command,
                                                btgatt_test_params_t* params);
extern const btgatt_callbacks_t* bt_gatt_callbacks;
+0 −2
Original line number Diff line number Diff line
@@ -52,8 +52,6 @@ using base::Bind;
using base::Owned;
using std::vector;

extern bt_status_t do_in_jni_thread(const base::Closure& task);

/*******************************************************************************
 *  Constants & Macros
 ******************************************************************************/
+0 −7
Original line number Diff line number Diff line
@@ -444,16 +444,9 @@ const btgatt_client_callbacks_t gatt_client_callbacks = {

const btgatt_scanner_callbacks_t gatt_scanner_callbacks = {
    ScanResultCallback,
    nullptr, /* batchscan_cfg_storage_cb; */
    nullptr, /* batchscan_enb_disable_cb; */
    nullptr, /* batchscan_reports_cb; */
    nullptr, /* batchscan_threshold_cb; */
    nullptr, /* track_adv_event_cb; */
    nullptr, /* scan_parameter_setup_completed_cb; */
    nullptr, /* scan_filter_cfg_cb; */
    nullptr, /* scan_filter_param_cb; */
    nullptr, /* scan_filter_status_cb; */

};

const btgatt_callbacks_t gatt_callbacks = {
Loading