Make XPLAINBridge and USBtoSerial projects more reliable by forcing a flush if the UART-to-USB buffer becomes nearly full.
Reduce locking in the LightweightRingBuffer.h header files by only locking on the update of the buffer count, and require insertions and removals from each buffer to occur in only one execution thread.
Fix CDC_*_ReceiveByte() returning 0 when the interface is not configured, instead of the new -1 error value.
Fix CDC_Host_ReceiveByte() not re-freezing the pipe if no packet has been received.
Remove redundant Pipe token set commands in the CDC and RNDIS host class drivers.
Alter USBtoSerial demo so that it does not enter a blocking loop to send data from the USB to the USART, as this can cause dropped bytes in the reception code if large amounts of data are sent in both directions at the same time. Added a flush timer to the USBtoSerial code for the USART to USB interface, so that multiple bytes can be sent in the same USB packet.
Added check to CDC_Device_BytesReceived() to ensure 0 is returned when device is not enumerated to a host.
Move AVRISP project's V2Protocol_DelayMS() function to be static inline, as it is now very minimal. Added extra project doxygen documentation.