aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid A. Mellis <d.mellis@arduino.cc>2010-05-28 22:41:03 +0000
committerDavid A. Mellis <d.mellis@arduino.cc>2010-05-28 22:41:03 +0000
commit90eb0aecd858e62aa4ea125949387d89a6156273 (patch)
tree25b1027346cc01c98d2790075b1055236a70ffba
parent67c0a1995aace2953e481ef6183b1b91e04942fc (diff)
Adding a basic Stream interface and modifying HardwareSerial to inherit from it.
-rwxr-xr-xcores/arduino/HardwareSerial.h10
-rw-r--r--cores/arduino/Stream.h34
2 files changed, 39 insertions, 5 deletions
diff --git a/cores/arduino/HardwareSerial.h b/cores/arduino/HardwareSerial.h
index 6b620ed..cae1447 100755
--- a/cores/arduino/HardwareSerial.h
+++ b/cores/arduino/HardwareSerial.h
@@ -22,11 +22,11 @@
#include <inttypes.h>
-#include "Print.h"
+#include "Stream.h"
struct ring_buffer;
-class HardwareSerial : public Print
+class HardwareSerial : public Stream
{
private:
ring_buffer *_rx_buffer;
@@ -48,9 +48,9 @@ class HardwareSerial : public Print
uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x);
void begin(long);
void end();
- uint8_t available(void);
- int read(void);
- void flush(void);
+ virtual uint8_t available(void);
+ virtual int read(void);
+ virtual void flush(void);
virtual void write(uint8_t);
using Print::write; // pull in write(str) and write(buf, size) from Print
};
diff --git a/cores/arduino/Stream.h b/cores/arduino/Stream.h
new file mode 100644
index 0000000..3bf5283
--- /dev/null
+++ b/cores/arduino/Stream.h
@@ -0,0 +1,34 @@
+/*
+ Stream.h - base class for character-based streams.
+ Copyright (c) 2010 David A. Mellis. All right reserved.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef Stream_h
+#define Stream_h
+
+#include <inttypes.h>
+#include "Print.h"
+
+class Stream : public Print
+{
+ public:
+ virtual uint8_t available() = 0;
+ virtual int read() = 0;
+ virtual void flush() = 0;
+};
+
+#endif