aboutsummaryrefslogtreecommitdiffstats
path: root/demos/STM32/RT-STM32F407-DISCOVERY-MEMS/usbcfg.c
diff options
context:
space:
mode:
Diffstat (limited to 'demos/STM32/RT-STM32F407-DISCOVERY-MEMS/usbcfg.c')
-rw-r--r--demos/STM32/RT-STM32F407-DISCOVERY-MEMS/usbcfg.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/demos/STM32/RT-STM32F407-DISCOVERY-MEMS/usbcfg.c b/demos/STM32/RT-STM32F407-DISCOVERY-MEMS/usbcfg.c
index f825ec239..07a492758 100644
--- a/demos/STM32/RT-STM32F407-DISCOVERY-MEMS/usbcfg.c
+++ b/demos/STM32/RT-STM32F407-DISCOVERY-MEMS/usbcfg.c
@@ -14,9 +14,11 @@
limitations under the License.
*/
-#include "ch.h"
#include "hal.h"
+/* Virtual serial port over USB.*/
+SerialUSBDriver SDU1;
+
/*
* Endpoints to be used for USBD1.
*/
@@ -284,6 +286,12 @@ static void usb_event(USBDriver *usbp, usbevent_t event) {
chSysUnlockFromISR();
return;
case USB_EVENT_SUSPEND:
+ chSysLockFromISR();
+
+ /* Disconnection event on suspend.*/
+ sduDisconnectI(&SDU1);
+
+ chSysUnlockFromISR();
return;
case USB_EVENT_WAKEUP:
return;
@@ -294,13 +302,25 @@ static void usb_event(USBDriver *usbp, usbevent_t event) {
}
/*
+ * Handles the USB driver global events.
+ */
+static void sof_handler(USBDriver *usbp) {
+
+ (void)usbp;
+
+ osalSysLockFromISR();
+ sduSOFHookI(&SDU1);
+ osalSysUnlockFromISR();
+}
+
+/*
* USB driver configuration.
*/
const USBConfig usbcfg = {
usb_event,
get_descriptor,
sduRequestsHook,
- NULL
+ sof_handler
};
/*