From 1e3fd5361f3f6a76e71299f72ba0ae8e52320cfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Stenberg?= Date: Wed, 10 Apr 2024 09:58:08 +0200 Subject: [PATCH] modbus_serial: Disable rx interrupt if buffer fills up MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Disable rx interrupt if the buffer fills up so that rtu_timer can fire and process the buffer. Signed-off-by: Björn Stenberg --- subsys/modbus/modbus_serial.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/subsys/modbus/modbus_serial.c b/subsys/modbus/modbus_serial.c index 13d59c8154a..b35a4bb35bc 100644 --- a/subsys/modbus/modbus_serial.c +++ b/subsys/modbus/modbus_serial.c @@ -339,6 +339,12 @@ static void cb_handler_rx(struct modbus_context *ctx) } else { int n; + if (cfg->uart_buf_ctr == CONFIG_MODBUS_BUFFER_SIZE) { + /* Buffer full. Disable interrupt until timeout. */ + modbus_serial_rx_disable(ctx); + return; + } + /* Restart timer on a new character */ k_timer_start(&cfg->rtu_timer, K_USEC(cfg->rtu_timeout), K_NO_WAIT);