mirror of
https://github.com/espressif/esp-idf.git
synced 2026-09-22 13:01:16 +03:00
fix(ble/bluedroid): set REQ_WAITING before GATTC service-change rediscovery
When service change cancels in-progress discovery, bta_gattc_disc_cmpl() re-triggers discovery without marking auto_update as REQ_WAITING. If a client command is queued in p_q_cmd, bta_gattc_start_discover() refuses to restart and the command is never dispatched.
This commit is contained in:
@@ -1153,7 +1153,9 @@ void bta_gattc_disc_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
|
||||
}
|
||||
|
||||
if (p_clcb->auto_update == BTA_GATTC_DISC_WAITING) {
|
||||
/* start discovery again */
|
||||
/* Service change arrived during discovery; restart even if p_q_cmd is set.
|
||||
* Mirrors bta_gattc_op_cmpl(). */
|
||||
p_clcb->auto_update = BTA_GATTC_REQ_WAITING;
|
||||
bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL);
|
||||
}
|
||||
/* get any queued command to proceed */
|
||||
|
||||
Reference in New Issue
Block a user