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

Commit 207da6b6 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes I5f1244d7,Ie41c2519,Ie07221ad

* changes:
  gd: Enable advertising module by INIT flag
  gd: Prevent set privacy policy twice
  gd: Handle periodic advertising in start advertising
parents dbf26b51 3120a44b
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -284,6 +284,12 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
    }
    set_data(id, false, config.advertisement);

    if (!config.periodic_data.empty()) {
      set_periodic_parameter(id, config.periodic_advertising_parameters);
      set_periodic_data(id, config.periodic_data);
      enable_periodic_advertising(id, true);
    }

    if (!paused) {
      enable_advertiser(id, true, 0, 0);
    } else {
+10 −9
Original line number Diff line number Diff line
@@ -25,6 +25,14 @@
namespace bluetooth {
namespace hci {

class PeriodicAdvertisingParameters {
 public:
  uint16_t min_interval;
  uint16_t max_interval;
  uint16_t properties;
  enum AdvertisingProperty { INCLUDE_TX_POWER = 0x06 };
};

class AdvertisingConfig {
 public:
  std::vector<GapData> advertisement;
@@ -54,19 +62,12 @@ class ExtendedAdvertisingConfig : public AdvertisingConfig {
  SecondaryPhyType secondary_advertising_phy;
  uint8_t sid = 0x00;
  Enable enable_scan_request_notifications = Enable::DISABLED;
  std::vector<GapData> periodic_data;
  PeriodicAdvertisingParameters periodic_advertising_parameters;
  ExtendedAdvertisingConfig() = default;
  ExtendedAdvertisingConfig(const AdvertisingConfig& config);
};

class PeriodicAdvertisingParameters {
 public:
  uint16_t min_interval;
  uint16_t max_interval;
  uint16_t properties;

  enum AdvertisingProperty { INCLUDE_TX_POWER = 0x06 };
};

using AdvertiserId = uint8_t;

class AdvertisingCallback {
+22 −1
Original line number Diff line number Diff line
@@ -50,7 +50,8 @@ class BleAdvertiserInterfaceImpl : public BleAdvertiserInterface,
    // Register callback
    bluetooth::shim::GetAdvertising()->RegisterAdvertisingCallback(this);

    if (!bluetooth::common::init_flags::gd_security_is_enabled()) {
    if (!bluetooth::common::init_flags::gd_security_is_enabled() &&
        !bluetooth::common::init_flags::gd_acl_is_enabled()) {
      // Set private policy
      auto address = bluetooth::shim::GetController()->GetMacAddress();
      bluetooth::hci::AddressWithType address_with_type(
@@ -140,6 +141,12 @@ class BleAdvertiserInterfaceImpl : public BleAdvertiserInterface,

    bluetooth::hci::ExtendedAdvertisingConfig config{};
    parse_parameter(config, params);
    bluetooth::hci::PeriodicAdvertisingParameters periodic_parameters;
    periodic_parameters.max_interval = periodic_params.max_interval;
    periodic_parameters.min_interval = periodic_params.min_interval;
    periodic_parameters.properties =
        periodic_params.periodic_advertising_properties;
    config.periodic_advertising_parameters = periodic_parameters;

    size_t offset = 0;
    while (offset < advertise_data.size()) {
@@ -169,6 +176,20 @@ class BleAdvertiserInterfaceImpl : public BleAdvertiserInterface,
      offset += len + 1;  // 1 byte for len
    }

    offset = 0;
    while (offset < periodic_data.size()) {
      GapData gap_data;
      uint8_t len = periodic_data[offset];
      auto begin = periodic_data.begin() + offset;
      auto end = begin + len + 1;  // 1 byte for len
      auto data_copy = std::make_shared<std::vector<uint8_t>>(begin, end);
      bluetooth::packet::PacketView<bluetooth::packet::kLittleEndian> packet(
          data_copy);
      GapData::Parse(&gap_data, packet.begin());
      config.periodic_data.push_back(gap_data);
      offset += len + 1;  // 1 byte for len
    }

    bluetooth::hci::AdvertiserId id =
        bluetooth::shim::GetAdvertising()->ExtendedCreateAdvertiser(
            reg_id, config, scan_callback, set_terminated_callback,
+1 −3
Original line number Diff line number Diff line
@@ -55,9 +55,7 @@ EXPORT_SYMBOL extern const module_t gd_shim_module = {
    .dependencies = {kUnusedModuleDependencies}};

bool bluetooth::shim::is_gd_advertising_enabled() {
  // TODO enable when module ready
  // return bluetooth::common::init_flags::gd_advertising_is_enabled();
  return false;
  return bluetooth::common::init_flags::gd_advertising_is_enabled();
}

bool bluetooth::shim::is_gd_security_enabled() {