feat(ble): support esp ble controller spi output interface for ESP32-H2

This commit is contained in:
Zhou Xiao 2025-02-11 12:00:49 +08:00
parent 58b8775f95
commit 9c98c7e040
2 changed files with 63 additions and 0 deletions

View File

@ -333,6 +333,49 @@ config BT_LE_CONTROLLER_LOG_DUMP_ONLY
help
Only operate in dump mode
config BT_LE_CONTROLLER_LOG_SPI_OUT_ENABLED
bool "Output ble controller logs to SPI bus (Experimental)"
depends on BT_LE_CONTROLLER_LOG_ENABLED
depends on !BT_LE_CONTROLLER_LOG_DUMP_ONLY
default n
help
Output ble controller logs to SPI bus
config BT_LE_CONTROLLER_LOG_SPI_OUT_QUEUE_SIZE
int "Number of ble controller log async SPI output queues"
depends on BT_LE_CONTROLLER_LOG_SPI_OUT_ENABLED
default 4
help
The number of ble controller log async SPI output queues
config BT_LE_CONTROLLER_LOG_SPI_OUT_TRANS_BUF_SIZE
int "Size of ble controller log async SPI output transaction buffer size"
depends on BT_LE_CONTROLLER_LOG_SPI_OUT_ENABLED
default 512
help
The size of ble controller log async SPI output transaction buffer size
config BT_LE_CONTROLLER_LOG_SPI_OUT_MOSI_IO_NUM
int "GPIO number of SPI MOSI"
depends on BT_LE_CONTROLLER_LOG_SPI_OUT_ENABLED
default 25
help
GPIO number of SPI MOSI
config BT_LE_CONTROLLER_LOG_SPI_OUT_SCLK_IO_NUM
int "GPIO number of SPI SCLK"
depends on BT_LE_CONTROLLER_LOG_SPI_OUT_ENABLED
default 26
help
GPIO number of SPI SCLK
config BT_LE_CONTROLLER_LOG_SPI_OUT_CS_IO_NUM
int "GPIO number of SPI CS"
depends on BT_LE_CONTROLLER_LOG_SPI_OUT_ENABLED
default 27
help
GPIO number of SPI CS
config BT_LE_CONTROLLER_LOG_STORAGE_ENABLE
bool "Store ble controller logs to flash(Experimental)"
depends on !BT_LE_CONTROLLER_LOG_DUMP_ONLY

View File

@ -52,6 +52,13 @@
#include "esp_private/periph_ctrl.h"
#include "esp_sleep.h"
#include "soc/rtc.h"
#if CONFIG_BT_LE_CONTROLLER_LOG_ENABLED
#if CONFIG_BT_LE_CONTROLLER_LOG_SPI_OUT_ENABLED
#include "ble_log/ble_log_spi_out.h"
#endif // CONFIG_BT_LE_CONTROLLER_LOG_SPI_OUT_ENABLED
#endif // CONFIG_BT_LE_CONTROLLER_LOG_ENABLED
/* Macro definition
************************************************************************
*/
@ -190,6 +197,7 @@ enum log_out_mode {
LOG_DUMP_MEMORY,
LOG_ASYNC_OUT,
LOG_STORAGE_TO_FLASH,
LOG_SPI_OUT,
};
bool log_is_inited = false;
@ -198,6 +206,8 @@ uint8_t log_output_mode = LOG_DUMP_MEMORY;
#else
#if CONFIG_BT_LE_CONTROLLER_LOG_STORAGE_ENABLE
uint8_t log_output_mode = LOG_STORAGE_TO_FLASH;
#elif CONFIG_BT_LE_CONTROLLER_LOG_SPI_OUT_ENABLED
uint8_t log_output_mode = LOG_SPI_OUT;
#else
uint8_t log_output_mode = LOG_ASYNC_OUT;
#endif // CONFIG_BT_LE_CONTROLLER_LOG_STORAGE_ENABLE
@ -245,6 +255,13 @@ esp_err_t esp_bt_controller_log_init(uint8_t log_output_mode)
}
#endif // CONFIG_BT_LE_CONTROLLER_LOG_STORAGE_ENABLE
break;
case LOG_SPI_OUT:
task_create = true;
#if CONFIG_BT_LE_CONTROLLER_LOG_SPI_OUT_ENABLED
ble_log_spi_out_init();
bt_controller_log_interface = ble_log_spi_out_write_esp;
#endif // CONFIG_BT_LE_CONTROLLER_LOG_SPI_OUT_ENABLED
break;
default:
assert(0);
}
@ -259,6 +276,9 @@ esp_err_t esp_bt_controller_log_init(uint8_t log_output_mode)
void esp_bt_ontroller_log_deinit(void)
{
r_ble_log_deinit_async();
#if CONFIG_BT_LE_CONTROLLER_LOG_SPI_OUT_ENABLED
ble_log_spi_out_deinit();
#endif
log_is_inited = false;
}