diff --git a/ArduinoLog.cpp b/ArduinoLog.cpp index f8ae7e8..4667cdb 100644 --- a/ArduinoLog.cpp +++ b/ArduinoLog.cpp @@ -163,6 +163,13 @@ void Logging::print(const char *format, va_list args) { #endif } +void Logging::print(const char c, va_list args) +{ +#ifndef DISABLE_LOGGING + _logOutput->print(c); +#endif +} + void Logging::printFormat(const char format, va_list *args) { #ifndef DISABLE_LOGGING if (format == '\0') return; @@ -196,11 +203,11 @@ void Logging::printFormat(const char format, va_list *args) { { _logOutput->print("0x"); //_logOutput->print(va_arg(*args, int), HEX); - uint16_t h = (uint16_t) va_arg( *args, int ); - if (h<0xFFF) _logOutput->print('0'); - if (h<0xFF ) _logOutput->print('0'); - if (h<0xF ) _logOutput->print('0'); - _logOutput->print(h,HEX); + uint16_t h = (uint16_t) va_arg( *args, int ); + if (h <= 0xF) _logOutput->print('0'); + else if (h <= 0xFF); // Do nothing + else if (h <= 0xFFF) _logOutput->print('0'); + _logOutput->print(h,HEX); } else if (format == 'p') { @@ -220,15 +227,26 @@ void Logging::printFormat(const char format, va_list *args) { { _logOutput->print(va_arg(*args, long), DEC); } + else if (format == 'L') + { + _logOutput->print("0x"); + //_logOutput->print(va_arg(*args, int), HEX); + uint32_t h = (uint32_t) va_arg( *args, long ); + if (h <= 0xF) _logOutput->print('0'); + else if (h <= 0xFF); // Do nothing + else if (h <= 0xFFF) _logOutput->print('0'); + else if (h <= 0xFFFF); // Do nothing + else if (h <= 0xFFFFF) _logOutput->print('0'); + else if (h <= 0xFFFFFF); // Do nothing + else if (h <= 0xFFFFFFF) _logOutput->print('0'); + _logOutput->print(h, HEX); + } else if (format == 'u') { _logOutput->print(va_arg(*args, unsigned long), DEC); } else if (format == 'c') { - _logOutput->print((char) va_arg(*args, int)); - } - else if( format == 'C' ) { char c = (char) va_arg( *args, int ); if (c>=0x20 && c<0x7F) { _logOutput->print(c); @@ -237,7 +255,13 @@ void Logging::printFormat(const char format, va_list *args) { if (c<0xF) _logOutput->print('0'); _logOutput->print(c, HEX); } - } + } + else if( format == 'C' ) { + // _logOutput->print("0x"); + char c = (char) va_arg( *args, int ); + if (c <= 0xF) _logOutput->print('0'); + _logOutput->print(c, HEX); + } else if(format == 't') { if (va_arg(*args, int) == 1) diff --git a/ArduinoLog.h b/ArduinoLog.h index b51bb52..5a79431 100644 --- a/ArduinoLog.h +++ b/ArduinoLog.h @@ -324,6 +324,8 @@ class Logging private: void print(const char *format, va_list args); + void print(const char c, va_list args); + void print(const __FlashStringHelper *format, va_list args); void print(const Printable& obj, va_list args)