Add UF2 bootloader for USB firmware flashing

Vendored and trimmed from microsoft/uf2-samdx1, adapted to the actual
ATSAMD21G17D (128 KiB flash / 16 KiB RAM), fixing the flash/RAM-size
mismatch that the previously commented-out SAM-BA bootloader target
had (it assumed a 256 KiB SAMD21G18A). Builds as a standalone
PlatformIO environment (bootloader/platformio.ini), no python2/make
dependency. Compiles clean, fits in the 8 KiB bootloader region
(7292/8192 bytes). Not yet flashed/verified on real hardware.
This commit is contained in:
cjjohn 2026-08-03 20:56:58 +02:00
parent ce5db617a1
commit de52b57041
143 changed files with 69119 additions and 0 deletions

View file

@ -0,0 +1,581 @@
/* ----------------------------------------------------------------------------
* SAM Software Package License
* ----------------------------------------------------------------------------
* Copyright (c) 2011-2014, Atmel Corporation
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following condition is met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
*
* Atmel's name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ----------------------------------------------------------------------------
*/
#ifndef _MRECURSION_H_
#define _MRECURSION_H_
/**
* \defgroup group_sam0_utils_mrecursion Preprocessor - Macro Recursion
*
* \ingroup group_sam0_utils
*
* @{
*/
#include "preprocessor.h"
#define DEC_256 255
#define DEC_255 254
#define DEC_254 253
#define DEC_253 252
#define DEC_252 251
#define DEC_251 250
#define DEC_250 249
#define DEC_249 248
#define DEC_248 247
#define DEC_247 246
#define DEC_246 245
#define DEC_245 244
#define DEC_244 243
#define DEC_243 242
#define DEC_242 241
#define DEC_241 240
#define DEC_240 239
#define DEC_239 238
#define DEC_238 237
#define DEC_237 236
#define DEC_236 235
#define DEC_235 234
#define DEC_234 233
#define DEC_233 232
#define DEC_232 231
#define DEC_231 230
#define DEC_230 229
#define DEC_229 228
#define DEC_228 227
#define DEC_227 226
#define DEC_226 225
#define DEC_225 224
#define DEC_224 223
#define DEC_223 222
#define DEC_222 221
#define DEC_221 220
#define DEC_220 219
#define DEC_219 218
#define DEC_218 217
#define DEC_217 216
#define DEC_216 215
#define DEC_215 214
#define DEC_214 213
#define DEC_213 212
#define DEC_212 211
#define DEC_211 210
#define DEC_210 209
#define DEC_209 208
#define DEC_208 207
#define DEC_207 206
#define DEC_206 205
#define DEC_205 204
#define DEC_204 203
#define DEC_203 202
#define DEC_202 201
#define DEC_201 200
#define DEC_200 199
#define DEC_199 198
#define DEC_198 197
#define DEC_197 196
#define DEC_196 195
#define DEC_195 194
#define DEC_194 193
#define DEC_193 192
#define DEC_192 191
#define DEC_191 190
#define DEC_190 189
#define DEC_189 188
#define DEC_188 187
#define DEC_187 186
#define DEC_186 185
#define DEC_185 184
#define DEC_184 183
#define DEC_183 182
#define DEC_182 181
#define DEC_181 180
#define DEC_180 179
#define DEC_179 178
#define DEC_178 177
#define DEC_177 176
#define DEC_176 175
#define DEC_175 174
#define DEC_174 173
#define DEC_173 172
#define DEC_172 171
#define DEC_171 170
#define DEC_170 169
#define DEC_169 168
#define DEC_168 167
#define DEC_167 166
#define DEC_166 165
#define DEC_165 164
#define DEC_164 163
#define DEC_163 162
#define DEC_162 161
#define DEC_161 160
#define DEC_160 159
#define DEC_159 158
#define DEC_158 157
#define DEC_157 156
#define DEC_156 155
#define DEC_155 154
#define DEC_154 153
#define DEC_153 152
#define DEC_152 151
#define DEC_151 150
#define DEC_150 149
#define DEC_149 148
#define DEC_148 147
#define DEC_147 146
#define DEC_146 145
#define DEC_145 144
#define DEC_144 143
#define DEC_143 142
#define DEC_142 141
#define DEC_141 140
#define DEC_140 139
#define DEC_139 138
#define DEC_138 137
#define DEC_137 136
#define DEC_136 135
#define DEC_135 134
#define DEC_134 133
#define DEC_133 132
#define DEC_132 131
#define DEC_131 130
#define DEC_130 129
#define DEC_129 128
#define DEC_128 127
#define DEC_127 126
#define DEC_126 125
#define DEC_125 124
#define DEC_124 123
#define DEC_123 122
#define DEC_122 121
#define DEC_121 120
#define DEC_120 119
#define DEC_119 118
#define DEC_118 117
#define DEC_117 116
#define DEC_116 115
#define DEC_115 114
#define DEC_114 113
#define DEC_113 112
#define DEC_112 111
#define DEC_111 110
#define DEC_110 109
#define DEC_109 108
#define DEC_108 107
#define DEC_107 106
#define DEC_106 105
#define DEC_105 104
#define DEC_104 103
#define DEC_103 102
#define DEC_102 101
#define DEC_101 100
#define DEC_100 99
#define DEC_99 98
#define DEC_98 97
#define DEC_97 96
#define DEC_96 95
#define DEC_95 94
#define DEC_94 93
#define DEC_93 92
#define DEC_92 91
#define DEC_91 90
#define DEC_90 89
#define DEC_89 88
#define DEC_88 87
#define DEC_87 86
#define DEC_86 85
#define DEC_85 84
#define DEC_84 83
#define DEC_83 82
#define DEC_82 81
#define DEC_81 80
#define DEC_80 79
#define DEC_79 78
#define DEC_78 77
#define DEC_77 76
#define DEC_76 75
#define DEC_75 74
#define DEC_74 73
#define DEC_73 72
#define DEC_72 71
#define DEC_71 70
#define DEC_70 69
#define DEC_69 68
#define DEC_68 67
#define DEC_67 66
#define DEC_66 65
#define DEC_65 64
#define DEC_64 63
#define DEC_63 62
#define DEC_62 61
#define DEC_61 60
#define DEC_60 59
#define DEC_59 58
#define DEC_58 57
#define DEC_57 56
#define DEC_56 55
#define DEC_55 54
#define DEC_54 53
#define DEC_53 52
#define DEC_52 51
#define DEC_51 50
#define DEC_50 49
#define DEC_49 48
#define DEC_48 47
#define DEC_47 46
#define DEC_46 45
#define DEC_45 44
#define DEC_44 43
#define DEC_43 42
#define DEC_42 41
#define DEC_41 40
#define DEC_40 39
#define DEC_39 38
#define DEC_38 37
#define DEC_37 36
#define DEC_36 35
#define DEC_35 34
#define DEC_34 33
#define DEC_33 32
#define DEC_32 31
#define DEC_31 30
#define DEC_30 29
#define DEC_29 28
#define DEC_28 27
#define DEC_27 26
#define DEC_26 25
#define DEC_25 24
#define DEC_24 23
#define DEC_23 22
#define DEC_22 21
#define DEC_21 20
#define DEC_20 19
#define DEC_19 18
#define DEC_18 17
#define DEC_17 16
#define DEC_16 15
#define DEC_15 14
#define DEC_14 13
#define DEC_13 12
#define DEC_12 11
#define DEC_11 10
#define DEC_10 9
#define DEC_9 8
#define DEC_8 7
#define DEC_7 6
#define DEC_6 5
#define DEC_5 4
#define DEC_4 3
#define DEC_3 2
#define DEC_2 1
#define DEC_1 0
#define DEC_(n) DEC_##n
/** Maximal number of repetitions supported by MRECURSION. */
#define MRECURSION_LIMIT 256
/** \brief Macro recursion.
*
* This macro represents a horizontal repetition construct.
*
* \param[in] count The number of repetitious calls to macro. Valid values
* range from 0 to MRECURSION_LIMIT.
* \param[in] macro A binary operation of the form macro(data, n). This macro
* is expanded by MRECURSION with the current repetition number
* and the auxiliary data argument.
* \param[in] data A recursive threshold, building on this to decline by times
* defined with param count.
*
* \return <tt>macro(data-count+1,0) macro(data-count+2,1)...macro(data,count-1)</tt>
*/
#define MRECURSION(count, macro, data) TPASTE2(MRECURSION, count) (macro, data)
#define MRECURSION0( macro, data)
#define MRECURSION1( macro, data) MRECURSION0( macro, DEC_(data)) macro(data, 0)
#define MRECURSION2( macro, data) MRECURSION1( macro, DEC_(data)) macro(data, 1)
#define MRECURSION3( macro, data) MRECURSION2( macro, DEC_(data)) macro(data, 2)
#define MRECURSION4( macro, data) MRECURSION3( macro, DEC_(data)) macro(data, 3)
#define MRECURSION5( macro, data) MRECURSION4( macro, DEC_(data)) macro(data, 4)
#define MRECURSION6( macro, data) MRECURSION5( macro, DEC_(data)) macro(data, 5)
#define MRECURSION7( macro, data) MRECURSION6( macro, DEC_(data)) macro(data, 6)
#define MRECURSION8( macro, data) MRECURSION7( macro, DEC_(data)) macro(data, 7)
#define MRECURSION9( macro, data) MRECURSION8( macro, DEC_(data)) macro(data, 8)
#define MRECURSION10( macro, data) MRECURSION9( macro, DEC_(data)) macro(data, 9)
#define MRECURSION11( macro, data) MRECURSION10( macro, DEC_(data)) macro(data, 10)
#define MRECURSION12( macro, data) MRECURSION11( macro, DEC_(data)) macro(data, 11)
#define MRECURSION13( macro, data) MRECURSION12( macro, DEC_(data)) macro(data, 12)
#define MRECURSION14( macro, data) MRECURSION13( macro, DEC_(data)) macro(data, 13)
#define MRECURSION15( macro, data) MRECURSION14( macro, DEC_(data)) macro(data, 14)
#define MRECURSION16( macro, data) MRECURSION15( macro, DEC_(data)) macro(data, 15)
#define MRECURSION17( macro, data) MRECURSION16( macro, DEC_(data)) macro(data, 16)
#define MRECURSION18( macro, data) MRECURSION17( macro, DEC_(data)) macro(data, 17)
#define MRECURSION19( macro, data) MRECURSION18( macro, DEC_(data)) macro(data, 18)
#define MRECURSION20( macro, data) MRECURSION19( macro, DEC_(data)) macro(data, 19)
#define MRECURSION21( macro, data) MRECURSION20( macro, DEC_(data)) macro(data, 20)
#define MRECURSION22( macro, data) MRECURSION21( macro, DEC_(data)) macro(data, 21)
#define MRECURSION23( macro, data) MRECURSION22( macro, DEC_(data)) macro(data, 22)
#define MRECURSION24( macro, data) MRECURSION23( macro, DEC_(data)) macro(data, 23)
#define MRECURSION25( macro, data) MRECURSION24( macro, DEC_(data)) macro(data, 24)
#define MRECURSION26( macro, data) MRECURSION25( macro, DEC_(data)) macro(data, 25)
#define MRECURSION27( macro, data) MRECURSION26( macro, DEC_(data)) macro(data, 26)
#define MRECURSION28( macro, data) MRECURSION27( macro, DEC_(data)) macro(data, 27)
#define MRECURSION29( macro, data) MRECURSION28( macro, DEC_(data)) macro(data, 28)
#define MRECURSION30( macro, data) MRECURSION29( macro, DEC_(data)) macro(data, 29)
#define MRECURSION31( macro, data) MRECURSION30( macro, DEC_(data)) macro(data, 30)
#define MRECURSION32( macro, data) MRECURSION31( macro, DEC_(data)) macro(data, 31)
#define MRECURSION33( macro, data) MRECURSION32( macro, DEC_(data)) macro(data, 32)
#define MRECURSION34( macro, data) MRECURSION33( macro, DEC_(data)) macro(data, 33)
#define MRECURSION35( macro, data) MRECURSION34( macro, DEC_(data)) macro(data, 34)
#define MRECURSION36( macro, data) MRECURSION35( macro, DEC_(data)) macro(data, 35)
#define MRECURSION37( macro, data) MRECURSION36( macro, DEC_(data)) macro(data, 36)
#define MRECURSION38( macro, data) MRECURSION37( macro, DEC_(data)) macro(data, 37)
#define MRECURSION39( macro, data) MRECURSION38( macro, DEC_(data)) macro(data, 38)
#define MRECURSION40( macro, data) MRECURSION39( macro, DEC_(data)) macro(data, 39)
#define MRECURSION41( macro, data) MRECURSION40( macro, DEC_(data)) macro(data, 40)
#define MRECURSION42( macro, data) MRECURSION41( macro, DEC_(data)) macro(data, 41)
#define MRECURSION43( macro, data) MRECURSION42( macro, DEC_(data)) macro(data, 42)
#define MRECURSION44( macro, data) MRECURSION43( macro, DEC_(data)) macro(data, 43)
#define MRECURSION45( macro, data) MRECURSION44( macro, DEC_(data)) macro(data, 44)
#define MRECURSION46( macro, data) MRECURSION45( macro, DEC_(data)) macro(data, 45)
#define MRECURSION47( macro, data) MRECURSION46( macro, DEC_(data)) macro(data, 46)
#define MRECURSION48( macro, data) MRECURSION47( macro, DEC_(data)) macro(data, 47)
#define MRECURSION49( macro, data) MRECURSION48( macro, DEC_(data)) macro(data, 48)
#define MRECURSION50( macro, data) MRECURSION49( macro, DEC_(data)) macro(data, 49)
#define MRECURSION51( macro, data) MRECURSION50( macro, DEC_(data)) macro(data, 50)
#define MRECURSION52( macro, data) MRECURSION51( macro, DEC_(data)) macro(data, 51)
#define MRECURSION53( macro, data) MRECURSION52( macro, DEC_(data)) macro(data, 52)
#define MRECURSION54( macro, data) MRECURSION53( macro, DEC_(data)) macro(data, 53)
#define MRECURSION55( macro, data) MRECURSION54( macro, DEC_(data)) macro(data, 54)
#define MRECURSION56( macro, data) MRECURSION55( macro, DEC_(data)) macro(data, 55)
#define MRECURSION57( macro, data) MRECURSION56( macro, DEC_(data)) macro(data, 56)
#define MRECURSION58( macro, data) MRECURSION57( macro, DEC_(data)) macro(data, 57)
#define MRECURSION59( macro, data) MRECURSION58( macro, DEC_(data)) macro(data, 58)
#define MRECURSION60( macro, data) MRECURSION59( macro, DEC_(data)) macro(data, 59)
#define MRECURSION61( macro, data) MRECURSION60( macro, DEC_(data)) macro(data, 60)
#define MRECURSION62( macro, data) MRECURSION61( macro, DEC_(data)) macro(data, 61)
#define MRECURSION63( macro, data) MRECURSION62( macro, DEC_(data)) macro(data, 62)
#define MRECURSION64( macro, data) MRECURSION63( macro, DEC_(data)) macro(data, 63)
#define MRECURSION65( macro, data) MRECURSION64( macro, DEC_(data)) macro(data, 64)
#define MRECURSION66( macro, data) MRECURSION65( macro, DEC_(data)) macro(data, 65)
#define MRECURSION67( macro, data) MRECURSION66( macro, DEC_(data)) macro(data, 66)
#define MRECURSION68( macro, data) MRECURSION67( macro, DEC_(data)) macro(data, 67)
#define MRECURSION69( macro, data) MRECURSION68( macro, DEC_(data)) macro(data, 68)
#define MRECURSION70( macro, data) MRECURSION69( macro, DEC_(data)) macro(data, 69)
#define MRECURSION71( macro, data) MRECURSION70( macro, DEC_(data)) macro(data, 70)
#define MRECURSION72( macro, data) MRECURSION71( macro, DEC_(data)) macro(data, 71)
#define MRECURSION73( macro, data) MRECURSION72( macro, DEC_(data)) macro(data, 72)
#define MRECURSION74( macro, data) MRECURSION73( macro, DEC_(data)) macro(data, 73)
#define MRECURSION75( macro, data) MRECURSION74( macro, DEC_(data)) macro(data, 74)
#define MRECURSION76( macro, data) MRECURSION75( macro, DEC_(data)) macro(data, 75)
#define MRECURSION77( macro, data) MRECURSION76( macro, DEC_(data)) macro(data, 76)
#define MRECURSION78( macro, data) MRECURSION77( macro, DEC_(data)) macro(data, 77)
#define MRECURSION79( macro, data) MRECURSION78( macro, DEC_(data)) macro(data, 78)
#define MRECURSION80( macro, data) MRECURSION79( macro, DEC_(data)) macro(data, 79)
#define MRECURSION81( macro, data) MRECURSION80( macro, DEC_(data)) macro(data, 80)
#define MRECURSION82( macro, data) MRECURSION81( macro, DEC_(data)) macro(data, 81)
#define MRECURSION83( macro, data) MRECURSION82( macro, DEC_(data)) macro(data, 82)
#define MRECURSION84( macro, data) MRECURSION83( macro, DEC_(data)) macro(data, 83)
#define MRECURSION85( macro, data) MRECURSION84( macro, DEC_(data)) macro(data, 84)
#define MRECURSION86( macro, data) MRECURSION85( macro, DEC_(data)) macro(data, 85)
#define MRECURSION87( macro, data) MRECURSION86( macro, DEC_(data)) macro(data, 86)
#define MRECURSION88( macro, data) MRECURSION87( macro, DEC_(data)) macro(data, 87)
#define MRECURSION89( macro, data) MRECURSION88( macro, DEC_(data)) macro(data, 88)
#define MRECURSION90( macro, data) MRECURSION89( macro, DEC_(data)) macro(data, 89)
#define MRECURSION91( macro, data) MRECURSION90( macro, DEC_(data)) macro(data, 90)
#define MRECURSION92( macro, data) MRECURSION91( macro, DEC_(data)) macro(data, 91)
#define MRECURSION93( macro, data) MRECURSION92( macro, DEC_(data)) macro(data, 92)
#define MRECURSION94( macro, data) MRECURSION93( macro, DEC_(data)) macro(data, 93)
#define MRECURSION95( macro, data) MRECURSION94( macro, DEC_(data)) macro(data, 94)
#define MRECURSION96( macro, data) MRECURSION95( macro, DEC_(data)) macro(data, 95)
#define MRECURSION97( macro, data) MRECURSION96( macro, DEC_(data)) macro(data, 96)
#define MRECURSION98( macro, data) MRECURSION97( macro, DEC_(data)) macro(data, 97)
#define MRECURSION99( macro, data) MRECURSION98( macro, DEC_(data)) macro(data, 98)
#define MRECURSION100(macro, data) MRECURSION99( macro, DEC_(data)) macro(data, 99)
#define MRECURSION101(macro, data) MRECURSION100( macro, DEC_(data)) macro(data, 100)
#define MRECURSION102(macro, data) MRECURSION101( macro, DEC_(data)) macro(data, 101)
#define MRECURSION103(macro, data) MRECURSION102( macro, DEC_(data)) macro(data, 102)
#define MRECURSION104(macro, data) MRECURSION103( macro, DEC_(data)) macro(data, 103)
#define MRECURSION105(macro, data) MRECURSION104( macro, DEC_(data)) macro(data, 104)
#define MRECURSION106(macro, data) MRECURSION105( macro, DEC_(data)) macro(data, 105)
#define MRECURSION107(macro, data) MRECURSION106( macro, DEC_(data)) macro(data, 106)
#define MRECURSION108(macro, data) MRECURSION107( macro, DEC_(data)) macro(data, 107)
#define MRECURSION109(macro, data) MRECURSION108( macro, DEC_(data)) macro(data, 108)
#define MRECURSION110(macro, data) MRECURSION109( macro, DEC_(data)) macro(data, 109)
#define MRECURSION111(macro, data) MRECURSION110( macro, DEC_(data)) macro(data, 110)
#define MRECURSION112(macro, data) MRECURSION111( macro, DEC_(data)) macro(data, 111)
#define MRECURSION113(macro, data) MRECURSION112( macro, DEC_(data)) macro(data, 112)
#define MRECURSION114(macro, data) MRECURSION113( macro, DEC_(data)) macro(data, 113)
#define MRECURSION115(macro, data) MRECURSION114( macro, DEC_(data)) macro(data, 114)
#define MRECURSION116(macro, data) MRECURSION115( macro, DEC_(data)) macro(data, 115)
#define MRECURSION117(macro, data) MRECURSION116( macro, DEC_(data)) macro(data, 116)
#define MRECURSION118(macro, data) MRECURSION117( macro, DEC_(data)) macro(data, 117)
#define MRECURSION119(macro, data) MRECURSION118( macro, DEC_(data)) macro(data, 118)
#define MRECURSION120(macro, data) MRECURSION119( macro, DEC_(data)) macro(data, 119)
#define MRECURSION121(macro, data) MRECURSION120( macro, DEC_(data)) macro(data, 120)
#define MRECURSION122(macro, data) MRECURSION121( macro, DEC_(data)) macro(data, 121)
#define MRECURSION123(macro, data) MRECURSION122( macro, DEC_(data)) macro(data, 122)
#define MRECURSION124(macro, data) MRECURSION123( macro, DEC_(data)) macro(data, 123)
#define MRECURSION125(macro, data) MRECURSION124( macro, DEC_(data)) macro(data, 124)
#define MRECURSION126(macro, data) MRECURSION125( macro, DEC_(data)) macro(data, 125)
#define MRECURSION127(macro, data) MRECURSION126( macro, DEC_(data)) macro(data, 126)
#define MRECURSION128(macro, data) MRECURSION127( macro, DEC_(data)) macro(data, 127)
#define MRECURSION129(macro, data) MRECURSION128( macro, DEC_(data)) macro(data, 128)
#define MRECURSION130(macro, data) MRECURSION129( macro, DEC_(data)) macro(data, 129)
#define MRECURSION131(macro, data) MRECURSION130( macro, DEC_(data)) macro(data, 130)
#define MRECURSION132(macro, data) MRECURSION131( macro, DEC_(data)) macro(data, 131)
#define MRECURSION133(macro, data) MRECURSION132( macro, DEC_(data)) macro(data, 132)
#define MRECURSION134(macro, data) MRECURSION133( macro, DEC_(data)) macro(data, 133)
#define MRECURSION135(macro, data) MRECURSION134( macro, DEC_(data)) macro(data, 134)
#define MRECURSION136(macro, data) MRECURSION135( macro, DEC_(data)) macro(data, 135)
#define MRECURSION137(macro, data) MRECURSION136( macro, DEC_(data)) macro(data, 136)
#define MRECURSION138(macro, data) MRECURSION137( macro, DEC_(data)) macro(data, 137)
#define MRECURSION139(macro, data) MRECURSION138( macro, DEC_(data)) macro(data, 138)
#define MRECURSION140(macro, data) MRECURSION139( macro, DEC_(data)) macro(data, 139)
#define MRECURSION141(macro, data) MRECURSION140( macro, DEC_(data)) macro(data, 140)
#define MRECURSION142(macro, data) MRECURSION141( macro, DEC_(data)) macro(data, 141)
#define MRECURSION143(macro, data) MRECURSION142( macro, DEC_(data)) macro(data, 142)
#define MRECURSION144(macro, data) MRECURSION143( macro, DEC_(data)) macro(data, 143)
#define MRECURSION145(macro, data) MRECURSION144( macro, DEC_(data)) macro(data, 144)
#define MRECURSION146(macro, data) MRECURSION145( macro, DEC_(data)) macro(data, 145)
#define MRECURSION147(macro, data) MRECURSION146( macro, DEC_(data)) macro(data, 146)
#define MRECURSION148(macro, data) MRECURSION147( macro, DEC_(data)) macro(data, 147)
#define MRECURSION149(macro, data) MRECURSION148( macro, DEC_(data)) macro(data, 148)
#define MRECURSION150(macro, data) MRECURSION149( macro, DEC_(data)) macro(data, 149)
#define MRECURSION151(macro, data) MRECURSION150( macro, DEC_(data)) macro(data, 150)
#define MRECURSION152(macro, data) MRECURSION151( macro, DEC_(data)) macro(data, 151)
#define MRECURSION153(macro, data) MRECURSION152( macro, DEC_(data)) macro(data, 152)
#define MRECURSION154(macro, data) MRECURSION153( macro, DEC_(data)) macro(data, 153)
#define MRECURSION155(macro, data) MRECURSION154( macro, DEC_(data)) macro(data, 154)
#define MRECURSION156(macro, data) MRECURSION155( macro, DEC_(data)) macro(data, 155)
#define MRECURSION157(macro, data) MRECURSION156( macro, DEC_(data)) macro(data, 156)
#define MRECURSION158(macro, data) MRECURSION157( macro, DEC_(data)) macro(data, 157)
#define MRECURSION159(macro, data) MRECURSION158( macro, DEC_(data)) macro(data, 158)
#define MRECURSION160(macro, data) MRECURSION159( macro, DEC_(data)) macro(data, 159)
#define MRECURSION161(macro, data) MRECURSION160( macro, DEC_(data)) macro(data, 160)
#define MRECURSION162(macro, data) MRECURSION161( macro, DEC_(data)) macro(data, 161)
#define MRECURSION163(macro, data) MRECURSION162( macro, DEC_(data)) macro(data, 162)
#define MRECURSION164(macro, data) MRECURSION163( macro, DEC_(data)) macro(data, 163)
#define MRECURSION165(macro, data) MRECURSION164( macro, DEC_(data)) macro(data, 164)
#define MRECURSION166(macro, data) MRECURSION165( macro, DEC_(data)) macro(data, 165)
#define MRECURSION167(macro, data) MRECURSION166( macro, DEC_(data)) macro(data, 166)
#define MRECURSION168(macro, data) MRECURSION167( macro, DEC_(data)) macro(data, 167)
#define MRECURSION169(macro, data) MRECURSION168( macro, DEC_(data)) macro(data, 168)
#define MRECURSION170(macro, data) MRECURSION169( macro, DEC_(data)) macro(data, 169)
#define MRECURSION171(macro, data) MRECURSION170( macro, DEC_(data)) macro(data, 170)
#define MRECURSION172(macro, data) MRECURSION171( macro, DEC_(data)) macro(data, 171)
#define MRECURSION173(macro, data) MRECURSION172( macro, DEC_(data)) macro(data, 172)
#define MRECURSION174(macro, data) MRECURSION173( macro, DEC_(data)) macro(data, 173)
#define MRECURSION175(macro, data) MRECURSION174( macro, DEC_(data)) macro(data, 174)
#define MRECURSION176(macro, data) MRECURSION175( macro, DEC_(data)) macro(data, 175)
#define MRECURSION177(macro, data) MRECURSION176( macro, DEC_(data)) macro(data, 176)
#define MRECURSION178(macro, data) MRECURSION177( macro, DEC_(data)) macro(data, 177)
#define MRECURSION179(macro, data) MRECURSION178( macro, DEC_(data)) macro(data, 178)
#define MRECURSION180(macro, data) MRECURSION179( macro, DEC_(data)) macro(data, 179)
#define MRECURSION181(macro, data) MRECURSION180( macro, DEC_(data)) macro(data, 180)
#define MRECURSION182(macro, data) MRECURSION181( macro, DEC_(data)) macro(data, 181)
#define MRECURSION183(macro, data) MRECURSION182( macro, DEC_(data)) macro(data, 182)
#define MRECURSION184(macro, data) MRECURSION183( macro, DEC_(data)) macro(data, 183)
#define MRECURSION185(macro, data) MRECURSION184( macro, DEC_(data)) macro(data, 184)
#define MRECURSION186(macro, data) MRECURSION185( macro, DEC_(data)) macro(data, 185)
#define MRECURSION187(macro, data) MRECURSION186( macro, DEC_(data)) macro(data, 186)
#define MRECURSION188(macro, data) MRECURSION187( macro, DEC_(data)) macro(data, 187)
#define MRECURSION189(macro, data) MRECURSION188( macro, DEC_(data)) macro(data, 188)
#define MRECURSION190(macro, data) MRECURSION189( macro, DEC_(data)) macro(data, 189)
#define MRECURSION191(macro, data) MRECURSION190( macro, DEC_(data)) macro(data, 190)
#define MRECURSION192(macro, data) MRECURSION191( macro, DEC_(data)) macro(data, 191)
#define MRECURSION193(macro, data) MRECURSION192( macro, DEC_(data)) macro(data, 192)
#define MRECURSION194(macro, data) MRECURSION193( macro, DEC_(data)) macro(data, 193)
#define MRECURSION195(macro, data) MRECURSION194( macro, DEC_(data)) macro(data, 194)
#define MRECURSION196(macro, data) MRECURSION195( macro, DEC_(data)) macro(data, 195)
#define MRECURSION197(macro, data) MRECURSION196( macro, DEC_(data)) macro(data, 196)
#define MRECURSION198(macro, data) MRECURSION197( macro, DEC_(data)) macro(data, 197)
#define MRECURSION199(macro, data) MRECURSION198( macro, DEC_(data)) macro(data, 198)
#define MRECURSION200(macro, data) MRECURSION199( macro, DEC_(data)) macro(data, 199)
#define MRECURSION201(macro, data) MRECURSION200( macro, DEC_(data)) macro(data, 200)
#define MRECURSION202(macro, data) MRECURSION201( macro, DEC_(data)) macro(data, 201)
#define MRECURSION203(macro, data) MRECURSION202( macro, DEC_(data)) macro(data, 202)
#define MRECURSION204(macro, data) MRECURSION203( macro, DEC_(data)) macro(data, 203)
#define MRECURSION205(macro, data) MRECURSION204( macro, DEC_(data)) macro(data, 204)
#define MRECURSION206(macro, data) MRECURSION205( macro, DEC_(data)) macro(data, 205)
#define MRECURSION207(macro, data) MRECURSION206( macro, DEC_(data)) macro(data, 206)
#define MRECURSION208(macro, data) MRECURSION207( macro, DEC_(data)) macro(data, 207)
#define MRECURSION209(macro, data) MRECURSION208( macro, DEC_(data)) macro(data, 208)
#define MRECURSION210(macro, data) MRECURSION209( macro, DEC_(data)) macro(data, 209)
#define MRECURSION211(macro, data) MRECURSION210( macro, DEC_(data)) macro(data, 210)
#define MRECURSION212(macro, data) MRECURSION211( macro, DEC_(data)) macro(data, 211)
#define MRECURSION213(macro, data) MRECURSION212( macro, DEC_(data)) macro(data, 212)
#define MRECURSION214(macro, data) MRECURSION213( macro, DEC_(data)) macro(data, 213)
#define MRECURSION215(macro, data) MRECURSION214( macro, DEC_(data)) macro(data, 214)
#define MRECURSION216(macro, data) MRECURSION215( macro, DEC_(data)) macro(data, 215)
#define MRECURSION217(macro, data) MRECURSION216( macro, DEC_(data)) macro(data, 216)
#define MRECURSION218(macro, data) MRECURSION217( macro, DEC_(data)) macro(data, 217)
#define MRECURSION219(macro, data) MRECURSION218( macro, DEC_(data)) macro(data, 218)
#define MRECURSION220(macro, data) MRECURSION219( macro, DEC_(data)) macro(data, 219)
#define MRECURSION221(macro, data) MRECURSION220( macro, DEC_(data)) macro(data, 220)
#define MRECURSION222(macro, data) MRECURSION221( macro, DEC_(data)) macro(data, 221)
#define MRECURSION223(macro, data) MRECURSION222( macro, DEC_(data)) macro(data, 222)
#define MRECURSION224(macro, data) MRECURSION223( macro, DEC_(data)) macro(data, 223)
#define MRECURSION225(macro, data) MRECURSION224( macro, DEC_(data)) macro(data, 224)
#define MRECURSION226(macro, data) MRECURSION225( macro, DEC_(data)) macro(data, 225)
#define MRECURSION227(macro, data) MRECURSION226( macro, DEC_(data)) macro(data, 226)
#define MRECURSION228(macro, data) MRECURSION227( macro, DEC_(data)) macro(data, 227)
#define MRECURSION229(macro, data) MRECURSION228( macro, DEC_(data)) macro(data, 228)
#define MRECURSION230(macro, data) MRECURSION229( macro, DEC_(data)) macro(data, 229)
#define MRECURSION231(macro, data) MRECURSION230( macro, DEC_(data)) macro(data, 230)
#define MRECURSION232(macro, data) MRECURSION231( macro, DEC_(data)) macro(data, 231)
#define MRECURSION233(macro, data) MRECURSION232( macro, DEC_(data)) macro(data, 232)
#define MRECURSION234(macro, data) MRECURSION233( macro, DEC_(data)) macro(data, 233)
#define MRECURSION235(macro, data) MRECURSION234( macro, DEC_(data)) macro(data, 234)
#define MRECURSION236(macro, data) MRECURSION235( macro, DEC_(data)) macro(data, 235)
#define MRECURSION237(macro, data) MRECURSION236( macro, DEC_(data)) macro(data, 236)
#define MRECURSION238(macro, data) MRECURSION237( macro, DEC_(data)) macro(data, 237)
#define MRECURSION239(macro, data) MRECURSION238( macro, DEC_(data)) macro(data, 238)
#define MRECURSION240(macro, data) MRECURSION239( macro, DEC_(data)) macro(data, 239)
#define MRECURSION241(macro, data) MRECURSION240( macro, DEC_(data)) macro(data, 240)
#define MRECURSION242(macro, data) MRECURSION241( macro, DEC_(data)) macro(data, 241)
#define MRECURSION243(macro, data) MRECURSION242( macro, DEC_(data)) macro(data, 242)
#define MRECURSION244(macro, data) MRECURSION243( macro, DEC_(data)) macro(data, 243)
#define MRECURSION245(macro, data) MRECURSION244( macro, DEC_(data)) macro(data, 244)
#define MRECURSION246(macro, data) MRECURSION245( macro, DEC_(data)) macro(data, 245)
#define MRECURSION247(macro, data) MRECURSION246( macro, DEC_(data)) macro(data, 246)
#define MRECURSION248(macro, data) MRECURSION247( macro, DEC_(data)) macro(data, 247)
#define MRECURSION249(macro, data) MRECURSION248( macro, DEC_(data)) macro(data, 248)
#define MRECURSION250(macro, data) MRECURSION249( macro, DEC_(data)) macro(data, 249)
#define MRECURSION251(macro, data) MRECURSION250( macro, DEC_(data)) macro(data, 250)
#define MRECURSION252(macro, data) MRECURSION251( macro, DEC_(data)) macro(data, 251)
#define MRECURSION253(macro, data) MRECURSION252( macro, DEC_(data)) macro(data, 252)
#define MRECURSION254(macro, data) MRECURSION253( macro, DEC_(data)) macro(data, 253)
#define MRECURSION255(macro, data) MRECURSION254( macro, DEC_(data)) macro(data, 254)
#define MRECURSION256(macro, data) MRECURSION255( macro, DEC_(data)) macro(data, 255)
/** @} */
#endif /* _MRECURSION_H_ */

