diff --git a/cores/arduino/HardwareSerial.cpp b/cores/arduino/HardwareSerial.cpp index 561127f9f..4606db06b 100644 --- a/cores/arduino/HardwareSerial.cpp +++ b/cores/arduino/HardwareSerial.cpp @@ -177,6 +177,11 @@ int HardwareSerial::peek(void) } } +int HardwareSerial::peekLast(void) +{ + return _rx_buffer_head==_rx_buffer_tail ? -1 : _rx_buffer[(SERIAL_RX_BUFFER_SIZE+_rx_buffer_tail-1)%SERIAL_RX_BUFFER_SIZE]; +} + int HardwareSerial::read(void) { // if the head isn't ahead of the tail, we don't have any characters diff --git a/cores/arduino/HardwareSerial.h b/cores/arduino/HardwareSerial.h index 6ff29d0b9..ee946b1b1 100644 --- a/cores/arduino/HardwareSerial.h +++ b/cores/arduino/HardwareSerial.h @@ -123,6 +123,7 @@ class HardwareSerial : public Stream void end(); virtual int available(void); virtual int peek(void); + virtual int peekLast(void); virtual int read(void); virtual int availableForWrite(void); virtual void flush(void);