Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 33 additions & 9 deletions ArduinoLog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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')
{
Expand All @@ -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);
Expand All @@ -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)
Expand Down
2 changes: 2 additions & 0 deletions ArduinoLog.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down