From 94b3d50f4f3b99891b58f4d912e32255f6267131 Mon Sep 17 00:00:00 2001 From: Alexander Entinger Date: Wed, 22 Jun 2022 13:46:58 +0200 Subject: [PATCH] Provide API for printing the debug level as a string. This fixes #7. --- src/Arduino_DebugUtils.cpp | 33 +++++++++++++++++++++++++++++++++ src/Arduino_DebugUtils.h | 5 +++++ 2 files changed, 38 insertions(+) diff --git a/src/Arduino_DebugUtils.cpp b/src/Arduino_DebugUtils.cpp index c8df64d..e2818e5 100644 --- a/src/Arduino_DebugUtils.cpp +++ b/src/Arduino_DebugUtils.cpp @@ -35,6 +35,7 @@ static Stream * DEFAULT_OUTPUT_STREAM = &Serial; Arduino_DebugUtils::Arduino_DebugUtils() { timestampOff(); newlineOn(); + debugLabelOff(); setDebugLevel(DEFAULT_DEBUG_LEVEL); setDebugOutputStream(DEFAULT_OUTPUT_STREAM); } @@ -63,6 +64,14 @@ void Arduino_DebugUtils::newlineOff() { _newline_on = false; } +void Arduino_DebugUtils::debugLabelOn() { + _print_debug_label = true; +} + +void Arduino_DebugUtils::debugLabelOff() { + _print_debug_label = false; +} + void Arduino_DebugUtils::timestampOn() { _timestamp_on = true; } @@ -76,6 +85,9 @@ void Arduino_DebugUtils::print(int const debug_level, const char * fmt, ...) if (!shouldPrint(debug_level)) return; + if (_print_debug_label) + printDebugLabel(debug_level); + if (_timestamp_on) printTimestamp(); @@ -90,6 +102,9 @@ void Arduino_DebugUtils::print(int const debug_level, const __FlashStringHelper if (!shouldPrint(debug_level)) return; + if (_print_debug_label) + printDebugLabel(debug_level); + if (_timestamp_on) printTimestamp(); @@ -136,6 +151,24 @@ void Arduino_DebugUtils::printTimestamp() _debug_output_stream->print(timestamp); } +void Arduino_DebugUtils::printDebugLabel(int const debug_level) +{ + static char const * DEBUG_MODE_STRING[5] = + { + "[DBG_ERROR ] ", + "[DBG_WARNING] ", + "[DBG_INFO ] ", + "[DBG_DEBUG ] ", + "[DBG_VERBOSE] ", + }; + + bool is_valid_debug_level = (debug_level >= DBG_ERROR) && (debug_level <= DBG_VERBOSE); + if (!is_valid_debug_level) + return; + + _debug_output_stream->print(DEBUG_MODE_STRING[debug_level]); +} + bool Arduino_DebugUtils::shouldPrint(int const debug_level) const { return ((debug_level >= DBG_ERROR) && (debug_level <= DBG_VERBOSE) && (debug_level <= _debug_level)); diff --git a/src/Arduino_DebugUtils.h b/src/Arduino_DebugUtils.h index af04022..2fe7392 100644 --- a/src/Arduino_DebugUtils.h +++ b/src/Arduino_DebugUtils.h @@ -61,6 +61,9 @@ class Arduino_DebugUtils { void newlineOn(); void newlineOff(); + void debugLabelOn(); + void debugLabelOff(); + void print(int const debug_level, const char * fmt, ...); void print(int const debug_level, const __FlashStringHelper * fmt, ...); @@ -69,11 +72,13 @@ class Arduino_DebugUtils { bool _timestamp_on; bool _newline_on; + bool _print_debug_label; int _debug_level; Stream * _debug_output_stream; void vPrint(char const * fmt, va_list args); void printTimestamp(); + void printDebugLabel(int const debug_level); bool shouldPrint(int const debug_level) const; };