From 4fb0f336df691b6fb55c38c1128b63d94fc4e1d3 Mon Sep 17 00:00:00 2001 From: Pavel Vymetálek Date: Mon, 6 Apr 2020 16:55:13 +0200 Subject: Fix aborting while received fileinfo is corrupted --- sercp.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/sercp.c b/sercp.c index bd22357..42a5e01 100644 --- a/sercp.c +++ b/sercp.c @@ -202,6 +202,7 @@ void TestArgs (int argc, char *argv[]) } +//***************************************************************************** void FlushSerialPort() { if (serial_fd) { @@ -213,6 +214,20 @@ if (serial_fd) { } } +//***************************************************************************** + +void CloseSerialPort() { + if (serial_fd) { + #ifdef _WIN32 + PurgeComm(serial_fd, PURGE_RXABORT| PURGE_TXABORT | PURGE_RXCLEAR | PURGE_TXCLEAR); + CloseHandle(serial_fd); + #else + tcflush(serial_fd, TCIOFLUSH); + close (serial_fd); + #endif + } +} + //***************************************************************************** // @@ -440,6 +455,9 @@ void sercpRecv(void) { } } else { printf("Fileinfo corrupted. End...\n"); + FlushSerialPort(); + CloseSerialPort(); + exit(EXIT_FAILURE); break; } break; @@ -739,17 +757,6 @@ int OpenUart() { #endif } -void CloseSerialPort() { - if (serial_fd) { -#ifdef _WIN32 - PurgeComm(serial_fd, PURGE_RXABORT| PURGE_TXABORT | PURGE_RXCLEAR | PURGE_TXCLEAR); - CloseHandle(serial_fd); -#else - tcflush(serial_fd, TCIOFLUSH); - close (serial_fd); -#endif - } -} -- cgit