From 2bc42669e809c1e27cf35c87fdeaf0e97ff51f23 Mon Sep 17 00:00:00 2001 From: "David A. Mellis" Date: Mon, 25 Dec 2006 18:00:30 +0000 Subject: [PATCH] Adding Serial.flush() command. --- targets/arduino/HardwareSerial.cpp | 5 +++++ targets/arduino/HardwareSerial.h | 1 + targets/arduino/wiring.c | 10 ++++++++++ targets/arduino/wiring.h | 1 + 4 files changed, 17 insertions(+) diff --git a/targets/arduino/HardwareSerial.cpp b/targets/arduino/HardwareSerial.cpp index 2985807d6..186018f25 100755 --- a/targets/arduino/HardwareSerial.cpp +++ b/targets/arduino/HardwareSerial.cpp @@ -54,6 +54,11 @@ int HardwareSerial::read(void) return serialRead(); } +void HardwareSerial::flush() +{ + serialFlush(); +} + void HardwareSerial::print(char c) { printByte(c); diff --git a/targets/arduino/HardwareSerial.h b/targets/arduino/HardwareSerial.h index 9702d1756..bd95df7d6 100755 --- a/targets/arduino/HardwareSerial.h +++ b/targets/arduino/HardwareSerial.h @@ -38,6 +38,7 @@ class HardwareSerial void begin(long); uint8_t available(void); int read(void); + void flush(void); void print(char); void print(char[]); void print(uint8_t); diff --git a/targets/arduino/wiring.c b/targets/arduino/wiring.c index b3444cbd9..b66178c55 100755 --- a/targets/arduino/wiring.c +++ b/targets/arduino/wiring.c @@ -306,6 +306,16 @@ int serialRead() } } +void serialFlush() +{ + // 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; +} + #if defined(__AVR_ATmega168__) SIGNAL(SIG_USART_RECV) #else diff --git a/targets/arduino/wiring.h b/targets/arduino/wiring.h index ef77f1775..96e6ea6fb 100755 --- a/targets/arduino/wiring.h +++ b/targets/arduino/wiring.h @@ -76,6 +76,7 @@ void beginSerial(long); void serialWrite(unsigned char); int serialAvailable(); int serialRead(); +void serialFlush(); void printMode(int); void printByte(unsigned char c); void printNewline();