|
|
|
|
@ -23,6 +23,7 @@
|
|
|
|
|
#include "os/alarm.h"
|
|
|
|
|
#include "os/metrics.h"
|
|
|
|
|
#include "os/queue.h"
|
|
|
|
|
#include "os/system_properties.h"
|
|
|
|
|
#include "packet/packet_builder.h"
|
|
|
|
|
#include "storage/storage_module.h"
|
|
|
|
|
|
|
|
|
|
@ -230,6 +231,11 @@ struct HciLayer::impl {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_hci_timeout(OpCode op_code) {
|
|
|
|
|
if (op_code == OpCode::RESET && ignore_reset_timeout_) {
|
|
|
|
|
LOG_WARN("Ignoring timeout for HCI Reset");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
common::StopWatch::DumpStopWatchLog();
|
|
|
|
|
LOG_ERROR("Timed out waiting for 0x%02hx (%s)", op_code, OpCodeText(op_code).c_str());
|
|
|
|
|
// TODO: LogMetricHciTimeoutEvent(static_cast<uint32_t>(op_code));
|
|
|
|
|
@ -432,6 +438,7 @@ struct HciLayer::impl {
|
|
|
|
|
uint8_t command_credits_{1}; // Send reset first
|
|
|
|
|
Alarm* hci_timeout_alarm_{nullptr};
|
|
|
|
|
Alarm* hci_abort_alarm_{nullptr};
|
|
|
|
|
const bool ignore_reset_timeout_ = !os::GetSystemPropertyBool("persist.bluetooth.hci.reset_timeout", true);
|
|
|
|
|
|
|
|
|
|
// Acl packets
|
|
|
|
|
BidiQueue<AclView, AclBuilder> acl_queue_{3 /* TODO: Set queue depth */};
|
|
|
|
|
|