hideakitai
1/26/2017 - 4:01 AM

debug functions

debug functions

#pragma once
#include <stdarg.h>
#include <Arduino.h>

#if defined(TEENSYDUINO) || defined(__AVR__) || defined(__MBED__)
#ifdef NDEBUG

namespace Debug
{
    void Assert(bool b, const char* file, int line, const char* func, const char* expr)
    {
        while (!b)
        {
            Serial.printf("[Notice] %s:%d:%s() : " s "\n", file, line, func, expr);
            // abort();
        }
    }
}

#ifndef assert
#define assert(b) ((void)0)
#endif
#define LOG_VERBOSE(s,...) ((void)0)
#define LOG_NOTICE(s) ((void)0)
#define LOG_WARNING(s,...) ((void)0)
#define LOG_ERROR(s,...) ((void)0)

#else // NDEBUG

#ifndef assert
#define assert(b) Debug::Assert((b), __FILE__, __LINE__, __func__, #b)
#endif
#define LOG_VERBOSE(s,...) Serial.printf("[Verbose] %s:%d:%s() : " s "\n", __FILE__, __LINE__, __func__, ##__VA_ARGS__)
#define LOG_NOTICE(s,...) Serial.printf("[Notice] %s:%d:%s() : " s "\n", __FILE__, __LINE__, __func__, ##__VA_ARGS__)
#define LOG_WARNING(s,...) Serial.printf("[Warning] %s:%d:%s() : " s "\n", __FILE__, __LINE__, __func__, ##__VA_ARGS__)
#define LOG_ERROR(s,...) Serial.printf("[Error] %s:%d:%s() : " s "\n", __FILE__, __LINE__, __func__, ##__VA_ARGS__)

#endif // #ifdef NDEBUG
#endif // #if defined(TEENSYDUINO) || defined(__AVR__) || defined(__MBED__)