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

Commit bc4fa9ae authored by Rongxuan Liu's avatar Rongxuan Liu
Browse files

Extend le_advertising_manager for registering callback by native clients

With this change, all clients, java or native, will register callbacks
with client_id + register_id. And when invoking the callbacks,
le_advertising_manager will check the client_id first. Native clients'
callback will only be invoked when the client_id is non Java/Jni.

Bug: 290393336
Tag: #refactor
Test: atest --host bluetooth_test_broadcaster bluetooth_test_broadcaster_state_machine  --no-bazel-mode

Change-Id: I86176db437d5acb72474e4d3847e070a7349469c
parent 4f3c7a98
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -2400,9 +2400,10 @@ static void startAdvertisingSetNative(
  env->ReleaseByteArrayElements(periodic_data, periodic_data_data, JNI_ABORT);

  sGattIf->advertiser->StartAdvertisingSet(
      reg_id, base::Bind(&ble_advertising_set_started_cb, reg_id, server_if),
      params, data_vec, scan_resp_vec, periodicParams, periodic_data_vec,
      duration, maxExtAdvEvents, base::Bind(ble_advertising_set_timeout_cb));
      kAdvertiserClientIdJni, reg_id,
      base::Bind(&ble_advertising_set_started_cb, reg_id, server_if), params,
      data_vec, scan_resp_vec, periodicParams, periodic_data_vec, duration,
      maxExtAdvEvents, base::Bind(ble_advertising_set_timeout_cb));
}

static void stopAdvertisingSetNative(JNIEnv* env, jobject object,
+2 −1
Original line number Diff line number Diff line
@@ -190,7 +190,8 @@ class BleAdvertiserInterfaceImpl : public BleAdvertiserInterface {
             timeout_s * 100, jni_thread_wrapper(FROM_HERE, timeout_cb)));
  }

  void StartAdvertisingSet(int reg_id, IdTxPowerStatusCallback cb,
  void StartAdvertisingSet(uint8_t client_id, int reg_id,
                           IdTxPowerStatusCallback cb,
                           AdvertiseParameters params,
                           std::vector<uint8_t> advertise_data,
                           std::vector<uint8_t> scan_response_data,
+8 −0
Original line number Diff line number Diff line
@@ -197,6 +197,10 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
    return num_instances_;
  }

  int get_advertiser_reg_id(AdvertiserId advertiser_id) {
    return id_map_[advertiser_id];
  }

  AdvertisingApiType get_advertising_api_type() const {
    return advertising_api_type_;
  }
@@ -1638,6 +1642,10 @@ size_t LeAdvertisingManager::GetNumberOfAdvertisingInstances() const {
  return pimpl_->GetNumberOfAdvertisingInstances();
}

int LeAdvertisingManager::GetAdvertiserRegId(AdvertiserId advertiser_id) {
  return pimpl_->get_advertiser_reg_id(advertiser_id);
}

void LeAdvertisingManager::ExtendedCreateAdvertiser(
    int reg_id,
    const AdvertisingConfig config,
+2 −0
Original line number Diff line number Diff line
@@ -111,6 +111,8 @@ class LeAdvertisingManager : public bluetooth::Module {

  size_t GetNumberOfAdvertisingInstances() const;

  int GetAdvertiserRegId(AdvertiserId advertiser_id);

  void ExtendedCreateAdvertiser(
      int reg_id,
      const AdvertisingConfig config,
+1 −0
Original line number Diff line number Diff line
@@ -176,6 +176,7 @@ void BleAdvertiserIntf::StartAdvertisingSet(
  std::copy(periodic_data.begin(), periodic_data.end(), std::back_inserter(converted_periodic_data));

  adv_intf_->StartAdvertisingSet(
      kAdvertiserClientIdJni,
      reg_id,
      base::Bind(&BleAdvertiserIntf::OnIdTxPowerStatusCallback, base::Unretained(this)),
      converted_params,
Loading