aboutsummaryrefslogtreecommitdiff
path: root/quantum/logging/debug.h
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/logging/debug.h')
-rw-r--r--quantum/logging/debug.h169
1 files changed, 169 insertions, 0 deletions
diff --git a/quantum/logging/debug.h b/quantum/logging/debug.h
new file mode 100644
index 000000000..841531035
--- /dev/null
+++ b/quantum/logging/debug.h
@@ -0,0 +1,169 @@
1/*
2Copyright 2011 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#pragma once
19
20#include <stdbool.h>
21#include "print.h"
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/*
28 * Debug output control
29 */
30typedef union {
31 struct {
32 bool enable : 1;
33 bool matrix : 1;
34 bool keyboard : 1;
35 bool mouse : 1;
36 uint8_t reserved : 4;
37 };
38 uint8_t raw;
39} debug_config_t;
40
41extern debug_config_t debug_config;
42
43#ifdef __cplusplus
44}
45#endif
46
47/* for backward compatibility */
48#define debug_enable (debug_config.enable)
49#define debug_matrix (debug_config.matrix)
50#define debug_keyboard (debug_config.keyboard)
51#define debug_mouse (debug_config.mouse)
52
53/*
54 * Debug print utils
55 */
56#ifndef NO_DEBUG
57
58# define dprint(s) \
59 do { \
60 if (debug_enable) print(s); \
61 } while (0)
62# define dprintln(s) \
63 do { \
64 if (debug_enable) println(s); \
65 } while (0)
66# define dprintf(fmt, ...) \
67 do { \
68 if (debug_enable) xprintf(fmt, ##__VA_ARGS__); \
69 } while (0)
70# define dmsg(s) dprintf("%s at %d: %s\n", __FILE__, __LINE__, s)
71
72/* Deprecated. DO NOT USE these anymore, use dprintf instead. */
73# define debug(s) \
74 do { \
75 if (debug_enable) print(s); \
76 } while (0)
77# define debugln(s) \
78 do { \
79 if (debug_enable) println(s); \
80 } while (0)
81# define debug_msg(s) \
82 do { \
83 if (debug_enable) { \
84 print(__FILE__); \
85 print(" at "); \
86 print_dec(__LINE__); \
87 print(" in "); \
88 print(": "); \
89 print(s); \
90 } \
91 } while (0)
92# define debug_dec(data) \
93 do { \
94 if (debug_enable) print_dec(data); \
95 } while (0)
96# define debug_decs(data) \
97 do { \
98 if (debug_enable) print_decs(data); \
99 } while (0)
100# define debug_hex4(data) \
101 do { \
102 if (debug_enable) print_hex4(data); \
103 } while (0)
104# define debug_hex8(data) \
105 do { \
106 if (debug_enable) print_hex8(data); \
107 } while (0)
108# define debug_hex16(data) \
109 do { \
110 if (debug_enable) print_hex16(data); \
111 } while (0)
112# define debug_hex32(data) \
113 do { \
114 if (debug_enable) print_hex32(data); \
115 } while (0)
116# define debug_bin8(data) \
117 do { \
118 if (debug_enable) print_bin8(data); \
119 } while (0)
120# define debug_bin16(data) \
121 do { \
122 if (debug_enable) print_bin16(data); \
123 } while (0)
124# define debug_bin32(data) \
125 do { \
126 if (debug_enable) print_bin32(data); \
127 } while (0)
128# define debug_bin_reverse8(data) \
129 do { \
130 if (debug_enable) print_bin_reverse8(data); \
131 } while (0)
132# define debug_bin_reverse16(data) \
133 do { \
134 if (debug_enable) print_bin_reverse16(data); \
135 } while (0)
136# define debug_bin_reverse32(data) \
137 do { \
138 if (debug_enable) print_bin_reverse32(data); \
139 } while (0)
140# define debug_hex(data) debug_hex8(data)
141# define debug_bin(data) debug_bin8(data)
142# define debug_bin_reverse(data) debug_bin8(data)
143
144#else /* NO_DEBUG */
145
146# define dprint(s)
147# define dprintln(s)
148# define dprintf(fmt, ...)
149# define dmsg(s)
150# define debug(s)
151# define debugln(s)
152# define debug_msg(s)
153# define debug_dec(data)
154# define debug_decs(data)
155# define debug_hex4(data)
156# define debug_hex8(data)
157# define debug_hex16(data)
158# define debug_hex32(data)
159# define debug_bin8(data)
160# define debug_bin16(data)
161# define debug_bin32(data)
162# define debug_bin_reverse8(data)
163# define debug_bin_reverse16(data)
164# define debug_bin_reverse32(data)
165# define debug_hex(data)
166# define debug_bin(data)
167# define debug_bin_reverse(data)
168
169#endif /* NO_DEBUG */