| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- /*
- * Copyright (c) 2025, sakumisu
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- #ifndef EC_LOG_H
- #define EC_LOG_H
- #include <stdio.h>
- /* DEBUG level */
- #define EC_DBG_ERROR 0
- #define EC_DBG_WARNING 1
- #define EC_DBG_INFO 2
- #define EC_DBG_LOG 3
- #ifndef EC_DBG_TAG
- #define EC_DBG_TAG "EC"
- #endif
- /*
- * The color for terminal (foreground)
- * BLACK 30
- * RED 31
- * GREEN 32
- * YELLOW 33
- * BLUE 34
- * PURPLE 35
- * CYAN 36
- * WHITE 37
- */
- #define ec_master_dbg_log_line(lvl, color_n, fmt, ...) \
- do { \
- CONFIG_EC_PRINTF("\033[" #color_n "m[" lvl "/ec_master" \
- "] "); \
- CONFIG_EC_PRINTF(fmt, ##__VA_ARGS__); \
- CONFIG_EC_PRINTF("\033[0m"); \
- } while (0)
- #define ec_slave_dbg_log_line(lvl, color_n, fmt, ...) \
- do { \
- CONFIG_EC_PRINTF("\033[" #color_n "m[" lvl "/ec_slave" \
- "] "); \
- CONFIG_EC_PRINTF(fmt, ##__VA_ARGS__); \
- CONFIG_EC_PRINTF("\033[0m"); \
- } while (0)
- #if (CONFIG_EC_DBG_LEVEL >= EC_DBG_LOG)
- #define EC_LOG_DBG(fmt, ...) ec_master_dbg_log_line("D", 0, fmt, ##__VA_ARGS__)
- #else
- #define EC_LOG_DBG(...) \
- { \
- }
- #endif
- #if (CONFIG_EC_DBG_LEVEL >= EC_DBG_INFO)
- #define EC_LOG_INFO(fmt, ...) ec_master_dbg_log_line("I", 32, fmt, ##__VA_ARGS__)
- #else
- #define EC_LOG_INFO(...) \
- { \
- }
- #endif
- #if (CONFIG_EC_DBG_LEVEL >= EC_DBG_WARNING)
- #define EC_LOG_WRN(fmt, ...) ec_master_dbg_log_line("W", 33, fmt, ##__VA_ARGS__)
- #else
- #define EC_LOG_WRN(...) \
- { \
- }
- #endif
- #if (CONFIG_EC_DBG_LEVEL >= EC_DBG_ERROR)
- #define EC_LOG_ERR(fmt, ...) ec_master_dbg_log_line("E", 31, fmt, ##__VA_ARGS__)
- #else
- #define EC_LOG_ERR(...) \
- { \
- }
- #endif
- #if (CONFIG_EC_SLAVE_DBG_LEVEL >= EC_DBG_LOG)
- #define EC_SLAVE_LOG_DBG(fmt, ...) ec_slave_dbg_log_line("D", 0, fmt, ##__VA_ARGS__)
- #else
- #define EC_SLAVE_LOG_DBG(...) \
- { \
- }
- #endif
- #if (CONFIG_EC_SLAVE_DBG_LEVEL >= EC_DBG_INFO)
- #define EC_SLAVE_LOG_INFO(fmt, ...) ec_slave_dbg_log_line("I", 32, fmt, ##__VA_ARGS__)
- #else
- #define EC_SLAVE_LOG_INFO(...) \
- { \
- }
- #endif
- #if (CONFIG_EC_SLAVE_DBG_LEVEL >= EC_DBG_WARNING)
- #define EC_SLAVE_LOG_WRN(fmt, ...) ec_slave_dbg_log_line("W", 33, fmt, ##__VA_ARGS__)
- #else
- #define EC_SLAVE_LOG_WRN(...) \
- { \
- }
- #endif
- #if (CONFIG_EC_SLAVE_DBG_LEVEL >= EC_DBG_ERROR)
- #define EC_SLAVE_LOG_ERR(fmt, ...) ec_slave_dbg_log_line("E", 31, fmt, ##__VA_ARGS__)
- #else
- #define EC_SLAVE_LOG_ERR(...) \
- { \
- }
- #endif
- #define EC_LOG_RAW(...) CONFIG_EC_PRINTF(__VA_ARGS__)
- #ifndef CONFIG_EC_ASSERT_DISABLE
- #define EC_ASSERT(f) \
- do { \
- if (!(f)) { \
- EC_LOG_ERR("ASSERT FAIL [%s] @ %s:%d\r\n", #f, __FILE__, __LINE__); \
- while (1) { \
- } \
- } \
- } while (false)
- #define EC_ASSERT_MSG(f, fmt, ...) \
- do { \
- if (!(f)) { \
- EC_LOG_ERR("ASSERT FAIL [%s] @ %s:%d\r\n", #f, __FILE__, __LINE__); \
- EC_LOG_ERR(fmt "\r\n", ##__VA_ARGS__); \
- while (1) { \
- } \
- } \
- } while (false)
- #else
- #define EC_ASSERT(f) \
- { \
- }
- #define EC_ASSERT_MSG(f, fmt, ...) \
- { \
- }
- #endif
- #define ___is_print(ch) ((unsigned int)((ch) - ' ') < 127u - ' ')
- static inline void ec_hexdump(const void *ptr, uint32_t buflen)
- {
- unsigned char *buf = (unsigned char *)ptr;
- unsigned int i, j;
- (void)buf;
- for (i = 0; i < buflen; i += 16) {
- CONFIG_EC_PRINTF("%08x:", i);
- for (j = 0; j < 16; j++)
- if (i + j < buflen) {
- if ((j % 8) == 0) {
- CONFIG_EC_PRINTF(" ");
- }
- CONFIG_EC_PRINTF("%02X ", buf[i + j]);
- } else
- CONFIG_EC_PRINTF(" ");
- CONFIG_EC_PRINTF(" ");
- for (j = 0; j < 16; j++)
- if (i + j < buflen)
- CONFIG_EC_PRINTF("%c", ___is_print(buf[i + j]) ? buf[i + j] : '.');
- CONFIG_EC_PRINTF("\n");
- }
- }
- #endif /* EC_LOG_H */
|