[gnoduino: 39/237] Changing Serial.flush() to write outgoing data, not drop incoming data.



commit 2ca92db32e1bc24e65fb01560b33a7e68fce36de
Author: David A. Mellis <d mellis arduino cc>
Date:   Sat May 7 12:05:27 2011 -0400

    Changing Serial.flush() to write outgoing data, not drop incoming data.
    
    This brings it in line with most other uses of flush(), both in and out of Arduino.
    http://code.google.com/p/arduino/issues/detail?id=497

 arduino/cores/arduino/HardwareSerial.cpp |   12 ++----------
 1 files changed, 2 insertions(+), 10 deletions(-)
---
diff --git a/arduino/cores/arduino/HardwareSerial.cpp b/arduino/cores/arduino/HardwareSerial.cpp
index 1154ae7..74a0641 100644
--- a/arduino/cores/arduino/HardwareSerial.cpp
+++ b/arduino/cores/arduino/HardwareSerial.cpp
@@ -359,16 +359,8 @@ int HardwareSerial::read(void)
 
 void HardwareSerial::flush()
 {
-  // don't reverse this or there may be problems if the RX interrupt
-  // occurs after reading the value of rx_buffer_head but before writing
-  // the value to rx_buffer_tail; the previous value of rx_buffer_head
-  // may be written to rx_buffer_tail, making it appear as if the buffer
-  // don't reverse this or there may be problems if the RX interrupt
-  // occurs after reading the value of rx_buffer_head but before writing
-  // the value to rx_buffer_tail; the previous value of rx_buffer_head
-  // may be written to rx_buffer_tail, making it appear as if the buffer
-  // were full, not empty.
-  _rx_buffer->head = _rx_buffer->tail;
+  while (_tx_buffer->head != _tx_buffer->tail)
+    ;
 }
 
 void HardwareSerial::write(uint8_t c)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]