diff options
-rw-r--r-- | os/hal/src/serial_usb.c | 4 | ||||
-rw-r--r-- | testhal/STM32F4xx/USB_CDC/main.c | 21 |
2 files changed, 20 insertions, 5 deletions
diff --git a/os/hal/src/serial_usb.c b/os/hal/src/serial_usb.c index 5fec52a68..52be6e975 100644 --- a/os/hal/src/serial_usb.c +++ b/os/hal/src/serial_usb.c @@ -288,8 +288,8 @@ void sduDataTransmitted(USBDriver *usbp, usbep_t ep) { (void)ep;
- chnAddFlagsI(sdup, CHN_OUTPUT_EMPTY);
chSysLockFromIsr();
+ chnAddFlagsI(sdup, CHN_OUTPUT_EMPTY);
if ((n = chOQGetFullI(&sdup->oqueue)) > 0) {
/* The endpoint cannot be busy, we are in the context of the callback,
@@ -321,8 +321,8 @@ void sduDataReceived(USBDriver *usbp, usbep_t ep) { (void)ep;
- chnAddFlagsI(sdup, CHN_INPUT_AVAILABLE);
chSysLockFromIsr();
+ chnAddFlagsI(sdup, CHN_INPUT_AVAILABLE);
/* Writes to the input queue can only happen when there is enough space
to hold at least one packet.*/
diff --git a/testhal/STM32F4xx/USB_CDC/main.c b/testhal/STM32F4xx/USB_CDC/main.c index e36ce3dc9..0ae9c81e0 100644 --- a/testhal/STM32F4xx/USB_CDC/main.c +++ b/testhal/STM32F4xx/USB_CDC/main.c @@ -226,6 +226,11 @@ static const USBDescriptor *get_descriptor(USBDriver *usbp, }
/**
+ * @brief IN EP1 state.
+ */
+static USBInEndpointState ep1instate;
+
+/**
* @brief EP1 initialization structure (IN only).
*/
static const USBEndpointConfig ep1config = {
@@ -235,12 +240,17 @@ static const USBEndpointConfig ep1config = { NULL,
0x0040,
0x0000,
- NULL,
+ &ep1instate,
NULL,
NULL
};
/**
+ * @brief OUT EP1 state.
+ */
+USBOutEndpointState ep1outstate;
+
+/**
* @brief EP2 initialization structure (IN only).
*/
static const USBEndpointConfig ep2config = {
@@ -251,11 +261,16 @@ static const USBEndpointConfig ep2config = { 0x0010,
0x0000,
NULL,
- NULL,
+ &ep1outstate,
NULL
};
/**
+ * @brief OUT EP2 state.
+ */
+USBOutEndpointState ep2outstate;
+
+/**
* @brief EP3 initialization structure (OUT only).
*/
static const USBEndpointConfig ep3config = {
@@ -266,7 +281,7 @@ static const USBEndpointConfig ep3config = { 0x0000,
0x0040,
NULL,
- NULL,
+ &ep2outstate,
NULL
};
|