]> granicus.if.org Git - esp-idf/commitdiff
Merge branch 'feature/btdm_blufi' into feature/btdm_bluedroid
authorTian Hao <tianhao@espressif.com>
Tue, 1 Nov 2016 06:01:49 +0000 (14:01 +0800)
committerTian Hao <tianhao@espressif.com>
Tue, 1 Nov 2016 06:01:49 +0000 (14:01 +0800)
# Conflicts:
# components/bt/bluedroid/bta/dm/bta_dm_pm.c
# components/bt/component.mk
# examples/07_blufi/components/bluedroid_demos/app_core/bt_app_core.c
# examples/07_blufi/components/bluedroid_demos/app_project/SampleServerProject.c

1  2 
components/bt/bluedroid/hci/hci_hal_h4.c
components/bt/bluedroid/hci/hci_layer.c
components/bt/bluedroid/osi/include/thread.h
components/bt/bluedroid/profiles/core/bt_prf_task.c
components/bt/component.mk

index dcdc2b44ef79ee2790abe42672e653152a88b7c5,61ab3027cb072a0c644829cc274c9b13170f6d3c..091784b6ca7ed6621bb5df7613125ab933ba44e2
@@@ -9,15 -9,31 +9,33 @@@
  
  #define portBASE_TYPE int
  
