Remove transfer queue filtering. May need to be revisited later.

This commit is contained in:
Nathan Conrad 2020-04-16 09:57:56 -04:00
parent b0270f499b
commit 2994d100cd
1 changed files with 2 additions and 45 deletions

View File

@ -1064,50 +1064,10 @@ bool usbd_edpt_stalled(uint8_t rhport, uint8_t ep_addr)
} }
/** /**
* Remove queued xfer complete messages from event queue, * usbd_edpt_close will disable an endpoint.
* for a particular ep.
* *
* Must be called with interrupts enabled. * In progress transfers on this EP may be delivered after this call.
*/
static void usbd_abort_transfers(uint8_t rhport, uint8_t ep_addr)
{
dcd_event_t ev_sentinal =
{
.event_id = DCD_EVENT_COUNT, ///< This is an invalid event ID.
};
dcd_event_t event;
uint8_t const epnum = tu_edpt_number(ep_addr);
uint8_t const ep_dir = tu_edpt_dir(ep_addr);
dcd_int_disable(rhport);
// Queue sentinal element
TU_ASSERT(osal_queue_send(_usbd_q, &ev_sentinal, true), /**/);
TU_ASSERT(osal_queue_receive(_usbd_q, &event), /**/);
while(event.event_id != DCD_EVENT_COUNT)
{
if((event.rhport == rhport) && (event.event_id == DCD_EVENT_XFER_COMPLETE)
&& (event.xfer_complete.ep_addr == ep_addr))
{
_usbd_dev.ep_status[epnum][ep_dir].busy = false;
}
else
{
TU_ASSERT(osal_queue_send(_usbd_q, &event, true), /**/);
}
TU_ASSERT(osal_queue_receive(_usbd_q, &event), /**/);
}
dcd_int_enable(rhport);
}
/**
* usbd_edpt_close will disable an endpoint, and clear all pending transfers
* through the particular endpoint.
* *
* It must be called from the usb task (e.g. from the control request
* handler while handling SET_ALTERNATE), with interrupts enabled.
*/ */
void usbd_edpt_close(uint8_t rhport, uint8_t ep_addr) void usbd_edpt_close(uint8_t rhport, uint8_t ep_addr)
{ {
@ -1116,9 +1076,6 @@ void usbd_edpt_close(uint8_t rhport, uint8_t ep_addr)
dcd_edpt_close(rhport, ep_addr); dcd_edpt_close(rhport, ep_addr);
/* Now, in progress transfers have to be expunged */
usbd_abort_transfers(rhport, ep_addr);
return; return;
} }