Fixed sometimes BTU task overflow when doing read and write performance test
@@ -1107,12 +1107,6 @@ void bta_gattc_read(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
/* read fail */
if (status != BTA_GATT_OK) {
- /* Dequeue the data, if it was enqueued */
- if (p_clcb->p_q_cmd == p_data) {
- p_clcb->p_q_cmd = NULL;
- bta_gattc_pop_command_to_send(p_clcb);
- }
-
bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_READ, status, NULL);
}
}
@@ -1142,12 +1136,6 @@ void bta_gattc_read_by_type(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
/* read fail */
if (status != BTA_GATT_OK) {
- /* Dequeue the data, if it was enqueued */
- if (p_clcb->p_q_cmd == p_data) {
- p_clcb->p_q_cmd = NULL;
- bta_gattc_pop_command_to_send(p_clcb);
- }
-
bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_READ, status, NULL);
}
}
@@ -1178,12 +1166,6 @@ void bta_gattc_read_multi(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
/* read fail */
if (status != BTA_GATT_OK) {
- /* Dequeue the data, if it was enqueued */
- if (p_clcb->p_q_cmd == p_data) {
- p_clcb->p_q_cmd = NULL;
- bta_gattc_pop_command_to_send(p_clcb);
- }
-
bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_READ, status, NULL);
}
}
@@ -1220,13 +1202,12 @@ void bta_gattc_write(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
/* write fail */
if (status != BTA_GATT_OK) {
- /* Dequeue the data, if it was enqueued */
- if (p_clcb->p_q_cmd == p_data) {
- p_clcb->p_q_cmd = NULL;
- bta_gattc_pop_command_to_send(p_clcb);
- }
- bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_WRITE, status, NULL);
+ tGATT_CL_COMPLETE cl_data = {0};
+ cl_data.handle = p_data->api_write.handle;
+ memcpy(&cl_data.att_value, &attr, sizeof(tGATT_VALUE));
+
+ bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_WRITE, status, &cl_data);
}
}
/*******************************************************************************
