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.
This commit is contained in:
Darian Leung 2024-03-01 14:34:28 +08:00
parent d9b9b76785
commit 8f208fd0c0
No known key found for this signature in database
GPG Key ID: 8AC9127B487AA4EF

View File

@ -207,6 +207,8 @@ static bool _dev_set_actions(device_t *dev_obj, uint32_t action_flags)
dev_obj->dynamic.flags.in_pending_list = 1;
call_notif_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_notif_cb = false;
}
return call_notif_cb;