components/bt: Add debug for HCI timeout

This commit is contained in:
baohongde
2020-07-03 18:57:42 +08:00
committed by maojianxin
parent 9d0d5a1b24
commit 8a074d7b40
4 changed files with 15 additions and 15 deletions

View File

@ -60,7 +60,7 @@
static xTaskHandle xBtcTaskHandle = NULL;
static xQueueHandle xBtcQueue = 0;
void bt_abort_with_coredump_log(void);
void bt_abort_with_coredump_log(uint16_t error);
static btc_func_t profile_tab[BTC_PID_NUM] = {
[BTC_PID_MAIN_INIT] = {btc_main_call_handler, NULL },
@ -156,7 +156,7 @@ static bt_status_t btc_task_post(btc_msg_t *msg, task_post_t timeout)
BTC_TRACE_ERROR("Btc Post failed\n");
#ifdef TASK_MONITOR_MODE
ets_printf("!! Btc Post failed.Timeout Abort !!");
bt_abort_with_coredump_log();
bt_abort_with_coredump_log(0);
#endif
return BT_STATUS_BUSY;
}
@ -193,7 +193,7 @@ bt_status_t btc_transfer_context(btc_msg_t *msg, void *arg, int arg_len, btc_arg
#else
return btc_task_post(&lmsg, TASK_POST_BLOCKING);
#endif
}
#if (CONFIG_SPIRAM_USE_MALLOC && CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST)

View File

@ -33,7 +33,7 @@
#include "osi/mutex.h"
#include "osi/fixed_queue.h"
void bt_abort_with_coredump_log(void);
void bt_abort_with_coredump_log(uint16_t error);
typedef struct {
uint16_t opcode;
@ -145,7 +145,7 @@ task_post_status_t hci_host_task_post(task_post_t timeout)
if (xQueueSend(xHciHostQueue, &evt, timeout) != pdTRUE) {
#ifdef TASK_MONITOR_MODE
ets_printf("!! HCI send fail.Timeout Abort !!");
bt_abort_with_coredump_log();
bt_abort_with_coredump_log(0);
#endif
HCI_TRACE_ERROR("xHciHostQueue failed\n");
return TASK_POST_FAIL;
@ -277,7 +277,7 @@ static void transmit_command(
BTTRC_DUMP_BUFFER(NULL, command->data + command->offset, command->len);
fixed_queue_enqueue(hci_host_env.command_queue, wait_entry);
#ifdef TASK_MONITOR_MODE
hci_host_task_post(TASK_POST_BLOCKING_WITH_TO);
#else
@ -336,7 +336,7 @@ static void event_command_ready(fixed_queue_t *queue)
wait_entry = fixed_queue_dequeue(queue);
if(wait_entry->opcode == HCI_HOST_NUM_PACKETS_DONE
if(wait_entry->opcode == HCI_HOST_NUM_PACKETS_DONE
#if (BLE_ADV_REPORT_FLOW_CONTROL == TRUE)
|| wait_entry->opcode == HCI_VENDOR_BLE_ADV_REPORT_FLOW_CONTROL
#endif
@ -432,7 +432,7 @@ static void command_timed_out(void *context)
// If it's caused by a software bug, fix it. If it's a hardware bug, fix it.
{
HCI_TRACE_ERROR("%s hci layer timeout waiting for response to a command. opcode: 0x%x", __func__, wait_entry->opcode);
abort();
bt_abort_with_coredump_log(wait_entry->opcode);
}
}

View File

@ -81,7 +81,7 @@ extern void avdt_rcv_sync_info (BT_HDR *p_buf);
#include "btm_ble_int.h"
#endif
void bt_abort_with_coredump_log(void);
void bt_abort_with_coredump_log(uint16_t error);
//#if (defined(BT_APP_DEMO) && BT_APP_DEMO == TRUE)
//#include "bt_app_common.h"
@ -269,7 +269,7 @@ task_post_status_t btu_task_post(uint32_t sig, void *param, task_post_t timeout)
#ifdef TASK_MONITOR_MODE
ets_printf("!! Btu Post failed.Timeout Abort !!");
bt_abort_with_coredump_log();
bt_abort_with_coredump_log(0);
#endif
return TASK_POST_FAIL;
}
@ -555,7 +555,7 @@ static void btu_l2cap_alarm_cb(void *data)
#else
btu_task_post(SIG_BTU_L2CAP_ALARM, p_tle, TASK_POST_BLOCKING);
#endif
}
void btu_start_quick_timer(TIMER_LIST_ENT *p_tle, UINT16 type, UINT32 timeout_ticks)

View File

@ -1432,7 +1432,7 @@ extern uint32_t bt_isr_count_arry[16];
static bool check_bt_is_alive()
{
static int stop_times = 0;
static int64_t last_time = 0;
static int64_t last_time = 0;
static int last_clk_ts = -1;
int stop_timeout = (connection_LinkSuperTimeout*625+5000000);
stop_timeout = (stop_timeout > 20000000) ? stop_timeout : 20000000;
@ -1440,14 +1440,14 @@ static bool check_bt_is_alive()
if(last_clk_ts == currect_clkint_ts) {
if(stop_times==0) {
last_time = esp_timer_get_time();
} else if(esp_timer_get_time() - last_time > stop_timeout) {
} else if(esp_timer_get_time() - last_time > stop_timeout) {
return BT_NOT_ALIVE;
}
stop_times++;
} else {
stop_times = 0;
}
last_clk_ts = currect_clkint_ts;
return BT_IS_ALIVE;
}
@ -1461,7 +1461,7 @@ void esp_bt_check_need_restart()
}
}
void bt_abort_with_coredump_log(void)
void bt_abort_with_coredump_log(uint16_t error)
{
__asm__ __volatile__("ill\n");
}