diff options
author | Diego Ismirlian <dismirlian (at) google's mail.com> | 2017-06-06 09:23:07 -0300 |
---|---|---|
committer | Diego Ismirlian <dismirlian (at) google's mail.com> | 2017-06-06 09:23:07 -0300 |
commit | 108ae2534cf5e487b569ea34bdae4e86b9c2d024 (patch) | |
tree | 8f7489782e72c9ed7c729c824ec9c96d2ad6a480 /os | |
parent | 0bf5a7aa4c0d6dcf8660d200452b584ef107eed5 (diff) | |
download | ChibiOS-Contrib-108ae2534cf5e487b569ea34bdae4e86b9c2d024.tar.gz ChibiOS-Contrib-108ae2534cf5e487b569ea34bdae4e86b9c2d024.tar.bz2 ChibiOS-Contrib-108ae2534cf5e487b569ea34bdae4e86b9c2d024.zip |
Fixed endpoint halt reset implementation
Diffstat (limited to 'os')
-rw-r--r-- | os/hal/include/hal_usbh.h | 9 | ||||
-rw-r--r-- | os/hal/src/hal_usbh.c | 6 |
2 files changed, 5 insertions, 10 deletions
diff --git a/os/hal/include/hal_usbh.h b/os/hal/include/hal_usbh.h index bc79880..2684aca 100644 --- a/os/hal/include/hal_usbh.h +++ b/os/hal/include/hal_usbh.h @@ -373,14 +373,7 @@ extern "C" { usbhEPCloseS(ep); osalSysUnlock(); } - bool usbhEPResetS(usbh_ep_t *ep); - static inline bool usbhEPReset(usbh_ep_t *ep) { - bool ret; - osalSysLock(); - ret = usbhEPResetS(ep); - osalSysUnlock(); - return ret; - } + bool usbhEPReset(usbh_ep_t *ep); static inline bool usbhEPIsPeriodic(usbh_ep_t *ep) { osalDbgCheck(ep != NULL); return (ep->type & 1) != 0; diff --git a/os/hal/src/hal_usbh.c b/os/hal/src/hal_usbh.c index 80180d6..11add0d 100644 --- a/os/hal/src/hal_usbh.c +++ b/os/hal/src/hal_usbh.c @@ -195,8 +195,7 @@ static void _ep0_object_init(usbh_device_t *dev, uint16_t wMaxPacketSize) { usbhEPSetName(&dev->ctrl, "DEV[CTRL]"); } -bool usbhEPResetS(usbh_ep_t *ep) { - osalDbgCheckClassS(); +bool usbhEPReset(usbh_ep_t *ep) { osalDbgCheck(ep != NULL); osalDbgAssert((ep->status == USBH_EPSTATUS_OPEN) || (ep->status == USBH_EPSTATUS_HALTED), "invalid state"); osalDbgAssert(ep->type != USBH_EPTYPE_CTRL, "don't need to reset control endpoint"); @@ -206,9 +205,12 @@ bool usbhEPResetS(usbh_ep_t *ep) { 0, 0); /* TODO: GET_STATUS to see if endpoint is still halted */ + osalSysLock(); if ((ret == USBH_URBSTATUS_OK) && usbh_lld_ep_reset(ep)) { + osalSysUnlock(); return HAL_SUCCESS; } + osalSysUnlock(); return HAL_FAILED; } |