Only deque from the USBtoSerial's USB->USART buffer when the USART is idle.
authorDean Camera <dean@fourwalledcubicle.com>
Tue, 15 Jul 2014 11:23:51 +0000 (21:23 +1000)
committerDean Camera <dean@fourwalledcubicle.com>
Tue, 15 Jul 2014 11:23:51 +0000 (21:23 +1000)
LUFA/DoxygenPages/ChangeLog.txt
Projects/USBtoSerial/USBtoSerial.c

index a03d389..e16fcbe 100644 (file)
@@ -22,6 +22,7 @@
   *   - Fixed missing HID report ID prefix on HID class driver GetReport request responses (thanks to Bert van Hall)
   *  - Library Applications:
   *   - Fixed spurious 0xFE USART byte sent in the USBtoSerial project when the baud rate is changed (thanks to Carl Kjeldsen)
+  *   - Fixed blocking USART reads causing low throughput on slow baud rates in the USBtoSerial project (thanks to Nevada Smith)
   *
   *  \section Sec_ChangeLog140302 Version 140302
   *  <b>New:</b>
index 1c791d9..b51c7c2 100644 (file)
@@ -133,8 +133,8 @@ int main(void)
                        }
                }
 
-               /* Load the next byte from the USART transmit buffer into the USART */
-               if (!(RingBuffer_IsEmpty(&USBtoUSART_Buffer)))
+               /* Load the next byte from the USART transmit buffer into the USART if transmit buffer space is available */
+               if (Serial_IsSendReady() && !(RingBuffer_IsEmpty(&USBtoUSART_Buffer)))
                  Serial_SendByte(RingBuffer_Remove(&USBtoUSART_Buffer));
 
                CDC_Device_USBTask(&VirtualSerial_CDC_Interface);