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

Commit 1391c878 authored by Abhishek Pandit-Subedi's avatar Abhishek Pandit-Subedi Committed by Gerrit Code Review
Browse files

Merge "Check periodic advertising support before using"

parents e69d2ec5 98704e6e
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -24,13 +24,14 @@ from blueberry.tests.gd.cert.truth import assertThat
from blueberry.tests.gd.cert import gd_base_test
from blueberry.facade import common_pb2 as common
from google.protobuf import empty_pb2 as empty_proto
from blueberry.facade.hci import controller_facade_pb2 as controller_facade
from blueberry.facade.hci import \
    le_advertising_manager_facade_pb2 as le_advertising_facade
from blueberry.facade.hci import le_initiator_address_facade_pb2 as le_initiator_address_facade
from blueberry.facade.hci.le_advertising_manager_facade_pb2 import AdvertisingCallbackMsgType
from blueberry.facade.hci.le_advertising_manager_facade_pb2 import AdvertisingStatus

from mobly import test_runner
from mobly import asserts, test_runner

from blueberry.utils import bluetooth
import hci_packets as hci
@@ -296,6 +297,10 @@ class LeAdvertisingManagerTest(gd_base_test.GdBaseTestClass):
                                                       create_response.advertiser_id))

    def test_enable_periodic_advertising_callback(self):
        check_feature = self.dut.hci_controller.SupportsBlePeriodicAdvertising(empty_proto.Empty())
        if not check_feature.supported:
            asserts.skip("Periodic advertising not supported.")

        self.set_address_policy_with_static_address()
        create_response = self.create_advertiser()
        enable_periodic_advertising_request = le_advertising_facade.EnablePeriodicAdvertisingRequest(
+11 −3
Original line number Diff line number Diff line
@@ -551,9 +551,13 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
            hci::LeSetExtendedAdvertisingEnableBuilder::Create(Enable::DISABLED, enabled_vector),
            module_handler_->BindOnce(impl::check_status<LeSetExtendedAdvertisingEnableCompleteView>));

        // Only set periodic advertising if supported.
        if (controller_->SupportsBlePeriodicAdvertising()) {
          le_advertising_interface_->EnqueueCommand(
              hci::LeSetPeriodicAdvertisingEnableBuilder::Create(false, false, advertiser_id),
            module_handler_->BindOnce(impl::check_status<LeSetPeriodicAdvertisingEnableCompleteView>));
              module_handler_->BindOnce(
                  impl::check_status<LeSetPeriodicAdvertisingEnableCompleteView>));
        }
      } break;
    }

@@ -1089,6 +1093,10 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb
  }

  void enable_periodic_advertising(AdvertiserId advertiser_id, bool enable, bool include_adi) {
    if (!controller_->SupportsBlePeriodicAdvertising()) {
      return;
    }

    if (include_adi && !controller_->SupportsBlePeriodicAdvertisingAdi()) {
      include_adi = false;
    }
+4 −0
Original line number Diff line number Diff line
@@ -62,6 +62,10 @@ class TestController : public Controller {
    return 0x0672;
  }

  bool SupportsBlePeriodicAdvertising() const override {
    return true;
  }

  bool SupportsBleExtendedAdvertising() const override {
    return support_ble_extended_advertising_;
  }