29static int const DEFAULT_DEBUG_LEVEL = DBG_INFO;
30static Stream * DEFAULT_OUTPUT_STREAM = &Serial;
50 _debug_level = debug_level;
58 _debug_output_stream = stream;
70 _print_debug_label =
true;
74 _print_debug_label =
false;
78 _format_timestamp_on =
true;
82 _format_timestamp_on =
false;
90 _timestamp_on =
false;
95 if (!shouldPrint(debug_level))
98 if (_print_debug_label)
99 printDebugLabel(debug_level);
112 if (!shouldPrint(debug_level))
115 if (_print_debug_label)
116 printDebugLabel(debug_level);
125 vPrint(fmt_str.c_str(), args);
133void EEPROMDebug::vPrint(
char const * fmt, va_list args) {
135 int msg_buf_size = vsnprintf(
nullptr, 0, fmt, args) + 1;
136#if defined(ARDUINO) && ARDUINO >= 100
137 #if __STDC_NO_VLA__ == 1
139 char * msg_buf =
new char[msg_buf_size];
141 char msg_buf[msg_buf_size];
143#elif defined(PARTICLE)
144 char msg_buf[msg_buf_size];
147 vsnprintf(msg_buf, msg_buf_size, fmt, args);
150 _debug_output_stream->println(msg_buf);
152 _debug_output_stream->print(msg_buf);
155#if defined(ARDUINO) && ARDUINO >= 100
156 #if __STDC_NO_VLA__ == 1
163void EEPROMDebug::printTimestamp()
167 if (_format_timestamp_on)
169 auto const msCount = millis();
171 uint16_t
const milliseconds = msCount % 1000;
172 uint16_t
const allSeconds = msCount / 1000;
174 uint16_t
const hours = allSeconds / 3600;
175 uint16_t
const secondsRemaining = allSeconds % 3600;
177 uint16_t
const minutes = secondsRemaining / 60 ;
178 uint16_t
const seconds = secondsRemaining % 60;
180 snprintf(timestamp,
sizeof(timestamp),
195 snprintf(timestamp,
sizeof(timestamp),
"[ %lu ] ", millis());
198 _debug_output_stream->print(timestamp);
201void EEPROMDebug::printDebugLabel(
int const debug_level)
203 static char const * DEBUG_MODE_STRING[5] =
212 bool is_valid_debug_level = (debug_level >= DBG_ERROR) && (debug_level <= DBG_VERBOSE);
213 if (!is_valid_debug_level)
216 _debug_output_stream->print(DEBUG_MODE_STRING[debug_level]);
219bool EEPROMDebug::shouldPrint(
int const debug_level)
const
221 return ((debug_level >= DBG_ERROR) && (debug_level <= DBG_VERBOSE) && (debug_level <= _debug_level));
int getDebugMessageLevel()
void setDebugMessageLevel(int const debug_level)
void formatTimestampOff()
void setDebugLevel(int const debug_level)
void setDebugOutputStream(Stream *stream)
void print(int const debug_level, const char *fmt,...)
int getDebugLevel() const