View file

@ -0,0 +1,321 @@
/* ----------------------------------------------------------------------------
* SAM Software Package License
* ----------------------------------------------------------------------------
* Copyright (c) 2011-2014, Atmel Corporation
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following condition is met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
*
* Atmel's name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ----------------------------------------------------------------------------
*/
#ifndef _MREPEAT_H_
#define _MREPEAT_H_
/**
* \defgroup group_sam0_utils_mrepeat Preprocessor - Macro Repeat
*
* \ingroup group_sam0_utils
*
* @{
*/
#include "preprocessor.h"
/** Maximal number of repetitions supported by MREPEAT. */
#define MREPEAT_LIMIT 256
/** \brief Macro repeat.
*
* This macro represents a horizontal repetition construct.
*
* \param[in] count The number of repetitious calls to macro. Valid values
* range from 0 to MREPEAT_LIMIT.
* \param[in] macro A binary operation of the form macro(n, data). This macro
* is expanded by MREPEAT with the current repetition number
* and the auxiliary data argument.
* \param[in] data Auxiliary data passed to macro.
*
* \return <tt>macro(0, data) macro(1, data) ... macro(count - 1, data)</tt>
*/
#define MREPEAT(count, macro, data) TPASTE2(MREPEAT, count) (macro, data)
#define MREPEAT0( macro, data)
#define MREPEAT1( macro, data) MREPEAT0( macro, data) macro( 0, data)
#define MREPEAT2( macro, data) MREPEAT1( macro, data) macro( 1, data)
#define MREPEAT3( macro, data) MREPEAT2( macro, data) macro( 2, data)
#define MREPEAT4( macro, data) MREPEAT3( macro, data) macro( 3, data)
#define MREPEAT5( macro, data) MREPEAT4( macro, data) macro( 4, data)
#define MREPEAT6( macro, data) MREPEAT5( macro, data) macro( 5, data)
#define MREPEAT7( macro, data) MREPEAT6( macro, data) macro( 6, data)
#define MREPEAT8( macro, data) MREPEAT7( macro, data) macro( 7, data)
#define MREPEAT9( macro, data) MREPEAT8( macro, data) macro( 8, data)
#define MREPEAT10( macro, data) MREPEAT9( macro, data) macro( 9, data)
#define MREPEAT11( macro, data) MREPEAT10( macro, data) macro( 10, data)
#define MREPEAT12( macro, data) MREPEAT11( macro, data) macro( 11, data)
#define MREPEAT13( macro, data) MREPEAT12( macro, data) macro( 12, data)
#define MREPEAT14( macro, data) MREPEAT13( macro, data) macro( 13, data)
#define MREPEAT15( macro, data) MREPEAT14( macro, data) macro( 14, data)
#define MREPEAT16( macro, data) MREPEAT15( macro, data) macro( 15, data)
#define MREPEAT17( macro, data) MREPEAT16( macro, data) macro( 16, data)
#define MREPEAT18( macro, data) MREPEAT17( macro, data) macro( 17, data)
#define MREPEAT19( macro, data) MREPEAT18( macro, data) macro( 18, data)
#define MREPEAT20( macro, data) MREPEAT19( macro, data) macro( 19, data)
#define MREPEAT21( macro, data) MREPEAT20( macro, data) macro( 20, data)
#define MREPEAT22( macro, data) MREPEAT21( macro, data) macro( 21, data)
#define MREPEAT23( macro, data) MREPEAT22( macro, data) macro( 22, data)
#define MREPEAT24( macro, data) MREPEAT23( macro, data) macro( 23, data)
#define MREPEAT25( macro, data) MREPEAT24( macro, data) macro( 24, data)
#define MREPEAT26( macro, data) MREPEAT25( macro, data) macro( 25, data)
#define MREPEAT27( macro, data) MREPEAT26( macro, data) macro( 26, data)
#define MREPEAT28( macro, data) MREPEAT27( macro, data) macro( 27, data)
#define MREPEAT29( macro, data) MREPEAT28( macro, data) macro( 28, data)
#define MREPEAT30( macro, data) MREPEAT29( macro, data) macro( 29, data)
#define MREPEAT31( macro, data) MREPEAT30( macro, data) macro( 30, data)
#define MREPEAT32( macro, data) MREPEAT31( macro, data) macro( 31, data)
#define MREPEAT33( macro, data) MREPEAT32( macro, data) macro( 32, data)
#define MREPEAT34( macro, data) MREPEAT33( macro, data) macro( 33, data)
#define MREPEAT35( macro, data) MREPEAT34( macro, data) macro( 34, data)
#define MREPEAT36( macro, data) MREPEAT35( macro, data) macro( 35, data)
#define MREPEAT37( macro, data) MREPEAT36( macro, data) macro( 36, data)
#define MREPEAT38( macro, data) MREPEAT37( macro, data) macro( 37, data)
#define MREPEAT39( macro, data) MREPEAT38( macro, data) macro( 38, data)
#define MREPEAT40( macro, data) MREPEAT39( macro, data) macro( 39, data)
#define MREPEAT41( macro, data) MREPEAT40( macro, data) macro( 40, data)
#define MREPEAT42( macro, data) MREPEAT41( macro, data) macro( 41, data)
#define MREPEAT43( macro, data) MREPEAT42( macro, data) macro( 42, data)
#define MREPEAT44( macro, data) MREPEAT43( macro, data) macro( 43, data)
#define MREPEAT45( macro, data) MREPEAT44( macro, data) macro( 44, data)
#define MREPEAT46( macro, data) MREPEAT45( macro, data) macro( 45, data)
#define MREPEAT47( macro, data) MREPEAT46( macro, data) macro( 46, data)
#define MREPEAT48( macro, data) MREPEAT47( macro, data) macro( 47, data)
#define MREPEAT49( macro, data) MREPEAT48( macro, data) macro( 48, data)
#define MREPEAT50( macro, data) MREPEAT49( macro, data) macro( 49, data)
#define MREPEAT51( macro, data) MREPEAT50( macro, data) macro( 50, data)
#define MREPEAT52( macro, data) MREPEAT51( macro, data) macro( 51, data)
#define MREPEAT53( macro, data) MREPEAT52( macro, data) macro( 52, data)
#define MREPEAT54( macro, data) MREPEAT53( macro, data) macro( 53, data)
#define MREPEAT55( macro, data) MREPEAT54( macro, data) macro( 54, data)
#define MREPEAT56( macro, data) MREPEAT55( macro, data) macro( 55, data)
#define MREPEAT57( macro, data) MREPEAT56( macro, data) macro( 56, data)
#define MREPEAT58( macro, data) MREPEAT57( macro, data) macro( 57, data)
#define MREPEAT59( macro, data) MREPEAT58( macro, data) macro( 58, data)
#define MREPEAT60( macro, data) MREPEAT59( macro, data) macro( 59, data)
#define MREPEAT61( macro, data) MREPEAT60( macro, data) macro( 60, data)
#define MREPEAT62( macro, data) MREPEAT61( macro, data) macro( 61, data)
#define MREPEAT63( macro, data) MREPEAT62( macro, data) macro( 62, data)
#define MREPEAT64( macro, data) MREPEAT63( macro, data) macro( 63, data)
#define MREPEAT65( macro, data) MREPEAT64( macro, data) macro( 64, data)
#define MREPEAT66( macro, data) MREPEAT65( macro, data) macro( 65, data)
#define MREPEAT67( macro, data) MREPEAT66( macro, data) macro( 66, data)
#define MREPEAT68( macro, data) MREPEAT67( macro, data) macro( 67, data)
#define MREPEAT69( macro, data) MREPEAT68( macro, data) macro( 68, data)
#define MREPEAT70( macro, data) MREPEAT69( macro, data) macro( 69, data)
#define MREPEAT71( macro, data) MREPEAT70( macro, data) macro( 70, data)
#define MREPEAT72( macro, data) MREPEAT71( macro, data) macro( 71, data)
#define MREPEAT73( macro, data) MREPEAT72( macro, data) macro( 72, data)
#define MREPEAT74( macro, data) MREPEAT73( macro, data) macro( 73, data)
#define MREPEAT75( macro, data) MREPEAT74( macro, data) macro( 74, data)
#define MREPEAT76( macro, data) MREPEAT75( macro, data) macro( 75, data)
#define MREPEAT77( macro, data) MREPEAT76( macro, data) macro( 76, data)
#define MREPEAT78( macro, data) MREPEAT77( macro, data) macro( 77, data)
#define MREPEAT79( macro, data) MREPEAT78( macro, data) macro( 78, data)
#define MREPEAT80( macro, data) MREPEAT79( macro, data) macro( 79, data)
#define MREPEAT81( macro, data) MREPEAT80( macro, data) macro( 80, data)
#define MREPEAT82( macro, data) MREPEAT81( macro, data) macro( 81, data)
#define MREPEAT83( macro, data) MREPEAT82( macro, data) macro( 82, data)
#define MREPEAT84( macro, data) MREPEAT83( macro, data) macro( 83, data)
#define MREPEAT85( macro, data) MREPEAT84( macro, data) macro( 84, data)
#define MREPEAT86( macro, data) MREPEAT85( macro, data) macro( 85, data)
#define MREPEAT87( macro, data) MREPEAT86( macro, data) macro( 86, data)
#define MREPEAT88( macro, data) MREPEAT87( macro, data) macro( 87, data)
#define MREPEAT89( macro, data) MREPEAT88( macro, data) macro( 88, data)
#define MREPEAT90( macro, data) MREPEAT89( macro, data) macro( 89, data)
#define MREPEAT91( macro, data) MREPEAT90( macro, data) macro( 90, data)
#define MREPEAT92( macro, data) MREPEAT91( macro, data) macro( 91, data)
#define MREPEAT93( macro, data) MREPEAT92( macro, data) macro( 92, data)
#define MREPEAT94( macro, data) MREPEAT93( macro, data) macro( 93, data)
#define MREPEAT95( macro, data) MREPEAT94( macro, data) macro( 94, data)
#define MREPEAT96( macro, data) MREPEAT95( macro, data) macro( 95, data)
#define MREPEAT97( macro, data) MREPEAT96( macro, data) macro( 96, data)
#define MREPEAT98( macro, data) MREPEAT97( macro, data) macro( 97, data)
#define MREPEAT99( macro, data) MREPEAT98( macro, data) macro( 98, data)
#define MREPEAT100(macro, data) MREPEAT99( macro, data) macro( 99, data)
#define MREPEAT101(macro, data) MREPEAT100(macro, data) macro(100, data)
#define MREPEAT102(macro, data) MREPEAT101(macro, data) macro(101, data)
#define MREPEAT103(macro, data) MREPEAT102(macro, data) macro(102, data)
#define MREPEAT104(macro, data) MREPEAT103(macro, data) macro(103, data)
#define MREPEAT105(macro, data) MREPEAT104(macro, data) macro(104, data)
#define MREPEAT106(macro, data) MREPEAT105(macro, data) macro(105, data)
#define MREPEAT107(macro, data) MREPEAT106(macro, data) macro(106, data)
#define MREPEAT108(macro, data) MREPEAT107(macro, data) macro(107, data)
#define MREPEAT109(macro, data) MREPEAT108(macro, data) macro(108, data)
#define MREPEAT110(macro, data) MREPEAT109(macro, data) macro(109, data)
#define MREPEAT111(macro, data) MREPEAT110(macro, data) macro(110, data)
#define MREPEAT112(macro, data) MREPEAT111(macro, data) macro(111, data)
#define MREPEAT113(macro, data) MREPEAT112(macro, data) macro(112, data)
#define MREPEAT114(macro, data) MREPEAT113(macro, data) macro(113, data)
#define MREPEAT115(macro, data) MREPEAT114(macro, data) macro(114, data)
#define MREPEAT116(macro, data) MREPEAT115(macro, data) macro(115, data)
#define MREPEAT117(macro, data) MREPEAT116(macro, data) macro(116, data)
#define MREPEAT118(macro, data) MREPEAT117(macro, data) macro(117, data)
#define MREPEAT119(macro, data) MREPEAT118(macro, data) macro(118, data)
#define MREPEAT120(macro, data) MREPEAT119(macro, data) macro(119, data)
#define MREPEAT121(macro, data) MREPEAT120(macro, data) macro(120, data)
#define MREPEAT122(macro, data) MREPEAT121(macro, data) macro(121, data)
#define MREPEAT123(macro, data) MREPEAT122(macro, data) macro(122, data)
#define MREPEAT124(macro, data) MREPEAT123(macro, data) macro(123, data)
#define MREPEAT125(macro, data) MREPEAT124(macro, data) macro(124, data)
#define MREPEAT126(macro, data) MREPEAT125(macro, data) macro(125, data)
#define MREPEAT127(macro, data) MREPEAT126(macro, data) macro(126, data)
#define MREPEAT128(macro, data) MREPEAT127(macro, data) macro(127, data)
#define MREPEAT129(macro, data) MREPEAT128(macro, data) macro(128, data)
#define MREPEAT130(macro, data) MREPEAT129(macro, data) macro(129, data)
#define MREPEAT131(macro, data) MREPEAT130(macro, data) macro(130, data)
#define MREPEAT132(macro, data) MREPEAT131(macro, data) macro(131, data)
#define MREPEAT133(macro, data) MREPEAT132(macro, data) macro(132, data)
#define MREPEAT134(macro, data) MREPEAT133(macro, data) macro(133, data)
#define MREPEAT135(macro, data) MREPEAT134(macro, data) macro(134, data)
#define MREPEAT136(macro, data) MREPEAT135(macro, data) macro(135, data)
#define MREPEAT137(macro, data) MREPEAT136(macro, data) macro(136, data)
#define MREPEAT138(macro, data) MREPEAT137(macro, data) macro(137, data)
#define MREPEAT139(macro, data) MREPEAT138(macro, data) macro(138, data)
#define MREPEAT140(macro, data) MREPEAT139(macro, data) macro(139, data)
#define MREPEAT141(macro, data) MREPEAT140(macro, data) macro(140, data)
#define MREPEAT142(macro, data) MREPEAT141(macro, data) macro(141, data)
#define MREPEAT143(macro, data) MREPEAT142(macro, data) macro(142, data)
#define MREPEAT144(macro, data) MREPEAT143(macro, data) macro(143, data)
#define MREPEAT145(macro, data) MREPEAT144(macro, data) macro(144, data)
#define MREPEAT146(macro, data) MREPEAT145(macro, data) macro(145, data)
#define MREPEAT147(macro, data) MREPEAT146(macro, data) macro(146, data)
#define MREPEAT148(macro, data) MREPEAT147(macro, data) macro(147, data)
#define MREPEAT149(macro, data) MREPEAT148(macro, data) macro(148, data)
#define MREPEAT150(macro, data) MREPEAT149(macro, data) macro(149, data)
#define MREPEAT151(macro, data) MREPEAT150(macro, data) macro(150, data)
#define MREPEAT152(macro, data) MREPEAT151(macro, data) macro(151, data)
#define MREPEAT153(macro, data) MREPEAT152(macro, data) macro(152, data)
#define MREPEAT154(macro, data) MREPEAT153(macro, data) macro(153, data)
#define MREPEAT155(macro, data) MREPEAT154(macro, data) macro(154, data)
#define MREPEAT156(macro, data) MREPEAT155(macro, data) macro(155, data)
#define MREPEAT157(macro, data) MREPEAT156(macro, data) macro(156, data)
#define MREPEAT158(macro, data) MREPEAT157(macro, data) macro(157, data)
#define MREPEAT159(macro, data) MREPEAT158(macro, data) macro(158, data)
#define MREPEAT160(macro, data) MREPEAT159(macro, data) macro(159, data)
#define MREPEAT161(macro, data) MREPEAT160(macro, data) macro(160, data)
#define MREPEAT162(macro, data) MREPEAT161(macro, data) macro(161, data)
#define MREPEAT163(macro, data) MREPEAT162(macro, data) macro(162, data)
#define MREPEAT164(macro, data) MREPEAT163(macro, data) macro(163, data)
#define MREPEAT165(macro, data) MREPEAT164(macro, data) macro(164, data)
#define MREPEAT166(macro, data) MREPEAT165(macro, data) macro(165, data)
#define MREPEAT167(macro, data) MREPEAT166(macro, data) macro(166, data)
#define MREPEAT168(macro, data) MREPEAT167(macro, data) macro(167, data)
#define MREPEAT169(macro, data) MREPEAT168(macro, data) macro(168, data)
#define MREPEAT170(macro, data) MREPEAT169(macro, data) macro(169, data)
#define MREPEAT171(macro, data) MREPEAT170(macro, data) macro(170, data)
#define MREPEAT172(macro, data) MREPEAT171(macro, data) macro(171, data)
#define MREPEAT173(macro, data) MREPEAT172(macro, data) macro(172, data)
#define MREPEAT174(macro, data) MREPEAT173(macro, data) macro(173, data)
#define MREPEAT175(macro, data) MREPEAT174(macro, data) macro(174, data)
#define MREPEAT176(macro, data) MREPEAT175(macro, data) macro(175, data)
#define MREPEAT177(macro, data) MREPEAT176(macro, data) macro(176, data)
#define MREPEAT178(macro, data) MREPEAT177(macro, data) macro(177, data)
#define MREPEAT179(macro, data) MREPEAT178(macro, data) macro(178, data)
#define MREPEAT180(macro, data) MREPEAT179(macro, data) macro(179, data)
#define MREPEAT181(macro, data) MREPEAT180(macro, data) macro(180, data)
#define MREPEAT182(macro, data) MREPEAT181(macro, data) macro(181, data)
#define MREPEAT183(macro, data) MREPEAT182(macro, data) macro(182, data)
#define MREPEAT184(macro, data) MREPEAT183(macro, data) macro(183, data)
#define MREPEAT185(macro, data) MREPEAT184(macro, data) macro(184, data)
#define MREPEAT186(macro, data) MREPEAT185(macro, data) macro(185, data)
#define MREPEAT187(macro, data) MREPEAT186(macro, data) macro(186, data)
#define MREPEAT188(macro, data) MREPEAT187(macro, data) macro(187, data)
#define MREPEAT189(macro, data) MREPEAT188(macro, data) macro(188, data)
#define MREPEAT190(macro, data) MREPEAT189(macro, data) macro(189, data)
#define MREPEAT191(macro, data) MREPEAT190(macro, data) macro(190, data)
#define MREPEAT192(macro, data) MREPEAT191(macro, data) macro(191, data)
#define MREPEAT193(macro, data) MREPEAT192(macro, data) macro(192, data)
#define MREPEAT194(macro, data) MREPEAT193(macro, data) macro(193, data)
#define MREPEAT195(macro, data) MREPEAT194(macro, data) macro(194, data)
#define MREPEAT196(macro, data) MREPEAT195(macro, data) macro(195, data)
#define MREPEAT197(macro, data) MREPEAT196(macro, data) macro(196, data)
#define MREPEAT198(macro, data) MREPEAT197(macro, data) macro(197, data)
#define MREPEAT199(macro, data) MREPEAT198(macro, data) macro(198, data)
#define MREPEAT200(macro, data) MREPEAT199(macro, data) macro(199, data)
#define MREPEAT201(macro, data) MREPEAT200(macro, data) macro(200, data)
#define MREPEAT202(macro, data) MREPEAT201(macro, data) macro(201, data)
#define MREPEAT203(macro, data) MREPEAT202(macro, data) macro(202, data)
#define MREPEAT204(macro, data) MREPEAT203(macro, data) macro(203, data)
#define MREPEAT205(macro, data) MREPEAT204(macro, data) macro(204, data)
#define MREPEAT206(macro, data) MREPEAT205(macro, data) macro(205, data)
#define MREPEAT207(macro, data) MREPEAT206(macro, data) macro(206, data)
#define MREPEAT208(macro, data) MREPEAT207(macro, data) macro(207, data)
#define MREPEAT209(macro, data) MREPEAT208(macro, data) macro(208, data)
#define MREPEAT210(macro, data) MREPEAT209(macro, data) macro(209, data)
#define MREPEAT211(macro, data) MREPEAT210(macro, data) macro(210, data)
#define MREPEAT212(macro, data) MREPEAT211(macro, data) macro(211, data)
#define MREPEAT213(macro, data) MREPEAT212(macro, data) macro(212, data)
#define MREPEAT214(macro, data) MREPEAT213(macro, data) macro(213, data)
#define MREPEAT215(macro, data) MREPEAT214(macro, data) macro(214, data)
#define MREPEAT216(macro, data) MREPEAT215(macro, data) macro(215, data)
#define MREPEAT217(macro, data) MREPEAT216(macro, data) macro(216, data)
#define MREPEAT218(macro, data) MREPEAT217(macro, data) macro(217, data)
#define MREPEAT219(macro, data) MREPEAT218(macro, data) macro(218, data)
#define MREPEAT220(macro, data) MREPEAT219(macro, data) macro(219, data)
#define MREPEAT221(macro, data) MREPEAT220(macro, data) macro(220, data)
#define MREPEAT222(macro, data) MREPEAT221(macro, data) macro(221, data)
#define MREPEAT223(macro, data) MREPEAT222(macro, data) macro(222, data)
#define MREPEAT224(macro, data) MREPEAT223(macro, data) macro(223, data)
#define MREPEAT225(macro, data) MREPEAT224(macro, data) macro(224, data)
#define MREPEAT226(macro, data) MREPEAT225(macro, data) macro(225, data)
#define MREPEAT227(macro, data) MREPEAT226(macro, data) macro(226, data)
#define MREPEAT228(macro, data) MREPEAT227(macro, data) macro(227, data)
#define MREPEAT229(macro, data) MREPEAT228(macro, data) macro(228, data)
#define MREPEAT230(macro, data) MREPEAT229(macro, data) macro(229, data)
#define MREPEAT231(macro, data) MREPEAT230(macro, data) macro(230, data)
#define MREPEAT232(macro, data) MREPEAT231(macro, data) macro(231, data)
#define MREPEAT233(macro, data) MREPEAT232(macro, data) macro(232, data)
#define MREPEAT234(macro, data) MREPEAT233(macro, data) macro(233, data)
#define MREPEAT235(macro, data) MREPEAT234(macro, data) macro(234, data)
#define MREPEAT236(macro, data) MREPEAT235(macro, data) macro(235, data)
#define MREPEAT237(macro, data) MREPEAT236(macro, data) macro(236, data)
#define MREPEAT238(macro, data) MREPEAT237(macro, data) macro(237, data)
#define MREPEAT239(macro, data) MREPEAT238(macro, data) macro(238, data)
#define MREPEAT240(macro, data) MREPEAT239(macro, data) macro(239, data)
#define MREPEAT241(macro, data) MREPEAT240(macro, data) macro(240, data)
#define MREPEAT242(macro, data) MREPEAT241(macro, data) macro(241, data)
#define MREPEAT243(macro, data) MREPEAT242(macro, data) macro(242, data)
#define MREPEAT244(macro, data) MREPEAT243(macro, data) macro(243, data)
#define MREPEAT245(macro, data) MREPEAT244(macro, data) macro(244, data)
#define MREPEAT246(macro, data) MREPEAT245(macro, data) macro(245, data)
#define MREPEAT247(macro, data) MREPEAT246(macro, data) macro(246, data)
#define MREPEAT248(macro, data) MREPEAT247(macro, data) macro(247, data)
#define MREPEAT249(macro, data) MREPEAT248(macro, data) macro(248, data)
#define MREPEAT250(macro, data) MREPEAT249(macro, data) macro(249, data)
#define MREPEAT251(macro, data) MREPEAT250(macro, data) macro(250, data)
#define MREPEAT252(macro, data) MREPEAT251(macro, data) macro(251, data)
#define MREPEAT253(macro, data) MREPEAT252(macro, data) macro(252, data)
#define MREPEAT254(macro, data) MREPEAT253(macro, data) macro(253, data)
#define MREPEAT255(macro, data) MREPEAT254(macro, data) macro(254, data)
#define MREPEAT256(macro, data) MREPEAT255(macro, data) macro(255, data)
/** @} */
#endif /* _MREPEAT_H_ */

