From 0557d46fc22078950c30e64bcb3a65500037c39b Mon Sep 17 00:00:00 2001 From: "David A. Mellis" Date: Fri, 28 May 2010 22:41:03 +0000 Subject: [PATCH] Adding a basic Stream interface and modifying HardwareSerial to inherit from it. --- .../arduino/cores/arduino/HardwareSerial.h | 10 +++--- hardware/arduino/cores/arduino/Stream.h | 34 +++++++++++++++++++ 2 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 hardware/arduino/cores/arduino/Stream.h diff --git a/hardware/arduino/cores/arduino/HardwareSerial.h b/hardware/arduino/cores/arduino/HardwareSerial.h index 6b620ed78..cae1447a0 100755 --- a/hardware/arduino/cores/arduino/HardwareSerial.h +++ b/hardware/arduino/cores/arduino/HardwareSerial.h @@ -22,11 +22,11 @@ #include -#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/hardware/arduino/cores/arduino/Stream.h b/hardware/arduino/cores/arduino/Stream.h new file mode 100644 index 000000000..3bf5283da --- /dev/null +++ b/hardware/arduino/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 +#include "Print.h" + +class Stream : public Print +{ + public: + virtual uint8_t available() = 0; + virtual int read() = 0; + virtual void flush() = 0; +}; + +#endif