You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#pragma once
#ifndef __NANOLOG_H__
#define __NANOLOG_H__
#include "Arduino.h"
// #define LOG(severity, msg) p msg;
// void p(const char *fmt, ... )
// {
// static char tmp[128]; // resulting string limited to 128 chars.
// va_list args;
// va_start (args, fmt );
// vsnprintf(tmp, 128, fmt, args);
// va_end (args);
// Serial.println(tmp);
// delay(1);
// }
inline void LOG_SPACE_IMPL(); inline void LOG_SET_IMPL(int8_t i); inline void LOG_SET_IMPL(int16_t i); inline void LOG_SET_IMPL(int32_t i); inline void LOG_SET_IMPL(int64_t i); inline void LOG_SET_IMPL(uint8_t i); inline void LOG_SET_IMPL(uint16_t i); inline void LOG_SET_IMPL(uint32_t i); inline void LOG_SET_IMPL(uint64_t i); inline void LOG_SET_IMPL(char c); inline void LOG_SET_IMPL(String s); inline void LOG_SET_IMPL(float f); inline void LOG_SET_IMPL(double d); inline void LOG_NEW_LINE_IMPL();
#ifdef LOG_ENABLED
#define LOG(P) LOG_SET_IMPL(P)
#define LOG_NEW_LINE LOG_NEW_LINE_IMPL();
#define LOG_SPACE LOG_SPACE_IMPL()
#else
#define LOG(P)
#define LOG_NEW_LINE
#define LOG_SPACE
#endif
inline void LOG_INIT() { #if defined (LOG_ENABLED)
Serial.begin(115200); LOG("Initialized: SERIAL_LOG64"); LOG_NEW_LINE; #endif
#if defined (EEPROM_LOG_ENABLED)
LOG_EEPROM_READ;
EEPROM_LOG_ADDR_PTR = EEPROM_LOG_Start_Address; #endif
}
inline void LOG_SPACE_IMPL() { Serial.print(" "); }
inline void LOG_SET_IMPL(int8_t i) { Serial.print(i); LOG_SPACE; }
inline void LOG_SET_IMPL(int16_t i) { Serial.print(i); LOG_SPACE; }
inline void LOG_SET_IMPL(int32_t i) { Serial.print(i); LOG_SPACE; }
inline void LOG_SET_IMPL(uint8_t i) { Serial.print(i); LOG_SPACE; }
inline void LOG_SET_IMPL(uint16_t i) { Serial.print(i); LOG_SPACE; }
inline void LOG_SET_IMPL(uint32_t i) { Serial.print(i); LOG_SPACE; }
inline void LOG_SET_IMPL(char c) { Serial.print(c); LOG_SPACE; }
inline void LOG_SET_IMPL(String s) { Serial.print(s); LOG_SPACE; }
inline void LOG_SET_IMPL(float f) { Serial.print(f); LOG_SPACE; }
inline void LOG_SET_IMPL(double d) { Serial.print(d); LOG_SPACE; }
inline void LOG_NEW_LINE_IMPL() { Serial.println(" "); }
inline void LOG_SET_IMPL(uint64_t n) { unsigned char buf[16 * sizeof(long)];
if (n == 0) { Serial.print((char)'0'); LOG_SPACE; return; }
for (uint16_t i = 0; n > 0; i++) { buf[i] = n % 10; n /= 10; }
for (uint16_t i = 0; i > 0; i--) { Serial.print((char) (buf[i - 1] < 10 ? ('0' + buf[i - 1]) : ('A' + buf[i - 1] - 10))); }
LOG_SPACE; }
inline void LOG_SET_IMPL(int64_t n) { unsigned char buf[16 * sizeof(long)]; ;
if (n == 0) { Serial.print((char)'0'); LOG_SPACE; return; }
if (n < 0) { Serial.print((char)'-'); n = n * (-1); }
for (uint16_t i = 0; n > 0; i++) { buf[i] = n % 10; n /= 10; }
for (uint16_t i = 0; i > 0; i--) { Serial.print((char) (buf[i - 1] < 10 ? ('0' + buf[i - 1]) : ('A' + buf[i - 1] - 10))); }
LOG_SPACE; }
#endif // __NANOLOG_H__
|