Added a logger thingy
This commit is contained in:
@@ -17,6 +17,7 @@ build_flags = -Iinclude/
|
||||
-DBOARD_HAS_PSRAM
|
||||
-mfix-esp32-psram-cache-issue
|
||||
-std=gnu++17
|
||||
-DLOG_LEVEL=LOG_LEVEL_TRACE
|
||||
|
||||
build_unflags = -std=gnu++11
|
||||
# -Ilib/u8g2/csrc
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
#include "logger.h"
|
||||
#include "HardwareSerial.h"
|
||||
|
||||
namespace Logger {
|
||||
inline HardwareSerial& out() {
|
||||
return Serial2;
|
||||
}
|
||||
|
||||
void WritePrefix(LogLevel lvl) {
|
||||
switch (lvl) {
|
||||
case Error: out().print(F("\r[ERR] ")); break;
|
||||
case Warn: out().print(F("\r[WRN] ")); break;
|
||||
case Info: out().print(F("\r[INF] ")); break;
|
||||
case Debug: out().print(F("\r[DBG] ")); break;
|
||||
case Trace: out().print(F("\r[TRC] ")); break;
|
||||
}
|
||||
}
|
||||
|
||||
void VPrintf(const char* fmt, va_list args) {
|
||||
char buffer[128];
|
||||
vsnprintf(buffer, sizeof(buffer), fmt, args);
|
||||
out().print(buffer);
|
||||
}
|
||||
|
||||
void Printf(const char* fmt, ...) {
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
VPrintf(fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
void Printf(const __FlashStringHelper* fmt, ...) {
|
||||
char buffer[128];
|
||||
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
vsnprintf_P(buffer, sizeof(buffer),
|
||||
reinterpret_cast<const char*>(fmt), args);
|
||||
va_end(args);
|
||||
|
||||
out().print(buffer);
|
||||
}
|
||||
|
||||
void Initialize(int8_t rx, int8_t tx) {
|
||||
Serial2.begin(115200, SERIAL_8N1, rx, tx);
|
||||
Serial2.flush();
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,82 @@
|
||||
#ifndef __LOGGER__
|
||||
#define __LOGGER__
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <cstdint>
|
||||
|
||||
#define LOG_LEVEL_ERROR 0
|
||||
#define LOG_LEVEL_WARN 1
|
||||
#define LOG_LEVEL_INFO 2
|
||||
#define LOG_LEVEL_DEBUG 3
|
||||
#define LOG_LEVEL_TRACE 4
|
||||
|
||||
#define LOG_ENABLED(lvl) ((lvl) <= LOG_LEVEL)
|
||||
|
||||
#if LOG_ENABLED(LOG_LEVEL_ERROR)
|
||||
#define LOG_ERROR(fmt, ...) \
|
||||
do { \
|
||||
Logger::WritePrefix(Logger::Error); \
|
||||
Logger::Printf(fmt, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
#else
|
||||
#define LOG_ERROR(...) do {} while (0)
|
||||
#endif
|
||||
|
||||
#if LOG_ENABLED(LOG_LEVEL_WARN)
|
||||
#define LOG_WARN(fmt, ...) \
|
||||
do { \
|
||||
Logger::WritePrefix(Logger::Warn); \
|
||||
Logger::Printf(fmt, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
#else
|
||||
#define LOG_WARN(...) do {} while (0)
|
||||
#endif
|
||||
|
||||
#if LOG_ENABLED(LOG_LEVEL_INFO)
|
||||
#define LOG_INFO(fmt, ...) \
|
||||
do { \
|
||||
Logger::WritePrefix(Logger::Info); \
|
||||
Logger::Printf(fmt, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
#else
|
||||
#define LOG_INFO(...) do {} while (0)
|
||||
#endif
|
||||
|
||||
#if LOG_ENABLED(LOG_LEVEL_DEBUG)
|
||||
#define LOG_DEBUG(fmt, ...) \
|
||||
do { \
|
||||
Logger::WritePrefix(Logger::Debug); \
|
||||
Logger::Printf(fmt, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
#else
|
||||
#define LOG_DEBUG(...) do {} while (0)
|
||||
#endif
|
||||
|
||||
#if LOG_ENABLED(LOG_LEVEL_TRACE)
|
||||
#define LOG_TRACE(fmt, ...) \
|
||||
do { \
|
||||
Logger::WritePrefix(Logger::Trace); \
|
||||
Logger::Printf(fmt, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
#else
|
||||
#define LOG_TRACE(...) do {} while (0)
|
||||
#endif
|
||||
|
||||
namespace Logger {
|
||||
enum LogLevel : uint8_t {
|
||||
Error = LOG_LEVEL_ERROR,
|
||||
Warn = LOG_LEVEL_WARN,
|
||||
Info = LOG_LEVEL_INFO,
|
||||
Debug = LOG_LEVEL_DEBUG,
|
||||
Trace = LOG_LEVEL_TRACE
|
||||
};
|
||||
|
||||
void Initialize(int8_t rx, int8_t tx);
|
||||
|
||||
void WritePrefix(LogLevel lvl);
|
||||
void VPrintf(const char* fmt, va_list args);
|
||||
void Printf(const char* fmt, ...);
|
||||
void Printf(const __FlashStringHelper* fmt, ...);
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user