- if (UARTtoUSB_Buffer.In != UARTtoUSB_Buffer.Out)
- {
- CDC_Device_SendByte(&VirtualSerial_CDC_Interface, *UARTtoUSB_Buffer.Out);
- if (++UARTtoUSB_Buffer.Out == &UARTtoUSB_Buffer.Buffer[128])
- UARTtoUSB_Buffer.Out = UARTtoUSB_Buffer.Buffer;
- }
-
- /* Load bytes from the UART transmit buffer into the UART */
- if ((USBtoUART_Buffer.In != USBtoUART_Buffer.Out) && SoftUART_IsReady())
- {
- SoftUART_TxByte(*USBtoUART_Buffer.Out);
- if (++USBtoUART_Buffer.Out == &USBtoUART_Buffer.Buffer[128])
- USBtoUART_Buffer.Out = USBtoUART_Buffer.Buffer;
- }
-
- /* Load bytes from the UART into the UART receive buffer */
- if (SoftUART_IsReceived())
- {
- *UARTtoUSB_Buffer.In = SoftUART_RxByte();
- if (++UARTtoUSB_Buffer.In == &UARTtoUSB_Buffer.Buffer[128])
- UARTtoUSB_Buffer.In = UARTtoUSB_Buffer.Buffer;
- }
+ if (UARTtoUSB_Buffer.Count)
+ CDC_Device_SendByte(&VirtualSerial_CDC_Interface, RingBuffer_Remove(&UARTtoUSB_Buffer));