From d9d4a72679eec681e213d4a81017abc0000e6220 Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Sun, 3 Jan 2016 07:33:42 +0200
Subject: [PATCH] esp8266/uart: Add uart_flush() function.

---
 esp8266/uart.c | 9 +++++++++
 esp8266/uart.h | 1 +
 2 files changed, 10 insertions(+)

diff --git a/esp8266/uart.c b/esp8266/uart.c
index aa3d368b7..942c397e9 100644
--- a/esp8266/uart.c
+++ b/esp8266/uart.c
@@ -105,6 +105,15 @@ void uart_tx_one_char(uint8 uart, uint8 TxChar) {
     WRITE_PERI_REG(UART_FIFO(uart), TxChar);
 }
 
+void uart_flush(uint8 uart) {
+    while (true) {
+        uint32 fifo_cnt = READ_PERI_REG(UART_STATUS(uart)) & (UART_TXFIFO_CNT<<UART_TXFIFO_CNT_S);
+        if ((fifo_cnt >> UART_TXFIFO_CNT_S & UART_TXFIFO_CNT) == 0) {
+            break;
+        }
+    }
+}
+
 /******************************************************************************
  * FunctionName : uart1_write_char
  * Description  : Internal used function
diff --git a/esp8266/uart.h b/esp8266/uart.h
index ce1438baf..ed0dcfb44 100644
--- a/esp8266/uart.h
+++ b/esp8266/uart.h
@@ -92,5 +92,6 @@ typedef struct {
 void uart_init(UartBautRate uart0_br, UartBautRate uart1_br);
 int uart0_rx(void);
 void uart_tx_one_char(uint8 uart, uint8 TxChar);
+void uart_flush(uint8 uart);
 
 #endif // _INCLUDED_UART_H_
-- 
GitLab