From 02d65c01db18d4460e421242e4be82b25a723ad0 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Tue, 7 Jun 2016 13:10:04 +0000 Subject: Configuration cleanup on stop in the entire HAL. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9601 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/src/hal_usb.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'os/hal/src/hal_usb.c') diff --git a/os/hal/src/hal_usb.c b/os/hal/src/hal_usb.c index bc0cf088b..f0da64978 100644 --- a/os/hal/src/hal_usb.c +++ b/os/hal/src/hal_usb.c @@ -314,12 +314,15 @@ void usbStop(USBDriver *usbp) { osalDbgCheck(usbp != NULL); osalSysLock(); + osalDbgAssert((usbp->state == USB_STOP) || (usbp->state == USB_READY) || (usbp->state == USB_SELECTED) || (usbp->state == USB_ACTIVE) || (usbp->state == USB_SUSPENDED), + "invalid state"); usb_lld_stop(usbp); - usbp->state = USB_STOP; + spip->config = NULL; + spip->state = USB_STOP; /* Resetting all ongoing synchronous operations.*/ for (i = 0; i <= (unsigned)USB_MAX_ENDPOINTS; i++) { @@ -336,6 +339,7 @@ void usbStop(USBDriver *usbp) { usbp->epc[i] = NULL; } osalOsRescheduleS(); + osalSysUnlock(); } -- cgit v1.2.3