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

Commit c17b012f authored by Rahul Arya's avatar Rahul Arya
Browse files

[Non-Discoverable Mode] Remove AdvertiserConfig

We have AdvertiserConfig and ExtendedAdvertiserConfig, but only use the
latter. This CL merges the two structs.

Note that there are still two *protos* with these two names, but the
protos are actually used in cert tests. But I don't see value in keeping
the separation in the actual implementation, since the reason for two
protos seems to just be convenience.

Test: gd cert
Bug: 254314964
Change-Id: Ibe58cfd44e124ea698932077da5f0b25de60fdbb
parent 0d52530e
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -56,7 +56,8 @@ hci::GapData GapDataFromProto(const GapDataMsg& gap_data_proto) {
  return gap_data;
}

bool AdvertisingConfigFromProto(const AdvertisingConfig& config_proto, hci::ExtendedAdvertisingConfig* config) {
bool AdvertisingConfigFromProto(
    const AdvertisingConfig& config_proto, hci::AdvertisingConfig* config) {
  for (const auto& elem : config_proto.advertisement()) {
    config->advertisement.push_back(GapDataFromProto(elem));
  }
@@ -129,7 +130,7 @@ bool AdvertisingConfigFromProto(const AdvertisingConfig& config_proto, hci::Exte
}

bool ExtendedAdvertisingConfigFromProto(
    const ExtendedAdvertisingConfig& config_proto, hci::ExtendedAdvertisingConfig* config) {
    const ExtendedAdvertisingConfig& config_proto, hci::AdvertisingConfig* config) {
  if (!AdvertisingConfigFromProto(config_proto.advertising_config(), config)) {
    LOG_WARN("Error parsing advertising config");
    return false;
@@ -217,7 +218,7 @@ class LeAdvertisingManagerFacadeService : public LeAdvertisingManagerFacade::Ser

  ::grpc::Status CreateAdvertiser(::grpc::ServerContext* context, const CreateAdvertiserRequest* request,
                                  CreateAdvertiserResponse* response) override {
    hci::ExtendedAdvertisingConfig config = {};
    hci::AdvertisingConfig config = {};
    if (!AdvertisingConfigFromProto(request->config(), &config)) {
      LOG_WARN("Error parsing advertising config %s", request->SerializeAsString().c_str());
      response->set_advertiser_id(LeAdvertisingManager::kInvalidId);
@@ -245,7 +246,7 @@ class LeAdvertisingManagerFacadeService : public LeAdvertisingManagerFacade::Ser
  ::grpc::Status ExtendedCreateAdvertiser(::grpc::ServerContext* context,
                                          const ExtendedCreateAdvertiserRequest* request,
                                          ExtendedCreateAdvertiserResponse* response) override {
    hci::ExtendedAdvertisingConfig config = {};
    hci::AdvertisingConfig config = {};
    if (!ExtendedAdvertisingConfigFromProto(request->config(), &config)) {
      LOG_WARN("Error parsing advertising config %s", request->SerializeAsString().c_str());
      response->set_advertiser_id(LeAdvertisingManager::kInvalidId);
@@ -292,7 +293,7 @@ class LeAdvertisingManagerFacadeService : public LeAdvertisingManagerFacade::Ser
      ::grpc::ServerContext* context,
      const SetParametersRequest* request,
      ::google::protobuf::Empty* response) override {
    hci::ExtendedAdvertisingConfig config = {};
    hci::AdvertisingConfig config = {};
    if (!AdvertisingConfigFromProto(request->config(), &config)) {
      LOG_WARN("Error parsing advertising config %s", request->SerializeAsString().c_str());
      return ::grpc::Status(::grpc::StatusCode::INVALID_ARGUMENT, "Error while parsing advertising config");
+7 −34
Original line number Diff line number Diff line
@@ -68,32 +68,6 @@ struct Advertiser {
  std::unique_ptr<os::Alarm> address_rotation_alarm;
};

ExtendedAdvertisingConfig::ExtendedAdvertisingConfig(const AdvertisingConfig& config) : AdvertisingConfig(config) {
  switch (config.advertising_type) {
    case AdvertisingType::ADV_IND:
      connectable = true;
      scannable = true;
      break;
    case AdvertisingType::ADV_DIRECT_IND_HIGH:
      connectable = true;
      directed = true;
      high_duty_directed_connectable = true;
      break;
    case AdvertisingType::ADV_SCAN_IND:
      scannable = true;
      break;
    case AdvertisingType::ADV_NONCONN_IND:
      break;
    case AdvertisingType::ADV_DIRECT_IND_LOW:
      connectable = true;
      directed = true;
      break;
    default:
      LOG_WARN("Unknown event type");
      break;
  }
}

struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallback {
  impl(Module* module) : module_(module), le_advertising_interface_(nullptr), num_instances_(0) {}

@@ -313,8 +287,7 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
      const common::Callback<void(ErrorCode, uint8_t, uint8_t)>& set_terminated_callback,
      os::Handler* handler) {
    // check advertising data is valid before start advertising
    ExtendedAdvertisingConfig extended_config = static_cast<ExtendedAdvertisingConfig>(config);
    if (!check_advertising_data(config.advertisement, extended_config.connectable) ||
    if (!check_advertising_data(config.advertisement, config.connectable) ||
        !check_advertising_data(config.scan_response, false)) {
      advertising_callbacks_->OnAdvertisingSetStarted(
          reg_id, id, le_physical_channel_tx_power_, AdvertisingCallback::AdvertisingStatus::DATA_TOO_LARGE);
@@ -386,7 +359,7 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb

  void start_advertising(
      AdvertiserId id,
      const ExtendedAdvertisingConfig config,
      const AdvertisingConfig config,
      uint16_t duration,
      base::OnceCallback<void(uint8_t /* status */)> status_callback,
      base::OnceCallback<void(uint8_t /* status */)> timeout_callback,
@@ -402,7 +375,7 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
  void create_extended_advertiser(
      int reg_id,
      AdvertiserId id,
      const ExtendedAdvertisingConfig config,
      const AdvertisingConfig config,
      const common::Callback<void(Address, AddressType)>& scan_callback,
      const common::Callback<void(ErrorCode, uint8_t, uint8_t)>& set_terminated_callback,
      uint16_t duration,
@@ -598,7 +571,7 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
        advertiser_id, static_cast<uint8_t>(current_address.GetAddressType()), current_address.GetAddress());
  }

  void set_parameters(AdvertiserId advertiser_id, ExtendedAdvertisingConfig config) {
  void set_parameters(AdvertiserId advertiser_id, AdvertisingConfig config) {
    advertising_sets_[advertiser_id].connectable = config.connectable;
    advertising_sets_[advertiser_id].tx_power = config.tx_power;
    advertising_sets_[advertiser_id].directed = config.directed;
@@ -1545,7 +1518,7 @@ AdvertiserId LeAdvertisingManager::create_advertiser(

AdvertiserId LeAdvertisingManager::ExtendedCreateAdvertiser(
    int reg_id,
    const ExtendedAdvertisingConfig config,
    const AdvertisingConfig config,
    const common::Callback<void(Address, AddressType)>& scan_callback,
    const common::Callback<void(ErrorCode, uint8_t, uint8_t)>& set_terminated_callback,
    uint16_t duration,
@@ -1614,7 +1587,7 @@ AdvertiserId LeAdvertisingManager::ExtendedCreateAdvertiser(

void LeAdvertisingManager::StartAdvertising(
    AdvertiserId advertiser_id,
    const ExtendedAdvertisingConfig config,
    const AdvertisingConfig config,
    uint16_t duration,
    base::OnceCallback<void(uint8_t /* status */)> status_callback,
    base::OnceCallback<void(uint8_t /* status */)> timeout_callback,
@@ -1648,7 +1621,7 @@ void LeAdvertisingManager::GetOwnAddress(uint8_t advertiser_id) {
  CallOn(pimpl_.get(), &impl::get_own_address, advertiser_id);
}

void LeAdvertisingManager::SetParameters(AdvertiserId advertiser_id, ExtendedAdvertisingConfig config) {
void LeAdvertisingManager::SetParameters(AdvertiserId advertiser_id, AdvertisingConfig config) {
  CallOn(pimpl_.get(), &impl::set_parameters, advertiser_id, config);
}

+4 −9
Original line number Diff line number Diff line
@@ -48,10 +48,6 @@ class AdvertisingConfig {
  uint8_t channel_map;
  AdvertisingFilterPolicy filter_policy;
  uint8_t tx_power;  // -127 to +20 (0x7f is no preference)
};

class ExtendedAdvertisingConfig : public AdvertisingConfig {
 public:
  bool connectable = false;
  bool scannable = false;
  bool directed = false;
@@ -66,8 +62,7 @@ class ExtendedAdvertisingConfig : public AdvertisingConfig {
  Enable enable_scan_request_notifications = Enable::DISABLED;
  std::vector<GapData> periodic_data;
  PeriodicAdvertisingParameters periodic_advertising_parameters;
  ExtendedAdvertisingConfig() = default;
  ExtendedAdvertisingConfig(const AdvertisingConfig& config);
  AdvertisingConfig() = default;
};

using AdvertiserId = uint8_t;
@@ -111,7 +106,7 @@ class LeAdvertisingManager : public bluetooth::Module {

  AdvertiserId ExtendedCreateAdvertiser(
      int reg_id,
      const ExtendedAdvertisingConfig config,
      const AdvertisingConfig config,
      const common::Callback<void(Address, AddressType)>& scan_callback,
      const common::Callback<void(ErrorCode, uint8_t, uint8_t)>& set_terminated_callback,
      uint16_t duration,
@@ -120,7 +115,7 @@ class LeAdvertisingManager : public bluetooth::Module {

  void StartAdvertising(
      AdvertiserId advertiser_id,
      const ExtendedAdvertisingConfig config,
      const AdvertisingConfig config,
      uint16_t duration,
      base::OnceCallback<void(uint8_t /* status */)> status_callback,
      base::OnceCallback<void(uint8_t /* status */)> timeout_callback,
@@ -132,7 +127,7 @@ class LeAdvertisingManager : public bluetooth::Module {

  void RegisterAdvertiser(base::OnceCallback<void(uint8_t /* inst_id */, uint8_t /* status */)> callback);

  void SetParameters(AdvertiserId advertiser_id, ExtendedAdvertisingConfig config);
  void SetParameters(AdvertiserId advertiser_id, AdvertisingConfig config);

  void SetData(AdvertiserId advertiser_id, bool set_scan_rsp, std::vector<GapData> data);

+1 −1
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ class MockLeAdvertisingManager : public LeAdvertisingManager {
      AdvertiserId,
      ExtendedCreateAdvertiser,
      (int regId,
       const ExtendedAdvertisingConfig,
       const AdvertisingConfig,
       const common::Callback<void(Address, AddressType)>&,
       const common::Callback<void(ErrorCode, uint8_t, uint8_t)>&,
       uint16_t,
+11 −11
Original line number Diff line number Diff line
@@ -257,7 +257,7 @@ class LeAdvertisingAPITest : public LeAdvertisingManagerTest {
    LeAdvertisingManagerTest::SetUp();

    // start advertising set
    ExtendedAdvertisingConfig advertising_config{};
    AdvertisingConfig advertising_config{};
    advertising_config.advertising_type = AdvertisingType::ADV_IND;
    advertising_config.own_address_type = OwnAddressType::PUBLIC_DEVICE_ADDRESS;
    std::vector<GapData> gap_data{};
@@ -314,7 +314,7 @@ class LeAndroidHciAdvertisingAPITest : public LeAndroidHciAdvertisingManagerTest
  void SetUp() override {
    LeAndroidHciAdvertisingManagerTest::SetUp();

    ExtendedAdvertisingConfig advertising_config{};
    AdvertisingConfig advertising_config{};
    advertising_config.advertising_type = AdvertisingType::ADV_IND;
    advertising_config.own_address_type = OwnAddressType::PUBLIC_DEVICE_ADDRESS;
    std::vector<GapData> gap_data{};
@@ -359,7 +359,7 @@ class LeAndroidHciAdvertisingAPIPublicAddressTest : public LeAndroidHciAdvertisi
  void SetUp() override {
    LeAndroidHciAdvertisingManagerTest::SetUp();

    ExtendedAdvertisingConfig advertising_config{};
    AdvertisingConfig advertising_config{};
    advertising_config.advertising_type = AdvertisingType::ADV_IND;
    advertising_config.own_address_type = OwnAddressType::PUBLIC_DEVICE_ADDRESS;
    std::vector<GapData> gap_data{};
@@ -414,7 +414,7 @@ class LeExtendedAdvertisingAPITest : public LeExtendedAdvertisingManagerTest {
    LeExtendedAdvertisingManagerTest::SetUp();

    // start advertising set
    ExtendedAdvertisingConfig advertising_config{};
    AdvertisingConfig advertising_config{};
    advertising_config.advertising_type = AdvertisingType::ADV_IND;
    advertising_config.own_address_type = OwnAddressType::PUBLIC_DEVICE_ADDRESS;
    std::vector<GapData> gap_data{};
@@ -466,7 +466,7 @@ TEST_F(LeAndroidHciAdvertisingManagerTest, startup_teardown) {}
TEST_F(LeExtendedAdvertisingManagerTest, startup_teardown) {}

TEST_F(LeAdvertisingManagerTest, create_advertiser_test) {
  ExtendedAdvertisingConfig advertising_config{};
  AdvertisingConfig advertising_config{};
  advertising_config.advertising_type = AdvertisingType::ADV_IND;
  advertising_config.own_address_type = OwnAddressType::PUBLIC_DEVICE_ADDRESS;
  std::vector<GapData> gap_data{};
@@ -512,7 +512,7 @@ TEST_F(LeAdvertisingManagerTest, create_advertiser_test) {
}

TEST_F(LeAndroidHciAdvertisingManagerTest, create_advertiser_test) {
  ExtendedAdvertisingConfig advertising_config{};
  AdvertisingConfig advertising_config{};
  advertising_config.advertising_type = AdvertisingType::ADV_IND;
  advertising_config.own_address_type = OwnAddressType::PUBLIC_DEVICE_ADDRESS;
  std::vector<GapData> gap_data{};
@@ -554,7 +554,7 @@ TEST_F(LeAndroidHciAdvertisingManagerTest, create_advertiser_test) {
}

TEST_F(LeExtendedAdvertisingManagerTest, create_advertiser_test) {
  ExtendedAdvertisingConfig advertising_config{};
  AdvertisingConfig advertising_config{};
  advertising_config.advertising_type = AdvertisingType::ADV_IND;
  advertising_config.own_address_type = OwnAddressType::PUBLIC_DEVICE_ADDRESS;
  std::vector<GapData> gap_data{};
@@ -607,7 +607,7 @@ TEST_F(LeExtendedAdvertisingManagerTest, ignore_on_pause_on_resume_after_unregis
  test_le_address_manager->ignore_unregister_for_testing = true;

  // Register LeAddressManager vai ExtendedCreateAdvertiser
  ExtendedAdvertisingConfig advertising_config{};
  AdvertisingConfig advertising_config{};
  advertising_config.advertising_type = AdvertisingType::ADV_IND;
  advertising_config.own_address_type = OwnAddressType::PUBLIC_DEVICE_ADDRESS;
  std::vector<GapData> gap_data{};
@@ -673,7 +673,7 @@ TEST_F(LeAndroidHciAdvertisingAPIPublicAddressTest, startup_teardown) {}
TEST_F(LeExtendedAdvertisingAPITest, startup_teardown) {}

TEST_F(LeAdvertisingAPITest, set_parameter) {
  ExtendedAdvertisingConfig advertising_config{};
  AdvertisingConfig advertising_config{};
  advertising_config.advertising_type = AdvertisingType::ADV_IND;
  advertising_config.own_address_type = OwnAddressType::PUBLIC_DEVICE_ADDRESS;
  std::vector<GapData> gap_data{};
@@ -692,7 +692,7 @@ TEST_F(LeAdvertisingAPITest, set_parameter) {
}

TEST_F(LeAndroidHciAdvertisingAPITest, set_parameter) {
  ExtendedAdvertisingConfig advertising_config{};
  AdvertisingConfig advertising_config{};
  advertising_config.advertising_type = AdvertisingType::ADV_IND;
  advertising_config.own_address_type = OwnAddressType::PUBLIC_DEVICE_ADDRESS;
  std::vector<GapData> gap_data{};
@@ -714,7 +714,7 @@ TEST_F(LeAndroidHciAdvertisingAPITest, set_parameter) {
}

TEST_F(LeExtendedAdvertisingAPITest, set_parameter) {
  ExtendedAdvertisingConfig advertising_config{};
  AdvertisingConfig advertising_config{};
  advertising_config.advertising_type = AdvertisingType::ADV_IND;
  advertising_config.own_address_type = OwnAddressType::PUBLIC_DEVICE_ADDRESS;
  std::vector<GapData> gap_data{};
Loading