usb_serial: Fixed the behaviour of debug_uart_write() when the FIFO buffer gets full

This commit is contained in:
dragonmux 2022-08-21 16:06:46 +01:00 committed by Piotr Esden-Tempski
parent 0c2495ea25
commit 0a6621a322
1 changed files with 6 additions and 4 deletions

View File

@ -283,19 +283,21 @@ size_t debug_uart_write(const char *buf, const size_t len)
return 0;
CM_ATOMIC_CONTEXT();
size_t offset = 0;
for (size_t i = 0; i < len && (debug_serial_debug_write_index + 1) % AUX_UART_BUFFER_SIZE != debug_serial_debug_read_index; ++i) {
if (buf[i] == '\n') {
for (; offset < len && (debug_serial_debug_write_index + 1) % AUX_UART_BUFFER_SIZE != debug_serial_debug_read_index;
++offset) {
if (buf[offset] == '\n') {
debug_serial_append_char('\r');
if ((debug_serial_debug_write_index + 1) % AUX_UART_BUFFER_SIZE == debug_serial_debug_read_index)
break;
}
debug_serial_append_char(buf[i]);
debug_serial_append_char(buf[offset]);
}
debug_uart_run();
return len;
return offset;
}
static void debug_uart_send_callback(usbd_device *dev, uint8_t ep)