Arduino Print library for MBED
Summary
A quick port of the Arduino Print library.
Required to make a class that derives from the predefined Print class.
Print.h@0:4f62090ee72f, 2019-07-29 (annotated)
- Committer:
- DVSProductions
- Date:
- Mon Jul 29 03:49:50 2019 +0000
- Revision:
- 0:4f62090ee72f
First Commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DVSProductions | 0:4f62090ee72f | 1 | /* |
DVSProductions | 0:4f62090ee72f | 2 | Print.h - Base class that provides print() and println() |
DVSProductions | 0:4f62090ee72f | 3 | Copyright (c) 2008 David A. Mellis. All right reserved. |
DVSProductions | 0:4f62090ee72f | 4 | This library is free software; you can redistribute it and/or |
DVSProductions | 0:4f62090ee72f | 5 | modify it under the terms of the GNU Lesser General Public |
DVSProductions | 0:4f62090ee72f | 6 | License as published by the Free Software Foundation; either |
DVSProductions | 0:4f62090ee72f | 7 | version 2.1 of the License, or (at your option) any later version. |
DVSProductions | 0:4f62090ee72f | 8 | This library is distributed in the hope that it will be useful, |
DVSProductions | 0:4f62090ee72f | 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
DVSProductions | 0:4f62090ee72f | 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
DVSProductions | 0:4f62090ee72f | 11 | Lesser General Public License for more details. |
DVSProductions | 0:4f62090ee72f | 12 | You should have received a copy of the GNU Lesser General Public |
DVSProductions | 0:4f62090ee72f | 13 | License along with this library; if not, write to the Free Software |
DVSProductions | 0:4f62090ee72f | 14 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
DVSProductions | 0:4f62090ee72f | 15 | */ |
DVSProductions | 0:4f62090ee72f | 16 | |
DVSProductions | 0:4f62090ee72f | 17 | #ifndef Print_h |
DVSProductions | 0:4f62090ee72f | 18 | #define Print_h |
DVSProductions | 0:4f62090ee72f | 19 | |
DVSProductions | 0:4f62090ee72f | 20 | #include <stdint.h> |
DVSProductions | 0:4f62090ee72f | 21 | #include <string> |
DVSProductions | 0:4f62090ee72f | 22 | #include <string.h> |
DVSProductions | 0:4f62090ee72f | 23 | |
DVSProductions | 0:4f62090ee72f | 24 | #define DEC 10 |
DVSProductions | 0:4f62090ee72f | 25 | #define HEX 16 |
DVSProductions | 0:4f62090ee72f | 26 | #define OCT 8 |
DVSProductions | 0:4f62090ee72f | 27 | #define BIN 2 |
DVSProductions | 0:4f62090ee72f | 28 | |
DVSProductions | 0:4f62090ee72f | 29 | class Print { |
DVSProductions | 0:4f62090ee72f | 30 | private: |
DVSProductions | 0:4f62090ee72f | 31 | int write_error; |
DVSProductions | 0:4f62090ee72f | 32 | size_t printNumber(unsigned long, uint8_t); |
DVSProductions | 0:4f62090ee72f | 33 | size_t printFloat(double, uint8_t); |
DVSProductions | 0:4f62090ee72f | 34 | protected: |
DVSProductions | 0:4f62090ee72f | 35 | inline void setWriteError(int err = 1) { |
DVSProductions | 0:4f62090ee72f | 36 | write_error = err; |
DVSProductions | 0:4f62090ee72f | 37 | } |
DVSProductions | 0:4f62090ee72f | 38 | public: |
DVSProductions | 0:4f62090ee72f | 39 | Print() : |
DVSProductions | 0:4f62090ee72f | 40 | write_error(0) { |
DVSProductions | 0:4f62090ee72f | 41 | } |
DVSProductions | 0:4f62090ee72f | 42 | |
DVSProductions | 0:4f62090ee72f | 43 | int getWriteError() { |
DVSProductions | 0:4f62090ee72f | 44 | return write_error; |
DVSProductions | 0:4f62090ee72f | 45 | } |
DVSProductions | 0:4f62090ee72f | 46 | void clearWriteError() { |
DVSProductions | 0:4f62090ee72f | 47 | setWriteError(0); |
DVSProductions | 0:4f62090ee72f | 48 | } |
DVSProductions | 0:4f62090ee72f | 49 | |
DVSProductions | 0:4f62090ee72f | 50 | virtual size_t write(uint8_t) = 0; |
DVSProductions | 0:4f62090ee72f | 51 | size_t write(const char *str) { |
DVSProductions | 0:4f62090ee72f | 52 | if(str == NULL) |
DVSProductions | 0:4f62090ee72f | 53 | return 0; |
DVSProductions | 0:4f62090ee72f | 54 | return write((const uint8_t *) str, strlen(str)); |
DVSProductions | 0:4f62090ee72f | 55 | } |
DVSProductions | 0:4f62090ee72f | 56 | virtual size_t write(const uint8_t *buffer, size_t size); |
DVSProductions | 0:4f62090ee72f | 57 | size_t write(const char *buffer, size_t size) { |
DVSProductions | 0:4f62090ee72f | 58 | return write((const uint8_t *) buffer, size); |
DVSProductions | 0:4f62090ee72f | 59 | } |
DVSProductions | 0:4f62090ee72f | 60 | // These handle ambiguity for write(0) case, because (0) can be a pointer or an integer |
DVSProductions | 0:4f62090ee72f | 61 | inline size_t write(short t) { return write((uint8_t)t); } |
DVSProductions | 0:4f62090ee72f | 62 | inline size_t write(unsigned short t) { return write((uint8_t)t); } |
DVSProductions | 0:4f62090ee72f | 63 | inline size_t write(int t) { return write((uint8_t)t); } |
DVSProductions | 0:4f62090ee72f | 64 | inline size_t write(unsigned int t) { return write((uint8_t)t); } |
DVSProductions | 0:4f62090ee72f | 65 | inline size_t write(long t) { return write((uint8_t)t); } |
DVSProductions | 0:4f62090ee72f | 66 | inline size_t write(unsigned long t) { return write((uint8_t)t); } |
DVSProductions | 0:4f62090ee72f | 67 | // Enable write(char) to fall through to write(uint8_t) |
DVSProductions | 0:4f62090ee72f | 68 | inline size_t write(char c) { return write((uint8_t) c); } |
DVSProductions | 0:4f62090ee72f | 69 | inline size_t write(int8_t c) { return write((uint8_t) c); } |
DVSProductions | 0:4f62090ee72f | 70 | |
DVSProductions | 0:4f62090ee72f | 71 | size_t printf(const char * format, ...) __attribute__ ((format (printf, 2, 3))); |
DVSProductions | 0:4f62090ee72f | 72 | size_t print(const std::string &); |
DVSProductions | 0:4f62090ee72f | 73 | size_t print(const char[]); |
DVSProductions | 0:4f62090ee72f | 74 | size_t print(char); |
DVSProductions | 0:4f62090ee72f | 75 | size_t print(unsigned char, int = DEC); |
DVSProductions | 0:4f62090ee72f | 76 | size_t print(int, int = DEC); |
DVSProductions | 0:4f62090ee72f | 77 | size_t print(unsigned int, int = DEC); |
DVSProductions | 0:4f62090ee72f | 78 | size_t print(long, int = DEC); |
DVSProductions | 0:4f62090ee72f | 79 | size_t print(unsigned long, int = DEC); |
DVSProductions | 0:4f62090ee72f | 80 | size_t print(double, int = 2); |
DVSProductions | 0:4f62090ee72f | 81 | |
DVSProductions | 0:4f62090ee72f | 82 | size_t println(const std::string &s); |
DVSProductions | 0:4f62090ee72f | 83 | size_t println(const char[]); |
DVSProductions | 0:4f62090ee72f | 84 | size_t println(char); |
DVSProductions | 0:4f62090ee72f | 85 | size_t println(unsigned char, int = DEC); |
DVSProductions | 0:4f62090ee72f | 86 | size_t println(int, int = DEC); |
DVSProductions | 0:4f62090ee72f | 87 | size_t println(unsigned int, int = DEC); |
DVSProductions | 0:4f62090ee72f | 88 | size_t println(long, int = DEC); |
DVSProductions | 0:4f62090ee72f | 89 | size_t println(unsigned long, int = DEC); |
DVSProductions | 0:4f62090ee72f | 90 | size_t println(double, int = 2); |
DVSProductions | 0:4f62090ee72f | 91 | size_t println(void); |
DVSProductions | 0:4f62090ee72f | 92 | |
DVSProductions | 0:4f62090ee72f | 93 | virtual void flush() { /* Empty implementation for backward compatibility */ } |
DVSProductions | 0:4f62090ee72f | 94 | }; |
DVSProductions | 0:4f62090ee72f | 95 | |
DVSProductions | 0:4f62090ee72f | 96 | #endif |