aboutsummaryrefslogtreecommitdiffstats
path: root/sercp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sercp.c')
-rw-r--r--sercp.c29
1 files 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
- }
-}