From 506849b5c2a37e60ec61d9810e310528f7ecbb8e Mon Sep 17 00:00:00 2001 From: Azim Khan Date: Sat, 17 Feb 2018 16:00:06 +0000 Subject: [PATCH] Flush serial port before sending sync pattern --- programs/x509/cert_write.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/programs/x509/cert_write.c b/programs/x509/cert_write.c index 506d1e318..94e88d483 100644 --- a/programs/x509/cert_write.c +++ b/programs/x509/cert_write.c @@ -1057,7 +1057,7 @@ int serial_xfer( const char * serial_port, const unsigned char * tx_buf, size_t tx_buf_len, unsigned char * rx_buf, size_t rx_buf_len, size_t * rx_len ) { - char comm_name[20]; + char c, comm_name[20]; HANDLE hComm; DCB dcbConfig; COMMTIMEOUTS commTimeout; @@ -1081,11 +1081,6 @@ int serial_xfer( const char * serial_port, const unsigned char * tx_buf, if( GetCommState( hComm, &dcbConfig ) ) { - /* - dcbConfig.fBinary = TRUE; - dcbConfig.fParity = TRUE; - */ - dcbConfig.BaudRate = REMOTE_KEY_SERIAL_BAUD; dcbConfig.Parity = NOPARITY; dcbConfig.ByteSize = 8; @@ -1123,6 +1118,8 @@ int serial_xfer( const char * serial_port, const unsigned char * tx_buf, break; + /* Flush data on serial before sending sync pattern */ + while( ReadFile( hComm, &c, sizeof(c), &xfer_len, NULL ) && xfer_len != 0 ); /* Sync with peer */ if( !WriteFile( hComm, REMOTE_KEY_MAGIC_PATTERN, strlen(REMOTE_KEY_MAGIC_PATTERN), &xfer_len, NULL ) ) @@ -1130,8 +1127,6 @@ int serial_xfer( const char * serial_port, const unsigned char * tx_buf, while( sync_pattern_idx != strlen(REMOTE_KEY_MAGIC_PATTERN) ) { - char c; - if( !ReadFile( hComm, &c, sizeof(c), &xfer_len, NULL ) ) break; if ( c == REMOTE_KEY_MAGIC_PATTERN[sync_pattern_idx] )