View file

@ -0,0 +1,38 @@
/* ----------------------------------------------------------------------------
* SAM Software Package License
* ----------------------------------------------------------------------------
* Copyright (c) 2011-2014, Atmel Corporation
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following condition is met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
*
* Atmel's name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ----------------------------------------------------------------------------
*/
#ifndef _PREPROCESSOR_H_
#define _PREPROCESSOR_H_
#include "tpaste.h"
#include "stringz.h"
#include "mrepeat.h"
#include "mrecursion.h"
#endif // _PREPROCESSOR_H_

View file

@ -0,0 +1,67 @@
/* ----------------------------------------------------------------------------
* SAM Software Package License
* ----------------------------------------------------------------------------
* Copyright (c) 2011-2014, Atmel Corporation
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following condition is met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
*
* Atmel's name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ----------------------------------------------------------------------------
*/
#ifndef _STRINGZ_H_
#define _STRINGZ_H_
/**
* \defgroup group_sam0_utils_stringz Preprocessor - Stringize
*
* \ingroup group_sam0_utils
*
* @{
*/
/** \brief Stringize.
*
* Stringize a preprocessing token, this token being allowed to be \#defined.
*
* May be used only within macros with the token passed as an argument if the
* token is \#defined.
*
* For example, writing STRINGZ(PIN) within a macro \#defined by PIN_NAME(PIN)
* and invoked as PIN_NAME(PIN0) with PIN0 \#defined as A0 is equivalent to
* writing "A0".
*/
#define STRINGZ(x) #x
/** \brief Absolute stringize.
*
* Stringize a preprocessing token, this token being allowed to be \#defined.
*
* No restriction of use if the token is \#defined.
*
* For example, writing ASTRINGZ(PIN0) anywhere with PIN0 \#defined as A0 is
* equivalent to writing "A0".
*/
#define ASTRINGZ(x) STRINGZ(x)
/** @} */
#endif // _STRINGZ_H_

