Correctly parse Command Complete and Status events with empty op_code
Bug: 352247861
Test: atest VtsHalBluetoothTargetTest
Change-Id: I46b4f5895c042b299f6233c742250b4e18372f52
diff --git a/bluetooth/aidl/vts/VtsHalBluetoothTargetTest.cpp b/bluetooth/aidl/vts/VtsHalBluetoothTargetTest.cpp
index 4d90058..51931e7 100644
--- a/bluetooth/aidl/vts/VtsHalBluetoothTargetTest.cpp
+++ b/bluetooth/aidl/vts/VtsHalBluetoothTargetTest.cpp
@@ -397,12 +397,18 @@
while (!event_queue.empty()) {
std::vector<uint8_t> event;
event_queue.front(event);
- auto complete_view = ::bluetooth::hci::CommandCompleteView::Create(
+
+ auto event_view =
::bluetooth::hci::EventView::Create(::bluetooth::hci::PacketView<true>(
- std::make_shared<std::vector<uint8_t>>(event))));
- auto status_view = ::bluetooth::hci::CommandCompleteView::Create(
- ::bluetooth::hci::EventView::Create(::bluetooth::hci::PacketView<true>(
- std::make_shared<std::vector<uint8_t>>(event))));
+ std::make_shared<std::vector<uint8_t>>(event)));
+ if (!event_view.IsValid()) {
+ break;
+ }
+
+ auto status_view = ::bluetooth::hci::CommandStatusView::Create(event_view);
+ auto complete_view =
+ ::bluetooth::hci::CommandCompleteView::Create(event_view);
+
bool is_complete_no_op =
complete_view.IsValid() &&
complete_view.GetCommandOpCode() == ::bluetooth::hci::OpCode::NONE;