diff --git a/cores/arduino/IPAddress.cpp b/cores/arduino/IPAddress.cpp index d9fe5be1d..6b676b999 100644 --- a/cores/arduino/IPAddress.cpp +++ b/cores/arduino/IPAddress.cpp @@ -83,6 +83,19 @@ bool IPAddress::fromString(const char *address) return true; } +String IPAddress::toString() +{ + String addressString = ""; + for (int i =0; i < 3; i++) + { + addressString += String(_address.bytes[i], DEC); + addressString += String('.'); + } + addressString += String(_address.bytes[3], DEC); + return addressString; +} + + IPAddress& IPAddress::operator=(const uint8_t *address) { memcpy(_address.bytes, address, sizeof(_address.bytes)); diff --git a/cores/arduino/IPAddress.h b/cores/arduino/IPAddress.h index d762f2c02..0631739d6 100644 --- a/cores/arduino/IPAddress.h +++ b/cores/arduino/IPAddress.h @@ -58,6 +58,8 @@ class IPAddress : public Printable { // Overloaded index operator to allow getting and setting individual octets of the address uint8_t operator[](int index) const { return _address.bytes[index]; }; uint8_t& operator[](int index) { return _address.bytes[index]; }; + + String toString(); // Overloaded copy operators to allow initialisation of IPAddress objects from other types IPAddress& operator=(const uint8_t *address); diff --git a/cores/arduino/Print.h b/cores/arduino/Print.h index 058a2abbd..9b0c7247f 100644 --- a/cores/arduino/Print.h +++ b/cores/arduino/Print.h @@ -73,6 +73,7 @@ class Print size_t print(unsigned long, int = DEC); size_t print(double, int = 2); size_t print(const Printable&); + template size_t print(Arg arg0, Arg arg1, Args... args){ return print(arg0) + print(arg1) + print(args...); } size_t println(const __FlashStringHelper *); size_t println(const String &s); @@ -86,6 +87,7 @@ class Print size_t println(double, int = 2); size_t println(const Printable&); size_t println(void); + template size_t println(Args... args) { return print(args...) + println(); } virtual void flush() { /* Empty implementation for backward compatibility */ } };