From 0a6621a3227305744deba4dd9f589d6793dc56f9 Mon Sep 17 00:00:00 2001 From: dragonmux Date: Sun, 21 Aug 2022 16:06:46 +0100 Subject: [PATCH] usb_serial: Fixed the behaviour of debug_uart_write() when the FIFO buffer gets full --- src/platforms/common/usb_serial.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/platforms/common/usb_serial.c b/src/platforms/common/usb_serial.c index e1bdeba..4f7d7ff 100644 --- a/src/platforms/common/usb_serial.c +++ b/src/platforms/common/usb_serial.c @@ -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)