summaryrefslogtreecommitdiff
path: root/src/device/usbd.c
diff options
context:
space:
mode:
authorhathach <[email protected]>2019-11-27 23:20:48 +0700
committerhathach <[email protected]>2019-11-27 23:20:48 +0700
commit40b454cf28e5a86dac8d261f1276ace108446ffe (patch)
tree32fa8ef83f18d9ccda49f76682334dac53634136 /src/device/usbd.c
parent6225d5bcfdf3b416d2dd109e88b67bc4fcefe249 (diff)
get passed first get device descriptor
Diffstat (limited to 'src/device/usbd.c')
-rw-r--r--src/device/usbd.c25
1 files changed, 5 insertions, 20 deletions
diff --git a/src/device/usbd.c b/src/device/usbd.c
index 1797dfafa..530eb09d1 100644
--- a/src/device/usbd.c
+++ b/src/device/usbd.c
@@ -830,19 +830,15 @@ void dcd_event_handler(dcd_event_t const * event, bool in_isr)
{
switch (event->event_id)
{
- case DCD_EVENT_BUS_RESET:
- osal_queue_send(_usbd_q, event, in_isr);
- break;
-
case DCD_EVENT_UNPLUGGED:
- _usbd_dev.connected = 0;
+ _usbd_dev.connected = 0;
_usbd_dev.configured = 0;
- _usbd_dev.suspended = 0;
+ _usbd_dev.suspended = 0;
osal_queue_send(_usbd_q, event, in_isr);
break;
case DCD_EVENT_SOF:
- // nothing to do now
+ return; // skip SOF event for now
break;
case DCD_EVENT_SUSPEND:
@@ -857,6 +853,7 @@ void dcd_event_handler(dcd_event_t const * event, bool in_isr)
break;
case DCD_EVENT_RESUME:
+ // skip event if not connected (especially required for SAMD)
if ( _usbd_dev.connected )
{
_usbd_dev.suspended = 0;
@@ -864,21 +861,9 @@ void dcd_event_handler(dcd_event_t const * event, bool in_isr)
}
break;
- case DCD_EVENT_SETUP_RECEIVED:
- osal_queue_send(_usbd_q, event, in_isr);
- break;
-
- case DCD_EVENT_XFER_COMPLETE:
+ default:
osal_queue_send(_usbd_q, event, in_isr);
- TU_ASSERT(event->xfer_complete.result == XFER_RESULT_SUCCESS,);
break;
-
- // Not an DCD event, just a convenient way to defer ISR function should we need to
- case USBD_EVENT_FUNC_CALL:
- osal_queue_send(_usbd_q, event, in_isr);
- break;
-
- default: break;
}
}