Merge pull request #2107 from hathach/fix-usbh-enum-issue

fix usbh issue when device genreate multiple attach/detach/attach when plugging in
This commit is contained in:
Ha Thach 2023-06-13 17:32:55 +07:00 committed by GitHub
commit 365c4169a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 1 deletions

View File

@ -411,7 +411,14 @@ void tuh_task_ext(uint32_t timeout_ms, bool in_isr)
if ( _dev0.enumerating )
{
TU_LOG_USBH("[%u:] USBH Defer Attach until current enumeration complete\r\n", event.rhport);
bool is_empty = osal_queue_empty(_usbh_q);
osal_queue_send(_usbh_q, &event, in_isr);
if (is_empty) {
// Exit if this is the only event in the queue, otherwise we may loop forever
return;
}
}else
{
TU_LOG_USBH("[%u:] USBH DEVICE ATTACH\r\n", event.rhport);
@ -1461,7 +1468,10 @@ static bool enum_new_device(hcd_event_t* event)
hcd_port_reset_end( _dev0.rhport);
// device unplugged while delaying
if ( !hcd_port_connect_status(_dev0.rhport) ) return true;
if ( !hcd_port_connect_status(_dev0.rhport) ) {
enum_full_complete();
return true;
}
_dev0.speed = hcd_port_speed_get(_dev0.rhport );
TU_LOG_USBH("%s Speed\r\n", tu_str_speed[_dev0.speed]);