Слияние кода завершено, страница обновится автоматически
#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 )