component/bt: added the queue to store the gattc commands.

This commit is contained in:
Yulong 2017-09-21 06:17:38 -04:00 committed by yulong
parent 0ee9d93e58
commit 7a27e3c74d
3 changed files with 11 additions and 3 deletions

View file

@ -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); 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 ** Function bta_gattc_fail

View 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); bdcpy(p_clcb->bda, remote_bda);
p_clcb->p_rcb = bta_gattc_cl_get_regcb(client_if); 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) { if ((p_clcb->p_srcb = bta_gattc_find_srcb(remote_bda)) == NULL) {
p_clcb->p_srcb = bta_gattc_srcb_alloc(remote_bda); 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; p_clcb->p_q_cmd = p_data;
return TRUE; 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; return FALSE;
} }

View file

@ -310,7 +310,7 @@ typedef struct {
tBTA_GATTC_RCB *p_rcb; /* pointer to the registration CB */ tBTA_GATTC_RCB *p_rcb; /* pointer to the registration CB */
tBTA_GATTC_SERV *p_srcb; /* server cache CB */ tBTA_GATTC_SERV *p_srcb; /* server cache CB */
tBTA_GATTC_DATA *p_q_cmd; /* command in queue waiting for execution */ 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_NO_SCHEDULE 0
#define BTA_GATTC_DISC_WAITING 0x01 #define BTA_GATTC_DISC_WAITING 0x01
#define BTA_GATTC_REQ_WAITING 0x10 #define BTA_GATTC_REQ_WAITING 0x10