104 lines
3.2 KiB
C
104 lines
3.2 KiB
C
/* ----------------------------------------------------------------------------
|
|
* dbglog.h - A set of macros that cleans up code that needs to produce debug
|
|
* or log information.
|
|
*
|
|
* Many embedded systems still put a premium on code space and therefore need
|
|
* a way to conditionally compile in debug code. Yes, it can lead to code that
|
|
* runs differently depending on whether the debug code is cmpiled in or not
|
|
* but you need to be able to evaluate the tradeoff.
|
|
*
|
|
* See copyright notice in LICENSE.TXT
|
|
* ----------------------------------------------------------------------------
|
|
* NOTE WELL that this file may be included multiple times - this allows you
|
|
* to set the trace level #define DBGLOG_LEVEL x
|
|
*
|
|
* To update which of the DBGLOG macros are compiled in, you must redefine the
|
|
* DBGLOG_LEVEL macro and the inlcude the dbglog.h file again, like this:
|
|
*
|
|
* #undef DBGLOG_LEVEL
|
|
* #define DBGLOG_LEVEL 6
|
|
* #include "dbglog/dbglog.txt"
|
|
*
|
|
* To handle multiple inclusion, we need to first undefine any macros we define
|
|
* so that the compiler does not warn us that we are changing a macro.
|
|
* ----------------------------------------------------------------------------
|
|
* The DBGLOG_LEVEL and DBGLOG_FUNCTION should be defined BEFORE this
|
|
* file is included or else the following defaults are used:
|
|
*
|
|
* #define DBGLOG_LEVEL 0
|
|
* #define DBGLOG_FUNCTION printf
|
|
* ----------------------------------------------------------------------------
|
|
* There are macros to handle the following decreasing levels of detail:
|
|
*
|
|
* 6 = TRACE
|
|
* 5 = DEBUG
|
|
* 4 = CRITICAL
|
|
* 3 = ERROR
|
|
* 2 = WARNING
|
|
* 1 = INFO
|
|
* 0 = FORCE - The DBGLOG_FUNCTION is always compiled in and is called only when
|
|
* the first parameter to the macro is non-0
|
|
* ----------------------------------------------------------------------------
|
|
*/
|
|
#ifndef __DBGLOG_H__
|
|
#define __DBGLOG_H__
|
|
|
|
#include "hal_trace.h"
|
|
|
|
#undef DBGLOG_TRACE
|
|
#undef DBGLOG_DEBUG
|
|
#undef DBGLOG_CRITICAL
|
|
#undef DBGLOG_ERROR
|
|
#undef DBGLOG_WARNING
|
|
#undef DBGLOG_INFO
|
|
#undef DBGLOG_FORCE
|
|
|
|
#define DBGLOG_LEVEL 3
|
|
|
|
#ifndef DBGLOG_LEVEL
|
|
# define DBGLOG_LEVEL 0
|
|
#endif
|
|
|
|
#ifndef DBGLOG_FUNCTION
|
|
# define DBGLOG_FUNCTION TRACE
|
|
#endif
|
|
|
|
/* ------------------------------------------------------------------------- */
|
|
|
|
#if DBGLOG_LEVEL >= 6
|
|
# define DBGLOG_TRACE(num,format, ...) DBGLOG_FUNCTION(num,format, ## __VA_ARGS__)
|
|
#else
|
|
# define DBGLOG_TRACE(format, ...)
|
|
#endif
|
|
|
|
#if DBGLOG_LEVEL >= 5
|
|
# define DBGLOG_DEBUG(num,format, ...) DBGLOG_FUNCTION(num,format, ## __VA_ARGS__)
|
|
#else
|
|
# define DBGLOG_DEBUG(format, ...)
|
|
#endif
|
|
|
|
#if DBGLOG_LEVEL >= 4
|
|
# define DBGLOG_CRITICAL(num,format, ...) DBGLOG_FUNCTION(num,format, ## __VA_ARGS__)
|
|
#else
|
|
# define DBGLOG_CRITICAL(format, ...)
|
|
#endif
|
|
|
|
#if DBGLOG_LEVEL >= 3
|
|
# define DBGLOG_ERROR(num,format, ...) DBGLOG_FUNCTION(num,format, ## __VA_ARGS__)
|
|
#else
|
|
# define DBGLOG_ERROR(format, ...)
|
|
#endif
|
|
|
|
#if DBGLOG_LEVEL >= 2
|
|
# define DBGLOG_WARNING(num,format, ...) DBGLOG_FUNCTION(num,format, ## __VA_ARGS__)
|
|
#else
|
|
# define DBGLOG_WARNING(format, ...)
|
|
#endif
|
|
|
|
#if DBGLOG_LEVEL >= 1
|
|
# define DBGLOG_INFO(num,format, ...) DBGLOG_FUNCTION(num,format, ## __VA_ARGS__)
|
|
#else
|
|
# define DBGLOG_INFO(format, ...)
|
|
#endif
|
|
|
|
#endif |