- struct task_evt {
-     uint32_t sig;
-     uint32_t par;
+ struct bt_task_evt {
+     uint32_t  sig;    //task sig
+     void *            par;    //point to task param
+       void *          cb;             //point to function cb
+       void *          arg;    //point to function arg
  };
- typedef struct task_evt TaskEvt_t;
+ typedef struct bt_task_evt BtTaskEvt_t;
+ typedef enum {
+     BT_STATUS_SUCCESS,
+     BT_STATUS_FAIL,
+     BT_STATUS_NOT_READY,
+     BT_STATUS_NOMEM,
+     BT_STATUS_BUSY,
+     BT_STATUS_DONE,
+     BT_STATUS_UNSUPPORTED,
+     BT_STATUS_PARAM_INVALID,
+     BT_STATUS_UNHANDLED,
+     BT_STATUS_AUTH_FAILURE,
+     BT_STATUS_RMT_DEV_DOWN
+ } BtStatus_t;
+ typedef BtStatus_t (* BtTaskCb_t)(void *arg);
  
  enum {
 +      SIG_PRF_START_UP = 0xfc,
 +      SIG_PRF_WORK    = 0xfd,
      SIG_BTU_START_UP = 0xfe,
      SIG_BTU_WORK = 0xff
  };
index 3f93e039b5ffe3036c7224cb1efb64bbcbfda478,0000000000000000000000000000000000000000..931a7703fbbec73d38a7d0b1a54061be2341f5eb
mode 100644,000000..100644
--- /dev/null
@@@ -1,133 -1,0 +1,133 @@@
-        TaskEvt_t *e;
 +/**
 + ****************************************************************************************
 + *
 + * @file bt_prf_task.c
 + *
 + * @brief Application entry point
 + *
 + * Copyright (C) Espressif 2016
 + * Created by Yulong at 2016/10/11
 + *
 + *
 + ****************************************************************************************
 + */
 +
 +#include "bt_prf_task.h"
 +#include "bt_prf_sys.h"
 +#include "allocator.h"
 +#include "thread.h"
 +#include "gki.h"
 +
 + //thread_t *bt_workqueue_thread;
 + //static const char *BT_WORKQUEUE_NAME = "bt_workqueue";
 + xTaskHandle  xProfileTaskHandle = NULL;
 + xQueueHandle xProfileQueue = 0;
 +
 + // Communication queue between bt_proflie_task and app.
 + extern fixed_queue_t *bt_profile_msg_queue;
 +
 + 
 + /*****************************************************************************
 + **
 + ** Function           bt_prf_task_thread_handler
 + **
 + ** Description        Process profile Task Thread.
 + ******************************************************************************/
 + void bt_prf_task_thread_handler(void *arg)
 + {
 +       //ke_event_clear(KE_EVENT_BTU_TASK_THREAD);
 + 
-     TaskEvt_t *evt = (TaskEvt_t *)osi_malloc(sizeof(TaskEvt_t));
++       BtTaskEvt_t *e;
 +       for (;;) {
 +               if (pdTRUE == xQueueReceive(xProfileQueue, &e, (portTickType)portMAX_DELAY)) {
 + 
 +                       if (e->sig == SIG_BTU_WORK) {
 +                              fixed_queue_process(bt_profile_msg_queue);
 +                              
 +                       }
 +                       else if (e->sig == SIG_BTU_START_UP) {
 +                               bt_prf_task_start_up();
 +                       }
 +                       osi_free(e); 
 +               }
 +       }
 + }
 +
 + void bt_prf_task_post(uint32_t sig)
 +{
++    BtTaskEvt_t *evt = (BtTaskEvt_t *)osi_malloc(sizeof(BtTaskEvt_t));
 +    if (evt == NULL)
 +        return;
 +
 +    evt->sig = sig;
 +    evt->par = 0;
 +
 +    if (xQueueSend(xProfileQueue, &evt, 10/portTICK_RATE_MS) != pdTRUE) {
 +            ets_printf("xProfileQueue failed\n");
 +    }
 +}
 +
 +void bt_profile_msg_ready(fixed_queue_t *queue) {
 +    BT_HDR *p_msg;
 +
 +    while (!fixed_queue_is_empty(queue)) {
 +        p_msg = (BT_HDR *)fixed_queue_dequeue(queue);
 +              if(p_msg != NULL)
 +              {
 +                      bt_prf_sys_event(p_msg);
 +              }
 +    }
 +}
 +
 +
 +void bt_prf_task_start_up(void)
 +{
 +       fixed_queue_register_dequeue(bt_profile_msg_queue, bt_profile_msg_ready);
 +}
 +
 +void bt_prf_task_shut_down(void) 
 +{
 +      fixed_queue_unregister_dequeue(bt_profile_msg_queue);
 +      
 +      bt_prf_free_core();
 +}
 +
 +
 +void bt_prf_StartUp(void)
 +{
 +      bt_profile_msg_queue = fixed_queue_new(SIZE_MAX);
 +    if (bt_profile_msg_queue == NULL)
 +        goto error_exit;
 +
 +      return;
 +
 +error_exit:;
 +   LOG_ERROR("%s Unable to allocate resources for bt_workqueue\n", __func__);
 +   bt_prf_ShutDown();
 +
 +}
 +
 +void bt_prf_ShutDown(void)
 +{
 +      
 +      bt_prf_task_shut_down();
 +
 +      //thread_free(bt_workqueue_thread);
 +      vTaskDelete(xProfileTaskHandle);
 +      vQueueDelete(xProfileQueue);
 +
 +      bt_profile_msg_queue = NULL;
 +
 +      // bt_workqueue_thread = NULL;
 +      xProfileTaskHandle = NULL;
 +      xProfileQueue = 0;
 +}
 +
 +
 +void  bt_prf_free_core(void)
 +{
 +      
 +}
 +
 +
 +
index 67907b2994e96b7a1f93ca3f334356fa0a0c4f72,f536abbfe75534aade99a02823bfba93bb8b107a..4316eaf474e021188de029190239863ec4ec184a
@@@ -9,7 -9,7 +9,8 @@@ COMPONENT_ADD_INCLUDEDIRS :=     bluedroid/
                                bluedroid/gki/include                   \
                                bluedroid/hci/include                   \
                                bluedroid/osi/include                   \
 +                              bluedroid/profiles/core/include                 \
+                               bluedroid/profiles/esp/blufi/include            \
                                bluedroid/profiles/esp/include          \
                                bluedroid/profiles/std/avrc/include     \
                                bluedroid/profiles/std/battery/include  \
@@@ -49,9 -49,8 +50,10 @@@ COMPONENT_SRCDIRS :=         bluedroid/bta/d
                        bluedroid/hci                           \
                        bluedroid/main                          \
                        bluedroid/osi                           \
 +                      bluedroid/profiles/core         \
+                       bluedroid/profiles/esp/blufi    \
                        bluedroid/profiles/esp/ble_button       \
 +                      bluedroid/profiles/esp/wechat_AirSync   \
                        bluedroid/profiles/esp                  \
                        bluedroid/profiles/std/avrc             \
                        bluedroid/profiles/std/battery          \