git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5638 35acf78f-673a-0410-8e92-d51de3d6d3f4
master
gdisirio 2013-04-28 13:27:37 +00:00
parent 53ebb098cb
commit 30a552991b
3 changed files with 8 additions and 4 deletions

View File

@ -249,7 +249,8 @@ typedef enum {
*/ */
typedef enum { typedef enum {
USB_EP0_WAITING_SETUP, /**< Waiting for SETUP data. */ USB_EP0_WAITING_SETUP, /**< Waiting for SETUP data. */
USB_EP0_TX, /**< Transmitting. */ USB_EP0_TX, /**< Trasmitting. */
USB_EP0_WAITING_TX0, /**< Waiting transmit 0 */
USB_EP0_WAITING_STS, /**< Waiting status. */ USB_EP0_WAITING_STS, /**< Waiting status. */
USB_EP0_RX, /**< Receiving. */ USB_EP0_RX, /**< Receiving. */
USB_EP0_SENDING_STS, /**< Sending status. */ USB_EP0_SENDING_STS, /**< Sending status. */

View File

@ -693,15 +693,16 @@ void _usb_ep0in(USBDriver *usbp, usbep_t ep) {
/* If the transmitted size is less than the requested size and it is a /* If the transmitted size is less than the requested size and it is a
multiple of the maximum packet size then a zero size packet must be multiple of the maximum packet size then a zero size packet must be
transmitted.*/ transmitted.*/
if ((usbp->ep0n < max) && if ((usbp->ep0n < max) && ((usbp->ep0n % usbp->epc[0]->in_maxsize) == 0)) {
((usbp->ep0n % usbp->epc[0]->in_maxsize) == 0)) {
usbPrepareTransmit(usbp, 0, NULL, 0); usbPrepareTransmit(usbp, 0, NULL, 0);
chSysLockFromIsr(); chSysLockFromIsr();
usbStartTransmitI(usbp, 0); usbStartTransmitI(usbp, 0);
chSysUnlockFromIsr(); chSysUnlockFromIsr();
usbp->ep0state = USB_EP0_WAITING_TX0;
return; return;
} }
/* Falls into, it is intentional.*/
case USB_EP0_WAITING_TX0:
/* Transmit phase over, receiving the zero sized status packet.*/ /* Transmit phase over, receiving the zero sized status packet.*/
usbp->ep0state = USB_EP0_WAITING_STS; usbp->ep0state = USB_EP0_WAITING_STS;
usbPrepareReceive(usbp, 0, NULL, 0); usbPrepareReceive(usbp, 0, NULL, 0);

View File

@ -89,6 +89,8 @@
***************************************************************************** *****************************************************************************
*** 2.5.2 *** *** 2.5.2 ***
- FIX: Fixed USB driver possible deadlock under certain configurations (bug
#406)(backported to 2.4.4).
- FIX: Fixed USB driver cannot be stopped (bug #405)(backported to 2.4.4). - FIX: Fixed USB driver cannot be stopped (bug #405)(backported to 2.4.4).
- FIX: Fixed several spelling errors (bug #404). - FIX: Fixed several spelling errors (bug #404).
- FIX: Fixed serial port in STM32F3 discovery test case (bug #402). - FIX: Fixed serial port in STM32F3 discovery test case (bug #402).