Loading system/gd/Android.bp +8 −0 Original line number Diff line number Diff line Loading @@ -229,6 +229,10 @@ cc_binary { defaults: [ "gd_defaults", ], include_dirs: [ "packages/modules/Bluetooth/system/include", "packages/modules/Bluetooth/system/types", ], host_supported: true, srcs: [ ":BluetoothFacade_hci_hal", Loading Loading @@ -310,6 +314,10 @@ cc_test { "gd_defaults", "mts_defaults", ], include_dirs: [ "packages/modules/Bluetooth/system/include", "packages/modules/Bluetooth/system/types", ], host_supported: true, // TODO(b/231993739): Reenable isolated:true by deleting the explicit disable below isolated: false, Loading system/gd/hci/facade/le_advertising_manager_facade.cc +3 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include "common/bidi_queue.h" #include "common/bind.h" #include "grpc/grpc_event_queue.h" #include "hardware/ble_advertiser.h" #include "hci/address.h" #include "hci/address_with_type.h" #include "hci/le_advertising_manager.h" Loading Loading @@ -234,6 +235,7 @@ class LeAdvertisingManagerFacadeService : public LeAdvertisingManagerFacade::Ser pending_advertiser_id_ = std::promise<AdvertiserId>(); auto future = pending_advertiser_id_->get_future(); le_advertising_manager_->ExtendedCreateAdvertiser( kAdvertiserClientIdJni, 0, config, common::Bind(&LeAdvertiser::ScanCallback, common::Unretained(&le_advertiser)), Loading Loading @@ -266,6 +268,7 @@ class LeAdvertisingManagerFacadeService : public LeAdvertisingManagerFacade::Ser pending_advertiser_id_ = std::promise<AdvertiserId>(); auto future = pending_advertiser_id_->get_future(); le_advertising_manager_->ExtendedCreateAdvertiser( kAdvertiserClientIdJni, 0, config, common::Bind(&LeAdvertiser::ScanCallback, common::Unretained(&le_advertiser)), Loading system/gd/hci/le_advertising_manager.cc +29 −4 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include "common/init_flags.h" #include "common/strings.h" #include "hardware/ble_advertiser.h" #include "hci/acl_manager.h" #include "hci/controller.h" #include "hci/hci_layer.h" Loading Loading @@ -488,11 +489,21 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb advertising_sets_[id].status_callback = std::move(status_callback); advertising_sets_[id].timeout_callback = std::move(timeout_callback); // legacy start_advertising use default jni client id create_extended_advertiser_with_id( kIdLocal, id, config, scan_callback, set_terminated_callback, duration, 0, handler); kAdvertiserClientIdJni, kIdLocal, id, config, scan_callback, set_terminated_callback, duration, 0, handler); } void create_extended_advertiser( uint8_t client_id, int reg_id, const AdvertisingConfig config, common::Callback<void(Address, AddressType)> scan_callback, Loading @@ -507,6 +518,7 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb return; } create_extended_advertiser_with_id( client_id, reg_id, id, config, Loading @@ -518,6 +530,7 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb } void create_extended_advertiser_with_id( uint8_t client_id, int reg_id, AdvertiserId id, const AdvertisingConfig config, Loading Loading @@ -573,9 +586,19 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb id, advertising_sets_[id].current_address)); // but we only rotate if the AdvertiserAddressType is non-public (since static random // addresses don't rotate) if (advertising_sets_[id].address_type != AdvertiserAddressType::PUBLIC) { bool leaudio_requested_nrpa = false; if (client_id == kAdvertiserClientIdLeAudio && advertising_sets_[id].address_type == AdvertiserAddressType::NONRESOLVABLE_RANDOM) { LOG_INFO( "Advertiser started by le audio client with address type: %d", advertising_sets_[id].address_type); leaudio_requested_nrpa = true; } // but we only rotate if the AdvertiserAddressType is non-public // or non-rpa requested by leaudio(since static random addresses don't rotate) if (advertising_sets_[id].address_type != AdvertiserAddressType::PUBLIC && !leaudio_requested_nrpa) { // start timer for random address advertising_sets_[id].address_rotation_alarm = std::make_unique<os::Alarm>(module_handler_); advertising_sets_[id].address_rotation_alarm->Schedule( Loading Loading @@ -1647,6 +1670,7 @@ int LeAdvertisingManager::GetAdvertiserRegId(AdvertiserId advertiser_id) { } void LeAdvertisingManager::ExtendedCreateAdvertiser( uint8_t client_id, int reg_id, const AdvertisingConfig config, common::Callback<void(Address, AddressType)> scan_callback, Loading Loading @@ -1715,6 +1739,7 @@ void LeAdvertisingManager::ExtendedCreateAdvertiser( CallOn( pimpl_.get(), &impl::create_extended_advertiser, client_id, reg_id, config, scan_callback, Loading system/gd/hci/le_advertising_manager.h +1 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,7 @@ class LeAdvertisingManager : public bluetooth::Module { int GetAdvertiserRegId(AdvertiserId advertiser_id); void ExtendedCreateAdvertiser( uint8_t client_id, int reg_id, const AdvertisingConfig config, common::Callback<void(Address, AddressType)> scan_callback, Loading system/gd/hci/le_advertising_manager_mock.h +2 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,8 @@ class MockLeAdvertisingManager : public LeAdvertisingManager { MOCK_METHOD( AdvertiserId, ExtendedCreateAdvertiser, (int regId, (uint8_t client_id, int regId, const AdvertisingConfig, const common::Callback<void(Address, AddressType)>&, const common::Callback<void(ErrorCode, uint8_t, uint8_t)>&, Loading Loading
system/gd/Android.bp +8 −0 Original line number Diff line number Diff line Loading @@ -229,6 +229,10 @@ cc_binary { defaults: [ "gd_defaults", ], include_dirs: [ "packages/modules/Bluetooth/system/include", "packages/modules/Bluetooth/system/types", ], host_supported: true, srcs: [ ":BluetoothFacade_hci_hal", Loading Loading @@ -310,6 +314,10 @@ cc_test { "gd_defaults", "mts_defaults", ], include_dirs: [ "packages/modules/Bluetooth/system/include", "packages/modules/Bluetooth/system/types", ], host_supported: true, // TODO(b/231993739): Reenable isolated:true by deleting the explicit disable below isolated: false, Loading
system/gd/hci/facade/le_advertising_manager_facade.cc +3 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include "common/bidi_queue.h" #include "common/bind.h" #include "grpc/grpc_event_queue.h" #include "hardware/ble_advertiser.h" #include "hci/address.h" #include "hci/address_with_type.h" #include "hci/le_advertising_manager.h" Loading Loading @@ -234,6 +235,7 @@ class LeAdvertisingManagerFacadeService : public LeAdvertisingManagerFacade::Ser pending_advertiser_id_ = std::promise<AdvertiserId>(); auto future = pending_advertiser_id_->get_future(); le_advertising_manager_->ExtendedCreateAdvertiser( kAdvertiserClientIdJni, 0, config, common::Bind(&LeAdvertiser::ScanCallback, common::Unretained(&le_advertiser)), Loading Loading @@ -266,6 +268,7 @@ class LeAdvertisingManagerFacadeService : public LeAdvertisingManagerFacade::Ser pending_advertiser_id_ = std::promise<AdvertiserId>(); auto future = pending_advertiser_id_->get_future(); le_advertising_manager_->ExtendedCreateAdvertiser( kAdvertiserClientIdJni, 0, config, common::Bind(&LeAdvertiser::ScanCallback, common::Unretained(&le_advertiser)), Loading
system/gd/hci/le_advertising_manager.cc +29 −4 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include "common/init_flags.h" #include "common/strings.h" #include "hardware/ble_advertiser.h" #include "hci/acl_manager.h" #include "hci/controller.h" #include "hci/hci_layer.h" Loading Loading @@ -488,11 +489,21 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb advertising_sets_[id].status_callback = std::move(status_callback); advertising_sets_[id].timeout_callback = std::move(timeout_callback); // legacy start_advertising use default jni client id create_extended_advertiser_with_id( kIdLocal, id, config, scan_callback, set_terminated_callback, duration, 0, handler); kAdvertiserClientIdJni, kIdLocal, id, config, scan_callback, set_terminated_callback, duration, 0, handler); } void create_extended_advertiser( uint8_t client_id, int reg_id, const AdvertisingConfig config, common::Callback<void(Address, AddressType)> scan_callback, Loading @@ -507,6 +518,7 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb return; } create_extended_advertiser_with_id( client_id, reg_id, id, config, Loading @@ -518,6 +530,7 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb } void create_extended_advertiser_with_id( uint8_t client_id, int reg_id, AdvertiserId id, const AdvertisingConfig config, Loading Loading @@ -573,9 +586,19 @@ struct LeAdvertisingManager::impl : public bluetooth::hci::LeAddressManagerCallb id, advertising_sets_[id].current_address)); // but we only rotate if the AdvertiserAddressType is non-public (since static random // addresses don't rotate) if (advertising_sets_[id].address_type != AdvertiserAddressType::PUBLIC) { bool leaudio_requested_nrpa = false; if (client_id == kAdvertiserClientIdLeAudio && advertising_sets_[id].address_type == AdvertiserAddressType::NONRESOLVABLE_RANDOM) { LOG_INFO( "Advertiser started by le audio client with address type: %d", advertising_sets_[id].address_type); leaudio_requested_nrpa = true; } // but we only rotate if the AdvertiserAddressType is non-public // or non-rpa requested by leaudio(since static random addresses don't rotate) if (advertising_sets_[id].address_type != AdvertiserAddressType::PUBLIC && !leaudio_requested_nrpa) { // start timer for random address advertising_sets_[id].address_rotation_alarm = std::make_unique<os::Alarm>(module_handler_); advertising_sets_[id].address_rotation_alarm->Schedule( Loading Loading @@ -1647,6 +1670,7 @@ int LeAdvertisingManager::GetAdvertiserRegId(AdvertiserId advertiser_id) { } void LeAdvertisingManager::ExtendedCreateAdvertiser( uint8_t client_id, int reg_id, const AdvertisingConfig config, common::Callback<void(Address, AddressType)> scan_callback, Loading Loading @@ -1715,6 +1739,7 @@ void LeAdvertisingManager::ExtendedCreateAdvertiser( CallOn( pimpl_.get(), &impl::create_extended_advertiser, client_id, reg_id, config, scan_callback, Loading
system/gd/hci/le_advertising_manager.h +1 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,7 @@ class LeAdvertisingManager : public bluetooth::Module { int GetAdvertiserRegId(AdvertiserId advertiser_id); void ExtendedCreateAdvertiser( uint8_t client_id, int reg_id, const AdvertisingConfig config, common::Callback<void(Address, AddressType)> scan_callback, Loading
system/gd/hci/le_advertising_manager_mock.h +2 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,8 @@ class MockLeAdvertisingManager : public LeAdvertisingManager { MOCK_METHOD( AdvertiserId, ExtendedCreateAdvertiser, (int regId, (uint8_t client_id, int regId, const AdvertisingConfig, const common::Callback<void(Address, AddressType)>&, const common::Callback<void(ErrorCode, uint8_t, uint8_t)>&, Loading