Merge branch 'bugfix/err_disc_state_changed_evt_v5.2' into 'release/v5.2'

fix(bt/bluedroid): fixed other events being reported when disconnected(v5.2)

See merge request espressif/esp-idf!37938
This commit is contained in:
Wang Meng Yang
2025-03-24 14:10:23 +08:00

View File

@ -531,10 +531,11 @@ void btm_acl_device_down (void)
*******************************************************************************/ *******************************************************************************/
void btm_acl_update_busy_level (tBTM_BLI_EVENT event) void btm_acl_update_busy_level (tBTM_BLI_EVENT event)
{ {
tBTM_BL_UPDATE_DATA evt; UINT8 busy_level_flags = 0;
UINT8 busy_level;
BTM_TRACE_DEBUG ("btm_acl_update_busy_level\n");
BOOLEAN old_inquiry_state = btm_cb.is_inquiry; BOOLEAN old_inquiry_state = btm_cb.is_inquiry;
BTM_TRACE_DEBUG ("btm_acl_update_busy_level\n");
switch (event) { switch (event) {
case BTM_BLI_ACL_UP_EVT: case BTM_BLI_ACL_UP_EVT:
BTM_TRACE_DEBUG ("BTM_BLI_ACL_UP_EVT\n"); BTM_TRACE_DEBUG ("BTM_BLI_ACL_UP_EVT\n");
@ -545,30 +546,31 @@ void btm_acl_update_busy_level (tBTM_BLI_EVENT event)
case BTM_BLI_PAGE_EVT: case BTM_BLI_PAGE_EVT:
BTM_TRACE_DEBUG ("BTM_BLI_PAGE_EVT\n"); BTM_TRACE_DEBUG ("BTM_BLI_PAGE_EVT\n");
btm_cb.is_paging = TRUE; btm_cb.is_paging = TRUE;
evt.busy_level_flags = BTM_BL_PAGING_STARTED; busy_level_flags = BTM_BL_PAGING_STARTED;
break; break;
case BTM_BLI_PAGE_DONE_EVT: case BTM_BLI_PAGE_DONE_EVT:
BTM_TRACE_DEBUG ("BTM_BLI_PAGE_DONE_EVT\n"); BTM_TRACE_DEBUG ("BTM_BLI_PAGE_DONE_EVT\n");
btm_cb.is_paging = FALSE; btm_cb.is_paging = FALSE;
evt.busy_level_flags = BTM_BL_PAGING_COMPLETE; busy_level_flags = BTM_BL_PAGING_COMPLETE;
break; break;
case BTM_BLI_INQ_EVT: case BTM_BLI_INQ_EVT:
BTM_TRACE_DEBUG ("BTM_BLI_INQ_EVT\n"); BTM_TRACE_DEBUG ("BTM_BLI_INQ_EVT\n");
btm_cb.is_inquiry = TRUE; btm_cb.is_inquiry = TRUE;
evt.busy_level_flags = BTM_BL_INQUIRY_STARTED; busy_level_flags = BTM_BL_INQUIRY_STARTED;
break; break;
case BTM_BLI_INQ_CANCEL_EVT: case BTM_BLI_INQ_CANCEL_EVT:
BTM_TRACE_DEBUG ("BTM_BLI_INQ_CANCEL_EVT\n"); BTM_TRACE_DEBUG ("BTM_BLI_INQ_CANCEL_EVT\n");
btm_cb.is_inquiry = FALSE; btm_cb.is_inquiry = FALSE;
evt.busy_level_flags = BTM_BL_INQUIRY_CANCELLED; busy_level_flags = BTM_BL_INQUIRY_CANCELLED;
break; break;
case BTM_BLI_INQ_DONE_EVT: case BTM_BLI_INQ_DONE_EVT:
BTM_TRACE_DEBUG ("BTM_BLI_INQ_DONE_EVT\n"); BTM_TRACE_DEBUG ("BTM_BLI_INQ_DONE_EVT\n");
btm_cb.is_inquiry = FALSE; btm_cb.is_inquiry = FALSE;
evt.busy_level_flags = BTM_BL_INQUIRY_COMPLETE; busy_level_flags = BTM_BL_INQUIRY_COMPLETE;
break; break;
} }
UINT8 busy_level;
if (btm_cb.is_paging || btm_cb.is_inquiry) { if (btm_cb.is_paging || btm_cb.is_inquiry) {
busy_level = 10; busy_level = 10;
} else { } else {
@ -576,8 +578,11 @@ void btm_acl_update_busy_level (tBTM_BLI_EVENT event)
} }
if ((busy_level != btm_cb.busy_level) || (old_inquiry_state != btm_cb.is_inquiry)) { if ((busy_level != btm_cb.busy_level) || (old_inquiry_state != btm_cb.is_inquiry)) {
evt.event = BTM_BL_UPDATE_EVT; tBTM_BL_UPDATE_DATA evt = {
evt.busy_level = busy_level; .event = BTM_BL_UPDATE_EVT,
.busy_level = busy_level,
.busy_level_flags = busy_level_flags,
};
btm_cb.busy_level = busy_level; btm_cb.busy_level = busy_level;
if (btm_cb.p_bl_changed_cb && (btm_cb.bl_evt_mask & BTM_BL_UPDATE_MASK)) { if (btm_cb.p_bl_changed_cb && (btm_cb.bl_evt_mask & BTM_BL_UPDATE_MASK)) {
(*btm_cb.p_bl_changed_cb)((tBTM_BL_EVENT_DATA *)&evt); (*btm_cb.p_bl_changed_cb)((tBTM_BL_EVENT_DATA *)&evt);