forked from espressif/esp-idf
Merge branch 'bugfix/btdm_cpu_core' into 'master'
component/bt : fix bug of sw interrupt cause to run btdm to different cpu core. See merge request !1434
This commit is contained in:
@@ -1,14 +1,96 @@
|
|||||||
menuconfig BT_ENABLED
|
menu Bluetooth
|
||||||
|
|
||||||
|
|
||||||
|
config BT_ENABLED
|
||||||
bool "Bluetooth"
|
bool "Bluetooth"
|
||||||
help
|
help
|
||||||
Select this option to enable Bluetooth and show the submenu with Bluetooth configuration choices.
|
Select this option to enable Bluetooth and show the submenu with Bluetooth configuration choices.
|
||||||
|
|
||||||
menuconfig BLUEDROID_ENABLED
|
choice BTDM_CONTROLLER_PINNED_TO_CORE_CHOICE
|
||||||
bool "Bluedroid Bluetooth stack enabled"
|
prompt "The cpu core which bluetooth controller run"
|
||||||
|
depends on BT_ENABLED && !FREERTOS_UNICORE
|
||||||
|
help
|
||||||
|
Specify the cpu core to run bluetooth controller.
|
||||||
|
Can not specify no-affinity.
|
||||||
|
|
||||||
|
config BTDM_CONTROLLER_PINNED_TO_CORE_0
|
||||||
|
bool "Core 0 (PRO CPU)"
|
||||||
|
config BTDM_CONTROLLER_PINNED_TO_CORE_1
|
||||||
|
bool "Core 1 (APP CPU)"
|
||||||
|
depends on !FREERTOS_UNICORE
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config BTDM_CONTROLLER_PINNED_TO_CORE
|
||||||
|
int
|
||||||
|
default 0 if BTDM_CONTROLLER_PINNED_TO_CORE_0
|
||||||
|
default 1 if BTDM_CONTROLLER_PINNED_TO_CORE_1
|
||||||
|
default 0
|
||||||
|
|
||||||
|
choice BTDM_CONTROLLER_HCI_MODE_CHOICE
|
||||||
|
prompt "HCI mode"
|
||||||
depends on BT_ENABLED
|
depends on BT_ENABLED
|
||||||
default y
|
help
|
||||||
help
|
Speicify HCI mode as VHCI or UART(H4)
|
||||||
This enables the default Bluedroid Bluetooth stack
|
|
||||||
|
config BTDM_CONTROLLER_HCI_MODE_VHCI
|
||||||
|
bool "VHCI"
|
||||||
|
help
|
||||||
|
Normal option. Mostly, choose this VHCI when bluetooth host run on ESP32, too.
|
||||||
|
|
||||||
|
config BTDM_CONTROLLER_HCI_MODE_UART_H4
|
||||||
|
bool "UART(H4)"
|
||||||
|
help
|
||||||
|
If use external bluetooth host which run on other hardware and use UART as the HCI interface,
|
||||||
|
choose this option.
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
menu "HCI UART(H4) Options"
|
||||||
|
visible if BTDM_CONTROLLER_HCI_MODE_UART_H4
|
||||||
|
|
||||||
|
config BT_HCI_UART_NO
|
||||||
|
int "UART Number for HCI"
|
||||||
|
depends on BTDM_CONTROLLER_HCI_MODE_UART_H4
|
||||||
|
range 1 2
|
||||||
|
default 1
|
||||||
|
help
|
||||||
|
Uart number for HCI. The available uart is UART1 and UART2.
|
||||||
|
|
||||||
|
config BT_HCI_UART_BAUDRATE
|
||||||
|
int "UART Baudrate for HCI"
|
||||||
|
depends on BTDM_CONTROLLER_HCI_MODE_UART_H4
|
||||||
|
range 115200 921600
|
||||||
|
default 921600
|
||||||
|
help
|
||||||
|
UART Baudrate for HCI. Please use standard baudrate.
|
||||||
|
endmenu
|
||||||
|
|
||||||
|
menuconfig BLUEDROID_ENABLED
|
||||||
|
bool "Bluedroid Enable"
|
||||||
|
depends on BTDM_CONTROLLER_HCI_MODE_VHCI
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This enables the default Bluedroid Bluetooth stack
|
||||||
|
|
||||||
|
choice BLUEDROID_PINNED_TO_CORE_CHOICE
|
||||||
|
prompt "The cpu core which Bluedroid run"
|
||||||
|
depends on BLUEDROID_ENABLED && !FREERTOS_UNICORE
|
||||||
|
help
|
||||||
|
Which the cpu core to run Bluedroid. Can choose core0 and core1.
|
||||||
|
Can not specify no-affinity.
|
||||||
|
|
||||||
|
config BLUEDROID_PINNED_TO_CORE_0
|
||||||
|
bool "Core 0 (PRO CPU)"
|
||||||
|
config BLUEDROID_PINNED_TO_CORE_1
|
||||||
|
bool "Core 1 (APP CPU)"
|
||||||
|
depends on !FREERTOS_UNICORE
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config BLUEDROID_PINNED_TO_CORE
|
||||||
|
int
|
||||||
|
depends on BLUEDROID_ENABLED
|
||||||
|
default 0 if BLUEDROID_PINNED_TO_CORE_0
|
||||||
|
default 1 if BLUEDROID_PINNED_TO_CORE_1
|
||||||
|
default 0
|
||||||
|
|
||||||
config BTC_TASK_STACK_SIZE
|
config BTC_TASK_STACK_SIZE
|
||||||
int "Bluetooth event (callback to application) task stack size"
|
int "Bluetooth event (callback to application) task stack size"
|
||||||
@@ -67,44 +149,6 @@ config BT_ACL_CONNECTIONS
|
|||||||
help
|
help
|
||||||
Maximum BT/BLE connection count
|
Maximum BT/BLE connection count
|
||||||
|
|
||||||
#disable now for app cpu due to a known issue
|
|
||||||
config BTDM_CONTROLLER_RUN_APP_CPU
|
|
||||||
bool "Run controller on APP CPU"
|
|
||||||
depends on BT_ENABLED && !FREERTOS_UNICORE && 0
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
Run controller on APP CPU.
|
|
||||||
|
|
||||||
config BTDM_CONTROLLER_RUN_CPU
|
|
||||||
int
|
|
||||||
depends on BT_ENABLED
|
|
||||||
default 1 if BTDM_CONTROLLER_RUN_APP_CPU
|
|
||||||
default 0
|
|
||||||
|
|
||||||
menuconfig BT_HCI_UART
|
|
||||||
bool "HCI use UART as IO"
|
|
||||||
depends on BT_ENABLED && !BLUEDROID_ENABLED
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
Default HCI use VHCI, if this option choose, HCI will use UART(0/1/2) as IO.
|
|
||||||
Besides, it can set uart number and uart baudrate.
|
|
||||||
|
|
||||||
config BT_HCI_UART_NO
|
|
||||||
int "UART Number for HCI"
|
|
||||||
depends on BT_HCI_UART
|
|
||||||
range 1 2
|
|
||||||
default 1
|
|
||||||
help
|
|
||||||
Uart number for HCI.
|
|
||||||
|
|
||||||
config BT_HCI_UART_BAUDRATE
|
|
||||||
int "UART Baudrate for HCI"
|
|
||||||
depends on BT_HCI_UART
|
|
||||||
range 115200 921600
|
|
||||||
default 921600
|
|
||||||
help
|
|
||||||
UART Baudrate for HCI. Please use standard baudrate.
|
|
||||||
|
|
||||||
config SMP_ENABLE
|
config SMP_ENABLE
|
||||||
bool
|
bool
|
||||||
depends on BLUEDROID_ENABLED
|
depends on BLUEDROID_ENABLED
|
||||||
@@ -115,3 +159,5 @@ config BT_RESERVE_DRAM
|
|||||||
hex
|
hex
|
||||||
default 0x10000 if BT_ENABLED
|
default 0x10000 if BT_ENABLED
|
||||||
default 0
|
default 0
|
||||||
|
|
||||||
|
endmenu
|
||||||
|
@@ -139,8 +139,8 @@ bt_status_t btc_transfer_context(btc_msg_t *msg, void *arg, int arg_len, btc_arg
|
|||||||
|
|
||||||
int btc_init(void)
|
int btc_init(void)
|
||||||
{
|
{
|
||||||
xBtcQueue = xQueueCreate(BTC_TASK_QUEUE_NUM, sizeof(btc_msg_t));
|
xBtcQueue = xQueueCreate(BTC_TASK_QUEUE_LEN, sizeof(btc_msg_t));
|
||||||
xTaskCreatePinnedToCore(btc_task, "Btc_task", BTC_TASK_STACK_SIZE, NULL, BTC_TASK_PRIO, &xBtcTaskHandle, 0);
|
xTaskCreatePinnedToCore(btc_task, "Btc_task", BTC_TASK_STACK_SIZE, NULL, BTC_TASK_PRIO, &xBtcTaskHandle, BTC_TASK_PINNED_TO_CORE);
|
||||||
btc_gap_callback_init();
|
btc_gap_callback_init();
|
||||||
/* TODO: initial the profile_tab */
|
/* TODO: initial the profile_tab */
|
||||||
|
|
||||||
|
@@ -112,10 +112,6 @@ enum {
|
|||||||
/* 5 frames is equivalent to 6.89*5*2.9 ~= 100 ms @ 44.1 khz, 20 ms mediatick */
|
/* 5 frames is equivalent to 6.89*5*2.9 ~= 100 ms @ 44.1 khz, 20 ms mediatick */
|
||||||
#define MAX_OUTPUT_A2DP_FRAME_QUEUE_SZ (5)
|
#define MAX_OUTPUT_A2DP_FRAME_QUEUE_SZ (5)
|
||||||
|
|
||||||
#define MEDIA_DATA_Q_LEN (1)
|
|
||||||
#define MEDIA_CTRL_Q_LEN (5)
|
|
||||||
#define COMBINED_MEDIA_Q_LEN (MEDIA_DATA_Q_LEN + MEDIA_CTRL_Q_LEN)
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT16 num_frames_to_be_processed;
|
UINT16 num_frames_to_be_processed;
|
||||||
UINT16 len;
|
UINT16 len;
|
||||||
@@ -276,13 +272,13 @@ bool btc_a2dp_start_media_task(void)
|
|||||||
|
|
||||||
APPL_TRACE_EVENT("## A2DP START MEDIA THREAD ##");
|
APPL_TRACE_EVENT("## A2DP START MEDIA THREAD ##");
|
||||||
|
|
||||||
xBtcMediaQueueSet = xQueueCreateSet(COMBINED_MEDIA_Q_LEN);
|
xBtcMediaQueueSet = xQueueCreateSet(BTC_MEDIA_TASK_QUEUE_SET_LEN);
|
||||||
configASSERT(xBtcMediaQueueSet);
|
configASSERT(xBtcMediaQueueSet);
|
||||||
xBtcMediaDataQueue = xQueueCreate(MEDIA_DATA_Q_LEN, sizeof(void *));
|
xBtcMediaDataQueue = xQueueCreate(BTC_MEDIA_DATA_QUEUE_LEN, sizeof(void *));
|
||||||
configASSERT(xBtcMediaDataQueue);
|
configASSERT(xBtcMediaDataQueue);
|
||||||
xQueueAddToSet(xBtcMediaDataQueue, xBtcMediaQueueSet);
|
xQueueAddToSet(xBtcMediaDataQueue, xBtcMediaQueueSet);
|
||||||
|
|
||||||
xBtcMediaCtrlQueue = xQueueCreate(MEDIA_CTRL_Q_LEN, sizeof(void *));
|
xBtcMediaCtrlQueue = xQueueCreate(BTC_MEDIA_CTRL_QUEUE_LEN, sizeof(void *));
|
||||||
configASSERT(xBtcMediaCtrlQueue);
|
configASSERT(xBtcMediaCtrlQueue);
|
||||||
xQueueAddToSet(xBtcMediaCtrlQueue, xBtcMediaQueueSet);
|
xQueueAddToSet(xBtcMediaCtrlQueue, xBtcMediaQueueSet);
|
||||||
|
|
||||||
|
@@ -101,8 +101,8 @@ static bool hal_open(const hci_hal_callbacks_t *upper_callbacks)
|
|||||||
|
|
||||||
hci_hal_env_init(HCI_HAL_SERIAL_BUFFER_SIZE, SIZE_MAX);
|
hci_hal_env_init(HCI_HAL_SERIAL_BUFFER_SIZE, SIZE_MAX);
|
||||||
|
|
||||||
xHciH4Queue = xQueueCreate(HCI_H4_QUEUE_NUM, sizeof(BtTaskEvt_t));
|
xHciH4Queue = xQueueCreate(HCI_H4_QUEUE_LEN, sizeof(BtTaskEvt_t));
|
||||||
xTaskCreatePinnedToCore(hci_hal_h4_rx_handler, HCI_H4_TASK_NAME, HCI_H4_TASK_STACK_SIZE, NULL, HCI_H4_TASK_PRIO, &xHciH4TaskHandle, 0);
|
xTaskCreatePinnedToCore(hci_hal_h4_rx_handler, HCI_H4_TASK_NAME, HCI_H4_TASK_STACK_SIZE, NULL, HCI_H4_TASK_PRIO, &xHciH4TaskHandle, HCI_H4_TASK_PINNED_TO_CORE);
|
||||||
|
|
||||||
//register vhci host cb
|
//register vhci host cb
|
||||||
esp_vhci_host_register_callback(&vhci_host_cb);
|
esp_vhci_host_register_callback(&vhci_host_cb);
|
||||||
|
@@ -107,8 +107,8 @@ int hci_start_up(void)
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
xHciHostQueue = xQueueCreate(HCI_HOST_QUEUE_NUM, sizeof(BtTaskEvt_t));
|
xHciHostQueue = xQueueCreate(HCI_HOST_QUEUE_LEN, sizeof(BtTaskEvt_t));
|
||||||
xTaskCreatePinnedToCore(hci_host_thread_handler, HCI_HOST_TASK_NAME, HCI_HOST_TASK_STACK_SIZE, NULL, HCI_HOST_TASK_PRIO, &xHciHostTaskHandle, 0);
|
xTaskCreatePinnedToCore(hci_host_thread_handler, HCI_HOST_TASK_NAME, HCI_HOST_TASK_STACK_SIZE, NULL, HCI_HOST_TASK_PRIO, &xHciHostTaskHandle, HCI_HOST_TASK_PINNED_TO_CORE);
|
||||||
|
|
||||||
packet_fragmenter->init(&packet_fragmenter_callbacks);
|
packet_fragmenter->init(&packet_fragmenter_callbacks);
|
||||||
hal->open(&hal_callbacks);
|
hal->open(&hal_callbacks);
|
||||||
|
@@ -57,26 +57,39 @@ typedef enum {
|
|||||||
SIG_BTU_NUM,
|
SIG_BTU_NUM,
|
||||||
} SIG_BTU_t;
|
} SIG_BTU_t;
|
||||||
|
|
||||||
|
#define TASK_PINNED_TO_CORE (CONFIG_BLUEDROID_PINNED_TO_CORE < portNUM_PROCESSORS ? CONFIG_BLUEDROID_PINNED_TO_CORE : tskNO_AFFINITY)
|
||||||
|
|
||||||
|
#define HCI_HOST_TASK_PINNED_TO_CORE (TASK_PINNED_TO_CORE)
|
||||||
#define HCI_HOST_TASK_STACK_SIZE (2048 + BT_TASK_EXTRA_STACK_SIZE)
|
#define HCI_HOST_TASK_STACK_SIZE (2048 + BT_TASK_EXTRA_STACK_SIZE)
|
||||||
#define HCI_HOST_TASK_PRIO (configMAX_PRIORITIES - 3)
|
#define HCI_HOST_TASK_PRIO (configMAX_PRIORITIES - 3)
|
||||||
#define HCI_HOST_TASK_NAME "hciHostT"
|
#define HCI_HOST_TASK_NAME "hciHostT"
|
||||||
#define HCI_HOST_QUEUE_NUM 40
|
#define HCI_HOST_QUEUE_LEN 40
|
||||||
|
|
||||||
|
#define HCI_H4_TASK_PINNED_TO_CORE (TASK_PINNED_TO_CORE)
|
||||||
#define HCI_H4_TASK_STACK_SIZE (2048 + BT_TASK_EXTRA_STACK_SIZE)
|
#define HCI_H4_TASK_STACK_SIZE (2048 + BT_TASK_EXTRA_STACK_SIZE)
|
||||||
#define HCI_H4_TASK_PRIO (configMAX_PRIORITIES - 4)
|
#define HCI_H4_TASK_PRIO (configMAX_PRIORITIES - 4)
|
||||||
#define HCI_H4_TASK_NAME "hciH4T"
|
#define HCI_H4_TASK_NAME "hciH4T"
|
||||||
#define HCI_H4_QUEUE_NUM 60
|
#define HCI_H4_QUEUE_LEN 60
|
||||||
|
|
||||||
|
#define BTU_TASK_PINNED_TO_CORE (TASK_PINNED_TO_CORE)
|
||||||
#define BTU_TASK_STACK_SIZE (4096 + BT_TASK_EXTRA_STACK_SIZE)
|
#define BTU_TASK_STACK_SIZE (4096 + BT_TASK_EXTRA_STACK_SIZE)
|
||||||
#define BTU_TASK_PRIO (configMAX_PRIORITIES - 5)
|
#define BTU_TASK_PRIO (configMAX_PRIORITIES - 5)
|
||||||
#define BTU_TASK_NAME "btuT"
|
#define BTU_TASK_NAME "btuT"
|
||||||
#define BTU_QUEUE_NUM 50
|
#define BTU_QUEUE_LEN 50
|
||||||
|
|
||||||
|
#define BTC_TASK_PINNED_TO_CORE (TASK_PINNED_TO_CORE)
|
||||||
#define BTC_TASK_STACK_SIZE (CONFIG_BTC_TASK_STACK_SIZE + BT_TASK_EXTRA_STACK_SIZE) //by menuconfig
|
#define BTC_TASK_STACK_SIZE (CONFIG_BTC_TASK_STACK_SIZE + BT_TASK_EXTRA_STACK_SIZE) //by menuconfig
|
||||||
#define BTC_TASK_NAME "btcT"
|
#define BTC_TASK_NAME "btcT"
|
||||||
#define BTC_TASK_PRIO (configMAX_PRIORITIES - 6)
|
#define BTC_TASK_PRIO (configMAX_PRIORITIES - 6)
|
||||||
#define BTC_TASK_QUEUE_NUM 60
|
#define BTC_TASK_QUEUE_LEN 60
|
||||||
|
|
||||||
|
#define BTC_MEDIA_TASK_PINNED_TO_CORE (TASK_PINNED_TO_CORE)
|
||||||
|
#define BTC_MEDIA_TASK_STACK_SIZE (CONFIG_BTC_TASK_STACK_SIZE + BT_TASK_EXTRA_STACK_SIZE)
|
||||||
|
#define BTC_MEDIA_TASK_NAME "BtcMediaT"
|
||||||
|
#define BTC_MEDIA_TASK_PRIO (configMAX_PRIORITIES - 3)
|
||||||
|
#define BTC_MEDIA_DATA_QUEUE_LEN (1)
|
||||||
|
#define BTC_MEDIA_CTRL_QUEUE_LEN (5)
|
||||||
|
#define BTC_MEDIA_TASK_QUEUE_SET_LEN (BTC_MEDIA_DATA_QUEUE_LEN + BTC_MEDIA_CTRL_QUEUE_LEN)
|
||||||
|
|
||||||
#define TASK_POST_NON_BLOCKING (0)
|
#define TASK_POST_NON_BLOCKING (0)
|
||||||
#define TASK_POST_BLOCKING (portMAX_DELAY)
|
#define TASK_POST_BLOCKING (portMAX_DELAY)
|
||||||
|
@@ -168,8 +168,8 @@ void BTU_StartUp(void)
|
|||||||
|
|
||||||
osi_mutex_new(&btu_l2cap_alarm_lock);
|
osi_mutex_new(&btu_l2cap_alarm_lock);
|
||||||
|
|
||||||
xBtuQueue = xQueueCreate(BTU_QUEUE_NUM, sizeof(BtTaskEvt_t));
|
xBtuQueue = xQueueCreate(BTU_QUEUE_LEN, sizeof(BtTaskEvt_t));
|
||||||
xTaskCreatePinnedToCore(btu_task_thread_handler, BTU_TASK_NAME, BTU_TASK_STACK_SIZE, NULL, BTU_TASK_PRIO, &xBtuTaskHandle, 0);
|
xTaskCreatePinnedToCore(btu_task_thread_handler, BTU_TASK_NAME, BTU_TASK_STACK_SIZE, NULL, BTU_TASK_PRIO, &xBtuTaskHandle, BTU_TASK_PINNED_TO_CORE);
|
||||||
|
|
||||||
btu_task_post(SIG_BTU_START_UP, NULL, TASK_POST_BLOCKING);
|
btu_task_post(SIG_BTU_START_UP, NULL, TASK_POST_BLOCKING);
|
||||||
|
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
#include "freertos/semphr.h"
|
#include "freertos/semphr.h"
|
||||||
#include "freertos/xtensa_api.h"
|
#include "freertos/xtensa_api.h"
|
||||||
#include "freertos/portmacro.h"
|
#include "freertos/portmacro.h"
|
||||||
|
#include "xtensa/core-macros.h"
|
||||||
#include "esp_types.h"
|
#include "esp_types.h"
|
||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
#include "esp_task.h"
|
#include "esp_task.h"
|
||||||
@@ -34,6 +35,7 @@
|
|||||||
#include "esp_err.h"
|
#include "esp_err.h"
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
#include "esp_pm.h"
|
#include "esp_pm.h"
|
||||||
|
#include "esp_ipc.h"
|
||||||
|
|
||||||
#if CONFIG_BT_ENABLED
|
#if CONFIG_BT_ENABLED
|
||||||
|
|
||||||
@@ -135,6 +137,7 @@ struct osi_funcs_t {
|
|||||||
int32_t (* _task_create)(void *task_func, const char *name, uint32_t stack_depth, void *param, uint32_t prio, void *task_handle, uint32_t core_id);
|
int32_t (* _task_create)(void *task_func, const char *name, uint32_t stack_depth, void *param, uint32_t prio, void *task_handle, uint32_t core_id);
|
||||||
void (* _task_delete)(void *task_handle);
|
void (* _task_delete)(void *task_handle);
|
||||||
bool (* _is_in_isr)(void);
|
bool (* _is_in_isr)(void);
|
||||||
|
int (* _cause_sw_intr_to_core)(int core_id, int intr_no);
|
||||||
void *(* _malloc)(uint32_t size);
|
void *(* _malloc)(uint32_t size);
|
||||||
void (* _free)(void *p);
|
void (* _free)(void *p);
|
||||||
int32_t (* _read_efuse_mac)(uint8_t mac[6]);
|
int32_t (* _read_efuse_mac)(uint8_t mac[6]);
|
||||||
@@ -274,6 +277,26 @@ static bool IRAM_ATTR is_in_isr_wrapper(void)
|
|||||||
return (bool)xPortInIsrContext();
|
return (bool)xPortInIsrContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void IRAM_ATTR cause_sw_intr(void *arg)
|
||||||
|
{
|
||||||
|
/* just convert void * to int, because the width is the same */
|
||||||
|
uint32_t intr_no = (uint32_t)arg;
|
||||||
|
XTHAL_SET_INTSET((1<<intr_no));
|
||||||
|
}
|
||||||
|
|
||||||
|
static int IRAM_ATTR cause_sw_intr_to_core_wrapper(int core_id, int intr_no)
|
||||||
|
{
|
||||||
|
esp_err_t err = ESP_OK;
|
||||||
|
|
||||||
|
if (xPortGetCoreID() == core_id) {
|
||||||
|
cause_sw_intr((void *)intr_no);
|
||||||
|
} else {
|
||||||
|
err = esp_ipc_call(core_id, cause_sw_intr, (void *)intr_no);
|
||||||
|
}
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
static int32_t IRAM_ATTR read_mac_wrapper(uint8_t mac[6])
|
static int32_t IRAM_ATTR read_mac_wrapper(uint8_t mac[6])
|
||||||
{
|
{
|
||||||
return esp_read_mac(mac, ESP_MAC_BT);
|
return esp_read_mac(mac, ESP_MAC_BT);
|
||||||
@@ -315,6 +338,7 @@ static struct osi_funcs_t osi_funcs = {
|
|||||||
._task_create = task_create_wrapper,
|
._task_create = task_create_wrapper,
|
||||||
._task_delete = task_delete_wrapper,
|
._task_delete = task_delete_wrapper,
|
||||||
._is_in_isr = is_in_isr_wrapper,
|
._is_in_isr = is_in_isr_wrapper,
|
||||||
|
._cause_sw_intr_to_core = cause_sw_intr_to_core_wrapper,
|
||||||
._malloc = malloc,
|
._malloc = malloc,
|
||||||
._free = free,
|
._free = free,
|
||||||
._read_efuse_mac = read_mac_wrapper,
|
._read_efuse_mac = read_mac_wrapper,
|
||||||
@@ -345,10 +369,10 @@ static uint32_t btdm_config_mask_load(void)
|
|||||||
mask |= BTDM_CFG_BT_DATA_RELEASE;
|
mask |= BTDM_CFG_BT_DATA_RELEASE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_BT_HCI_UART
|
#if CONFIG_BTDM_CONTROLLER_HCI_MODE_UART_H4
|
||||||
mask |= BTDM_CFG_HCI_UART;
|
mask |= BTDM_CFG_HCI_UART;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_BTDM_CONTROLLER_RUN_APP_CPU
|
#if CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE == 1
|
||||||
mask |= BTDM_CFG_CONTROLLER_RUN_APP_CPU;
|
mask |= BTDM_CFG_CONTROLLER_RUN_APP_CPU;
|
||||||
#endif
|
#endif
|
||||||
return mask;
|
return mask;
|
||||||
|
Submodule components/bt/lib updated: 0710172bce...9a8e4ee159
Reference in New Issue
Block a user