From 30f90a78fc57ee5ad7b071edf010ca021bf17f46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Redon?= Date: Tue, 3 Jul 2018 15:59:51 +0200 Subject: [PATCH] console: drop data to be send when buffer is already full don't wait for space to be available in the buffer since since would prevent from processing non-console (e.g. debug) more important data Change-Id: Ia625b09eb30bb7b43edd3989f697d8ef33200f28 --- firmware/libboard/common/source/uart_console.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/firmware/libboard/common/source/uart_console.c b/firmware/libboard/common/source/uart_console.c index e52cd514..a47ba0cc 100644 --- a/firmware/libboard/common/source/uart_console.c +++ b/firmware/libboard/common/source/uart_console.c @@ -133,17 +133,15 @@ extern void UART_PutChar( uint8_t c ) UART_Configure(CONSOLE_BAUDRATE, BOARD_MCK); } - /* Wait until there is space in the buffer */ - while (rbuf_is_full(&uart_tx_buffer)) { - if (pUart->UART_SR & UART_SR_TXEMPTY) { - pUart->UART_IER = UART_IER_TXRDY; - CONSOLE_ISR(); - } + /* Only store input if buffer is not full, else drop it */ + bool trigger_isr = false; + if (rbuf_is_empty(&uart_tx_buffer)) { + trigger_isr = true; } - - /* Put character into buffer */ - rbuf_write(&uart_tx_buffer, c); - if (pUart->UART_SR & UART_SR_TXEMPTY) { + if (!rbuf_is_full(&uart_tx_buffer)) { + rbuf_write(&uart_tx_buffer, c); + } + if (trigger_isr) { pUart->UART_IER = UART_IER_TXRDY; CONSOLE_ISR(); }