summaryrefslogtreecommitdiff
path: root/cmd/sbc_harness/config/tusb_config.h
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/sbc_harness/config/tusb_config.h')
-rw-r--r--cmd/sbc_harness/config/tusb_config.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/cmd/sbc_harness/config/tusb_config.h b/cmd/sbc_harness/config/tusb_config.h
index a27c841..0a6d3e4 100644
--- a/cmd/sbc_harness/config/tusb_config.h
+++ b/cmd/sbc_harness/config/tusb_config.h
@@ -36,6 +36,37 @@ extern "C" {
#endif
//--------------------------------------------------------------------
+// Override the default definition of TU_ASSERT() to use our logging
+//--------------------------------------------------------------------
+
+// "magically" select between the 1-arg and 2-args variants, inject a
+// stringified version of `_cond`.
+//
+// Note: Use GNU-C `, ##__VA_ARGS__`, not standard C `__VA_OPT__(,)
+// __VA_ARGS__`; because __VA_OPT__ doesn't handle present-but-empty
+// arguments the way that we need.
+#define TU_ASSERT(_cond, ...) \
+ _GET_3RD_ARG(_cond, ##__VA_ARGS__, \
+ _LIBMISC_TU_ASSERT_2ARGS, _LIBMISC_TU_ASSERT_1ARGS, _dummy) \
+ (_cond, #_cond, ##__VA_ARGS__)
+
+#define _LIBMISC_TU_ASSERT_1ARGS(_cond, _cond_str) \
+ _LIBMISC_TU_ASSERT_2ARGS(_cond, _cond_str, false)
+
+#define _LIBMISC_TU_ASSERT_2ARGS(_cond, _cond_str, _ret) \
+ do { \
+ if ( !(_cond) ) { \
+ _libmisc_tu_mess_failed(_cond_str, \
+ __FILE__, __LINE__, __func__); \
+ TU_BREAKPOINT(); \
+ return _ret; \
+ } \
+ } while(0)
+
+void _libmisc_tu_mess_failed(const char *expr,
+ const char *file, unsigned int line, const char *func);
+
+//--------------------------------------------------------------------
// Configuration: common
//--------------------------------------------------------------------