X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=common%2Fdebug.h;h=26472c8fa3980725f8eea07e9568b3ee7eb749da;hb=fa545c87f74833856761572ef631d20accc1d026;hp=cac682703deccc75d23fe5d74e3ab490e3645e82;hpb=e59fb6f908e3e05ed135bf6d004524b0b6bf9119;p=tmk_firmware.git diff --git a/common/debug.h b/common/debug.h index cac6827..26472c8 100644 --- a/common/debug.h +++ b/common/debug.h @@ -18,43 +18,84 @@ along with this program. If not, see . #ifndef DEBUG_H #define DEBUG_H 1 -#include #include "print.h" +/* + * Debug output control + */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef union { + uint8_t raw; + struct { + bool enable:1; + bool matrix:1; + bool keyboard:1; + bool mouse:1; + uint8_t reserved:4; + }; +} debug_config_t; + +extern debug_config_t debug_config; +debug_config_t debug_config __attribute__ ((weak)) = {}; + +#ifdef __cplusplus +} +#endif + +#define debug_enable (debug_config.enable) +#define debug_matrix (debug_config.matrix) +#define debug_keyboard (debug_config.keyboard) +#define debug_mouse (debug_config.mouse) + + + +/* + * Debug print utils + */ #ifndef NO_DEBUG -#define debug(s) do { if (debug_enable) print(s); } while (0) -#define debugln(s) do { if (debug_enable) println(s); } while (0) -#define debug_S(s) do { if (debug_enable) print_S(s); } while (0) -#define debug_P(s) do { if (debug_enable) print_P(s); } while (0) -#define debug_msg(s) do { \ +#define dprint(s) do { if (debug_enable) print(s); } while (0) +#define dprintln(s) do { if (debug_enable) println(s); } while (0) +#define dprintf(fmt, ...) do { if (debug_enable) xprintf(fmt, ##__VA_ARGS__); } while (0) +#define dmsg(s) dprintf("%s at %s: %S\n", __FILE__, __LINE__, PSTR(s)) + +/* Deprecated. DO NOT USE these anymore, use dprintf instead. */ +#define debug(s) do { if (debug_enable) print(s); } while (0) +#define debugln(s) do { if (debug_enable) println(s); } while (0) +#define debug_msg(s) do { \ if (debug_enable) { \ print(__FILE__); print(" at "); print_dec(__LINE__); print(" in "); print(": "); print(s); \ } \ } while (0) -#define debug_dec(data) do { if (debug_enable) print_dec(data); } while (0) -#define debug_decs(data) do { if (debug_enable) print_decs(data); } while (0) -#define debug_hex4(data) do { if (debug_enable) print_hex4(data); } while (0) -#define debug_hex8(data) do { if (debug_enable) print_hex8(data); } while (0) -#define debug_hex16(data) do { if (debug_enable) print_hex16(data); } while (0) -#define debug_hex32(data) do { if (debug_enable) print_hex32(data); } while (0) -#define debug_bin8(data) do { if (debug_enable) print_bin8(data); } while (0) -#define debug_bin16(data) do { if (debug_enable) print_bin16(data); } while (0) -#define debug_bin32(data) do { if (debug_enable) print_bin32(data); } while (0) -#define debug_bin_reverse8(data) do { if (debug_enable) print_bin_reverse8(data); } while (0) -#define debug_bin_reverse16(data) do { if (debug_enable) print_bin_reverse16(data); } while (0) -#define debug_bin_reverse32(data) do { if (debug_enable) print_bin_reverse32(data); } while (0) -#define debug_hex(data) debug_hex8(data) -#define debug_bin(data) debug_bin8(data) -#define debug_bin_reverse(data) debug_bin8(data) +#define debug_dec(data) do { if (debug_enable) print_dec(data); } while (0) +#define debug_decs(data) do { if (debug_enable) print_decs(data); } while (0) +#define debug_hex4(data) do { if (debug_enable) print_hex4(data); } while (0) +#define debug_hex8(data) do { if (debug_enable) print_hex8(data); } while (0) +#define debug_hex16(data) do { if (debug_enable) print_hex16(data); } while (0) +#define debug_hex32(data) do { if (debug_enable) print_hex32(data); } while (0) +#define debug_bin8(data) do { if (debug_enable) print_bin8(data); } while (0) +#define debug_bin16(data) do { if (debug_enable) print_bin16(data); } while (0) +#define debug_bin32(data) do { if (debug_enable) print_bin32(data); } while (0) +#define debug_bin_reverse8(data) do { if (debug_enable) print_bin_reverse8(data); } while (0) +#define debug_bin_reverse16(data) do { if (debug_enable) print_bin_reverse16(data); } while (0) +#define debug_bin_reverse32(data) do { if (debug_enable) print_bin_reverse32(data); } while (0) +#define debug_hex(data) debug_hex8(data) +#define debug_bin(data) debug_bin8(data) +#define debug_bin_reverse(data) debug_bin8(data) #else +/* NO_DEBUG */ +#define dprint(s) +#define dprintln(s) +#define dprintf(fmt, ...) +#define dmsg(s) #define debug(s) #define debugln(s) -#define debug_S(s) -#define debug_P(s) #define debug_msg(s) #define debug_dec(data) #define debug_decs(data) @@ -74,34 +115,4 @@ along with this program. If not, see . #endif - -#ifdef __cplusplus -extern "C" { -#endif - - -/* NOTE: Not portable. Bit field order depends on implementation */ -typedef union { - uint8_t raw; - struct { - bool enable:1; - bool matrix:1; - bool keyboard:1; - bool mouse:1; - uint8_t reserved:4; - }; -} debug_config_t; -debug_config_t debug_config; - -/* for backward compatibility */ -#define debug_enable (debug_config.enable) -#define debug_matrix (debug_config.matrix) -#define debug_keyboard (debug_config.keyboard) -#define debug_mouse (debug_config.mouse) - - -#ifdef __cplusplus -} -#endif - #endif