View file

@ -0,0 +1,85 @@
/* ----------------------------------------------------------------------------
* SAM Software Package License
* ----------------------------------------------------------------------------
* Copyright (c) 2011-2014, Atmel Corporation
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following condition is met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
*
* Atmel's name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ----------------------------------------------------------------------------
*/
#ifndef _TPASTE_H_
#define _TPASTE_H_
/**
* \defgroup group_sam0_utils_tpaste Preprocessor - Token Paste
*
* \ingroup group_sam0_utils
*
* @{
*/
/** \name Token Paste
*
* Paste N preprocessing tokens together, these tokens being allowed to be \#defined.
*
* May be used only within macros with the tokens passed as arguments if the tokens are \#defined.
*
* For example, writing TPASTE2(U, WIDTH) within a macro \#defined by
* UTYPE(WIDTH) and invoked as UTYPE(UL_WIDTH) with UL_WIDTH \#defined as 32 is
* equivalent to writing U32.
*
* @{ */
#define TPASTE2( a, b) a##b
#define TPASTE3( a, b, c) a##b##c
#define TPASTE4( a, b, c, d) a##b##c##d
#define TPASTE5( a, b, c, d, e) a##b##c##d##e
#define TPASTE6( a, b, c, d, e, f) a##b##c##d##e##f
#define TPASTE7( a, b, c, d, e, f, g) a##b##c##d##e##f##g
#define TPASTE8( a, b, c, d, e, f, g, h) a##b##c##d##e##f##g##h
#define TPASTE9( a, b, c, d, e, f, g, h, i) a##b##c##d##e##f##g##h##i
#define TPASTE10(a, b, c, d, e, f, g, h, i, j) a##b##c##d##e##f##g##h##i##j
/** @} */
/** \name Absolute Token Paste
*
* Paste N preprocessing tokens together, these tokens being allowed to be \#defined.
*
* No restriction of use if the tokens are \#defined.
*
* For example, writing ATPASTE2(U, UL_WIDTH) anywhere with UL_WIDTH \#defined
* as 32 is equivalent to writing U32.
*
* @{ */
#define ATPASTE2( a, b) TPASTE2( a, b)
#define ATPASTE3( a, b, c) TPASTE3( a, b, c)
#define ATPASTE4( a, b, c, d) TPASTE4( a, b, c, d)
#define ATPASTE5( a, b, c, d, e) TPASTE5( a, b, c, d, e)
#define ATPASTE6( a, b, c, d, e, f) TPASTE6( a, b, c, d, e, f)
#define ATPASTE7( a, b, c, d, e, f, g) TPASTE7( a, b, c, d, e, f, g)
#define ATPASTE8( a, b, c, d, e, f, g, h) TPASTE8( a, b, c, d, e, f, g, h)
#define ATPASTE9( a, b, c, d, e, f, g, h, i) TPASTE9( a, b, c, d, e, f, g, h, i)
#define ATPASTE10(a, b, c, d, e, f, g, h, i, j) TPASTE10(a, b, c, d, e, f, g, h, i, j)
/** @} */
/** @} */
#endif // _TPASTE_H_