forked from espressif/esp-idf
fix(ble/bluedroid): Support SPI log output options for HCI
This commit is contained in:
@@ -11,6 +11,13 @@ config BT_BLE_LOG_SPI_OUT_ENABLED
|
|||||||
help
|
help
|
||||||
Output ble logs to SPI bus
|
Output ble logs to SPI bus
|
||||||
|
|
||||||
|
config BT_BLE_LOG_SPI_OUT_HCI_ENABLED
|
||||||
|
bool "Enable HCI log output to SPI"
|
||||||
|
depends on BT_BLE_LOG_SPI_OUT_ENABLED
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Enable logging of HCI packets to the SPI bus when BLE SPI log output is enabled.
|
||||||
|
|
||||||
config BT_BLE_LOG_SPI_OUT_QUEUE_SIZE
|
config BT_BLE_LOG_SPI_OUT_QUEUE_SIZE
|
||||||
int "Number of ble log async SPI output queues"
|
int "Number of ble log async SPI output queues"
|
||||||
depends on BT_BLE_LOG_SPI_OUT_ENABLED
|
depends on BT_BLE_LOG_SPI_OUT_ENABLED
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -84,6 +84,13 @@
|
|||||||
#define BT_HCI_LOG_INCLUDED FALSE
|
#define BT_HCI_LOG_INCLUDED FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// HCI LOG TO SPI
|
||||||
|
#if UC_BT_BLE_LOG_SPI_OUT_HCI_ENABLED
|
||||||
|
#define BT_BLE_LOG_SPI_OUT_HCI_ENABLED UC_BT_BLE_LOG_SPI_OUT_HCI_ENABLED
|
||||||
|
#else
|
||||||
|
#define BT_BLE_LOG_SPI_OUT_HCI_ENABLED FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
#if UC_BT_HCI_LOG_DATA_BUFFER_SIZE
|
#if UC_BT_HCI_LOG_DATA_BUFFER_SIZE
|
||||||
#define HCI_LOG_DATA_BUFFER_SIZE UC_BT_HCI_LOG_DATA_BUFFER_SIZE
|
#define HCI_LOG_DATA_BUFFER_SIZE UC_BT_HCI_LOG_DATA_BUFFER_SIZE
|
||||||
#else
|
#else
|
||||||
|
@@ -126,6 +126,13 @@
|
|||||||
#define UC_BT_HCI_LOG_DEBUG_EN FALSE
|
#define UC_BT_HCI_LOG_DEBUG_EN FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//HCI LOG TO SPI
|
||||||
|
#ifdef CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED
|
||||||
|
#define UC_BT_BLE_LOG_SPI_OUT_HCI_ENABLED TRUE
|
||||||
|
#else
|
||||||
|
#define UC_BT_BLE_LOG_SPI_OUT_HCI_ENABLED FALSE
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_BT_HCI_LOG_DATA_BUFFER_SIZE
|
#ifdef CONFIG_BT_HCI_LOG_DATA_BUFFER_SIZE
|
||||||
#define UC_BT_HCI_LOG_DATA_BUFFER_SIZE CONFIG_BT_HCI_LOG_DATA_BUFFER_SIZE
|
#define UC_BT_HCI_LOG_DATA_BUFFER_SIZE CONFIG_BT_HCI_LOG_DATA_BUFFER_SIZE
|
||||||
#else
|
#else
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2015-2023 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -16,6 +16,10 @@
|
|||||||
|
|
||||||
#define LOG_TAG "HCI_API"
|
#define LOG_TAG "HCI_API"
|
||||||
|
|
||||||
|
#if CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED
|
||||||
|
#include "ble_log/ble_log_spi_out.h"
|
||||||
|
#endif // CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED
|
||||||
|
|
||||||
static esp_bluedroid_hci_driver_operations_t s_hci_driver_ops = { 0 };
|
static esp_bluedroid_hci_driver_operations_t s_hci_driver_ops = { 0 };
|
||||||
|
|
||||||
esp_err_t esp_bluedroid_attach_hci_driver(const esp_bluedroid_hci_driver_operations_t *p_ops)
|
esp_err_t esp_bluedroid_attach_hci_driver(const esp_bluedroid_hci_driver_operations_t *p_ops)
|
||||||
@@ -63,6 +67,9 @@ void hci_host_send_packet(uint8_t *data, uint16_t len)
|
|||||||
#if (BT_HCI_LOG_INCLUDED == TRUE)
|
#if (BT_HCI_LOG_INCLUDED == TRUE)
|
||||||
bt_hci_log_record_hci_data(data[0], &data[1], len - 1);
|
bt_hci_log_record_hci_data(data[0], &data[1], len - 1);
|
||||||
#endif
|
#endif
|
||||||
|
#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_DOWNSTREAM, data, len);
|
||||||
|
#endif // (BT_BLE_LOG_SPI_OUT_HCI_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER)
|
||||||
#if (BT_CONTROLLER_INCLUDED == TRUE)
|
#if (BT_CONTROLLER_INCLUDED == TRUE)
|
||||||
esp_vhci_host_send_packet(data, len);
|
esp_vhci_host_send_packet(data, len);
|
||||||
#else /* BT_CONTROLLER_INCLUDED == TRUE */
|
#else /* BT_CONTROLLER_INCLUDED == TRUE */
|
||||||
|
@@ -41,6 +41,10 @@
|
|||||||
#include "stack/hcimsgs.h"
|
#include "stack/hcimsgs.h"
|
||||||
#include "hci_log/bt_hci_log.h"
|
#include "hci_log/bt_hci_log.h"
|
||||||
|
|
||||||
|
#if CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED
|
||||||
|
#include "ble_log/ble_log_spi_out.h"
|
||||||
|
#endif // CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED
|
||||||
|
|
||||||
#define HCI_BLE_EVENT 0x3e
|
#define HCI_BLE_EVENT 0x3e
|
||||||
#define PACKET_TYPE_TO_INBOUND_INDEX(type) ((type) - 2)
|
#define PACKET_TYPE_TO_INBOUND_INDEX(type) ((type) - 2)
|
||||||
#define PACKET_TYPE_TO_INDEX(type) ((type) - 1)
|
#define PACKET_TYPE_TO_INDEX(type) ((type) - 1)
|
||||||
@@ -559,6 +563,9 @@ void bt_record_hci_data(uint8_t *data, uint16_t len)
|
|||||||
|
|
||||||
static int host_recv_pkt_cb(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);
|
||||||
|
#endif // (BT_BLE_LOG_SPI_OUT_HCI_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER)
|
||||||
//Target has packet to host, malloc new buffer for packet
|
//Target has packet to host, malloc new buffer for packet
|
||||||
BT_HDR *pkt = NULL;
|
BT_HDR *pkt = NULL;
|
||||||
pkt_linked_item_t *linked_pkt = NULL;
|
pkt_linked_item_t *linked_pkt = NULL;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
@@ -24,6 +24,10 @@
|
|||||||
#include "bt_common.h"
|
#include "bt_common.h"
|
||||||
#include "hci_log/bt_hci_log.h"
|
#include "hci_log/bt_hci_log.h"
|
||||||
|
|
||||||
|
#if CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED
|
||||||
|
#include "ble_log/ble_log_spi_out.h"
|
||||||
|
#endif // CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED
|
||||||
|
|
||||||
#define NIMBLE_VHCI_TIMEOUT_MS 2000
|
#define NIMBLE_VHCI_TIMEOUT_MS 2000
|
||||||
#define BLE_HCI_EVENT_HDR_LEN (2)
|
#define BLE_HCI_EVENT_HDR_LEN (2)
|
||||||
#define BLE_HCI_CMD_HDR_LEN (3)
|
#define BLE_HCI_CMD_HDR_LEN (3)
|
||||||
@@ -68,6 +72,9 @@ void esp_vhci_host_send_packet_wrapper(uint8_t *data, uint16_t len)
|
|||||||
#if (BT_HCI_LOG_INCLUDED == TRUE)
|
#if (BT_HCI_LOG_INCLUDED == TRUE)
|
||||||
bt_hci_log_record_hci_data(data[0], &data[1], len - 1);
|
bt_hci_log_record_hci_data(data[0], &data[1], len - 1);
|
||||||
#endif
|
#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);
|
||||||
|
#endif // (CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER)
|
||||||
esp_vhci_host_send_packet(data, len);
|
esp_vhci_host_send_packet(data, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,6 +226,10 @@ static int dummy_host_rcv_pkt(uint8_t *data, uint16_t len)
|
|||||||
*/
|
*/
|
||||||
static int 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);
|
||||||
|
#endif // (CONFIG_BT_BLE_LOG_SPI_OUT_HCI_ENABLED && !SOC_ESP_NIMBLE_CONTROLLER)
|
||||||
|
|
||||||
bt_record_hci_data(data, len);
|
bt_record_hci_data(data, len);
|
||||||
|
|
||||||
if(!ble_hs_enabled_state) {
|
if(!ble_hs_enabled_state) {
|
||||||
|
Reference in New Issue
Block a user