123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- #ifndef SYS_DEBUG_H_INCLUDED
- #define SYS_DEBUG_H_INCLUDED
- #include "hal_debug_interface.h"
- #include "hal_trace_interface.h"
- #include <stdbool.h>
- #include <stdarg.h>
- #ifndef __FILENAME__
- #define __FILENAME__ __FILE__
- #endif
- #ifndef ASSERT
- #ifdef CONFIG_DEBUG
- #define ASSERT(CONDITION_STATEMENT) \
- do \
- { \
- bool LOCAL_CONDITION_CHECK = (CONDITION_STATEMENT); \
- if (LOCAL_CONDITION_CHECK != true) \
- { \
- sys_assert_handler((#CONDITION_STATEMENT), __LINE__, __FILENAME__); \
- } \
- } while (0)
- #else
- #define ASSERT(CONDITION_STATEMENT)
- #endif
- #endif
- #ifndef ASSERT_INFO
- #ifdef CONFIG_DEBUG
- #define ASSERT_INFO(CONDITION_STATEMENT, INFO_FMT, ...) \
- do \
- { \
- bool LOCAL_CONDITION_CHECK = (CONDITION_STATEMENT); \
- if (LOCAL_CONDITION_CHECK != true) \
- { \
- sys_assert_info_handler((#CONDITION_STATEMENT), __LINE__, __FILENAME__, \
- INFO_FMT, __VA_ARGS__); \
- } \
- } while (0)
- #else
- #define ASSERT_INFO(CONDITION_STATEMENT, INFO_FMT, ...)
- #endif
- #endif
- #ifndef ASSERT_STATIC
- #ifdef CONFIG_DEBUG
- #define ASSERT_STATIC(e) do { enum {SA = 1/(e)}; } while (0)
- #else
- #define ASSERT_STATIC(e)
- #endif
- #endif
- #define SYS_ASSERT_HANDLER(CONDITION_STRING) \
- do \
- { \
- sys_assert_handler(CONDITION_STRING, __LINE__, __FILE__); \
- } while (0)
- #ifndef TRACE_PUTS
- #ifdef CONFIG_TRACE
- #define TRACE_PUTS(s) HAL_TRACE_INTERFACE_PUTS(s)
- #else
- #define TRACE_PUTS(s)
- #endif
- #endif
- #ifndef TRACE
- #ifdef CONFIG_TRACE
- #define TRACE(INFO_FMT, ...) sys_trace_handler(INFO_FMT, __VA_ARGS__)
- #else
- #define TRACE(INFO_FMT, ...)
- #endif
- #endif
- extern void sys_assert_handler(
- const char * condition, const int line, const char * file);
- extern void sys_assert_info_handler(
- const char * condition, const int line, const char * file,
- const char * info_fmt, ...);
- extern void sys_trace_handler(const char * fmt, ...);
- #endif
|