X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/423d4018f0be89a703832669c3d65b162fc437f3..ec537fd84d6ad3fd0dfa1b55efa2c2d554c1db48:/Projects/USBtoSerial/USBtoSerial.c?ds=sidebyside diff --git a/Projects/USBtoSerial/USBtoSerial.c b/Projects/USBtoSerial/USBtoSerial.c index 1dfd70896..477dd44f5 100644 --- a/Projects/USBtoSerial/USBtoSerial.c +++ b/Projects/USBtoSerial/USBtoSerial.c @@ -100,7 +100,17 @@ int main(void) /* Read bytes from the USART receive buffer into the USB IN endpoint */ while (BufferCount--) - CDC_Device_SendByte(&VirtualSerial_CDC_Interface, RingBuffer_Remove(&USARTtoUSB_Buffer)); + { + /* Try to send the next byte of data to the host, abort if there is an error without dequeuing */ + if (CDC_Device_SendByte(&VirtualSerial_CDC_Interface, + RingBuffer_Peek(&USARTtoUSB_Buffer)) != ENDPOINT_READYWAIT_NoError) + { + break; + } + + /* Dequeue the already sent byte from the buffer now we have confirmed that no transmission error occurred */ + RingBuffer_Remove(&USARTtoUSB_Buffer); + } } /* Load the next byte from the USART transmit buffer into the USART */