diff options
Diffstat (limited to 'demos/STM32/RT-STM32F429-DISCOVERY-TRIBUF/usbcfg.c')
| -rw-r--r-- | demos/STM32/RT-STM32F429-DISCOVERY-TRIBUF/usbcfg.c | 38 | 
1 files changed, 33 insertions, 5 deletions
diff --git a/demos/STM32/RT-STM32F429-DISCOVERY-TRIBUF/usbcfg.c b/demos/STM32/RT-STM32F429-DISCOVERY-TRIBUF/usbcfg.c index 9f95a2a..906bf88 100644 --- a/demos/STM32/RT-STM32F429-DISCOVERY-TRIBUF/usbcfg.c +++ b/demos/STM32/RT-STM32F429-DISCOVERY-TRIBUF/usbcfg.c @@ -1,5 +1,5 @@  /*
 -    ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
 +    ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
 @@ -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 USBD2.
   */
 @@ -265,8 +267,6 @@ static void usb_event(USBDriver *usbp, usbevent_t event) {    extern SerialUSBDriver SDU1;
    switch (event) {
 -  case USB_EVENT_RESET:
 -    return;
    case USB_EVENT_ADDRESS:
      return;
    case USB_EVENT_CONFIGURED:
 @@ -283,9 +283,25 @@ static void usb_event(USBDriver *usbp, usbevent_t event) {      chSysUnlockFromISR();
      return;
 +  case USB_EVENT_RESET:
 +    /* Falls into.*/
 +  case USB_EVENT_UNCONFIGURED:
 +    /* Falls into.*/
    case USB_EVENT_SUSPEND:
 +    chSysLockFromISR();
 +
 +    /* Disconnection event on suspend.*/
 +    sduSuspendHookI(&SDU1);
 +
 +    chSysUnlockFromISR();
      return;
    case USB_EVENT_WAKEUP:
 +    chSysLockFromISR();
 +
 +    /* Disconnection event on suspend.*/
 +    sduWakeupHookI(&SDU1);
 +
 +    chSysUnlockFromISR();
      return;
    case USB_EVENT_STALLED:
      return;
 @@ -294,13 +310,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
  };
  /*
  | 
