From 7a27e3c74decfce5c54e606ddf7b5c73b16d05ea Mon Sep 17 00:00:00 2001 From: Yulong Date: Thu, 21 Sep 2017 06:17:38 -0400 Subject: [PATCH] component/bt: added the queue to store the gattc commands. --- components/bt/bluedroid/bta/gatt/bta_gattc_act.c | 5 +++++ components/bt/bluedroid/bta/gatt/bta_gattc_utils.c | 7 +++++-- components/bt/bluedroid/bta/include/bta_gattc_int.h | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/components/bt/bluedroid/bta/gatt/bta_gattc_act.c b/components/bt/bluedroid/bta/gatt/bta_gattc_act.c index 1a9306001..8d504f6d7 100644 --- a/components/bt/bluedroid/bta/gatt/bta_gattc_act.c +++ b/components/bt/bluedroid/bta/gatt/bta_gattc_act.c @@ -1457,6 +1457,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 diff --git a/components/bt/bluedroid/bta/gatt/bta_gattc_utils.c b/components/bt/bluedroid/bta/gatt/bta_gattc_utils.c index 864a85fe8..196acf049 100644 --- a/components/bt/bluedroid/bta/gatt/bta_gattc_utils.c +++ b/components/bt/bluedroid/bta/gatt/bta_gattc_utils.c @@ -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; } diff --git a/components/bt/bluedroid/bta/include/bta_gattc_int.h b/components/bt/bluedroid/bta/include/bta_gattc_int.h index f54c0fbee..9903a0a05 100644 --- a/components/bt/bluedroid/bta/include/bta_gattc_int.h +++ b/components/bt/bluedroid/bta/include/bta_gattc_int.h @@ -310,7 +310,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