debug.h revision 1.8.10.2 1 /* $NetBSD: debug.h,v 1.8.10.2 2010/08/11 22:52:03 yamt Exp $ */
2
3 /*-
4 * Copyright (c) 1999-2002 The NetBSD Foundation, Inc.
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to The NetBSD Foundation
8 * by UCHIYAMA Yasushi.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 */
31
32 /*
33 * debug version exports all symbols.
34 */
35 #ifdef DEBUG
36 #define STATIC
37 #else
38 #define STATIC static
39 #endif
40
41 /*
42 * printf control
43 * sample:
44 * #ifdef FOO_DEBUG
45 * #define DPRINTF_ENABLE
46 * #define DPRINTF_DEBUG foo_debug
47 * #define DPRINTF_LEVEL 2
48 * #endif
49 */
50 #ifdef USE_HPC_DPRINTF
51
52 #ifdef DPRINTF_ENABLE
53
54 #ifndef DPRINTF_DEBUG
55 #error "specify unique debug variable"
56 #endif
57
58 #ifndef DPRINTF_LEVEL
59 #define DPRINTF_LEVEL 1
60 #endif
61
62 int DPRINTF_DEBUG = DPRINTF_LEVEL;
63 #endif /* DPRINTF_ENABLE */
64
65
66 #ifdef __DPRINTF_EXT
67 /*
68 * printf with function name prepended
69 */
70
71 #define PRINTF(fmt, args...) do { \
72 printf("%s: " fmt, __func__ , ##args); \
73 } while (/* CONSTCOND */0)
74
75 #ifdef DPRINTF_ENABLE
76
77 #define DPRINTF(fmt, args...) do { \
78 if (DPRINTF_DEBUG) \
79 PRINTF(fmt, ##args); \
80 } while (/* CONSTCOND */0)
81
82 #define _DPRINTF(fmt, args...) do { \
83 if (DPRINTF_DEBUG) \
84 printf(fmt, ##args); \
85 } while (/* CONSTCOND */0)
86
87 #define DPRINTFN(n, fmt, args...) do { \
88 if (DPRINTF_DEBUG > (n)) \
89 PRINTF(fmt, ##args); \
90 } while (/* CONSTCOND */0)
91
92 #define _DPRINTFN(n, fmt, args...) do { \
93 if (DPRINTF_DEBUG > (n)) \
94 printf(fmt, ##args); \
95 } while (/* CONSTCOND */0)
96
97 #else /* !DPRINTF_ENABLE */
98 #define DPRINTF(args...) do {} while (/* CONSTCOND */ 0)
99 #define _DPRINTF(args...) do {} while (/* CONSTCOND */ 0)
100 #define DPRINTFN(n, args...) do {} while (/* CONSTCOND */ 0)
101 #define _DPRINTFN(n, args...) do {} while (/* CONSTCOND */ 0)
102 #endif /* !DPRINTF_ENABLE */
103
104 #else /* !__DPRINTF_EXT */
105 /*
106 * normal debug printf
107 */
108
109 #ifdef DPRINTF_ENABLE
110
111 #define DPRINTF(arg) do { \
112 if (DPRINTF_DEBUG) \
113 printf arg; \
114 } while (/* CONSTCOND */0)
115
116 #define DPRINTFN(n, arg) do { \
117 if (DPRINTF_DEBUG > (n)) \
118 printf arg; \
119 } while (/* CONSTCOND */0)
120
121 #else /* !DPRINTF_ENABLE */
122 #define DPRINTF(arg) do {} while (/* CONSTCOND */ 0)
123 #define DPRINTFN(n, arg) do {} while (/* CONSTCOND */ 0)
124 #endif /* !DPRINTF_ENABLE */
125
126 #endif /* !__DPRINT_EXT */
127 #endif /* USE_HPC_DPRINTF */
128
129
130 /*
131 * debug print utility
132 */
133 #define DBG_BIT_PRINT_COUNT (1 << 0)
134 #define DBG_BIT_PRINT_QUIET (1 << 1)
135
136 void __dbg_bit_print(uint32_t, int, int, int, const char *, int);
137
138 #define dbg_bit_print(a) do { \
139 __dbg_bit_print((a), sizeof(typeof(a)), 0, 0, NULL, \
140 DBG_BIT_PRINT_COUNT); \
141 } while (/* CONSTCOND */0)
142
143 #define dbg_bit_print_msg(a, m) do { \
144 __dbg_bit_print((a), sizeof(typeof(a)), 0, 0, (m), \
145 DBG_BIT_PRINT_COUNT); \
146 } while (/* CONSTCOND */0)
147
148 #define dbg_bit_display(a) do { \
149 __dbg_bit_print((a), sizeof(typeof(a)), 0, 0, NULL, \
150 DBG_BIT_PRINT_QUIET); \
151 } while (/* CONSTCOND */0)
152
153 void dbg_bitmask_print(uint32_t, uint32_t, const char *);
154 void dbg_draw_line(int);
155 void dbg_banner_title(const char *, size_t);
156 void dbg_banner_line(void);
157
158 #define dbg_banner_function() do { \
159 dbg_banner_title(__func__, sizeof(__func__) - 1); \
160 } while (/* CONSTCOND */ 0)
161
162 /* HPC_DEBUG_LCD */
163 #define RGB565_BLACK 0x0000
164 #define RGB565_RED 0xf800
165 #define RGB565_GREEN 0x07e0
166 #define RGB565_YELLOW 0xffe0
167 #define RGB565_BLUE 0x001f
168 #define RGB565_MAGENTA 0xf81f
169 #define RGB565_CYAN 0x07ff
170 #define RGB565_WHITE 0xffff
171
172 void dbg_lcd_test(void);
173