aboutsummaryrefslogtreecommitdiff
path: root/cores/arduino
diff options
context:
space:
mode:
authorDavid A. Mellis <d.mellis@arduino.cc>2010-07-04 23:31:55 +0000
committerDavid A. Mellis <d.mellis@arduino.cc>2010-07-04 23:31:55 +0000
commitd3cb43c1c981ee3726d26c05ec3e42fffaa080c6 (patch)
tree61c23e7f21927311c04853da13a0f25a550d8c8c /cores/arduino
parent2c32369685d38f7367328d470571dd2f9a1104c7 (diff)
Adding a peek() function to Stream and HardwareSerial (Serial).
Diffstat (limited to 'cores/arduino')
-rwxr-xr-xcores/arduino/HardwareSerial.cpp9
-rwxr-xr-xcores/arduino/HardwareSerial.h1
-rw-r--r--cores/arduino/Stream.h1
3 files changed, 11 insertions, 0 deletions
diff --git a/cores/arduino/HardwareSerial.cpp b/cores/arduino/HardwareSerial.cpp
index 638b6d1..f8cdebe 100755
--- a/cores/arduino/HardwareSerial.cpp
+++ b/cores/arduino/HardwareSerial.cpp
@@ -178,6 +178,15 @@ uint8_t HardwareSerial::available(void)
return (RX_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % RX_BUFFER_SIZE;
}
+int HardwareSerial::peek(void)
+{
+ if (_rx_buffer->head == _rx_buffer->tail) {
+ return -1;
+ } else {
+ return _rx_buffer->buffer[_rx_buffer->tail];
+ }
+}
+
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 cae1447..884f9fe 100755
--- a/cores/arduino/HardwareSerial.h
+++ b/cores/arduino/HardwareSerial.h
@@ -49,6 +49,7 @@ class HardwareSerial : public Stream
void begin(long);
void end();
virtual uint8_t available(void);
+ virtual int peek(void);
virtual int read(void);
virtual void flush(void);
virtual void write(uint8_t);
diff --git a/cores/arduino/Stream.h b/cores/arduino/Stream.h
index 3bf5283..1d3e50b 100644
--- a/cores/arduino/Stream.h
+++ b/cores/arduino/Stream.h
@@ -27,6 +27,7 @@ class Stream : public Print
{
public:
virtual uint8_t available() = 0;
+ virtual int peek() = 0;
virtual int read() = 0;
virtual void flush() = 0;
};