From 993287af6132924f952d2368d45fec2882e79a8b Mon Sep 17 00:00:00 2001 From: snake Date: Thu, 22 Sep 2016 16:40:31 +0800 Subject: [PATCH] add btdm_controller 1st --- components/bt/bt.c | 117 +++++++++++++++++++++++++++++ components/bt/component.mk | 25 ++++++ components/bt/include/bt.h | 30 ++++++++ components/bt/lib/libbtdm_app.a | Bin 0 -> 61822 bytes components/esp32/cpu_start.c | 8 +- components/esp32/include/soc/soc.h | 6 +- components/esp32/lib | 2 +- 7 files changed, 183 insertions(+), 5 deletions(-) create mode 100644 components/bt/bt.c create mode 100644 components/bt/component.mk create mode 100644 components/bt/include/bt.h create mode 100644 components/bt/lib/libbtdm_app.a diff --git a/components/bt/bt.c b/components/bt/bt.c new file mode 100644 index 0000000000..4b623ca20f --- /dev/null +++ b/components/bt/bt.c @@ -0,0 +1,117 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include +#include + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/queue.h" +#include "freertos/semphr.h" +#include "freertos/xtensa_api.h" +#include "freertos/portmacro.h" +#include "esp_types.h" +#include "esp_system.h" +#include "esp_intr.h" +#include "esp_attr.h" +#include "bt.h" + +#if CONFIG_BT_ENABLED + +static bt_app_startup_cb_t app_startup_cb; +static void *app_startup_ctx; + +#define BT_DEBUG(...) +#define BT_API_CALL_CHECK(info, api_call, ret) \ +do{\ + esp_err_t __err = (api_call);\ + if ((ret) != __err) {\ + BT_DEBUG("%s %d %s ret=%d\n", __FUNCTION__, __LINE__, (info), __err);\ + return __err;\ + }\ +} while(0) + +extern void btdm_controller_init(void); +extern void API_osi_funcs_register(void *osi_funcs); + +struct osi_funcs_t { + xt_handler (*_set_isr)(int n, xt_handler f, void *arg); + void (*_ints_on)(unsigned int mask); + void (*_interrupt_disable)(void); + void (*_interrupt_restore)(void); + void (*_task_yield)(void); + void *(*_semphr_create)(uint32_t max, uint32_t init); + void *(*_semphr_give_from_isr)(void *semphr, void *hptw); + void *(*_semphr_take)(void *semphr, uint32_t block_time); + esp_err_t (* _read_efuse_mac)(uint8_t mac[6]); +}; + +static portMUX_TYPE global_int_mux = portMUX_INITIALIZER_UNLOCKED; + +static inline void IRAM_ATTR interrupt_disable(void) +{ + portENTER_CRITICAL(&global_int_mux); +} + +static inline void IRAM_ATTR interrupt_restore(void) +{ + portEXIT_CRITICAL(&global_int_mux); +} + +static inline void *IRAM_ATTR semphr_take_wrapped(void *semphr, uint32_t block_time) +{ + return (void *)xSemaphoreTake(semphr, block_time); +} + +static struct osi_funcs_t osi_funcs = { + ._set_isr = xt_set_interrupt_handler, + ._ints_on = xt_ints_on, + ._interrupt_disable = interrupt_disable, + ._interrupt_restore = interrupt_restore, + ._task_yield = vPortYield, + ._semphr_create = xQueueCreateCountingSemaphore, + ._semphr_give_from_isr = (void *)xQueueGiveFromISR, + ._semphr_take = semphr_take_wrapped, + ._read_efuse_mac = system_efuse_read_mac, +}; + +static void bt_controller_task(void *pvParam) +{ + API_osi_funcs_register(&osi_funcs); + btdm_controller_init(); +} + + +static void bt_init_task(void *pvParameters) +{ + xTaskCreatePinnedToCore(bt_controller_task, "btControllerTask", BT_CONTROLLER_TASK_STACK_SIZE, NULL, BT_CONTROLLER_TASK_PRIO, NULL, 0); + + if (app_startup_cb) + app_startup_cb(app_startup_ctx); + + vTaskDelete(NULL); +} + + +esp_err_t esp_bt_startup(bt_app_startup_cb_t cb, void *ctx) +{ + app_startup_cb = cb; + app_startup_ctx = ctx; + + xTaskCreatePinnedToCore(bt_init_task, "btInitTask", BT_INIT_TASK_STACK_SIZE, NULL, BT_INIT_TASK_PRIO, NULL, 0); + + return ESP_OK; +} +#endif diff --git a/components/bt/component.mk b/components/bt/component.mk new file mode 100644 index 0000000000..110d022672 --- /dev/null +++ b/components/bt/component.mk @@ -0,0 +1,25 @@ +# +# Component Makefile +# + +#COMPONENT_ADD_INCLUDEDIRS := + +CURRENT_DIR=$(IDF_PATH)/components/bt + +COMPONENT_ADD_INCLUDEDIRS := ./include + +CFLAGS += -Wno-error=unused-label -Wno-error=return-type -Wno-error=missing-braces -Wno-error=pointer-sign -Wno-error=parentheses + +LIBS := btdm_app + +COMPONENT_ADD_LDFLAGS := -lbt -L$(abspath lib) \ + $(addprefix -l,$(LIBS)) \ + $(LINKER_SCRIPTS) + + +ALL_LIB_FILES := $(patsubst %,$(COMPONENT_PATH)/lib/lib%.a,$(LIBS)) +$(COMPONENT_LIBRARY): $(ALL_LIB_FILES) + +COMPONENT_SRCDIRS := ./ + +include $(IDF_PATH)/make/component_common.mk diff --git a/components/bt/include/bt.h b/components/bt/include/bt.h new file mode 100644 index 0000000000..04bb466c45 --- /dev/null +++ b/components/bt/include/bt.h @@ -0,0 +1,30 @@ +#ifndef __BT_H__ +#define __BT_H__ + +#include "freertos/FreeRTOS.h" +#include "esp_err.h" + +#define BT_TASK_PRIO_MAX (configMAX_PRIORITIES) +#define BT_TASK_PRIO_MIN (0) + +/* bt init */ +#define BT_INIT_TASK_PRIO (BT_TASK_PRIO_MAX-1) +#define BT_INIT_TASK_STACK_SIZE (2048) +/* controller */ +#define BT_CONTROLLER_TASK_PRIO (BT_TASK_PRIO_MAX-3) +#define BT_CONTROLLER_TASK_STACK_SIZE (4096) + +typedef void (* bt_app_startup_cb_t)(void *param); + +esp_err_t esp_bt_startup(bt_app_startup_cb_t cb, void *ctx); + +typedef struct vhci_host_callback { + void (*notify_host_send_available)(void); + int (*notify_host_recv)(uint8_t *data, uint16_t len); +} vhci_host_callback_t; + +extern bool API_vhci_host_check_send_available(void); +extern void API_vhci_host_send_packet(uint8_t *data, uint16_t len); +extern void API_vhci_host_register_callback(const vhci_host_callback_t *callback); + +#endif /* __BT_H__ */ diff --git a/components/bt/lib/libbtdm_app.a b/components/bt/lib/libbtdm_app.a new file mode 100644 index 0000000000000000000000000000000000000000..4c93a93b0fcdbb1548a7bf6b00c616a3a645a944 GIT binary patch literal 61822 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 literal 0 HcmV?d00001 diff --git a/components/esp32/cpu_start.c b/components/esp32/cpu_start.c index 85f4ace512..45a4bcec3c 100644 --- a/components/esp32/cpu_start.c +++ b/components/esp32/cpu_start.c @@ -48,6 +48,9 @@ static void IRAM_ATTR call_user_start_cpu1(); static void IRAM_ATTR user_start_cpu1(void); extern void ets_setup_syscalls(void); extern esp_err_t app_main(void *ctx); +#if CONFIG_BT_ENABLED +extern void bt_app_main(void *param); +#endif extern int _bss_start; extern int _bss_end; @@ -161,7 +164,10 @@ void user_start_cpu0(void) #if CONFIG_WIFI_ENABLED && CONFIG_WIFI_AUTO_STARTUP #include "esp_wifi.h" - esp_wifi_startup(app_main, NULL); + esp_wifi_startup(app_main, NULL); +#elif CONFIG_BT_ENABLED +#include "bt.h" + esp_bt_startup(bt_app_main, NULL); #else app_main(NULL); #endif diff --git a/components/esp32/include/soc/soc.h b/components/esp32/include/soc/soc.h index 0b8cdfecba..4ffdfb069e 100755 --- a/components/esp32/include/soc/soc.h +++ b/components/esp32/include/soc/soc.h @@ -260,14 +260,14 @@ /************************************************************************************************************* * Intr num Level Type PRO CPU usage APP CPU uasge * 0 1 extern level WMAC Reserved - * 1 1 extern level BT/BLE Host Reserved + * 1 1 extern level BT/BLE Host VHCI Reserved * 2 1 extern level FROM_CPU FROM_CPU * 3 1 extern level TG0_WDT Reserved * 4 1 extern level WBB - * 5 1 extern level Reserved + * 5 1 extern level BT Controller * 6 1 timer FreeRTOS Tick(L1) FreeRTOS Tick(L1) * 7 1 software Reserved Reserved - * 8 1 extern level Reserved + * 8 1 extern level BLE Controller * 9 1 extern level * 10 1 extern edge Internal Timer * 11 3 profiling diff --git a/components/esp32/lib b/components/esp32/lib index 9f26b9a190..ab3c510e51 160000 --- a/components/esp32/lib +++ b/components/esp32/lib @@ -1 +1 @@ -Subproject commit 9f26b9a190e6a6ca42656685df9287253badfa46 +Subproject commit ab3c510e51f312d919df6830efbc04c6de9cfd2a