Loading system/gd/hci/acl_manager/le_impl.h +6 −1 Original line number Diff line number Diff line Loading @@ -636,7 +636,12 @@ struct le_impl : public bluetooth::hci::LeAddressManagerCallback { std::chrono::milliseconds minimum_rotation_time, std::chrono::milliseconds maximum_rotation_time) { le_address_manager_->SetPrivacyPolicyForInitiatorAddress( address_policy, fixed_address, rotation_irk, minimum_rotation_time, maximum_rotation_time); address_policy, fixed_address, rotation_irk, controller_->SupportsBlePrivacy(), minimum_rotation_time, maximum_rotation_time); } // TODO(jpawlowski): remove once we have config file abstraction in cert tests Loading system/gd/hci/le_address_manager.cc +9 −0 Original line number Diff line number Diff line Loading @@ -48,12 +48,14 @@ void LeAddressManager::SetPrivacyPolicyForInitiatorAddress( AddressPolicy address_policy, AddressWithType fixed_address, crypto_toolbox::Octet16 rotation_irk, bool supports_ble_privacy, std::chrono::milliseconds minimum_rotation_time, std::chrono::milliseconds maximum_rotation_time) { ASSERT(address_policy_ == AddressPolicy::POLICY_NOT_SET); ASSERT(address_policy != AddressPolicy::POLICY_NOT_SET); ASSERT_LOG(registered_clients_.empty(), "Policy must be set before clients are registered."); address_policy_ = address_policy; supports_ble_privacy_ = supports_ble_privacy; LOG_INFO("SetPrivacyPolicyForInitiatorAddress with policy %d", address_policy); switch (address_policy_) { Loading Loading @@ -391,6 +393,13 @@ void LeAddressManager::AddDeviceToResolvingList( Command command = {CommandType::ADD_DEVICE_TO_RESOLVING_LIST, std::move(packet_builder)}; cached_commands_.push(std::move(command)); if (supports_ble_privacy_) { auto packet_builder = hci::LeSetPrivacyModeBuilder::Create(peer_identity_address_type, peer_identity_address, PrivacyMode::DEVICE); Command command = {CommandType::LE_SET_PRIVACY_MODE, std::move(packet_builder)}; cached_commands_.push(std::move(command)); } // Enable Address resolution auto enable_builder = hci::LeSetAddressResolutionEnableBuilder::Create(hci::Enable::ENABLED); Command enable = {CommandType::SET_ADDRESS_RESOLUTION_ENABLE, std::move(enable_builder)}; Loading system/gd/hci/le_address_manager.h +4 −1 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ class LeAddressManager { AddressPolicy address_policy, AddressWithType fixed_address, crypto_toolbox::Octet16 rotation_irk, bool supports_ble_privacy, std::chrono::milliseconds minimum_rotation_time, std::chrono::milliseconds maximum_rotation_time); // TODO(jpawlowski): remove once we have config file abstraction in cert tests Loading Loading @@ -105,7 +106,8 @@ class LeAddressManager { ADD_DEVICE_TO_RESOLVING_LIST, REMOVE_DEVICE_FROM_RESOLVING_LIST, CLEAR_RESOLVING_LIST, SET_ADDRESS_RESOLUTION_ENABLE SET_ADDRESS_RESOLUTION_ENABLE, LE_SET_PRIVACY_MODE }; struct Command { Loading Loading @@ -144,6 +146,7 @@ class LeAddressManager { uint8_t connect_list_size_; uint8_t resolving_list_size_; std::queue<Command> cached_commands_; bool supports_ble_privacy_{false}; }; } // namespace hci Loading Loading
system/gd/hci/acl_manager/le_impl.h +6 −1 Original line number Diff line number Diff line Loading @@ -636,7 +636,12 @@ struct le_impl : public bluetooth::hci::LeAddressManagerCallback { std::chrono::milliseconds minimum_rotation_time, std::chrono::milliseconds maximum_rotation_time) { le_address_manager_->SetPrivacyPolicyForInitiatorAddress( address_policy, fixed_address, rotation_irk, minimum_rotation_time, maximum_rotation_time); address_policy, fixed_address, rotation_irk, controller_->SupportsBlePrivacy(), minimum_rotation_time, maximum_rotation_time); } // TODO(jpawlowski): remove once we have config file abstraction in cert tests Loading
system/gd/hci/le_address_manager.cc +9 −0 Original line number Diff line number Diff line Loading @@ -48,12 +48,14 @@ void LeAddressManager::SetPrivacyPolicyForInitiatorAddress( AddressPolicy address_policy, AddressWithType fixed_address, crypto_toolbox::Octet16 rotation_irk, bool supports_ble_privacy, std::chrono::milliseconds minimum_rotation_time, std::chrono::milliseconds maximum_rotation_time) { ASSERT(address_policy_ == AddressPolicy::POLICY_NOT_SET); ASSERT(address_policy != AddressPolicy::POLICY_NOT_SET); ASSERT_LOG(registered_clients_.empty(), "Policy must be set before clients are registered."); address_policy_ = address_policy; supports_ble_privacy_ = supports_ble_privacy; LOG_INFO("SetPrivacyPolicyForInitiatorAddress with policy %d", address_policy); switch (address_policy_) { Loading Loading @@ -391,6 +393,13 @@ void LeAddressManager::AddDeviceToResolvingList( Command command = {CommandType::ADD_DEVICE_TO_RESOLVING_LIST, std::move(packet_builder)}; cached_commands_.push(std::move(command)); if (supports_ble_privacy_) { auto packet_builder = hci::LeSetPrivacyModeBuilder::Create(peer_identity_address_type, peer_identity_address, PrivacyMode::DEVICE); Command command = {CommandType::LE_SET_PRIVACY_MODE, std::move(packet_builder)}; cached_commands_.push(std::move(command)); } // Enable Address resolution auto enable_builder = hci::LeSetAddressResolutionEnableBuilder::Create(hci::Enable::ENABLED); Command enable = {CommandType::SET_ADDRESS_RESOLUTION_ENABLE, std::move(enable_builder)}; Loading
system/gd/hci/le_address_manager.h +4 −1 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ class LeAddressManager { AddressPolicy address_policy, AddressWithType fixed_address, crypto_toolbox::Octet16 rotation_irk, bool supports_ble_privacy, std::chrono::milliseconds minimum_rotation_time, std::chrono::milliseconds maximum_rotation_time); // TODO(jpawlowski): remove once we have config file abstraction in cert tests Loading Loading @@ -105,7 +106,8 @@ class LeAddressManager { ADD_DEVICE_TO_RESOLVING_LIST, REMOVE_DEVICE_FROM_RESOLVING_LIST, CLEAR_RESOLVING_LIST, SET_ADDRESS_RESOLUTION_ENABLE SET_ADDRESS_RESOLUTION_ENABLE, LE_SET_PRIVACY_MODE }; struct Command { Loading Loading @@ -144,6 +146,7 @@ class LeAddressManager { uint8_t connect_list_size_; uint8_t resolving_list_size_; std::queue<Command> cached_commands_; bool supports_ble_privacy_{false}; }; } // namespace hci Loading