mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
component/bt: Fix gatt read by type response bug
This commit is contained in:
parent
43b81c8f11
commit
b041c042bb
@ -334,6 +334,8 @@ tGATT_STATUS gatts_db_read_attr_value_by_type (tGATT_TCB *p_tcb,
|
|||||||
#if (defined(BLE_DELAY_REQUEST_ENC) && (BLE_DELAY_REQUEST_ENC == TRUE))
|
#if (defined(BLE_DELAY_REQUEST_ENC) && (BLE_DELAY_REQUEST_ENC == TRUE))
|
||||||
UINT8 flag;
|
UINT8 flag;
|
||||||
#endif
|
#endif
|
||||||
|
BOOLEAN need_rsp;
|
||||||
|
BOOLEAN have_send_request = false;
|
||||||
|
|
||||||
if (p_db && p_db->p_attr_list) {
|
if (p_db && p_db->p_attr_list) {
|
||||||
p_attr = (tGATT_ATTR16 *)p_db->p_attr_list;
|
p_attr = (tGATT_ATTR16 *)p_db->p_attr_list;
|
||||||
@ -359,14 +361,21 @@ tGATT_STATUS gatts_db_read_attr_value_by_type (tGATT_TCB *p_tcb,
|
|||||||
UINT16_TO_STREAM (p, p_attr->handle);
|
UINT16_TO_STREAM (p, p_attr->handle);
|
||||||
|
|
||||||
status = read_attr_value ((void *)p_attr, 0, &p, FALSE, (UINT16)(*p_len - 2), &len, sec_flag, key_size);
|
status = read_attr_value ((void *)p_attr, 0, &p, FALSE, (UINT16)(*p_len - 2), &len, sec_flag, key_size);
|
||||||
|
if (status == GATT_PENDING) {
|
||||||
|
|
||||||
if (status == GATT_PENDING || status == GATT_STACK_RSP) {
|
|
||||||
BOOLEAN need_rsp = (status != GATT_STACK_RSP);
|
need_rsp = TRUE;
|
||||||
status = gatts_send_app_read_request(p_tcb, op_code, p_attr->handle, 0, trans_id, need_rsp);
|
status = gatts_send_app_read_request(p_tcb, op_code, p_attr->handle, 0, trans_id, need_rsp);
|
||||||
|
|
||||||
/* one callback at a time */
|
/* one callback at a time */
|
||||||
break;
|
break;
|
||||||
} else if (status == GATT_SUCCESS) {
|
} else if (status == GATT_SUCCESS || status == GATT_STACK_RSP) {
|
||||||
|
if (status == GATT_STACK_RSP && !have_send_request){
|
||||||
|
need_rsp = FALSE;
|
||||||
|
status = gatts_send_app_read_request(p_tcb, op_code, p_attr->handle, 0, trans_id, need_rsp);
|
||||||
|
have_send_request = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (p_rsp->offset == 0) {
|
if (p_rsp->offset == 0) {
|
||||||
p_rsp->offset = len + 2;
|
p_rsp->offset = len + 2;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user