123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /*
- * Copyright (c) 2022, sakumisu
- *
- * SPDX-License-Identifier: Apache-2.0
- */
- #ifndef USB_LOG_H
- #define USB_LOG_H
- #include <stdio.h>
- /* DEBUG level */
- #define USB_DBG_ERROR 0
- #define USB_DBG_WARNING 1
- #define USB_DBG_INFO 2
- #define USB_DBG_LOG 3
- #ifndef USB_DBG_TAG
- #define USB_DBG_TAG "USB"
- #endif
- /*
- * The color for terminal (foreground)
- * BLACK 30
- * RED 31
- * GREEN 32
- * YELLOW 33
- * BLUE 34
- * PURPLE 35
- * CYAN 36
- * WHITE 37
- */
- #ifdef CONFIG_USB_PRINTF_COLOR_ENABLE
- #define _USB_DBG_COLOR(n) CONFIG_USB_PRINTF("\033[" #n "m")
- #define _USB_DBG_LOG_HDR(lvl_name, color_n) \
- CONFIG_USB_PRINTF("\033[" #color_n "m[" lvl_name "/" USB_DBG_TAG "] ")
- #define _USB_DBG_LOG_X_END \
- CONFIG_USB_PRINTF("\033[0m")
- #else
- #define _USB_DBG_COLOR(n)
- #define _USB_DBG_LOG_HDR(lvl_name, color_n) \
- CONFIG_USB_PRINTF("[" lvl_name "/" USB_DBG_TAG "] ")
- #define _USB_DBG_LOG_X_END
- #endif
- #define usb_dbg_log_line(lvl, color_n, fmt, ...) \
- do { \
- _USB_DBG_LOG_HDR(lvl, color_n); \
- CONFIG_USB_PRINTF(fmt, ##__VA_ARGS__); \
- _USB_DBG_LOG_X_END; \
- } while (0)
- #if (CONFIG_USB_DBG_LEVEL >= USB_DBG_LOG)
- #define USB_LOG_DBG(fmt, ...) usb_dbg_log_line("D", 0, fmt, ##__VA_ARGS__)
- #else
- #define USB_LOG_DBG(...) {}
- #endif
- #if (CONFIG_USB_DBG_LEVEL >= USB_DBG_INFO)
- #define USB_LOG_INFO(fmt, ...) usb_dbg_log_line("I", 32, fmt, ##__VA_ARGS__)
- #else
- #define USB_LOG_INFO(...) {}
- #endif
- #if (CONFIG_USB_DBG_LEVEL >= USB_DBG_WARNING)
- #define USB_LOG_WRN(fmt, ...) usb_dbg_log_line("W", 33, fmt, ##__VA_ARGS__)
- #else
- #define USB_LOG_WRN(...) {}
- #endif
- #if (CONFIG_USB_DBG_LEVEL >= USB_DBG_ERROR)
- #define USB_LOG_ERR(fmt, ...) usb_dbg_log_line("E", 31, fmt, ##__VA_ARGS__)
- #else
- #define USB_LOG_ERR(...) {}
- #endif
- #define USB_LOG_RAW(...) CONFIG_USB_PRINTF(__VA_ARGS__)
- void usb_assert(const char *filename, int linenum);
- #define USB_ASSERT(f) \
- do { \
- if (!(f)) \
- usb_assert(__FILE__, __LINE__); \
- } while (0)
- #define ___is_print(ch) ((unsigned int)((ch) - ' ') < 127u - ' ')
- static inline void usb_hexdump(const void *ptr, uint32_t buflen)
- {
- unsigned char *buf = (unsigned char *)ptr;
- uint32_t i, j;
- for (i = 0; i < buflen; i += 16) {
- CONFIG_USB_PRINTF("%08X:", i);
- for (j = 0; j < 16; j++)
- if (i + j < buflen) {
- if ((j % 8) == 0) {
- CONFIG_USB_PRINTF(" ");
- }
- CONFIG_USB_PRINTF("%02X ", buf[i + j]);
- } else
- CONFIG_USB_PRINTF(" ");
- CONFIG_USB_PRINTF(" ");
- for (j = 0; j < 16; j++)
- if (i + j < buflen)
- CONFIG_USB_PRINTF("%c", ___is_print(buf[i + j]) ? buf[i + j] : '.');
- CONFIG_USB_PRINTF("\n");
- }
- }
- #endif /* USB_LOG_H */
|