Files
espurna/code/espurna/libs/DebugSend.h
Max Prokhorov aac36d9b0c Update debugSend / debugSend_P (#1788)
- chain debugSend_P into basic _debugSend instead of duplicating code, pass va_list between them
- check if new[] call was successful
- when possible, use stack buffer and fallback to heap buffer only when it is more that 64 chars
2019-06-24 00:30:16 +03:00

48 lines
944 B
C

// -----------------------------------------------------------------------------
// printf-like debug methods
// -----------------------------------------------------------------------------
#pragma once
void debugSendImpl(const char*);
void _debugSend(const char * format, va_list args) {
char temp[64];
int len = ets_vsnprintf(temp, sizeof(temp), format, args);
if (len < 64) { debugSendImpl(temp); return; }
auto buffer = new char[len + 1];
ets_vsnprintf(buffer, len + 1, format, args);
debugSendImpl(buffer);
delete[] buffer;
}
void debugSend(const char* format, ...) {
va_list args;
va_start(args, format);
_debugSend(format, args);
va_end(args);
}
void debugSend_P(PGM_P format_P, ...) {
char format[strlen_P(format_P) + 1];
memcpy_P(format, format_P, sizeof(format));
va_list args;
va_start(args, format_P);
_debugSend(format, args);
va_end(args);
}