mirror of https://github.com/ARMmbed/mbed-os.git
Ignore events that happen when an endpoint is stalled/halted
parent
54b72d2eb3
commit
9e61bbc4e3
|
@ -450,41 +450,44 @@ void USBPhyHw::process() {
|
|||
case NRF_DRV_USBD_EVT_EPTRANSFER:
|
||||
if(usb_event.data.eptransfer.status == NRF_USBD_EP_OK)
|
||||
{
|
||||
if(IS_IN_EP(usb_event.data.eptransfer.ep))
|
||||
if(!nrf_drv_usbd_ep_stall_check(usb_event.data.eptransfer.ep))
|
||||
{
|
||||
if((usb_event.data.eptransfer.ep & 0x7F) == 0)
|
||||
if(IS_IN_EP(usb_event.data.eptransfer.ep))
|
||||
{
|
||||
events->ep0_in();
|
||||
// Check for pending virtual status transfer
|
||||
if(virtual_status_xfer_event)
|
||||
if((usb_event.data.eptransfer.ep & 0x7F) == 0)
|
||||
{
|
||||
events->ep0_in();
|
||||
// Check for pending virtual status transfer
|
||||
if(virtual_status_xfer_event)
|
||||
{
|
||||
// Notify the upper stack that the status transfer is done
|
||||
// as well at this point
|
||||
virtual_status_xfer_event = false;
|
||||
events->ep0_out();
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
events->in((usb_ep_t) usb_event.data.eptransfer.ep);
|
||||
}
|
||||
else
|
||||
{
|
||||
if((usb_event.data.eptransfer.ep & 0x7F) == 0)
|
||||
{
|
||||
// Notify the upper stack that the status transfer is done
|
||||
// as well at this point
|
||||
virtual_status_xfer_event = false;
|
||||
events->ep0_out();
|
||||
|
||||
// Check for pending virtual status transfer
|
||||
if(virtual_status_xfer_event)
|
||||
{
|
||||
// Notify the upper stack that the status transfer is done
|
||||
// as well at this point
|
||||
virtual_status_xfer_event = false;
|
||||
events->ep0_in();
|
||||
}
|
||||
}
|
||||
else
|
||||
events->out((usb_ep_t) usb_event.data.eptransfer.ep);
|
||||
}
|
||||
else
|
||||
events->in((usb_ep_t) usb_event.data.eptransfer.ep);
|
||||
}
|
||||
else
|
||||
{
|
||||
if((usb_event.data.eptransfer.ep & 0x7F) == 0)
|
||||
{
|
||||
events->ep0_out();
|
||||
|
||||
// Check for pending virtual status transfer
|
||||
if(virtual_status_xfer_event)
|
||||
{
|
||||
// Notify the upper stack that the status transfer is done
|
||||
// as well at this point
|
||||
virtual_status_xfer_event = false;
|
||||
events->ep0_in();
|
||||
}
|
||||
}
|
||||
else
|
||||
events->out((usb_ep_t) usb_event.data.eptransfer.ep);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue