From f15fce7756c06d7a03482ebc8dde268532cf782d Mon Sep 17 00:00:00 2001 From: Zhou Xiao Date: Wed, 18 Jun 2025 15:34:48 +0800 Subject: [PATCH] feat(ble): support host & hci log module --- components/bt/common/Kconfig.in | 16 ++ .../bt/common/ble_log/ble_log_spi_out.c | 252 ++++++++++-------- .../ble_log/include/ble_log/ble_log_spi_out.h | 23 +- .../common/include/common/bt_trace.h | 18 +- components/bt/host/bluedroid/hci/hci_hal_h4.c | 8 +- .../host/nimble/esp-hci/src/esp_nimble_hci.c | 4 +- 6 files changed, 190 insertions(+), 131 deletions(-) diff --git a/components/bt/common/Kconfig.in b/components/bt/common/Kconfig.in index e2052553d6..fa2824e3dc 100644 --- a/components/bt/common/Kconfig.in +++ b/components/bt/common/Kconfig.in @@ -27,6 +27,14 @@ config BT_BLE_LOG_SPI_OUT_HCI_ENABLED help Enable logging of HCI packets to the SPI bus when BLE SPI log output is enabled. +config BT_BLE_LOG_SPI_OUT_HCI_BUF_SIZE + int "SPI transaction buffer size for HCI logs" + depends on BT_BLE_LOG_SPI_OUT_HCI_ENABLED + default 1024 + help + SPI transaction buffer size for HCI logs. + There will be 2 SPI DMA buffers with the same size. + config BT_BLE_LOG_SPI_OUT_HOST_ENABLED bool "Enable Host log output to SPI" depends on BT_BLE_LOG_SPI_OUT_ENABLED @@ -35,6 +43,14 @@ config BT_BLE_LOG_SPI_OUT_HOST_ENABLED This configuration applies to the logs of both Bluedroid Host and NimBLE Host. When BLE SPI log output is enabled, this option allows host logs to be transmitted via SPI. +config BT_BLE_LOG_SPI_OUT_HOST_BUF_SIZE + int "SPI transaction buffer size for host logs" + depends on BT_BLE_LOG_SPI_OUT_HOST_ENABLED + default 1024 + help + SPI transaction buffer size for host logs. + There will be 2 SPI DMA buffers with the same size. + config BT_BLE_LOG_SPI_OUT_LL_ENABLED bool "Enable Controller log output to SPI" depends on BT_BLE_LOG_SPI_OUT_ENABLED diff --git a/components/bt/common/ble_log/ble_log_spi_out.c b/components/bt/common/ble_log/ble_log_spi_out.c index b7da6ec434..5731f851f0 100644 --- a/components/bt/common/ble_log/ble_log_spi_out.c +++ b/components/bt/common/ble_log/ble_log_spi_out.c @@ -26,6 +26,10 @@ #define SPI_OUT_FLUSH_TIMEOUT_US (CONFIG_BT_BLE_LOG_SPI_OUT_FLUSH_TIMEOUT * 1000) #define SPI_OUT_LE_AUDIO_ENABLED CONFIG_BT_BLE_LOG_SPI_OUT_LE_AUDIO_ENABLED #define SPI_OUT_LE_AUDIO_BUF_SIZE CONFIG_BT_BLE_LOG_SPI_OUT_LE_AUDIO_BUF_SIZE +#define SPI_OUT_HOST_ENABLED CONFIG_BT_BLE_LOG_SPI_OUT_HOST_ENABLED +#define SPI_OUT_HOST_BUF_SIZE CONFIG_BT_BLE_LOG_SPI_OUT_HOST_BUF_SIZE +#define SPI_OUT_HCI_ENABLED CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED +#define SPI_OUT_HCI_BUF_SIZE CONFIG_BT_BLE_LOG_SPI_OUT_HCI_BUF_SIZE // Private defines #define BLE_LOG_TAG "BLE_LOG" @@ -60,9 +64,23 @@ #define SPI_OUT_LE_AUDIO_QUEUE_SIZE (0) #endif // SPI_OUT_LE_AUDIO_ENABLED +#if SPI_OUT_HOST_ENABLED +#define SPI_OUT_HOST_QUEUE_SIZE (SPI_OUT_PING_PONG_BUF_CNT) +#else +#define SPI_OUT_HOST_QUEUE_SIZE (0) +#endif // SPI_OUT_HOST_ENABLED + +#if SPI_OUT_HCI_ENABLED +#define SPI_OUT_HCI_QUEUE_SIZE (SPI_OUT_PING_PONG_BUF_CNT) +#else +#define SPI_OUT_HCI_QUEUE_SIZE (0) +#endif // SPI_OUT_HCI_ENABLED + #define SPI_OUT_SPI_MASTER_QUEUE_SIZE (SPI_OUT_UL_QUEUE_SIZE +\ SPI_OUT_LL_QUEUE_SIZE +\ - SPI_OUT_LE_AUDIO_QUEUE_SIZE) + SPI_OUT_LE_AUDIO_QUEUE_SIZE +\ + SPI_OUT_HOST_QUEUE_SIZE +\ + SPI_OUT_HCI_QUEUE_SIZE) // Private typedefs typedef struct { @@ -114,6 +132,8 @@ enum { LOG_CB_TYPE_LL_ISR, LOG_CB_TYPE_LL_HCI, LOG_CB_TYPE_LE_AUDIO, + LOG_CB_TYPE_HOST, + LOG_CB_TYPE_HCI, }; enum { @@ -123,6 +143,7 @@ enum { LL_LOG_FLAG_ISR, LL_LOG_FLAG_HCI, LL_LOG_FLAG_RAW, + LL_LOG_FLAG_HCI_UPSTREAM, }; enum { @@ -180,10 +201,9 @@ static void spi_out_log_cb_write_loss(spi_out_log_cb_t *log_cb); static void spi_out_log_cb_dump(spi_out_log_cb_t *log_cb); static void spi_out_log_flush(void); -static inline spi_out_log_cb_t *spi_out_get_log_cb(uint8_t source); -static inline uint8_t *spi_out_get_str_buf(uint8_t source); -static void spi_out_log_write(uint8_t source, const uint8_t *addr, uint16_t len, bool with_ts); -static bool spi_out_log_printf(uint8_t source, const char *format, va_list args, int offset); +static void spi_out_write_hex(spi_out_log_cb_t *log_cb, uint8_t source, + const uint8_t *addr, uint16_t len, bool with_ts); +static int spi_out_write_str(uint8_t *str_buf, const char *format, va_list args, int offset); #if SPI_OUT_LL_ENABLED static int spi_out_ll_log_init(void); @@ -314,6 +334,14 @@ DECLARE_LOG_MODULE(ul, LOG_CB_TYPE_UL, SPI_OUT_UL_TASK_BUF_SIZE, 1, 1) DECLARE_LOG_MODULE(le_audio, LOG_CB_TYPE_LE_AUDIO, SPI_OUT_LE_AUDIO_BUF_SIZE, 0, 0) #endif // SPI_OUT_LE_AUDIO_ENABLED +#if SPI_OUT_HOST_ENABLED +DECLARE_LOG_MODULE(host, LOG_CB_TYPE_HOST, SPI_OUT_HOST_BUF_SIZE, 0, 1) +#endif // SPI_OUT_HOST_ENABLED + +#if SPI_OUT_HCI_ENABLED +DECLARE_LOG_MODULE(hci, LOG_CB_TYPE_HCI, SPI_OUT_HCI_BUF_SIZE, 0, 0) +#endif // SPI_OUT_HCI_ENABLED + // Private functions static int spi_out_init_trans(spi_out_trans_cb_t **trans_cb, uint16_t buf_size) { @@ -581,6 +609,14 @@ static void spi_out_log_flush(void) #if SPI_OUT_LE_AUDIO_ENABLED LOG_MODULE_FLUSH(le_audio)(); #endif // SPI_OUT_LE_AUDIO_ENABLED + +#if SPI_OUT_HOST_ENABLED + LOG_MODULE_FLUSH(host)(); +#endif // SPI_OUT_HOST_ENABLED + +#if SPI_OUT_HCI_ENABLED + LOG_MODULE_FLUSH(hci)(); +#endif // SPI_OUT_HCI_ENABLED } #if SPI_OUT_FLUSH_TIMER_ENABLED @@ -592,31 +628,11 @@ static void esp_timer_cb_log_flush(void) } #endif // SPI_OUT_FLUSH_TIMER_ENABLED -static inline spi_out_log_cb_t *spi_out_get_log_cb(uint8_t source) -{ - spi_out_log_cb_t *log_cb; - switch (source) { - default: - log_cb = LOG_MODULE_CB(ul); - } - return log_cb; -} - -static inline uint8_t *spi_out_get_str_buf(uint8_t source) -{ - uint8_t *str_buf; - switch (source) { - default: - str_buf = LOG_MODULE_STR_BUF(ul); - } - return str_buf; -} - -static void spi_out_log_write(uint8_t source, const uint8_t *addr, uint16_t len, bool with_ts) +static void spi_out_write_hex(spi_out_log_cb_t *log_cb, uint8_t source, + const uint8_t *addr, uint16_t len, bool with_ts) { uint16_t total_len = with_ts? (len + sizeof(uint32_t)): len; bool need_append; - spi_out_log_cb_t *log_cb = spi_out_get_log_cb(source); if (spi_out_log_cb_check_trans(log_cb, total_len, &need_append)) { if (with_ts) { uint32_t os_ts = pdTICKS_TO_MS(xTaskGetTickCount()); @@ -632,24 +648,19 @@ static void spi_out_log_write(uint8_t source, const uint8_t *addr, uint16_t len, spi_out_log_cb_write_loss(log_cb); } -static bool spi_out_log_printf(uint8_t source, const char *format, va_list args, int offset) +static int spi_out_write_str(uint8_t *str_buf, const char *format, va_list args, int offset) { - uint8_t *str_buf = spi_out_get_str_buf(source); - int len = vsnprintf((char *)(str_buf + offset), - SPI_OUT_LOG_STR_BUF_SIZE - offset, format, args); + int len = vsnprintf((char *)(str_buf + offset), SPI_OUT_LOG_STR_BUF_SIZE - offset, format, args); if (len < 0) { - return false; + return 0; } len += offset; - // Truncate string if overflowed if (len >= SPI_OUT_LOG_STR_BUF_SIZE) { len = SPI_OUT_LOG_STR_BUF_SIZE - 1; str_buf[len] = '\0'; } - - spi_out_log_write(source, str_buf, len, true); - return true; + return len; } #if SPI_OUT_LL_ENABLED @@ -919,6 +930,18 @@ int ble_log_spi_out_init(void) } #endif // SPI_OUT_LE_AUDIO_ENABLED +#if SPI_OUT_HOST_ENABLED + if (LOG_MODULE_INIT(host)() != 0) { + goto host_init_failed; + } +#endif // SPI_OUT_HOST_ENABLED + +#if SPI_OUT_HCI_ENABLED + if (LOG_MODULE_INIT(hci)() != 0) { + goto hci_init_failed; + } +#endif // SPI_OUT_HCI_ENABLED + #if SPI_OUT_FLUSH_TIMER_ENABLED esp_timer_create_args_t timer_args = { .callback = (esp_timer_cb_t)esp_timer_cb_log_flush, @@ -943,6 +966,14 @@ int ble_log_spi_out_init(void) #if SPI_OUT_FLUSH_TIMER_ENABLED timer_init_failed: #endif // SPI_OUT_FLUSH_TIMER_ENABLED +#if SPI_OUT_HCI_ENABLED + LOG_MODULE_DEINIT(hci)(); +hci_init_failed: +#endif // SPI_OUT_HCI_ENABLED +#if SPI_OUT_HOST_ENABLED + LOG_MODULE_DEINIT(host)(); +host_init_failed: +#endif // SPI_OUT_HOST_ENABLED #if SPI_OUT_LE_AUDIO_ENABLED LOG_MODULE_DEINIT(le_audio)(); le_audio_init_failed: @@ -995,6 +1026,14 @@ void ble_log_spi_out_deinit(void) spi_out_ts_sync_deinit(); #endif // SPI_OUT_TS_SYNC_ENABLED +#if SPI_OUT_HCI_ENABLED + LOG_MODULE_DEINIT(hci)(); +#endif // SPI_OUT_HCI_ENABLED + +#if SPI_OUT_HOST_ENABLED + LOG_MODULE_DEINIT(host)(); +#endif // SPI_OUT_HOST_ENABLED + #if SPI_OUT_LE_AUDIO_ENABLED LOG_MODULE_DEINIT(le_audio)(); #endif // SPI_OUT_LE_AUDIO_ENABLED @@ -1056,6 +1095,9 @@ IRAM_ATTR void ble_log_spi_out_ll_write(uint32_t len, const uint8_t *addr, uint3 } else if (flag & BIT(LL_LOG_FLAG_HCI)) { log_cb = ll_hci_log_cb; source = BLE_LOG_SPI_OUT_SOURCE_LL_HCI; + } else if (flag & BIT(LL_LOG_FLAG_HCI_UPSTREAM)) { + log_cb = ll_hci_log_cb; + source = BLE_LOG_SPI_OUT_SOURCE_HCI_UPSTREAM; } else { log_cb = ll_task_log_cb; source = BLE_LOG_SPI_OUT_SOURCE_ESP; @@ -1116,77 +1158,7 @@ int ble_log_spi_out_write(uint8_t source, const uint8_t *addr, uint16_t len) } xSemaphoreTake(LOG_MODULE_MUTEX(ul), portMAX_DELAY); - spi_out_log_write(source, addr, len, false); - xSemaphoreGive(LOG_MODULE_MUTEX(ul)); - return 0; -} - -int ble_log_spi_out_printf(uint8_t source, const char *format, ...) -{ - if (!LOG_MODULE_INIT_FLAG(ul)) { - return -1; - } - - if (!format) { - return -1; - } - - // Get arguments - va_list args; - va_start(args, format); - - va_list args_copy; - va_copy(args_copy, args); - - xSemaphoreTake(LOG_MODULE_MUTEX(ul), portMAX_DELAY); - bool ret = spi_out_log_printf(source, format, args_copy, 0); - xSemaphoreGive(LOG_MODULE_MUTEX(ul)); - - va_end(args_copy); - va_end(args); - return ret? 0: -1; -} - -int ble_log_spi_out_printf_enh(uint8_t source, uint8_t level, const char *tag, const char *format, ...) -{ - if (!LOG_MODULE_INIT_FLAG(ul)) { - return -1; - } - - if (!tag || !format) { - return -1; - } - - va_list args; - va_start(args, format); - - va_list args_copy; - va_copy(args_copy, args); - - // Create log prefix in the format: "[level][tag] " - bool ret = false; - xSemaphoreTake(LOG_MODULE_MUTEX(ul), portMAX_DELAY); - int prefix_len = snprintf((char *)LOG_MODULE_STR_BUF(ul), SPI_OUT_LOG_STR_BUF_SIZE, - "[%d][%s]", level, tag? tag: "NULL"); - if ((prefix_len < 0) || (prefix_len >= SPI_OUT_LOG_STR_BUF_SIZE)) { - goto exit; - } - ret = spi_out_log_printf(source, format, args_copy, prefix_len); -exit: - xSemaphoreGive(LOG_MODULE_MUTEX(ul)); - va_end(args_copy); - va_end(args); - return ret? 0: -1; -} - -int ble_log_spi_out_write_with_ts(uint8_t source, const uint8_t *addr, uint16_t len) -{ - if (!LOG_MODULE_INIT_FLAG(ul)) { - return -1; - } - - xSemaphoreTake(LOG_MODULE_MUTEX(ul), portMAX_DELAY); - spi_out_log_write(source, addr, len, true); + spi_out_write_hex(LOG_MODULE_CB(ul), source, addr, len, false); xSemaphoreGive(LOG_MODULE_MUTEX(ul)); return 0; } @@ -1232,6 +1204,23 @@ void ble_log_spi_out_dump_all(void) } #endif // SPI_OUT_LE_AUDIO_ENABLED + +#if SPI_OUT_HOST_ENABLED + if (LOG_MODULE_INIT_FLAG(host)) { + esp_rom_printf("[HOST_LOG_DUMP_START:\n"); + spi_out_log_cb_dump(LOG_MODULE_CB(host)); + esp_rom_printf("\n:HOST_LOG_DUMP_END]\n\n"); + } +#endif // SPI_OUT_HOST_ENABLED + +#if SPI_OUT_HCI_ENABLED + if (LOG_MODULE_INIT_FLAG(hci)) { + esp_rom_printf("[HCI_LOG_DUMP_START:\n"); + spi_out_log_cb_dump(LOG_MODULE_CB(hci)); + esp_rom_printf("\n:HCI_LOG_DUMP_END]\n\n"); + } +#endif // SPI_OUT_HCI_ENABLED + portEXIT_CRITICAL_SAFE(&spinlock); } @@ -1278,4 +1267,53 @@ IRAM_ATTR void ble_log_spi_out_le_audio_write(const uint8_t *addr, uint16_t len) return; } #endif // CONFIG_BT_BLE_LOG_SPI_OUT_LE_AUDIO_ENABLED + +#if SPI_OUT_HOST_ENABLED +int ble_log_spi_out_host_write(uint8_t source, const char *prefix, const char *format, ...) +{ + if (!LOG_MODULE_INIT_FLAG(host) || !prefix || !format) { + return -1; + } + + // Copy prefix to string buffer + int prefix_len = strlen(prefix); + if (prefix_len >= SPI_OUT_LOG_STR_BUF_SIZE) { + return -1; + } + memcpy(LOG_MODULE_STR_BUF(host), prefix, prefix_len); + + // Write string buffer + va_list args; + va_start(args, format); + int total_len = spi_out_write_str(LOG_MODULE_STR_BUF(host), format, args, prefix_len); + va_end(args); + if (total_len == 0) { + return -1; + } + + // Write log control block buffer + spi_out_write_hex(LOG_MODULE_CB(host), source, + LOG_MODULE_STR_BUF(host), (uint16_t)total_len, true); + return 0; +} +#endif // SPI_OUT_HOST_ENABLED + +#if SPI_OUT_HCI_ENABLED +int ble_log_spi_out_hci_write(uint8_t source, const uint8_t *addr, uint16_t len) +{ + if (!LOG_MODULE_INIT_FLAG(hci)) { + return -1; + } + + if (source == BLE_LOG_SPI_OUT_SOURCE_HCI_UPSTREAM) { +#if SPI_OUT_LL_ENABLED + ble_log_spi_out_ll_write(len, addr, 0, NULL, BIT(LL_LOG_FLAG_HCI_UPSTREAM)); +#endif // SPI_OUT_LL_ENABLED + } + if (source == BLE_LOG_SPI_OUT_SOURCE_HCI_DOWNSTREAM) { + spi_out_write_hex(LOG_MODULE_CB(hci), source, addr, len, true); + } + return 0; +} +#endif // SPI_OUT_HCI_ENABLED #endif // CONFIG_BT_BLE_LOG_SPI_OUT_ENABLED diff --git a/components/bt/common/ble_log/include/ble_log/ble_log_spi_out.h b/components/bt/common/ble_log/include/ble_log/ble_log_spi_out.h index 3a4f8d9020..30462fc72a 100644 --- a/components/bt/common/ble_log/include/ble_log/ble_log_spi_out.h +++ b/components/bt/common/ble_log/include/ble_log/ble_log_spi_out.h @@ -33,15 +33,15 @@ enum { BLE_LOG_SPI_OUT_SOURCE_LOSS, }; -enum { - BLE_LOG_SPI_OUT_LEVEL_NONE = 0, - BLE_LOG_SPI_OUT_LEVEL_ERROR, - BLE_LOG_SPI_OUT_LEVEL_WARN, - BLE_LOG_SPI_OUT_LEVEL_INFO, - BLE_LOG_SPI_OUT_LEVEL_DEBUG, - BLE_LOG_SPI_OUT_LEVEL_VERBOSE, - BLE_LOG_SPI_OUT_LEVEL_MAX, -}; +#define BLE_LOG_SPI_OUT_LEVEL_NONE 0 +#define BLE_LOG_SPI_OUT_LEVEL_ERROR 1 +#define BLE_LOG_SPI_OUT_LEVEL_WARN 2 +#define BLE_LOG_SPI_OUT_LEVEL_INFO 3 +#define BLE_LOG_SPI_OUT_LEVEL_DEBUG 4 +#define BLE_LOG_SPI_OUT_LEVEL_VERBOSE 5 +#define BLE_LOG_SPI_OUT_STR(x) #x +#define BLE_LOG_SPI_OUT_XSTR(x) BLE_LOG_SPI_OUT_STR(x) +#define BLE_LOG_SPI_OUT_BUILD_PREFIX(LEVEL, TAG) "[" BLE_LOG_SPI_OUT_XSTR(LEVEL) "][" TAG "]" // Public functions int ble_log_spi_out_init(void); @@ -53,12 +53,11 @@ void ble_log_spi_out_ll_write(uint32_t len, const uint8_t *addr, uint32_t len_ap void ble_log_spi_out_ll_log_ev_proc(void); void ble_log_spi_out_ts_sync_start(void); void ble_log_spi_out_ts_sync_stop(void); -int ble_log_spi_out_printf(uint8_t source, const char *format, ...); -int ble_log_spi_out_printf_enh(uint8_t source, uint8_t level, const char *tag, const char *format, ...); -int ble_log_spi_out_write_with_ts(uint8_t source, const uint8_t *addr, uint16_t len); void ble_log_spi_out_dump_all(void); void ble_log_spi_out_enable(bool enable); void ble_log_spi_out_flush(void); void ble_log_spi_out_le_audio_write(const uint8_t *addr, uint16_t len); +int ble_log_spi_out_host_write(uint8_t source, const char *prefix, const char *format, ...); +int ble_log_spi_out_hci_write(uint8_t source, const uint8_t *addr, uint16_t len); #endif // __BT_SPI_OUT_H__ diff --git a/components/bt/host/bluedroid/common/include/common/bt_trace.h b/components/bt/host/bluedroid/common/include/common/bt_trace.h index 9d2e2f0099..1b6ab85c29 100644 --- a/components/bt/host/bluedroid/common/include/common/bt_trace.h +++ b/components/bt/host/bluedroid/common/include/common/bt_trace.h @@ -231,12 +231,14 @@ static inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t l } #define BTM_TRACE_API(fmt, args...) { \ - ble_log_spi_out_printf_enh(BLE_LOG_SPI_OUT_SOURCE_BLUEDROID, BLE_LOG_SPI_OUT_LEVEL_INFO, "BT_BTM", fmt, ## args); \ + ble_log_spi_out_host_write(BLE_LOG_SPI_OUT_SOURCE_BLUEDROID, \ + BLE_LOG_SPI_OUT_BUILD_PREFIX(BLE_LOG_SPI_OUT_LEVEL_INFO, "BT_BTM"), fmt, ## args); \ if (btm_cb.trace_level >= BT_TRACE_LEVEL_API && BT_LOG_LEVEL_CHECK(BTM, API)) BT_PRINT_I("BT_BTM", fmt, ## args); \ } #define BTM_TRACE_EVENT(fmt, args...) { \ - ble_log_spi_out_printf_enh(BLE_LOG_SPI_OUT_SOURCE_BLUEDROID, BLE_LOG_SPI_OUT_LEVEL_DEBUG, "BT_BTM", fmt, ## args); \ + ble_log_spi_out_host_write(BLE_LOG_SPI_OUT_SOURCE_BLUEDROID, \ + BLE_LOG_SPI_OUT_BUILD_PREFIX(BLE_LOG_SPI_OUT_LEVEL_DEBUG, "BT_BTM"), fmt, ## args); \ if (btm_cb.trace_level >= BT_TRACE_LEVEL_EVENT && BT_LOG_LEVEL_CHECK(BTM, EVENT)) BT_PRINT_D("BT_BTM", fmt, ## args); \ } @@ -267,7 +269,8 @@ static inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t l } #define L2CAP_TRACE_API(fmt, args...) { \ - ble_log_spi_out_printf_enh(BLE_LOG_SPI_OUT_SOURCE_BLUEDROID, BLE_LOG_SPI_OUT_LEVEL_INFO, "BT_L2CAP", fmt, ## args); \ + ble_log_spi_out_host_write(BLE_LOG_SPI_OUT_SOURCE_BLUEDROID, \ + BLE_LOG_SPI_OUT_BUILD_PREFIX(BLE_LOG_SPI_OUT_LEVEL_INFO, "BT_L2CAP"), fmt, ## args); \ if (l2cb.l2cap_trace_level >= BT_TRACE_LEVEL_API && BT_LOG_LEVEL_CHECK(L2CAP, API)) BT_PRINT_I("BT_L2CAP", fmt, ## args); \ } @@ -318,7 +321,8 @@ static inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t l } #define GAP_TRACE_API(fmt, args...) { \ - ble_log_spi_out_printf_enh(BLE_LOG_SPI_OUT_SOURCE_BLUEDROID, BLE_LOG_SPI_OUT_LEVEL_INFO, "BT_GAP", fmt, ## args); \ + ble_log_spi_out_host_write(BLE_LOG_SPI_OUT_SOURCE_BLUEDROID, \ + BLE_LOG_SPI_OUT_BUILD_PREFIX(BLE_LOG_SPI_OUT_LEVEL_INFO, "BT_GAP"), fmt, ## args); \ if (gap_cb.trace_level >= BT_TRACE_LEVEL_API && BT_LOG_LEVEL_CHECK(GAP, API)) BT_PRINT_I("BT_GAP", fmt, ## args); \ } @@ -420,7 +424,8 @@ static inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t l } #define GATT_TRACE_API(fmt, args...) { \ - ble_log_spi_out_printf_enh(BLE_LOG_SPI_OUT_SOURCE_BLUEDROID, BLE_LOG_SPI_OUT_LEVEL_INFO, "BT_GATT", fmt, ## args); \ + ble_log_spi_out_host_write(BLE_LOG_SPI_OUT_SOURCE_BLUEDROID, \ + BLE_LOG_SPI_OUT_BUILD_PREFIX(BLE_LOG_SPI_OUT_LEVEL_INFO, "BT_GATT"), fmt, ## args); \ if (gatt_cb.trace_level >= BT_TRACE_LEVEL_API && BT_LOG_LEVEL_CHECK(GATT, API)) BT_PRINT_I("BT_GATT", fmt, ## args); \ } @@ -455,7 +460,8 @@ static inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t l } #define SMP_TRACE_API(fmt, args...) { \ - ble_log_spi_out_printf_enh(BLE_LOG_SPI_OUT_SOURCE_BLUEDROID, BLE_LOG_SPI_OUT_LEVEL_INFO, "BT_SMP", fmt, ## args); \ + ble_log_spi_out_host_write(BLE_LOG_SPI_OUT_SOURCE_BLUEDROID, \ + BLE_LOG_SPI_OUT_BUILD_PREFIX(BLE_LOG_SPI_OUT_LEVEL_INFO, "BT_SMP"), fmt, ## args); \ if (smp_cb.trace_level >= BT_TRACE_LEVEL_API && BT_LOG_LEVEL_CHECK(SMP, API)) BT_PRINT_I("BT_SMP", fmt, ## args); \ } diff --git a/components/bt/host/bluedroid/hci/hci_hal_h4.c b/components/bt/host/bluedroid/hci/hci_hal_h4.c index 32dc4f4e08..0129f15395 100644 --- a/components/bt/host/bluedroid/hci/hci_hal_h4.c +++ b/components/bt/host/bluedroid/hci/hci_hal_h4.c @@ -219,9 +219,9 @@ static uint16_t transmit_data(serial_data_type_t type, #if (BT_HCI_LOG_INCLUDED == TRUE) bt_hci_log_record_hci_data(data[0], &data[1], length - 1); #endif -#if (CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER) - ble_log_spi_out_write_with_ts(BLE_LOG_SPI_OUT_SOURCE_NIMBLE, data, length); -#endif // (CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER) +#if CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED + ble_log_spi_out_hci_write(BLE_LOG_SPI_OUT_SOURCE_HCI_DOWNSTREAM, data, length); +#endif // CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED // TX Data to target esp_vhci_host_send_packet(data, length); @@ -570,7 +570,7 @@ void bt_record_hci_data(uint8_t *data, uint16_t len) static int host_recv_pkt_cb(uint8_t *data, uint16_t len) { #if (BT_BLE_LOG_SPI_OUT_HCI_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER) - ble_log_spi_out_write_with_ts(BLE_LOG_SPI_OUT_SOURCE_HCI_UPSTREAM, data, len); + ble_log_spi_out_hci_write(BLE_LOG_SPI_OUT_SOURCE_HCI_UPSTREAM, data, len); #endif // (BT_BLE_LOG_SPI_OUT_HCI_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER) //Target has packet to host, malloc new buffer for packet BT_HDR *pkt = NULL; diff --git a/components/bt/host/nimble/esp-hci/src/esp_nimble_hci.c b/components/bt/host/nimble/esp-hci/src/esp_nimble_hci.c index 62f0ce24b1..78f730fb26 100644 --- a/components/bt/host/nimble/esp-hci/src/esp_nimble_hci.c +++ b/components/bt/host/nimble/esp-hci/src/esp_nimble_hci.c @@ -73,7 +73,7 @@ void esp_vhci_host_send_packet_wrapper(uint8_t *data, uint16_t len) bt_hci_log_record_hci_data(data[0], &data[1], len - 1); #endif #if (CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER) - ble_log_spi_out_write_with_ts(BLE_LOG_SPI_OUT_SOURCE_HCI_DOWNSTREAM, data, len); + ble_log_spi_out_hci_write(BLE_LOG_SPI_OUT_SOURCE_HCI_DOWNSTREAM, data, len); #endif // (CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER) esp_vhci_host_send_packet(data, len); } @@ -227,7 +227,7 @@ static int dummy_host_rcv_pkt(uint8_t *data, uint16_t len) static int host_rcv_pkt(uint8_t *data, uint16_t len) { #if (CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER) - ble_log_spi_out_write_with_ts(BLE_LOG_SPI_OUT_SOURCE_HCI_UPSTREAM, data, len); + ble_log_spi_out_hci_write(BLE_LOG_SPI_OUT_SOURCE_HCI_UPSTREAM, data, len); #endif // (CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER) bt_record_hci_data(data, len);