From d237cc9df686df56bd603f2cca7689db90ea9c1a Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Wed, 21 Apr 2021 21:57:39 +0200 Subject: [PATCH] Removed shitty Print and shitty Printable interfaces --- CMakeLists.txt | 1 - cores/esp32/Arduino.h | 2 - cores/esp32/HardwareSerial.cpp | 12 +- cores/esp32/HardwareSerial.h | 32 +-- cores/esp32/IPv6Address.cpp | 25 ++- cores/esp32/IPv6Address.h | 7 +- cores/esp32/Print.cpp | 362 --------------------------------- cores/esp32/Print.h | 112 ---------- cores/esp32/Printable.h | 41 ---- cores/esp32/USBCDC.h | 4 +- libraries/FS/src/FS.h | 15 +- libraries/Wire/src/Wire.h | 3 +- 12 files changed, 30 insertions(+), 586 deletions(-) delete mode 100644 cores/esp32/Print.cpp delete mode 100644 cores/esp32/Print.h delete mode 100644 cores/esp32/Printable.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 0e4bc438..dc4de8e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,7 +19,6 @@ set(CORE_SRCS cores/esp32/FunctionalInterrupt.cpp cores/esp32/HardwareSerial.cpp cores/esp32/IPv6Address.cpp - cores/esp32/Print.cpp cores/esp32/stdlib_noniso.c cores/esp32/USB.cpp cores/esp32/USBCDC.cpp diff --git a/cores/esp32/Arduino.h b/cores/esp32/Arduino.h index c7fa56e8..2ed9e2fd 100644 --- a/cores/esp32/Arduino.h +++ b/cores/esp32/Arduino.h @@ -139,8 +139,6 @@ void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val); #include #include "WCharacter.h" -#include "Printable.h" -#include "Print.h" #include "HardwareSerial.h" using std::abs; diff --git a/cores/esp32/HardwareSerial.cpp b/cores/esp32/HardwareSerial.cpp index d2de24e3..288ef081 100644 --- a/cores/esp32/HardwareSerial.cpp +++ b/cores/esp32/HardwareSerial.cpp @@ -191,16 +191,10 @@ void HardwareSerial::flush(bool txOnly) uartFlushTxOnly(_uart, txOnly); } -size_t HardwareSerial::write(uint8_t c) +size_t HardwareSerial::write(std::string_view buf) { - uartWrite(_uart, c); - return 1; -} - -size_t HardwareSerial::write(const uint8_t *buffer, size_t size) -{ - uartWriteBuf(_uart, buffer, size); - return size; + uartWriteBuf(_uart, (const uint8_t *)buf.data(), buf.size()); + return buf.size(); } uint32_t HardwareSerial::baudRate() diff --git a/cores/esp32/HardwareSerial.h b/cores/esp32/HardwareSerial.h index 6ccd9fab..a50b0377 100644 --- a/cores/esp32/HardwareSerial.h +++ b/cores/esp32/HardwareSerial.h @@ -47,10 +47,11 @@ #include -#include "Print.h" +#include + #include "esp32-hal.h" -class HardwareSerial: public Print +class HardwareSerial { public: HardwareSerial(int uart_nr); @@ -69,32 +70,7 @@ public: } void flush(void); void flush( bool txOnly); - size_t write(uint8_t); - size_t write(const uint8_t *buffer, size_t size); - inline size_t write(const char * buffer, size_t size) - { - return write((uint8_t*) buffer, size); - } - inline size_t write(const char * s) - { - return write((uint8_t*) s, strlen(s)); - } - inline size_t write(unsigned long n) - { - return write((uint8_t) n); - } - inline size_t write(long n) - { - return write((uint8_t) n); - } - inline size_t write(unsigned int n) - { - return write((uint8_t) n); - } - inline size_t write(int n) - { - return write((uint8_t) n); - } + size_t write(std::string_view buf); uint32_t baudRate(); operator bool() const; diff --git a/cores/esp32/IPv6Address.cpp b/cores/esp32/IPv6Address.cpp index 25516588..179902f2 100644 --- a/cores/esp32/IPv6Address.cpp +++ b/cores/esp32/IPv6Address.cpp @@ -19,7 +19,6 @@ #include #include -#include IPv6Address::IPv6Address() { @@ -47,19 +46,19 @@ bool IPv6Address::operator==(const uint8_t* addr) const return memcmp(addr, _address.bytes, sizeof(_address.bytes)) == 0; } -size_t IPv6Address::printTo(Print& p) const -{ - size_t n = 0; - for(int i = 0; i < 16; i+=2) { - if(i){ - n += p.print(':'); - } - n += p.printf("%02x", _address.bytes[i]); - n += p.printf("%02x", _address.bytes[i+1]); +//size_t IPv6Address::printTo(Print& p) const +//{ +// size_t n = 0; +// for(int i = 0; i < 16; i+=2) { +// if(i){ +// n += p.print(':'); +// } +// n += p.printf("%02x", _address.bytes[i]); +// n += p.printf("%02x", _address.bytes[i+1]); - } - return n; -} +// } +// return n; +//} std::string IPv6Address::toString() const { diff --git a/cores/esp32/IPv6Address.h b/cores/esp32/IPv6Address.h index 86ee84ac..d78dcf62 100644 --- a/cores/esp32/IPv6Address.h +++ b/cores/esp32/IPv6Address.h @@ -23,11 +23,9 @@ #include #include -#include - // A class to make it easier to handle and pass around IP addresses -class IPv6Address: public Printable +class IPv6Address { private: union { @@ -49,7 +47,6 @@ public: IPv6Address(); IPv6Address(const uint8_t *address); IPv6Address(const uint32_t *address); - virtual ~IPv6Address() {} bool fromString(const char *address); bool fromString(const std::string &address) { return fromString(address.c_str()); } @@ -84,7 +81,7 @@ public: // Overloaded copy operators to allow initialisation of IPv6Address objects from other types IPv6Address& operator=(const uint8_t *address); - virtual size_t printTo(Print& p) const; +// virtual size_t printTo(Print& p) const; std::string toString() const; friend class UDP; diff --git a/cores/esp32/Print.cpp b/cores/esp32/Print.cpp deleted file mode 100644 index 3fb9ff00..00000000 --- a/cores/esp32/Print.cpp +++ /dev/null @@ -1,362 +0,0 @@ -/* - Print.cpp - Base class that provides print() and println() - Copyright (c) 2008 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 - - Modified 23 November 2006 by David A. Mellis - Modified December 2014 by Ivan Grokhotkov - Modified May 2015 by Michael C. Miller - ESP31B progmem support - */ - -#include -#include -#include -#include -#include "Arduino.h" - -#include "Print.h" -extern "C" { - #include "time.h" -} - -// Public Methods ////////////////////////////////////////////////////////////// - -/* default implementation: may be overridden */ -size_t Print::write(const uint8_t *buffer, size_t size) -{ - size_t n = 0; - while(size--) { - n += write(*buffer++); - } - return n; -} - -size_t Print::printf(const char *format, ...) -{ - char loc_buf[64]; - char * temp = loc_buf; - va_list arg; - va_list copy; - va_start(arg, format); - va_copy(copy, arg); - int len = vsnprintf(temp, sizeof(loc_buf), format, copy); - va_end(copy); - if(len < 0) { - va_end(arg); - return 0; - }; - if(len >= sizeof(loc_buf)){ - temp = (char*) malloc(len+1); - if(temp == NULL) { - va_end(arg); - return 0; - } - len = vsnprintf(temp, len+1, format, arg); - } - va_end(arg); - len = write((uint8_t*)temp, len); - if(temp != loc_buf){ - free(temp); - } - return len; -} - -size_t Print::print(const std::string &s) -{ - return write(s.c_str(), s.length()); -} - -size_t Print::print(const char str[]) -{ - return write(str); -} - -size_t Print::print(char c) -{ - return write(c); -} - -size_t Print::print(unsigned char b, int base) -{ - return print((unsigned long) b, base); -} - -size_t Print::print(int n, int base) -{ - return print((long) n, base); -} - -size_t Print::print(unsigned int n, int base) -{ - return print((unsigned long) n, base); -} - -size_t Print::print(long n, int base) -{ - int t = 0; - if (base == 10 && n < 0) { - t = print('-'); - n = -n; - } - return printNumber(static_cast(n), base) + t; -} - -size_t Print::print(unsigned long n, int base) -{ - if(base == 0) { - return write(n); - } else { - return printNumber(n, base); - } -} - -size_t Print::print(long long n, int base) -{ - int t = 0; - if (base == 10 && n < 0) { - t = print('-'); - n = -n; - } - return printNumber(static_cast(n), base) + t; -} - -size_t Print::print(unsigned long long n, int base) -{ - if (base == 0) { - return write(n); - } else { - return printNumber(n, base); - } -} - -size_t Print::print(double n, int digits) -{ - return printFloat(n, digits); -} - -size_t Print::print(const Printable& x) -{ - return x.printTo(*this); -} - -size_t Print::print(struct tm * timeinfo, const char * format) -{ - const char * f = format; - if(!f){ - f = "%c"; - } - char buf[64]; - size_t written = strftime(buf, 64, f, timeinfo); - if(written == 0){ - return written; - } - return print(buf); -} - -size_t Print::println(void) -{ - return print("\r\n"); -} - -size_t Print::println(const std::string &s) -{ - size_t n = print(s); - n += println(); - return n; -} - -size_t Print::println(const char c[]) -{ - size_t n = print(c); - n += println(); - return n; -} - -size_t Print::println(char c) -{ - size_t n = print(c); - n += println(); - return n; -} - -size_t Print::println(unsigned char b, int base) -{ - size_t n = print(b, base); - n += println(); - return n; -} - -size_t Print::println(int num, int base) -{ - size_t n = print(num, base); - n += println(); - return n; -} - -size_t Print::println(unsigned int num, int base) -{ - size_t n = print(num, base); - n += println(); - return n; -} - -size_t Print::println(long num, int base) -{ - size_t n = print(num, base); - n += println(); - return n; -} - -size_t Print::println(unsigned long num, int base) -{ - size_t n = print(num, base); - n += println(); - return n; -} - -size_t Print::println(long long num, int base) -{ - size_t n = print(num, base); - n += println(); - return n; -} - -size_t Print::println(unsigned long long num, int base) -{ - size_t n = print(num, base); - n += println(); - return n; -} - -size_t Print::println(double num, int digits) -{ - size_t n = print(num, digits); - n += println(); - return n; -} - -size_t Print::println(const Printable& x) -{ - size_t n = print(x); - n += println(); - return n; -} - -size_t Print::println(struct tm * timeinfo, const char * format) -{ - size_t n = print(timeinfo, format); - n += println(); - return n; -} - -// Private Methods ///////////////////////////////////////////////////////////// - -size_t Print::printNumber(unsigned long n, uint8_t base) -{ - char buf[8 * sizeof(n) + 1]; // Assumes 8-bit chars plus zero byte. - char *str = &buf[sizeof(buf) - 1]; - - *str = '\0'; - - // prevent crash if called with base == 1 - if(base < 2) { - base = 10; - } - - do { - char c = n % base; - n /= base; - - *--str = c < 10 ? c + '0' : c + 'A' - 10; - } while (n); - - return write(str); -} - -size_t Print::printNumber(unsigned long long n, uint8_t base) -{ - char buf[8 * sizeof(n) + 1]; // Assumes 8-bit chars plus zero byte. - char* str = &buf[sizeof(buf) - 1]; - - *str = '\0'; - - // prevent crash if called with base == 1 - if (base < 2) { - base = 10; - } - - do { - auto m = n; - n /= base; - char c = m - base * n; - - *--str = c < 10 ? c + '0' : c + 'A' - 10; - } while (n); - - return write(str); -} - -size_t Print::printFloat(double number, uint8_t digits) -{ - size_t n = 0; - - if(isnan(number)) { - return print("nan"); - } - if(isinf(number)) { - return print("inf"); - } - if(number > 4294967040.0) { - return print("ovf"); // constant determined empirically - } - if(number < -4294967040.0) { - return print("ovf"); // constant determined empirically - } - - // Handle negative numbers - if(number < 0.0) { - n += print('-'); - number = -number; - } - - // Round correctly so that print(1.999, 2) prints as "2.00" - double rounding = 0.5; - for(uint8_t i = 0; i < digits; ++i) { - rounding /= 10.0; - } - - number += rounding; - - // Extract the integer part of the number and print it - unsigned long int_part = (unsigned long) number; - double remainder = number - (double) int_part; - n += print(int_part); - - // Print the decimal point, but only if there are digits beyond - if(digits > 0) { - n += print("."); - } - - // Extract digits from the remainder one at a time - while(digits-- > 0) { - remainder *= 10.0; - int toPrint = int(remainder); - n += print(toPrint); - remainder -= toPrint; - } - - return n; -} diff --git a/cores/esp32/Print.h b/cores/esp32/Print.h deleted file mode 100644 index 02213da4..00000000 --- a/cores/esp32/Print.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - Print.h - Base class that provides print() and println() - Copyright (c) 2008 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 Print_h -#define Print_h - -#include -#include -#include - -#include "Printable.h" - -#define DEC 10 -#define HEX 16 -#define OCT 8 -#define BIN 2 - -class Print -{ -private: - int write_error; - size_t printNumber(unsigned long, uint8_t); - size_t printNumber(unsigned long long, uint8_t); - size_t printFloat(double, uint8_t); -protected: - void setWriteError(int err = 1) - { - write_error = err; - } -public: - Print() : - write_error(0) - { - } - virtual ~Print() {} - int getWriteError() - { - return write_error; - } - void clearWriteError() - { - setWriteError(0); - } - - virtual size_t write(uint8_t) = 0; - size_t write(const char *str) - { - if(str == NULL) { - return 0; - } - return write((const uint8_t *) str, strlen(str)); - } - virtual size_t write(const uint8_t *buffer, size_t size); - size_t write(const char *buffer, size_t size) - { - return write((const uint8_t *) buffer, size); - } - - - virtual int available() = 0; - virtual int read() = 0; - virtual int peek() = 0; - virtual void flush() = 0; - - size_t printf(const char * format, ...) __attribute__ ((format (printf, 2, 3))); - size_t print(const std::string &); - size_t print(const char[]); - size_t print(char); - size_t print(unsigned char, int = DEC); - size_t print(int, int = DEC); - size_t print(unsigned int, int = DEC); - size_t print(long, int = DEC); - size_t print(unsigned long, int = DEC); - size_t print(long long, int = DEC); - size_t print(unsigned long long, int = DEC); - size_t print(double, int = 2); - size_t print(const Printable&); - size_t print(struct tm * timeinfo, const char * format = NULL); - - size_t println(const std::string &s); - size_t println(const char[]); - size_t println(char); - size_t println(unsigned char, int = DEC); - size_t println(int, int = DEC); - size_t println(unsigned int, int = DEC); - size_t println(long, int = DEC); - size_t println(unsigned long, int = DEC); - size_t println(long long, int = DEC); - size_t println(unsigned long long, int = DEC); - size_t println(double, int = 2); - size_t println(const Printable&); - size_t println(struct tm * timeinfo, const char * format = NULL); - size_t println(void); -}; - -#endif diff --git a/cores/esp32/Printable.h b/cores/esp32/Printable.h deleted file mode 100644 index aa4e62f8..00000000 --- a/cores/esp32/Printable.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - Printable.h - Interface class that allows printing of complex types - Copyright (c) 2011 Adrian McEwen. 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 Printable_h -#define Printable_h - -#include - -class Print; - -/** The Printable class provides a way for new classes to allow themselves to be printed. - By deriving from Printable and implementing the printTo method, it will then be possible - for users to print out instances of this class by passing them into the usual - Print::print and Print::println methods. - */ - -class Printable -{ -public: - virtual ~Printable() {} - virtual size_t printTo(Print& p) const = 0; -}; - -#endif - diff --git a/cores/esp32/USBCDC.h b/cores/esp32/USBCDC.h index 59f5902d..f23469a6 100644 --- a/cores/esp32/USBCDC.h +++ b/cores/esp32/USBCDC.h @@ -20,8 +20,6 @@ #include "esp_event.h" -#include "Print.h" - ESP_EVENT_DECLARE_BASE(ARDUINO_USB_CDC_EVENTS); typedef enum { @@ -50,7 +48,7 @@ typedef union { } rx; } arduino_usb_cdc_event_data_t; -class USBCDC: public Print +class USBCDC { public: USBCDC(uint8_t itf=0); diff --git a/libraries/FS/src/FS.h b/libraries/FS/src/FS.h index f9e8d690..fe3870d7 100644 --- a/libraries/FS/src/FS.h +++ b/libraries/FS/src/FS.h @@ -23,7 +23,6 @@ #include #include -#include "Print.h" namespace fs { @@ -45,19 +44,19 @@ enum SeekMode { SeekEnd = 2 }; -class File : public Print +class File { public: File(FileImplPtr p = FileImplPtr()) : _p(p) { //_timeout = 0; } - size_t write(uint8_t) override; - size_t write(const uint8_t *buf, size_t size) override; - int available() override; - int read() override; - int peek() override; - void flush() override; + size_t write(uint8_t); + size_t write(const uint8_t *buf, size_t size); + int available(); + int read(); + int peek(); + void flush(); size_t read(uint8_t* buf, size_t size); size_t readBytes(char *buffer, size_t length) { diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index 1f621350..956d2900 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -28,14 +28,13 @@ #include #include "freertos/FreeRTOS.h" #include "freertos/queue.h" -#include "Print.h" #define STICKBREAKER 'V1.1.0' #define I2C_BUFFER_LENGTH 128 typedef void(*user_onRequest)(void); typedef void(*user_onReceive)(uint8_t*, int); -class TwoWire: public Print +class TwoWire { protected: uint8_t num;