aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/src/hal_usbh.c
diff options
context:
space:
mode:
authorDiego Ismirlian <dismirlian (at) google's mail.com>2017-11-19 21:17:56 -0300
committerDiego Ismirlian <dismirlian (at) google's mail.com>2017-11-19 21:17:56 -0300
commit61dfc26804aba33384ff57876f76b3f9031eb7c2 (patch)
tree89a29deda23a41ccb5d9ea2bde5d1ce3cf76e181 /os/hal/src/hal_usbh.c
parentf4cf7e5591c47b978d2141486fe7f98400c3c5bc (diff)
downloadChibiOS-Contrib-61dfc26804aba33384ff57876f76b3f9031eb7c2.tar.gz
ChibiOS-Contrib-61dfc26804aba33384ff57876f76b3f9031eb7c2.tar.bz2
ChibiOS-Contrib-61dfc26804aba33384ff57876f76b3f9031eb7c2.zip
USBH: improve disconnection detection; added a necessary reschedule.
Diffstat (limited to 'os/hal/src/hal_usbh.c')
-rw-r--r--os/hal/src/hal_usbh.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/os/hal/src/hal_usbh.c b/os/hal/src/hal_usbh.c
index f9f4687..78ac837 100644
--- a/os/hal/src/hal_usbh.c
+++ b/os/hal/src/hal_usbh.c
@@ -302,6 +302,7 @@ msg_t usbhURBSubmitAndWaitS(usbh_urb_t *urb, systime_t timeout) {
_check_urb(urb);
usbhURBSubmitI(urb);
+ osalOsRescheduleS(); /* This call is necessary because usbhURBSubmitI may require a reschedule */
ret = usbhURBWaitTimeoutS(urb, timeout);
if (ret == MSG_TIMEOUT)
_usbh_urb_abort_and_waitS(urb, USBH_URBSTATUS_TIMEOUT);
@@ -859,9 +860,7 @@ static void _port_process_status_change(usbh_port_t *port) {
usbhhubClearFeaturePort(port, USBH_PORT_FEAT_C_CONNECTION);
if (port->device.status != USBH_DEVSTATUS_DISCONNECTED) {
- if (!(port->status & USBH_PORTSTATUS_CONNECTION)) {
- _usbh_port_disconnected(port);
- }
+ _usbh_port_disconnected(port);
}
}