diff options
author | Myles Watson <mylesgw@google.com> | 2021-11-03 09:52:13 -0700 |
---|---|---|
committer | Myles Watson <mylesgw@google.com> | 2021-11-03 10:11:30 -0700 |
commit | 6922781ab115dd7175c55f6767326801a3b4ad78 (patch) | |
tree | b322d3ec870c231c1e4ffe18b25e102e9fe181fb | |
parent | 742af969cbc6edbebe454dba86ea83a663c95cd2 (diff) | |
download | bt-6922781ab115dd7175c55f6767326801a3b4ad78.tar.gz |
RootCanal: AddressResolutionEnable
Bug: 202018502
Test: cert/run
Tag: #feature
Change-Id: I46f5745efabe8edfdbdf4cbcf05447283a3a225c
3 files changed, 21 insertions, 6 deletions
diff --git a/vendor_libs/test_vendor_lib/model/controller/dual_mode_controller.cc b/vendor_libs/test_vendor_lib/model/controller/dual_mode_controller.cc index 654aeac71..6cd3fc5df 100644 --- a/vendor_libs/test_vendor_lib/model/controller/dual_mode_controller.cc +++ b/vendor_libs/test_vendor_lib/model/controller/dual_mode_controller.cc @@ -1611,12 +1611,16 @@ void DualModeController::LeReadBufferSizeV2(CommandView command) { } void DualModeController::LeSetAddressResolutionEnable(CommandView command) { - // NOP - auto payload = - std::make_unique<bluetooth::packet::RawBuilder>(std::vector<uint8_t>( - {static_cast<uint8_t>(bluetooth::hci::ErrorCode::SUCCESS)})); - send_event_(bluetooth::hci::CommandCompleteBuilder::Create( - kNumCommandPackets, command.GetOpCode(), std::move(payload))); + auto command_view = gd_hci::LeSetAddressResolutionEnableView::Create( + gd_hci::LeSecurityCommandView::Create( + gd_hci::SecurityCommandView::Create(command))); + ASSERT(command_view.IsValid()); + auto status = link_layer_controller_.LeSetAddressResolutionEnable( + command_view.GetAddressResolutionEnable() == + bluetooth::hci::Enable::ENABLED); + send_event_( + bluetooth::hci::LeSetAddressResolutionEnableCompleteBuilder::Create( + kNumCommandPackets, status)); } void DualModeController::LeSetResovalablePrivateAddressTimeout(CommandView command) { diff --git a/vendor_libs/test_vendor_lib/model/controller/link_layer_controller.cc b/vendor_libs/test_vendor_lib/model/controller/link_layer_controller.cc index dc1ffbb56..2be1c2c10 100644 --- a/vendor_libs/test_vendor_lib/model/controller/link_layer_controller.cc +++ b/vendor_libs/test_vendor_lib/model/controller/link_layer_controller.cc @@ -2878,6 +2878,15 @@ ErrorCode LinkLayerController::LeConnectListClear() { return ErrorCode::SUCCESS; } +ErrorCode LinkLayerController::LeSetAddressResolutionEnable(bool enable) { + if (ResolvingListBusy()) { + return ErrorCode::COMMAND_DISALLOWED; + } + + le_resolving_list_enabled_ = enable; + return ErrorCode::SUCCESS; +} + ErrorCode LinkLayerController::LeResolvingListClear() { if (ResolvingListBusy()) { return ErrorCode::COMMAND_DISALLOWED; diff --git a/vendor_libs/test_vendor_lib/model/controller/link_layer_controller.h b/vendor_libs/test_vendor_lib/model/controller/link_layer_controller.h index 8693add30..f3ab29892 100644 --- a/vendor_libs/test_vendor_lib/model/controller/link_layer_controller.h +++ b/vendor_libs/test_vendor_lib/model/controller/link_layer_controller.h @@ -181,6 +181,7 @@ class LinkLayerController { bool LeConnectListContainsDevice(Address addr, uint8_t addr_type); bool LeConnectListFull(); bool ResolvingListBusy(); + ErrorCode LeSetAddressResolutionEnable(bool enable); ErrorCode LeResolvingListClear(); ErrorCode LeResolvingListAddDevice(Address addr, uint8_t addr_type, std::array<uint8_t, kIrkSize> peerIrk, @@ -463,6 +464,7 @@ class LinkLayerController { std::array<uint8_t, kIrkSize> local_irk; }; std::vector<ResolvingListEntry> le_resolving_list_; + bool le_resolving_list_enabled_{false}; std::array<LeAdvertiser, 7> advertisers_; |