From 5ef351ce4307d56151afa4e9def16528b3eca8fb Mon Sep 17 00:00:00 2001 From: Henri Chataing <henrichataing@google.com> Date: Mon, 6 Feb 2023 22:24:17 +0000 Subject: [PATCH] RootCanal: Cleanup SendCommandCompleteUnknownEvent Use the CommandComplete builder to simplify the code. Test: m root-canal Change-Id: I59e07c72761744bd77a142af21fc67e8c47066f1 --- .../model/controller/dual_mode_controller.cc | 36 +++++++------------ .../model/controller/dual_mode_controller.h | 3 +- 2 files changed, 15 insertions(+), 24 deletions(-) diff --git a/tools/rootcanal/model/controller/dual_mode_controller.cc b/tools/rootcanal/model/controller/dual_mode_controller.cc index 9655a55601f..482e7299380 100644 --- a/tools/rootcanal/model/controller/dual_mode_controller.cc +++ b/tools/rootcanal/model/controller/dual_mode_controller.cc @@ -55,16 +55,11 @@ void DualModeController::Close() { } void DualModeController::SendCommandCompleteUnknownOpCodeEvent( - uint16_t op_code) const { - std::unique_ptr<bluetooth::packet::RawBuilder> raw_builder_ptr = - std::make_unique<bluetooth::packet::RawBuilder>(); - raw_builder_ptr->AddOctets1(kNumCommandPackets); - raw_builder_ptr->AddOctets2(op_code); - raw_builder_ptr->AddOctets1( - static_cast<uint8_t>(ErrorCode::UNKNOWN_HCI_COMMAND)); - - send_event_(gd_hci::EventBuilder::Create(gd_hci::EventCode::COMMAND_COMPLETE, - std::move(raw_builder_ptr))); + bluetooth::hci::OpCode op_code) const { + send_event_(gd_hci::CommandCompleteBuilder::Create( + kNumCommandPackets, op_code, + std::make_unique<bluetooth::packet::RawBuilder>(std::vector<uint8_t>{ + static_cast<uint8_t>(ErrorCode::UNKNOWN_HCI_COMMAND)}))); } #ifdef ROOTCANAL_LMP @@ -505,10 +500,10 @@ void DualModeController::HandleCommand( // The command is not supported. // Respond with the status code Unknown Command. else { - uint16_t opcode = static_cast<uint16_t>(op_code); - SendCommandCompleteUnknownOpCodeEvent(opcode); + SendCommandCompleteUnknownOpCodeEvent(op_code); + uint16_t raw_op_code = static_cast<uint16_t>(op_code); LOG_INFO("Unknown command, opcode: 0x%04X, OGF: 0x%04X, OCF: 0x%04X", - opcode, (opcode & 0xFC00) >> 10, opcode & 0x03FF); + raw_op_code, (raw_op_code & 0xFC00) >> 10, raw_op_code & 0x03FF); } } @@ -2752,8 +2747,7 @@ void DualModeController::LeVendorCap(CommandView command) { ASSERT(command_view.IsValid()); vector<uint8_t> caps = properties_.le_vendor_capabilities; if (caps.empty()) { - SendCommandCompleteUnknownOpCodeEvent( - static_cast<uint16_t>(OpCode::LE_GET_VENDOR_CAPABILITIES)); + SendCommandCompleteUnknownOpCodeEvent(OpCode::LE_GET_VENDOR_CAPABILITIES); return; } @@ -2771,24 +2765,21 @@ void DualModeController::LeVendorMultiAdv(CommandView command) { auto command_view = gd_hci::LeMultiAdvtView::Create( gd_hci::LeAdvertisingCommandView::Create(command)); ASSERT(command_view.IsValid()); - SendCommandCompleteUnknownOpCodeEvent( - static_cast<uint16_t>(OpCode::LE_MULTI_ADVT)); + SendCommandCompleteUnknownOpCodeEvent(OpCode::LE_MULTI_ADVT); } void DualModeController::LeAdvertisingFilter(CommandView command) { auto command_view = gd_hci::LeAdvFilterView::Create( gd_hci::LeScanningCommandView::Create(command)); ASSERT(command_view.IsValid()); - SendCommandCompleteUnknownOpCodeEvent( - static_cast<uint16_t>(OpCode::LE_ADV_FILTER)); + SendCommandCompleteUnknownOpCodeEvent(OpCode::LE_ADV_FILTER); } void DualModeController::LeEnergyInfo(CommandView command) { auto command_view = gd_hci::LeEnergyInfoView::Create( gd_hci::VendorCommandView::Create(command)); ASSERT(command_view.IsValid()); - SendCommandCompleteUnknownOpCodeEvent( - static_cast<uint16_t>(OpCode::LE_ENERGY_INFO)); + SendCommandCompleteUnknownOpCodeEvent(OpCode::LE_ENERGY_INFO); } // CSR vendor command. @@ -3090,8 +3081,7 @@ void DualModeController::LeExtendedScanParams(CommandView command) { auto command_view = gd_hci::LeExtendedScanParamsView::Create( gd_hci::LeScanningCommandView::Create(command)); ASSERT(command_view.IsValid()); - SendCommandCompleteUnknownOpCodeEvent( - static_cast<uint16_t>(OpCode::LE_EXTENDED_SCAN_PARAMS)); + SendCommandCompleteUnknownOpCodeEvent(OpCode::LE_EXTENDED_SCAN_PARAMS); } void DualModeController::LeStartEncryption(CommandView command) { diff --git a/tools/rootcanal/model/controller/dual_mode_controller.h b/tools/rootcanal/model/controller/dual_mode_controller.h index 687958b5f1f..6b0d173814f 100644 --- a/tools/rootcanal/model/controller/dual_mode_controller.h +++ b/tools/rootcanal/model/controller/dual_mode_controller.h @@ -640,7 +640,8 @@ class DualModeController private: // Send a HCI_Command_Complete event for the specified op_code with // the error code UNKNOWN_OPCODE. - void SendCommandCompleteUnknownOpCodeEvent(uint16_t op_code) const; + void SendCommandCompleteUnknownOpCodeEvent( + bluetooth::hci::OpCode op_code) const; // Callbacks to send packets back to the HCI. std::function<void(std::shared_ptr<bluetooth::hci::AclBuilder>)> send_acl_; -- GitLab