From cd3294715cd920ac8cc4ff4f10a26e0066e75035 Mon Sep 17 00:00:00 2001 From: Alejandro Casanova Date: Wed, 28 Jan 2026 09:45:55 +0100 Subject: [PATCH 1/4] fix: allow logging of a single character --- ArduinoLog.cpp | 7 +++++++ ArduinoLog.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/ArduinoLog.cpp b/ArduinoLog.cpp index f8ae7e8..fcee7e7 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; 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) From 4542194a6aec19a1f79cafb3db17aa4b6f619c86 Mon Sep 17 00:00:00 2001 From: Alejandro Casanova Date: Wed, 28 Jan 2026 10:16:44 +0100 Subject: [PATCH 2/4] feat: improve hex printing consistency and add leading zeros only to reach full bytes --- ArduinoLog.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ArduinoLog.cpp b/ArduinoLog.cpp index fcee7e7..ae0e13a 100644 --- a/ArduinoLog.cpp +++ b/ArduinoLog.cpp @@ -203,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') { From a9645cfacf415e8becd7542084d2ba56936bf7c1 Mon Sep 17 00:00:00 2001 From: Alejandro Casanova Date: Wed, 28 Jan 2026 17:03:45 +0100 Subject: [PATCH 3/4] feat: add 'L' option to print long in hex --- ArduinoLog.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ArduinoLog.cpp b/ArduinoLog.cpp index ae0e13a..92bcaa7 100644 --- a/ArduinoLog.cpp +++ b/ArduinoLog.cpp @@ -227,6 +227,20 @@ 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); From 86a093dca00dafad651a42957bafd34cea456513 Mon Sep 17 00:00:00 2001 From: Alejandro Casanova Date: Wed, 28 Jan 2026 17:04:28 +0100 Subject: [PATCH 4/4] feat: improve char printing to facilitate hex printing of bytes --- ArduinoLog.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ArduinoLog.cpp b/ArduinoLog.cpp index 92bcaa7..4667cdb 100644 --- a/ArduinoLog.cpp +++ b/ArduinoLog.cpp @@ -247,9 +247,6 @@ void Logging::printFormat(const char format, va_list *args) { } 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); @@ -258,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)