From 50282f1e7abe9a1bedfb446002ec79a31f71ebb8 Mon Sep 17 00:00:00 2001 From: Darian Leung Date: Sat, 24 Feb 2024 03:24:23 +0800 Subject: [PATCH] fix(usb): Fix bug where usbh_process() misses an event This commit fixes a bug where if multiple concurrent USBH API calls trigger multiple events on the same device, some events will be lost. As a result, those lost events don't get processed by the subsequent usbh_process() call. --- components/usb/usbh.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/usb/usbh.c b/components/usb/usbh.c index dbc23e6e33..faceb904bd 100644 --- a/components/usb/usbh.c +++ b/components/usb/usbh.c @@ -447,6 +447,8 @@ static bool _dev_set_actions(device_t *dev_obj, uint32_t action_flags) dev_obj->dynamic.flags.in_pending_list = 1; call_proc_req_cb = true; } else { + // The device is already on the callback list, thus a processing request is already pending. + dev_obj->dynamic.action_flags |= action_flags; call_proc_req_cb = false; } return call_proc_req_cb;