Altered the CDC Deivice and Host Class drivers' receive byte routines, so that no data is indicated by a negative return value.

Added auto flushing of OUT data to the CDC Host Class driver's USBTask function to automatically flush the send pipe buffer.
This commit is contained in:
Dean Camera 2010-07-30 03:52:11 +00:00
parent 7c8d16fd7a
commit 24e621a8d8
13 changed files with 89 additions and 59 deletions

View file

@ -82,13 +82,9 @@ int main(void)
for (;;)
{
/* Read bytes from the USB OUT endpoint into the USART transmit buffer */
for (uint8_t DataBytesRem = CDC_Device_BytesReceived(&VirtualSerial_CDC_Interface); DataBytesRem != 0; DataBytesRem--)
{
if (RingBuffer_IsFull(&USBtoUSART_Buffer))
break;
RingBuffer_AtomicInsert(&USBtoUSART_Buffer, CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface));
}
int16_t ReceivedByte = CDC_Device_ReceiveByte(&VirtualSerial_CDC_Interface);
if (!(ReceivedByte < 0) && !(RingBuffer_IsFull(&USBtoUSART_Buffer)))
RingBuffer_AtomicInsert(&USBtoUSART_Buffer, (uint8_t)ReceivedByte);
/* Check if the software USART flush timer has expired */
if (TIFR0 & (1 << TOV0))