|
|
|
@ -32,6 +32,22 @@
|
|
|
|
|
|
|
|
|
|
void print_set_sendchar(sendchar_func_t func);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief This macro suppress format warnings for the function that is passed
|
|
|
|
|
* in. The main use-case is that `b` format specifier for printing binary
|
|
|
|
|
* numbers is not in the official C standard. Inclusion is planned for the
|
|
|
|
|
* upcoming C2X C standard, but until then GCC will always output a warning for
|
|
|
|
|
* a unknown format specifier.
|
|
|
|
|
*/
|
|
|
|
|
#define IGNORE_FORMAT_WARNING(func) \
|
|
|
|
|
do { \
|
|
|
|
|
_Pragma("GCC diagnostic push"); \
|
|
|
|
|
_Pragma("GCC diagnostic ignored \"-Wformat\""); \
|
|
|
|
|
_Pragma("GCC diagnostic ignored \"-Wformat-extra-args\""); \
|
|
|
|
|
func; \
|
|
|
|
|
_Pragma("GCC diagnostic pop"); \
|
|
|
|
|
} while (0)
|
|
|
|
|
|
|
|
|
|
#ifndef NO_PRINT
|
|
|
|
|
# if __has_include_next("_print.h")
|
|
|
|
|
# include_next "_print.h" /* Include the platforms print.h */
|
|
|
|
@ -78,25 +94,25 @@ void print_set_sendchar(sendchar_func_t func);
|
|
|
|
|
#define print_hex16(i) xprintf("%04X", i)
|
|
|
|
|
#define print_hex32(i) xprintf("%08lX", i)
|
|
|
|
|
/* binary */
|
|
|
|
|
#define print_bin4(i) xprintf("%04b", i)
|
|
|
|
|
#define print_bin8(i) xprintf("%08b", i)
|
|
|
|
|
#define print_bin16(i) xprintf("%016b", i)
|
|
|
|
|
#define print_bin32(i) xprintf("%032lb", i)
|
|
|
|
|
#define print_bin_reverse8(i) xprintf("%08b", bitrev(i))
|
|
|
|
|
#define print_bin_reverse16(i) xprintf("%016b", bitrev16(i))
|
|
|
|
|
#define print_bin_reverse32(i) xprintf("%032lb", bitrev32(i))
|
|
|
|
|
#define print_bin4(i) IGNORE_FORMAT_WARNING(xprintf("%04b", i))
|
|
|
|
|
#define print_bin8(i) IGNORE_FORMAT_WARNING(xprintf("%08b", i))
|
|
|
|
|
#define print_bin16(i) IGNORE_FORMAT_WARNING(xprintf("%016b", i))
|
|
|
|
|
#define print_bin32(i) IGNORE_FORMAT_WARNING(xprintf("%032lb", i))
|
|
|
|
|
#define print_bin_reverse8(i) IGNORE_FORMAT_WARNING(xprintf("%08b", bitrev(i)))
|
|
|
|
|
#define print_bin_reverse16(i) IGNORE_FORMAT_WARNING(xprintf("%016b", bitrev16(i)))
|
|
|
|
|
#define print_bin_reverse32(i) IGNORE_FORMAT_WARNINGxprintf("%032lb", bitrev32(i)))
|
|
|
|
|
/* print value utility */
|
|
|
|
|
#define print_val_dec(v) xprintf(#v ": %u\n", v)
|
|
|
|
|
#define print_val_decs(v) xprintf(#v ": %d\n", v)
|
|
|
|
|
#define print_val_hex8(v) xprintf(#v ": %X\n", v)
|
|
|
|
|
#define print_val_hex16(v) xprintf(#v ": %02X\n", v)
|
|
|
|
|
#define print_val_hex32(v) xprintf(#v ": %04lX\n", v)
|
|
|
|
|
#define print_val_bin8(v) xprintf(#v ": %08b\n", v)
|
|
|
|
|
#define print_val_bin16(v) xprintf(#v ": %016b\n", v)
|
|
|
|
|
#define print_val_bin32(v) xprintf(#v ": %032lb\n", v)
|
|
|
|
|
#define print_val_bin_reverse8(v) xprintf(#v ": %08b\n", bitrev(v))
|
|
|
|
|
#define print_val_bin_reverse16(v) xprintf(#v ": %016b\n", bitrev16(v))
|
|
|
|
|
#define print_val_bin_reverse32(v) xprintf(#v ": %032lb\n", bitrev32(v))
|
|
|
|
|
#define print_val_bin8(v) IGNORE_FORMAT_WARNING(xprintf(#v ": %08b\n", v))
|
|
|
|
|
#define print_val_bin16(v) IGNORE_FORMAT_WARNING(xprintf(#v ": %016b\n", v))
|
|
|
|
|
#define print_val_bin32(v) IGNORE_FORMAT_WARNING(xprintf(#v ": %032lb\n", v))
|
|
|
|
|
#define print_val_bin_reverse8(v) IGNORE_FORMAT_WARNING(xprintf(#v ": %08b\n", bitrev(v)))
|
|
|
|
|
#define print_val_bin_reverse16(v) IGNORE_FORMAT_WARNING(xprintf(#v ": %016b\n", bitrev16(v)))
|
|
|
|
|
#define print_val_bin_reverse32(v) IGNORE_FORMAT_WARNING(xprintf(#v ": %032lb\n", bitrev32(v)))
|
|
|
|
|
|
|
|
|
|
// User print disables the normal print messages in the body of QMK/TMK code and
|
|
|
|
|
// is meant as a lightweight alternative to NOPRINT. Use it when you only want to do
|
|
|
|
@ -114,22 +130,22 @@ void print_set_sendchar(sendchar_func_t func);
|
|
|
|
|
#define uprint_hex16(i) uprintf("%04X", i)
|
|
|
|
|
#define uprint_hex32(i) uprintf("%08lX", i)
|
|
|
|
|
/* binary */
|
|
|
|
|
#define uprint_bin4(i) uprintf("%04b", i)
|
|
|
|
|
#define uprint_bin8(i) uprintf("%08b", i)
|
|
|
|
|
#define uprint_bin16(i) uprintf("%016b", i)
|
|
|
|
|
#define uprint_bin32(i) uprintf("%032lb", i)
|
|
|
|
|
#define uprint_bin_reverse8(i) uprintf("%08b", bitrev(i))
|
|
|
|
|
#define uprint_bin_reverse16(i) uprintf("%016b", bitrev16(i))
|
|
|
|
|
#define uprint_bin_reverse32(i) uprintf("%032lb", bitrev32(i))
|
|
|
|
|
#define uprint_bin4(i) IGNORE_FORMAT_WARNING(uprintf("%04b", i))
|
|
|
|
|
#define uprint_bin8(i) IGNORE_FORMAT_WARNING(uprintf("%08b", i))
|
|
|
|
|
#define uprint_bin16(i) IGNORE_FORMAT_WARNING(uprintf("%016b", i))
|
|
|
|
|
#define uprint_bin32(i) IGNORE_FORMAT_WARNING(uprintf("%032lb", i))
|
|
|
|
|
#define uprint_bin_reverse8(i) IGNORE_FORMAT_WARNING(uprintf("%08b", bitrev(i)))
|
|
|
|
|
#define uprint_bin_reverse16(i) IGNORE_FORMAT_WARNING(uprintf("%016b", bitrev16(i)))
|
|
|
|
|
#define uprint_bin_reverse32(i) IGNORE_FORMAT_WARNING(uprintf("%032lb", bitrev32(i)))
|
|
|
|
|
/* print value utility */
|
|
|
|
|
#define uprint_val_dec(v) uprintf(#v ": %u\n", v)
|
|
|
|
|
#define uprint_val_decs(v) uprintf(#v ": %d\n", v)
|
|
|
|
|
#define uprint_val_hex8(v) uprintf(#v ": %X\n", v)
|
|
|
|
|
#define uprint_val_hex16(v) uprintf(#v ": %02X\n", v)
|
|
|
|
|
#define uprint_val_hex32(v) uprintf(#v ": %04lX\n", v)
|
|
|
|
|
#define uprint_val_bin8(v) uprintf(#v ": %08b\n", v)
|
|
|
|
|
#define uprint_val_bin16(v) uprintf(#v ": %016b\n", v)
|
|
|
|
|
#define uprint_val_bin32(v) uprintf(#v ": %032lb\n", v)
|
|
|
|
|
#define uprint_val_bin_reverse8(v) uprintf(#v ": %08b\n", bitrev(v))
|
|
|
|
|
#define uprint_val_bin_reverse16(v) uprintf(#v ": %016b\n", bitrev16(v))
|
|
|
|
|
#define uprint_val_bin_reverse32(v) uprintf(#v ": %032lb\n", bitrev32(v))
|
|
|
|
|
#define uprint_val_bin8(v) IGNORE_FORMAT_WARNING(uprintf(#v ": %08b\n", v))
|
|
|
|
|
#define uprint_val_bin16(v) IGNORE_FORMAT_WARNING(uprintf(#v ": %016b\n", v))
|
|
|
|
|
#define uprint_val_bin32(v) IGNORE_FORMAT_WARNING(uprintf(#v ": %032lb\n", v))
|
|
|
|
|
#define uprint_val_bin_reverse8(v) IGNORE_FORMAT_WARNING(uprintf(#v ": %08b\n", bitrev(v)))
|
|
|
|
|
#define uprint_val_bin_reverse16(v) IGNORE_FORMAT_WARNING(uprintf(#v ": %016b\n", bitrev16(v)))
|
|
|
|
|
#define uprint_val_bin_reverse32(v) IGNORE_FORMAT_WARNING(uprintf(#v ": %032lb\n", bitrev32(v)))
|
|
|
|
|