]> granicus.if.org Git - esp-idf/commitdiff
component/bt: added the queue to store the gattc commands.
authorYulong <huangyulong@espressif.com>
Thu, 21 Sep 2017 10:17:38 +0000 (06:17 -0400)
committeryulong <huangyulong@espressif.com>
Sat, 30 Sep 2017 05:59:14 +0000 (13:59 +0800)
components/bt/bluedroid/bta/gatt/bta_gattc_act.c
components/bt/bluedroid/bta/gatt/bta_gattc_utils.c
components/bt/bluedroid/bta/include/bta_gattc_int.h

index 159baa0632d462aeb55d0115266d6817b1287d2c..03338bf255cb7e26a3d742a19826e5a097d66010 100644 (file)
@@ -1451,6 +1451,11 @@ void bta_gattc_q_cmd(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
     bta_gattc_enqueue(p_clcb, p_data);
 }
 
+void bta_gattc_pop_command_to_send(tBTA_GATTC_CLCB *p_clcb)
+{
+    tBTA_GATTC_DATA *p_data = 
+}
+
 /*******************************************************************************
 **
 ** Function         bta_gattc_fail
index dfa685f67dba4858538e967f93757ebe84dc738d..afb89cc34f62fb3602ab57e3c86f2cceb5e2d398 100644 (file)
@@ -230,6 +230,7 @@ tBTA_GATTC_CLCB *bta_gattc_clcb_alloc(tBTA_GATTC_IF client_if, BD_ADDR remote_bd
             bdcpy(p_clcb->bda, remote_bda);
 
             p_clcb->p_rcb = bta_gattc_cl_get_regcb(client_if);
+            p_clcb->p_cmd_list = list_new(osi_free_func);
 
             if ((p_clcb->p_srcb = bta_gattc_find_srcb(remote_bda)) == NULL) {
                 p_clcb->p_srcb      = bta_gattc_srcb_alloc(remote_bda);
@@ -437,10 +438,12 @@ BOOLEAN bta_gattc_enqueue(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
     {
         p_clcb->p_q_cmd = p_data;
         return TRUE;
+    } else if (p_clcb->p_cmd_list) {
+        //store the command to the command list.
+        list_append(p_clcb->p_cmd_list, (void *)p_data);
+        return FALSE;
     }
 
-    APPL_TRACE_ERROR ("%s: already has a pending command!!", __func__);
-    /* skip the callback now. ----- need to send callback ? */
     return FALSE;
 }
 
index 2515cb5225c7510843fdd22037d8f50f1ec0cfe5..f4af7fc8a327727634f47fb98e1155740fde2eb4 100644 (file)
@@ -305,7 +305,7 @@ typedef struct {
     tBTA_GATTC_RCB      *p_rcb;         /* pointer to the registration CB */
     tBTA_GATTC_SERV     *p_srcb;    /* server cache CB */
     tBTA_GATTC_DATA     *p_q_cmd;   /* command in queue waiting for execution */
-
+    list_t              *p_cmd_list; /* The list to store the command to be sent */
 #define BTA_GATTC_NO_SCHEDULE       0
 #define BTA_GATTC_DISC_WAITING      0x01
 #define BTA_GATTC_REQ_WAITING       0x10