From 7cdafc2468bfa577da00292d936d84b89ac1859c Mon Sep 17 00:00:00 2001 From: Alex Lisitsyn Date: Thu, 15 Jun 2023 23:43:37 +0800 Subject: [PATCH] Bugfix/master rtu ascii fix deadlock when null received --- freemodbus/modbus/ascii/mbascii_m.c | 2 +- freemodbus/modbus/rtu/mbrtu_m.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/freemodbus/modbus/ascii/mbascii_m.c b/freemodbus/modbus/ascii/mbascii_m.c index f0b1fe9..99e3bb4 100644 --- a/freemodbus/modbus/ascii/mbascii_m.c +++ b/freemodbus/modbus/ascii/mbascii_m.c @@ -274,8 +274,8 @@ xMBMasterASCIIReceiveFSM( void ) usMasterRcvBufferPos = 0; eBytePos = BYTE_HIGH_NIBBLE; eRcvState = STATE_M_RX_RCV; + eSndState = STATE_M_TX_IDLE; } - eSndState = STATE_M_TX_IDLE; break; /* A new character is received. If the character is a ':' the input diff --git a/freemodbus/modbus/rtu/mbrtu_m.c b/freemodbus/modbus/rtu/mbrtu_m.c index bb44602..5fa585d 100644 --- a/freemodbus/modbus/rtu/mbrtu_m.c +++ b/freemodbus/modbus/rtu/mbrtu_m.c @@ -284,12 +284,12 @@ xMBMasterRTUReceiveFSM( void ) * Disable timer of respond timeout and change the transmiter state to idle. */ vMBMasterPortTimersDisable( ); - eSndState = STATE_M_TX_IDLE; usMasterRcvBufferPos = 0; if( xStatus && ucByte ) { ucMasterRTURcvBuf[usMasterRcvBufferPos++] = ucByte; eRcvState = STATE_M_RX_RCV; + eSndState = STATE_M_TX_IDLE; } /* Enable t3.5 timers. */