annotate Bootloader/mchck-cdefs.h @ 412:e7a3be42ae1e

Debug code for interconnect cable debugging
author Jacob Alexander <haata@kiibohd.com>
date Sat, 20 Feb 2016 13:27:49 -0800
parents 66eccdd9ced5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
1 /* Copyright (c) 2011,2012 Simon Schubert <2@0x2c.org>.
341
66eccdd9ced5 Code cleanup
Jacob Alexander <haata@kiibohd.com>
parents: 308
diff changeset
2 * Modifications by Jacob Alexander 2014-2015 <haata@kiibohd.com>
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
3 *
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
4 * This program is free software: you can redistribute it and/or modify
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
6 * the Free Software Foundation, either version 3 of the License, or
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
7 * (at your option) any later version.
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
8 *
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
9 * This program is distributed in the hope that it will be useful,
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
12 * GNU General Public License for more details.
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
13 *
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
16 */
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
17
341
66eccdd9ced5 Code cleanup
Jacob Alexander <haata@kiibohd.com>
parents: 308
diff changeset
18 #pragma once
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
19
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
20 // ----- Compiler Includes -----
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
21
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
22 #include <sys/param.h>
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
23
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
24
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
25
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
26 // ----- Defines & Macros -----
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
27
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
28
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
29 #define _CONCAT(x,y) _CONCAT1(x,y)
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
30 #define _CONCAT1(x,y) x ## y
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
31 #define _STR(a) #a
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
32
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
33 typedef __CHAR16_TYPE__ char16_t;
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
34
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
35 #define __packed __attribute__((__packed__))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
36
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
37 /* From FreeBSD: compile-time asserts */
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
38 #define CTASSERT(x) _Static_assert(x, _STR(x))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
39
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
40 #define CTASSERT_SIZE_BYTE(t, s) CTASSERT(sizeof(t) == (s))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
41 #define CTASSERT_SIZE_BIT(t, s) CTASSERT(sizeof(t) * 8 == (s))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
42
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
43 #define UNION_STRUCT_START(size) \
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
44 union { \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
45 _CONCAT(_CONCAT(uint, size), _t) raw; \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
46 struct { \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
47 /* just to swallow the following semicolon */ \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
48 struct _CONCAT(_CONCAT(__dummy_, __COUNTER__), _t) {}
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
49
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
50 #define UNION_STRUCT_END \
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
51 }; /* struct */ \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
52 }; /* union */
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
53
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
54
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
55 /**
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
56 * From <news:dqgm2f$ije$1@sunnews.cern.ch>,
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
57 * <https://groups.google.com/forum/#!topic/comp.std.c/d-6Mj5Lko_s>
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
58 */
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
59 #define __PP_NARG(...) \
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
60 __PP_NARG_(__0, ## __VA_ARGS__, __PP_RSEQ_N())
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
61 #define __PP_NARG_(...) \
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
62 __PP_ARG_N(__VA_ARGS__)
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
63 #define __PP_ARG_N( \
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
64 _1, _2, _3, _4, _5, _6, _7, _8, _9,_10, \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
65 _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
66 _21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
67 _31,_32,_33,_34,_35,_36,_37,_38,_39,_40, \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
68 _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
69 _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
70 _61,_62,_63,N,...) N
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
71 #define __PP_RSEQ_N() \
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
72 62,61,60, \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
73 59,58,57,56,55,54,53,52,51,50, \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
74 49,48,47,46,45,44,43,42,41,40, \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
75 39,38,37,36,35,34,33,32,31,30, \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
76 29,28,27,26,25,24,23,22,21,20, \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
77 19,18,17,16,15,14,13,12,11,10, \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
78 9,8,7,6,5,4,3,2,1,0
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
79
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
80 /**
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
81 * From <https://github.com/pfultz2/Cloak/wiki/C-Preprocessor-tricks,-tips,-and-idioms>
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
82 */
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
83 #define __CAT(a, ...) __PRIMITIVE_CAT(a, __VA_ARGS__)
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
84 #define __PRIMITIVE_CAT(a, ...) a ## __VA_ARGS__
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
85
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
86 #define __IIF(c) __PRIMITIVE_CAT(__IIF_, c)
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
87 #define __IIF_0(t, ...) __VA_ARGS__
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
88 #define __IIF_1(t, ...) t
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
89
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
90 #define __COMPL(b) __PRIMITIVE_CAT(__COMPL_, b)
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
91 #define __COMPL_0 1
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
92 #define __COMPL_1 0
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
93
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
94 #define __CHECK_N(x, n, ...) n
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
95 #define __CHECK(...) __CHECK_N(__VA_ARGS__, 0,)
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
96 #define __PROBE(x) x, 1,
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
97
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
98 #define __NOT(x) __CHECK(__PRIMITIVE_CAT(__NOT_, x))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
99 #define __NOT_0 __PROBE(~)
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
100
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
101 #define __BOOL(x) __COMPL(__NOT(x))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
102 #define __IF(c) __IIF(__BOOL(c))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
103
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
104 #define __EAT(...)
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
105 #define __EXPAND(...) __VA_ARGS__
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
106 #define __WHEN(c) __IF(c)(__EXPAND, __EAT)
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
107
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
108 #define __HEAD(h, ...) h
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
109 #define __TAIL(h, ...) __VA_ARGS__
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
110
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
111 #define __EVAL(...) __EVAL1(__EVAL1(__EVAL1(__VA_ARGS__)))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
112 #define __EVAL1(...) __EVAL2(__EVAL2(__EVAL2(__VA_ARGS__)))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
113 #define __EVAL2(...) __EVAL3(__EVAL3(__EVAL3(__VA_ARGS__)))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
114 #define __EVAL3(...) __EVAL4(__EVAL4(__EVAL4(__VA_ARGS__)))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
115 #define __EVAL4(...) __EVAL5(__EVAL5(__EVAL5(__VA_ARGS__)))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
116 #define __EVAL5(...) __EVAL6(__EVAL6(__EVAL6(__VA_ARGS__)))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
117 #define __EVAL6(...) __VA_ARGS__
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
118
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
119 #define __EMPTY()
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
120 #define __DEFER(id) id __EMPTY()
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
121 #define __OBSTRUCT(...) __VA_ARGS__ __DEFER(__EMPTY)()
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
122 #define __CAT_ARG(f, a) __OBSTRUCT(f) a
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
123
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
124 #define __REPEAT(...) __EVAL(__REPEAT_(__VA_ARGS__))
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
125 #define __REPEAT_INNER(...) __OBSTRUCT(__REPEAT_INDIRECT) () (__VA_ARGS__)
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
126 #define __REPEAT_INDIRECT() __REPEAT_
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
127 #define __REPEAT_(iter, itermacro, macro, a, ...) \
308
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
128 __OBSTRUCT(macro)(iter, a) \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
129 __WHEN(__PP_NARG(__VA_ARGS__)) \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
130 ( \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
131 __OBSTRUCT(__REPEAT_INDIRECT) () ( \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
132 itermacro(iter, a), itermacro, macro, __VA_ARGS__ \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
133 ) \
ab4515606277 Fix whitespace
Rowan Decker <Smasher816@gmail.com>
parents: 193
diff changeset
134 )
193
b091bb09c55f Adding McHCK DFU Bootloader
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
135