1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/coloz-blinker-library

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
BlinkerDebug.h 2.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
i3water Отправлено 6 лет назад 1036704
#ifndef BLINKER_DEBUG_H
#define BLINKER_DEBUG_H
#if defined(ARDUINO)
#if ARDUINO >= 100
#include <Arduino.h>
#else
#include <WProgram.h>
#endif
#endif
#define BLINKER_DEBUG_F(s) F(s)
#define BLINKER_F(s) F(s)
uint32_t BLINKER_FreeHeap();
class BlinkerDebug
{
enum blinker_debug_level_t
{
_debug_none,
_debug_default,
_debug_all
};
public :
BlinkerDebug()
: isInit(false)
, debug_level(_debug_none)
{}
// BlinkerDebug(Stream& s, blinker_debug_level_t level = _debug_default)
// : debugger(&s)
// , debug_level(level)
// {}
void stream(Stream& s, blinker_debug_level_t level = _debug_default);
void debugAll() { debug_level = _debug_all; }
void time();
void freeheap();
bool isDebug() { return isInit ? debug_level != _debug_none : false; }
bool isDebugAll() { return isInit ? debug_level == _debug_all : false;}
template <typename T>
void print(T arg) { debugger->print(arg); }
template <typename T>
void println(T arg) { debugger->println(arg); }
void println() { debugger->println(); }
private :
bool isInit;
Stream* debugger;
blinker_debug_level_t debug_level;
// uint32_t BLINKER_FreeHeap();
};
extern BlinkerDebug BLINKER_DEBUG;
void BLINKER_LOG_TIME();
void BLINKER_LOG_FreeHeap();
void BLINKER_LOG_FreeHeap_ALL();
extern void BLINKER_LOG_T();
/* BLINKER_LOG_T递归模板 */
template <typename T,typename... Ts>
void BLINKER_LOG_T(T arg,Ts... args)
{
if (BLINKER_DEBUG.isDebug())
{
BLINKER_DEBUG.print(arg);
BLINKER_LOG_T(args...);
}
return;
}
/* BLINKER_LOG可变参数模板 */
template <typename... Ts>
void BLINKER_LOG(Ts... args)
{
BLINKER_LOG_TIME();
BLINKER_LOG_T(args...);
return;
}
/* BLINKER_ERR_LOG可变参数模板 */
template <typename... Ts>
void BLINKER_ERR_LOG(Ts... args)
{
if (BLINKER_DEBUG.isDebug())
{
BLINKER_LOG_TIME();
BLINKER_DEBUG.print(BLINKER_DEBUG_F("ERROR: "));
BLINKER_LOG_T(args...);
}
return;
}
template <typename... Ts>
void BLINKER_LOG_ALL(Ts... args)
{
if (BLINKER_DEBUG.isDebugAll())
{
BLINKER_LOG_TIME();
BLINKER_LOG_T(args...);
}
return;
}
template <typename... Ts>
void BLINKER_ERR_LOG_ALL(Ts... args)
{
if (BLINKER_DEBUG.isDebugAll()) { BLINKER_ERR_LOG(args...); }
return;
}
#endif

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/coloz-blinker-library.git
git@gitlife.ru:oschina-mirror/coloz-blinker-library.git
oschina-mirror
coloz-blinker-library
coloz-blinker-library
master