From c377650cddf92f104434d1e02d4c2018d39baa12 Mon Sep 17 00:00:00 2001 From: Yulong Date: Thu, 3 Nov 2016 04:27:44 -0400 Subject: [PATCH] component bt:Added the profile task to the bt project --- .../bluedroid/profiles/core/bt_prf_sys_main.c | 2 +- .../bt/bluedroid/profiles/core/bt_prf_task.c | 6 ++-- .../profiles/core/include/bt_prf_sys.h | 15 ++++---- .../profiles/esp/ble_button/button_pro.c | 1 - .../bluedroid/profiles/std/include/prf_defs.h | 10 ++++++ .../bluedroid_demos/app_core/bt_app_api.c | 35 +++++++++++++++++++ .../bluedroid_demos/app_core/bt_app_core.c | 10 +++--- .../app_sample_button/app_button.c | 6 ++-- .../bluedroid_demos/include/app_button_int.h | 2 +- .../bluedroid_demos/include/bt_app_api.h | 22 ++++++++++-- 10 files changed, 86 insertions(+), 23 deletions(-) diff --git a/components/bt/bluedroid/profiles/core/bt_prf_sys_main.c b/components/bt/bluedroid/profiles/core/bt_prf_sys_main.c index 48b2825eb..cce2f14ed 100644 --- a/components/bt/bluedroid/profiles/core/bt_prf_sys_main.c +++ b/components/bt/bluedroid/profiles/core/bt_prf_sys_main.c @@ -48,7 +48,7 @@ void bt_prf_sys_init(void) ** Returns void ** *******************************************************************************/ -void bt_prf_sys_event(BT_HDR *p_msg) +void bt_prf_sys_event(prf_hdr_evt_t *p_msg) { UINT8 id; BOOLEAN freebuf = TRUE; diff --git a/components/bt/bluedroid/profiles/core/bt_prf_task.c b/components/bt/bluedroid/profiles/core/bt_prf_task.c index 035c8d4eb..a611ccb0b 100644 --- a/components/bt/bluedroid/profiles/core/bt_prf_task.c +++ b/components/bt/bluedroid/profiles/core/bt_prf_task.c @@ -38,7 +38,7 @@ //ke_event_clear(KE_EVENT_BTU_TASK_THREAD); TaskEvt_t *e; - for (;;) { + for (;;) { if (pdTRUE == xQueueReceive(xProfileQueue, &e, (portTickType)portMAX_DELAY)) { if (e->sig == SIG_BTU_WORK) { @@ -68,10 +68,10 @@ } void bt_profile_msg_ready(fixed_queue_t *queue) { - BT_HDR *p_msg; + prf_hdr_evt_t *p_msg; while (!fixed_queue_is_empty(queue)) { - p_msg = (BT_HDR *)fixed_queue_dequeue(queue); + p_msg = (prf_hdr_evt_t *)fixed_queue_dequeue(queue); if(p_msg != NULL) { bt_prf_sys_event(p_msg); diff --git a/components/bt/bluedroid/profiles/core/include/bt_prf_sys.h b/components/bt/bluedroid/profiles/core/include/bt_prf_sys.h index 9043e8e82..a28eb4ebf 100644 --- a/components/bt/bluedroid/profiles/core/include/bt_prf_sys.h +++ b/components/bt/bluedroid/profiles/core/include/bt_prf_sys.h @@ -16,6 +16,7 @@ #define _PROFILE_SYS_H__ #include "bt_types.h" +#include "prf_defs.h" enum { @@ -38,7 +39,7 @@ typedef UINT8 tBT_PRF_SYS_CONN_STATUS; /* disable function type */ typedef void (tBT_PRF_SYS_DISABLE)(void); /* event handler function type */ -typedef BOOLEAN (tBT_PRF_SYS_EVT_HDLR)(BT_HDR *p_msg); +typedef BOOLEAN (tBT_PRF_SYS_EVT_HDLR)(prf_hdr_evt_t *p_msg); /* conn callback for role / low power manager*/ typedef void (tBT_PRF_SYS_CONN_CBACK)(tBT_PRF_SYS_CONN_STATUS status, @@ -73,14 +74,14 @@ extern tBT_PRF_SYS_CB bt_prf_sys_cb; extern void bt_prf_sys_init(void); extern void bt_prf_sys_free(void); -extern void bt_prf_sys_event(BT_HDR *p_msg); +extern void bt_prf_sys_event(prf_hdr_evt_t *p_msg); -extern void bt_prf_sys_register(UINT8 id, const tBT_PRF_SYS_REG *p_reg); -extern void bt_prf_sys_deregister(UINT8 id); -extern BOOLEAN bt_prf_sys_is_register(UINT8 id); +extern void bt_prf_sys_register(uint8_t id, const tBT_PRF_SYS_REG *p_reg); +extern void bt_prf_sys_deregister(uint8_t id); +extern BOOLEAN bt_prf_sys_is_register(uint8_t id); -extern void bt_prf_sys_idle(UINT8 id, UINT8 app_id, BD_ADDR peer_addr); -extern void bt_prf_sys_busy(UINT8 id, UINT8 app_id, BD_ADDR peer_addr); +extern void bt_prf_sys_idle(uint8_t id, uint8_t app_id, BD_ADDR peer_addr); +extern void bt_prf_sys_busy(uint8_t id, uint8_t app_id, BD_ADDR peer_addr); #endif ///_PROFILE_SYS_H__ diff --git a/components/bt/bluedroid/profiles/esp/ble_button/button_pro.c b/components/bt/bluedroid/profiles/esp/ble_button/button_pro.c index a19856d17..df878c9e4 100644 --- a/components/bt/bluedroid/profiles/esp/ble_button/button_pro.c +++ b/components/bt/bluedroid/profiles/esp/ble_button/button_pro.c @@ -26,7 +26,6 @@ #include "bta_api.h" #include "bta_gatt_api.h" #include "bta_gatts_int.h" -#include "bt_app_api.h" #include "button_pro.h" #include "prf_defs.h" diff --git a/components/bt/bluedroid/profiles/std/include/prf_defs.h b/components/bt/bluedroid/profiles/std/include/prf_defs.h index b84eae2ab..34012a2fb 100644 --- a/components/bt/bluedroid/profiles/std/include/prf_defs.h +++ b/components/bt/bluedroid/profiles/std/include/prf_defs.h @@ -36,6 +36,16 @@ **************************************************************************************** */ +/* Define the header of each buffer used in the profile stack. +*/ +typedef struct +{ + uint16_t event; + uint16_t len; + uint8_t data[]; +} prf_hdr_evt_t; + + /// Characteristic Value Descriptor typedef struct { diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_api.c b/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_api.c index 52fb3014d..93914fe7e 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_api.c +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_api.c @@ -1194,6 +1194,41 @@ void esp_ble_gatts_close(uint16_t conn_id) } +/******************************************************************************* +** +** @function esp_prf_app_register +** +** @brief This function is called to register application callbacks +** with BTA GATTS module. +** +** @param[in] p_app_uuid - applicaiton UUID +** @param[in] p_cback - pointer to the application callback function. +** +** @return None +** +*******************************************************************************/ +void esp_prf_app_register(uint8_t prf_id, void *p_cback) +{ + //tBTA_GATTS_API_REG *p_buf; + + /* register with BTA system manager */ + if (bt_prf_sys_is_register(PRF_ID_SYS) == FALSE) + { + bt_prf_sys_register(PRF_ID_SYS, NULL); + } + +// if ((p_buf = (tBTA_GATTS_API_REG *) GKI_getbuf(sizeof(tBTA_GATTS_API_REG))) != NULL) +// { +// p_buf->hdr.event = BTA_GATTS_API_REG_EVT; + +// if (p_app_uuid != NULL) +// memcpy(&p_buf->app_uuid, p_app_uuid, sizeof(tBT_UUID)); +// p_buf->p_cback = p_cback; + +// bta_sys_sendmsg(p_buf); +// } + return; +} diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_core.c b/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_core.c index 84a244943..8ac03bed3 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_core.c +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_core.c @@ -68,13 +68,13 @@ static void bt_app_task_handler(void *arg) fixed_queue_process(bt_app_general_alarm_queue); } #if (BUT_PROFILE_CFG) - else if(e->sig == BUTTON_PRESS_EVT){ - LOG_ERROR("button_press_event come in,button_value=%x\n",e->par); - button_msg[1] = e->par; - button_msg_notify(2,button_msg); + // else if(e->sig == BUTTON_PRESS_EVT){ + // LOG_ERROR("button_press_event come in,button_value=%x\n",e->par); + // button_msg[1] = e->par; + // button_msg_notify(2,button_msg); - } + //} #endif ///BUT_PROFILE_CFG } diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_sample_button/app_button.c b/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_sample_button/app_button.c index c224e7031..bcd4d00ac 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_sample_button/app_button.c +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_sample_button/app_button.c @@ -41,7 +41,7 @@ #include "button_pro.h" #include "app_button_int.h" -static const tBTA_SYS_REG bta_gatts_reg = +static const tBT_PRF_SYS_REG bta_gatts_reg = { ble_but_prf_hdl_event, ble_but_prf_disable @@ -59,7 +59,7 @@ static const tBTA_SYS_REG bta_gatts_reg = ** Returns BOOLEAN ** *******************************************************************************/ -BOOLEAN ble_but_prf_hdl_event(BT_HDR *msg_data) +BOOLEAN ble_but_prf_hdl_event(prf_hdr_evt_t *msg_data) { UINT16 connid = 0; switch(msg_data->event) @@ -112,7 +112,7 @@ void ble_but_prf_disable(void) if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) { - p_buf->event = BTA_GATTS_API_DISABLE_EVT; + p_buf->event = BLE_BUT_DISABLE_IND_EVT; bta_sys_sendmsg(p_buf); } bta_sys_deregister(PRF_ID_BUT_LE); diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_button_int.h b/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_button_int.h index bfd7c4708..b64a1ee32 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_button_int.h +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_button_int.h @@ -119,7 +119,7 @@ typedef union -BOOLEAN ble_but_prf_hdl_event(BT_HDR *msg_data); +BOOLEAN ble_but_prf_hdl_event(prf_hdr_evt_t *msg_data); void ble_but_prf_disable(void); diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/include/bt_app_api.h b/examples/06_bluedroid_demos/components/bluedroid_demos/include/bt_app_api.h index dd68b98c7..2abce8791 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/include/bt_app_api.h +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/include/bt_app_api.h @@ -15,7 +15,7 @@ #include "bt_types.h" #include "bt_app_defs.h" #include "bta_gatt_api.h" - +#include "bt_prf_sys.h" /******************************************************************************* @@ -895,7 +895,7 @@ void esp_ble_gatts_cancel_conn (esp_gatts_if_t server_if, BD_ADDR remote_bda, BO ** ** @function esp_ble_gatts_close ** -** @param[in] Close a connection a remote device. +** @brief Close a connection a remote device. ** ** @param[in] conn_id: connectino ID to be closed. ** @@ -904,3 +904,21 @@ void esp_ble_gatts_cancel_conn (esp_gatts_if_t server_if, BD_ADDR remote_bda, BO *******************************************************************************/ void esp_ble_gatts_close(uint16_t conn_id); + +/******************************************************************************* +** +** @function esp_prf_app_register +** +** @brief This function is called to register application callbacks +** with BTA GATTS module. +** +** @param[in] prf_id - the profile identification +** @param[in] p_cback - pointer to the application callback function. +** +** @return None +** +*******************************************************************************/ +void esp_prf_app_register(uint8_t prf_id, void *p_cback); + + +