From 1d73e8ba2db562293b74fa15a7baa38bb6632a38 Mon Sep 17 00:00:00 2001 From: Erwin Jansen Date: Fri, 30 Apr 2021 15:31:21 -0700 Subject: [PATCH] Enable missing HCI cmds in rootcanal This enables: - 7.8.44 LE Set Address Resolution Enable command - 7.8.45 LE Set Resolvable Private Address Timeout Both are NOPs for now. Bug: 186861350 Bug: 186541528 Test: NimBLE gets a bit further with root canal Change-Id: I3d1b95a30afc97d1f1f7555ac891b4f4df872eec --- .../model/controller/dual_mode_controller.cc | 20 ++++++++++++++++++++ .../model/controller/dual_mode_controller.h | 6 ++++++ 2 files changed, 26 insertions(+) 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 f37b44ec6..8e142cbcf 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 @@ -289,6 +289,8 @@ DualModeController::DualModeController(const std::string& properties_filename, u SET_SUPPORTED(READ_VOICE_SETTING, ReadVoiceSetting); SET_SUPPORTED(READ_CONNECTION_ACCEPT_TIMEOUT, ReadConnectionAcceptTimeout); SET_SUPPORTED(WRITE_CONNECTION_ACCEPT_TIMEOUT, WriteConnectionAcceptTimeout); + SET_SUPPORTED(LE_SET_ADDRESS_RESOLUTION_ENABLE, LeSetAddressResolutionEnable); + SET_SUPPORTED(LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT, LeSetResovalablePrivateAddressTimeout); #undef SET_HANDLER #undef SET_SUPPORTED properties_.SetSupportedCommands(supported_commands); @@ -1570,6 +1572,24 @@ void DualModeController::LeReadBufferSize(CommandView command) { send_event_(std::move(packet)); } +void DualModeController::LeSetAddressResolutionEnable(CommandView command) { + // NOP + auto payload = + std::make_unique(std::vector( + {static_cast(bluetooth::hci::ErrorCode::SUCCESS)})); + send_event_(bluetooth::hci::CommandCompleteBuilder::Create( + kNumCommandPackets, command.GetOpCode(), std::move(payload))); +} + +void DualModeController::LeSetResovalablePrivateAddressTimeout(CommandView command) { + // NOP + auto payload = + std::make_unique(std::vector( + {static_cast(bluetooth::hci::ErrorCode::SUCCESS)})); + send_event_(bluetooth::hci::CommandCompleteBuilder::Create( + kNumCommandPackets, command.GetOpCode(), std::move(payload))); +} + void DualModeController::LeReadLocalSupportedFeatures(CommandView command) { auto command_view = gd_hci::LeReadLocalSupportedFeaturesView::Create(command); ASSERT(command_view.IsValid()); diff --git a/vendor_libs/test_vendor_lib/model/controller/dual_mode_controller.h b/vendor_libs/test_vendor_lib/model/controller/dual_mode_controller.h index 0ebada36f..5d0e7670a 100644 --- a/vendor_libs/test_vendor_lib/model/controller/dual_mode_controller.h +++ b/vendor_libs/test_vendor_lib/model/controller/dual_mode_controller.h @@ -478,6 +478,12 @@ class DualModeController : public Device { // 7.8.41 void LeReadResolvingListSize(CommandView args); + // 7.8.44 + void LeSetAddressResolutionEnable(CommandView args); + + // 7.8.45 + void LeSetResovalablePrivateAddressTimeout(CommandView args); + // 7.8.46 void LeReadMaximumDataLength(CommandView args); -- 2.11.0