Hub: Retry port status transfer if failed

This commit is contained in:
Ryzee119 2022-05-29 13:58:50 +09:30
parent 688a3a0cc2
commit 9e30ec4f16

View File

@ -169,7 +169,7 @@ bool hub_port_get_status(uint8_t hub_addr, uint8_t hub_port, void* resp,
}; };
TU_LOG2("HUB Get Port Status: addr = %u port = %u\r\n", hub_addr, hub_port); TU_LOG2("HUB Get Port Status: addr = %u port = %u\r\n", hub_addr, hub_port);
TU_ASSERT( tuh_control_xfer(&xfer) ); TU_VERIFY( tuh_control_xfer(&xfer) );
return true; return true;
} }
@ -332,7 +332,11 @@ bool hub_xfer_cb(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t result, uint32
{ {
if ( tu_bit_test(p_hub->status_change, port) ) if ( tu_bit_test(p_hub->status_change, port) )
{ {
hub_port_get_status(dev_addr, port, &p_hub->port_status, connection_get_status_complete, 0); if (hub_port_get_status(dev_addr, port, &p_hub->port_status, connection_get_status_complete, 0) == false)
{
//Hub status control transfer failed, retry
hub_edpt_status_xfer(dev_addr);
}
break; break;
} }
} }