First commit
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
# EmbESLogger
|
||||||
|
Simple logger for my ESP32 projects. Currently only being used on CDashDisplay.
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"name": "embeslogger",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"description": "Simple Logging utilities",
|
||||||
|
"keywords": "ESP32-8048S043, ESP32, curses",
|
||||||
|
"repository":
|
||||||
|
{
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/ESilva15/embeslogger"
|
||||||
|
},
|
||||||
|
"authors":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Eduardo Silva",
|
||||||
|
"maintainer": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"frameworks": "*",
|
||||||
|
"platforms": "*"
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
#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