kopia lustrzana https://github.com/espressif/esp-idf
component/bt : add bluetooth status check
1. add bluetooth controller/host initialize status check 2. separate bluetooth controller task schedule loop from controller initpull/336/merge
rodzic
bb0298bc71
commit
12a7293b31
|
@ -16,6 +16,7 @@
|
|||
#include "esp_bt_main.h"
|
||||
#include "btc_task.h"
|
||||
#include "btc_main.h"
|
||||
#include "bt.h"
|
||||
#include "future.h"
|
||||
|
||||
static bool esp_already_enable = false;
|
||||
|
@ -103,6 +104,11 @@ esp_err_t esp_bluedroid_init(void)
|
|||
btc_msg_t msg;
|
||||
future_t **future_p;
|
||||
|
||||
if (esp_bt_controller_get_status() != ESP_BT_CONTROLLER_STATUS_ENABLED) {
|
||||
LOG_ERROR("%s conroller not init\n", __func__);
|
||||
return ESP_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
if (esp_already_init) {
|
||||
LOG_ERROR("%s already init\n", __func__);
|
||||
return ESP_ERR_INVALID_STATE;
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
/* not for user call, so don't put to include file */
|
||||
extern void btdm_osi_funcs_register(void *osi_funcs);
|
||||
extern void btdm_controller_init(void);
|
||||
extern void btdm_controller_schedule(void);
|
||||
extern void btdm_controller_deinit(void);
|
||||
extern int btdm_controller_enable(esp_bt_mode_t mode);
|
||||
extern int btdm_controller_disable(esp_bt_mode_t mode);
|
||||
|
@ -77,6 +78,7 @@ struct osi_funcs_t {
|
|||
|
||||
/* Static variable declare */
|
||||
static bool btdm_bb_init_flag = false;
|
||||
static esp_bt_controller_status_t btdm_controller_status = ESP_BT_CONTROLLER_STATUS_IDLE;
|
||||
|
||||
static xTaskHandle btControllerTaskHandle;
|
||||
|
||||
|
@ -157,12 +159,18 @@ static void bt_controller_task(void *pvParam)
|
|||
btdm_osi_funcs_register(&osi_funcs);
|
||||
|
||||
btdm_controller_init();
|
||||
btdm_controller_status = ESP_BT_CONTROLLER_STATUS_INITED;
|
||||
|
||||
/* Loop */
|
||||
btdm_controller_schedule();
|
||||
}
|
||||
|
||||
static bool bb_inited;
|
||||
void esp_bt_controller_init()
|
||||
{
|
||||
bb_inited = false;
|
||||
if (btdm_controller_status != ESP_BT_CONTROLLER_STATUS_IDLE) {
|
||||
return;
|
||||
}
|
||||
|
||||
xTaskCreatePinnedToCore(bt_controller_task, "btController",
|
||||
ESP_TASK_BT_CONTROLLER_STACK, NULL,
|
||||
ESP_TASK_BT_CONTROLLER_PRIO, &btControllerTaskHandle, 0);
|
||||
|
@ -171,13 +179,17 @@ void esp_bt_controller_init()
|
|||
void esp_bt_controller_deinit(void)
|
||||
{
|
||||
vTaskDelete(btControllerTaskHandle);
|
||||
bb_inited = false;
|
||||
btdm_controller_status = ESP_BT_CONTROLLER_STATUS_IDLE;
|
||||
}
|
||||
|
||||
esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (btdm_controller_status != ESP_BT_CONTROLLER_STATUS_INITED) {
|
||||
return ESP_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
if (mode != ESP_BT_MODE_BTDM) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
@ -194,6 +206,8 @@ esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode)
|
|||
return ESP_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
btdm_controller_status = ESP_BT_CONTROLLER_STATUS_ENABLED;
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
|
@ -201,6 +215,10 @@ esp_err_t esp_bt_controller_disable(esp_bt_mode_t mode)
|
|||
{
|
||||
int ret;
|
||||
|
||||
if (btdm_controller_status != ESP_BT_CONTROLLER_STATUS_ENABLED) {
|
||||
return ESP_ERR_INVALID_STATE;
|
||||
}
|
||||
|
||||
if (mode != ESP_BT_MODE_BTDM) {
|
||||
return ESP_ERR_INVALID_ARG;
|
||||
}
|
||||
|
@ -212,7 +230,14 @@ esp_err_t esp_bt_controller_disable(esp_bt_mode_t mode)
|
|||
|
||||
esp_phy_rf_deinit();
|
||||
|
||||
btdm_controller_status = ESP_BT_CONTROLLER_STATUS_INITED;
|
||||
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
esp_bt_controller_status_t esp_bt_controller_get_status(void)
|
||||
{
|
||||
return btdm_controller_status;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -33,6 +33,16 @@ typedef enum {
|
|||
ESP_BT_MODE_BTDM = 0x03, /*!< Run dual mode */
|
||||
} esp_bt_mode_t;
|
||||
|
||||
/**
|
||||
* @brief Bluetooth controller enable/disable/initialised/de-initialised status
|
||||
*/
|
||||
typedef enum {
|
||||
ESP_BT_CONTROLLER_STATUS_IDLE = 0,
|
||||
ESP_BT_CONTROLLER_STATUS_INITED,
|
||||
ESP_BT_CONTROLLER_STATUS_ENABLED,
|
||||
ESP_BT_CONTROLLER_STATUS_NUM,
|
||||
} esp_bt_controller_status_t;
|
||||
|
||||
/**
|
||||
* @brief Initialize BT controller to allocate task and other resource.
|
||||
*
|
||||
|
@ -52,6 +62,7 @@ void esp_bt_controller_deinit(void);
|
|||
* @brief Enable BT controller
|
||||
* @param mode : the mode(BLE/BT/BTDM) to enable.
|
||||
* Now only support BTDM.
|
||||
* @return ESP_OK - success, other - failed
|
||||
*/
|
||||
esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode);
|
||||
|
||||
|
@ -59,10 +70,15 @@ esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode);
|
|||
* @brief Disable BT controller
|
||||
* @param mode : the mode(BLE/BT/BTDM) to disable.
|
||||
* Now only support BTDM.
|
||||
* @return ESP_OK - success, other - failed
|
||||
*/
|
||||
esp_err_t esp_bt_controller_disable(esp_bt_mode_t mode);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Get BT controller is initialised/de-initialised/enabled/disabled
|
||||
* @return status value
|
||||
*/
|
||||
esp_bt_controller_status_t esp_bt_controller_get_status(void);
|
||||
|
||||
/** @brief esp_vhci_host_callback
|
||||
* used for vhci call host function to notify what host need to do
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 69616af7653f4de6e3b78f475dc10e73f0a20ece
|
||||
Subproject commit dbac82b5c2694f2639161b0a2b3c0bd8c7d3efc5
|
|
@ -49,6 +49,7 @@ Functions
|
|||
.. doxygenfunction:: esp_bt_controller_deinit
|
||||
.. doxygenfunction:: esp_bt_controller_enable
|
||||
.. doxygenfunction:: esp_bt_controller_disable
|
||||
.. doxygenfunction:: esp_bt_controller_get_status
|
||||
.. doxygenfunction:: esp_vhci_host_check_send_available
|
||||
.. doxygenfunction:: esp_vhci_host_send_packet
|
||||
.. doxygenfunction:: esp_vhci_host_register_callback
|
||||
|
|
Ładowanie…
Reference in New Issue