2 * This file is part of Betaflight.
4 * Betaflight is free software. You can redistribute this software
5 * and/or modify this software under the terms of the GNU General
6 * Public License as published by the Free Software Foundation,
7 * either version 3 of the License, or (at your option) any later
10 * Betaflight is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14 * See the GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public
17 * License along with this software.
19 * If not, see <http://www.gnu.org/licenses/>.
23 This file is automatically generated by src/utils/gen-serial.py script from src/utils/templates/serial_post.h jinja2 template.
24 Do not modify this file directly, your changes will be eventually lost.
25 See template file for aditional documentation.
27 To generate this file again, run
28 > python ./src/utils/gen-serial-j2.py > ./src/main/target/serial_post.h
29 in Betaflight topmost directory.
31 This include will provide following defines:
32 SERIAL_<type><n>_USED 0/1 - always defined, value depends on target configuration
33 SERIAL_<type>_MASK - bitmask of used ports or given type. <port>0 or <port>1 is BIT(0), based on port first_index
34 SERIAL_<type>_COUNT - number of enabled ports of given type
35 SERIAL_<type>_MAX - <index of highest used port> + 1, 0 when no port is enabled
37 All <type><n>_(RX|TX)_PINS are normalized too:
38 - if port is enabled, both will be defined (possibly as NONE)
39 - if port is not enable, both will be undefined, possibly with warning
40 - pass -DWARN_UNUSED_SERIAL_PORT to compiler to check pin defined without corresponding port being enabled.
42 Generated on 2024-12-20
45 { 'LPUART': {'depends': {'UART'}, 'ids': [1]},
46 'SOFTSERIAL': { 'force_continuous': True,
48 'use_enables_all': True},
49 'UART': { 'first_index': True,
50 'ids': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
52 'VCP': {'no_pins': True, 'singleton': True}}
55 #include "common/utils.h" // BIT, LOG2
59 // normalize SERIAL_UART_FIRST_INDEX
60 #ifndef SERIAL_UART_FIRST_INDEX
61 #define SERIAL_UART_FIRST_INDEX 1
64 #if SERIAL_UART_FIRST_INDEX == 0
65 #if defined(USE_UART0)
66 # define SERIAL_UART0_USED 1
68 # define SERIAL_UART0_USED 0
70 #else // USE_UART0 is not allowed
71 # if defined(USE_UART0)
72 # error "USE_UART0 is defined, but SERIAL_UART does not allow index 0"
74 # define SERIAL_UART0_USED 0
77 #if defined(USE_UART1)
78 # define SERIAL_UART1_USED 1
80 # define SERIAL_UART1_USED 0
82 #if defined(USE_UART2)
83 # define SERIAL_UART2_USED 1
85 # define SERIAL_UART2_USED 0
87 #if defined(USE_UART3)
88 # define SERIAL_UART3_USED 1
90 # define SERIAL_UART3_USED 0
92 #if defined(USE_UART4)
93 # define SERIAL_UART4_USED 1
95 # define SERIAL_UART4_USED 0
97 #if defined(USE_UART5)
98 # define SERIAL_UART5_USED 1
100 # define SERIAL_UART5_USED 0
102 #if defined(USE_UART6)
103 # define SERIAL_UART6_USED 1
105 # define SERIAL_UART6_USED 0
107 #if defined(USE_UART7)
108 # define SERIAL_UART7_USED 1
110 # define SERIAL_UART7_USED 0
112 #if defined(USE_UART8)
113 # define SERIAL_UART8_USED 1
115 # define SERIAL_UART8_USED 0
117 #if defined(USE_UART9)
118 # define SERIAL_UART9_USED 1
120 # define SERIAL_UART9_USED 0
122 #if defined(USE_UART10)
123 # define SERIAL_UART10_USED 1
125 # define SERIAL_UART10_USED 0
128 #define SERIAL_UART_MASK ((SERIAL_UART0_USED * BIT(0)) | (SERIAL_UART1_USED * BIT(1 - SERIAL_UART_FIRST_INDEX)) | (SERIAL_UART2_USED * BIT(2 - SERIAL_UART_FIRST_INDEX)) | (SERIAL_UART3_USED * BIT(3 - SERIAL_UART_FIRST_INDEX)) | (SERIAL_UART4_USED * BIT(4 - SERIAL_UART_FIRST_INDEX)) | (SERIAL_UART5_USED * BIT(5 - SERIAL_UART_FIRST_INDEX)) | (SERIAL_UART6_USED * BIT(6 - SERIAL_UART_FIRST_INDEX)) | (SERIAL_UART7_USED * BIT(7 - SERIAL_UART_FIRST_INDEX)) | (SERIAL_UART8_USED * BIT(8 - SERIAL_UART_FIRST_INDEX)) | (SERIAL_UART9_USED * BIT(9 - SERIAL_UART_FIRST_INDEX)) | (SERIAL_UART10_USED * BIT(10 - SERIAL_UART_FIRST_INDEX)))
129 #define SERIAL_UART_COUNT (SERIAL_UART0_USED + SERIAL_UART1_USED + SERIAL_UART2_USED + SERIAL_UART3_USED + SERIAL_UART4_USED + SERIAL_UART5_USED + SERIAL_UART6_USED + SERIAL_UART7_USED + SERIAL_UART8_USED + SERIAL_UART9_USED + SERIAL_UART10_USED)
130 // 0 if no port is defined
131 #define SERIAL_UART_MAX (SERIAL_UART_MASK ? LOG2(SERIAL_UART_MASK) + 1 : 0)
132 // enable USE_INVERTED first, before normalization
133 #if !defined(USE_INVERTER) && (INVERTER_PIN_UART0 || INVERTER_PIN_UART1 || INVERTER_PIN_UART2 || INVERTER_PIN_UART3 || INVERTER_PIN_UART4 || INVERTER_PIN_UART5 || INVERTER_PIN_UART6 || INVERTER_PIN_UART7 || INVERTER_PIN_UART8 || INVERTER_PIN_UART9 || INVERTER_PIN_UART10)
134 # define USE_INVERTER
137 // Normalize UART TX/RX/INVERTER
138 #if SERIAL_UART0_USED && !defined(UART0_RX_PIN)
139 # define UART0_RX_PIN NONE
141 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART0_USED && defined(UART0_RX_PIN)
142 # warning "UART0_RX_PIN is defined but UART0 is not enabled"
144 #if !SERIAL_UART0_USED && defined(UART0_RX_PIN)
147 #if SERIAL_UART0_USED && !defined(UART0_TX_PIN)
148 # define UART0_TX_PIN NONE
150 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART0_USED && defined(UART0_TX_PIN)
151 # warning "UART0_TX_PIN is defined but UART0 is not enabled"
153 #if !SERIAL_UART0_USED && defined(UART0_TX_PIN)
156 #if SERIAL_UART0_USED && !defined(INVERTER_PIN_UART0)
157 # define INVERTER_PIN_UART0 NONE
159 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART0_USED && defined(INVERTER_PIN_UART0)
160 # warning "INVERTER_PIN_UART0 is defined but UART0 is not enabled"
162 #if !SERIAL_UART0_USED && defined(INVERTER_PIN_UART0)
163 # undef INVERTER_PIN_UART0
165 #if SERIAL_UART1_USED && !defined(UART1_RX_PIN)
166 # define UART1_RX_PIN NONE
168 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART1_USED && defined(UART1_RX_PIN)
169 # warning "UART1_RX_PIN is defined but UART1 is not enabled"
171 #if !SERIAL_UART1_USED && defined(UART1_RX_PIN)
174 #if SERIAL_UART1_USED && !defined(UART1_TX_PIN)
175 # define UART1_TX_PIN NONE
177 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART1_USED && defined(UART1_TX_PIN)
178 # warning "UART1_TX_PIN is defined but UART1 is not enabled"
180 #if !SERIAL_UART1_USED && defined(UART1_TX_PIN)
183 #if SERIAL_UART1_USED && !defined(INVERTER_PIN_UART1)
184 # define INVERTER_PIN_UART1 NONE
186 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART1_USED && defined(INVERTER_PIN_UART1)
187 # warning "INVERTER_PIN_UART1 is defined but UART1 is not enabled"
189 #if !SERIAL_UART1_USED && defined(INVERTER_PIN_UART1)
190 # undef INVERTER_PIN_UART1
192 #if SERIAL_UART2_USED && !defined(UART2_RX_PIN)
193 # define UART2_RX_PIN NONE
195 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART2_USED && defined(UART2_RX_PIN)
196 # warning "UART2_RX_PIN is defined but UART2 is not enabled"
198 #if !SERIAL_UART2_USED && defined(UART2_RX_PIN)
201 #if SERIAL_UART2_USED && !defined(UART2_TX_PIN)
202 # define UART2_TX_PIN NONE
204 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART2_USED && defined(UART2_TX_PIN)
205 # warning "UART2_TX_PIN is defined but UART2 is not enabled"
207 #if !SERIAL_UART2_USED && defined(UART2_TX_PIN)
210 #if SERIAL_UART2_USED && !defined(INVERTER_PIN_UART2)
211 # define INVERTER_PIN_UART2 NONE
213 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART2_USED && defined(INVERTER_PIN_UART2)
214 # warning "INVERTER_PIN_UART2 is defined but UART2 is not enabled"
216 #if !SERIAL_UART2_USED && defined(INVERTER_PIN_UART2)
217 # undef INVERTER_PIN_UART2
219 #if SERIAL_UART3_USED && !defined(UART3_RX_PIN)
220 # define UART3_RX_PIN NONE
222 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART3_USED && defined(UART3_RX_PIN)
223 # warning "UART3_RX_PIN is defined but UART3 is not enabled"
225 #if !SERIAL_UART3_USED && defined(UART3_RX_PIN)
228 #if SERIAL_UART3_USED && !defined(UART3_TX_PIN)
229 # define UART3_TX_PIN NONE
231 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART3_USED && defined(UART3_TX_PIN)
232 # warning "UART3_TX_PIN is defined but UART3 is not enabled"
234 #if !SERIAL_UART3_USED && defined(UART3_TX_PIN)
237 #if SERIAL_UART3_USED && !defined(INVERTER_PIN_UART3)
238 # define INVERTER_PIN_UART3 NONE
240 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART3_USED && defined(INVERTER_PIN_UART3)
241 # warning "INVERTER_PIN_UART3 is defined but UART3 is not enabled"
243 #if !SERIAL_UART3_USED && defined(INVERTER_PIN_UART3)
244 # undef INVERTER_PIN_UART3
246 #if SERIAL_UART4_USED && !defined(UART4_RX_PIN)
247 # define UART4_RX_PIN NONE
249 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART4_USED && defined(UART4_RX_PIN)
250 # warning "UART4_RX_PIN is defined but UART4 is not enabled"
252 #if !SERIAL_UART4_USED && defined(UART4_RX_PIN)
255 #if SERIAL_UART4_USED && !defined(UART4_TX_PIN)
256 # define UART4_TX_PIN NONE
258 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART4_USED && defined(UART4_TX_PIN)
259 # warning "UART4_TX_PIN is defined but UART4 is not enabled"
261 #if !SERIAL_UART4_USED && defined(UART4_TX_PIN)
264 #if SERIAL_UART4_USED && !defined(INVERTER_PIN_UART4)
265 # define INVERTER_PIN_UART4 NONE
267 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART4_USED && defined(INVERTER_PIN_UART4)
268 # warning "INVERTER_PIN_UART4 is defined but UART4 is not enabled"
270 #if !SERIAL_UART4_USED && defined(INVERTER_PIN_UART4)
271 # undef INVERTER_PIN_UART4
273 #if SERIAL_UART5_USED && !defined(UART5_RX_PIN)
274 # define UART5_RX_PIN NONE
276 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART5_USED && defined(UART5_RX_PIN)
277 # warning "UART5_RX_PIN is defined but UART5 is not enabled"
279 #if !SERIAL_UART5_USED && defined(UART5_RX_PIN)
282 #if SERIAL_UART5_USED && !defined(UART5_TX_PIN)
283 # define UART5_TX_PIN NONE
285 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART5_USED && defined(UART5_TX_PIN)
286 # warning "UART5_TX_PIN is defined but UART5 is not enabled"
288 #if !SERIAL_UART5_USED && defined(UART5_TX_PIN)
291 #if SERIAL_UART5_USED && !defined(INVERTER_PIN_UART5)
292 # define INVERTER_PIN_UART5 NONE
294 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART5_USED && defined(INVERTER_PIN_UART5)
295 # warning "INVERTER_PIN_UART5 is defined but UART5 is not enabled"
297 #if !SERIAL_UART5_USED && defined(INVERTER_PIN_UART5)
298 # undef INVERTER_PIN_UART5
300 #if SERIAL_UART6_USED && !defined(UART6_RX_PIN)
301 # define UART6_RX_PIN NONE
303 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART6_USED && defined(UART6_RX_PIN)
304 # warning "UART6_RX_PIN is defined but UART6 is not enabled"
306 #if !SERIAL_UART6_USED && defined(UART6_RX_PIN)
309 #if SERIAL_UART6_USED && !defined(UART6_TX_PIN)
310 # define UART6_TX_PIN NONE
312 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART6_USED && defined(UART6_TX_PIN)
313 # warning "UART6_TX_PIN is defined but UART6 is not enabled"
315 #if !SERIAL_UART6_USED && defined(UART6_TX_PIN)
318 #if SERIAL_UART6_USED && !defined(INVERTER_PIN_UART6)
319 # define INVERTER_PIN_UART6 NONE
321 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART6_USED && defined(INVERTER_PIN_UART6)
322 # warning "INVERTER_PIN_UART6 is defined but UART6 is not enabled"
324 #if !SERIAL_UART6_USED && defined(INVERTER_PIN_UART6)
325 # undef INVERTER_PIN_UART6
327 #if SERIAL_UART7_USED && !defined(UART7_RX_PIN)
328 # define UART7_RX_PIN NONE
330 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART7_USED && defined(UART7_RX_PIN)
331 # warning "UART7_RX_PIN is defined but UART7 is not enabled"
333 #if !SERIAL_UART7_USED && defined(UART7_RX_PIN)
336 #if SERIAL_UART7_USED && !defined(UART7_TX_PIN)
337 # define UART7_TX_PIN NONE
339 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART7_USED && defined(UART7_TX_PIN)
340 # warning "UART7_TX_PIN is defined but UART7 is not enabled"
342 #if !SERIAL_UART7_USED && defined(UART7_TX_PIN)
345 #if SERIAL_UART7_USED && !defined(INVERTER_PIN_UART7)
346 # define INVERTER_PIN_UART7 NONE
348 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART7_USED && defined(INVERTER_PIN_UART7)
349 # warning "INVERTER_PIN_UART7 is defined but UART7 is not enabled"
351 #if !SERIAL_UART7_USED && defined(INVERTER_PIN_UART7)
352 # undef INVERTER_PIN_UART7
354 #if SERIAL_UART8_USED && !defined(UART8_RX_PIN)
355 # define UART8_RX_PIN NONE
357 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART8_USED && defined(UART8_RX_PIN)
358 # warning "UART8_RX_PIN is defined but UART8 is not enabled"
360 #if !SERIAL_UART8_USED && defined(UART8_RX_PIN)
363 #if SERIAL_UART8_USED && !defined(UART8_TX_PIN)
364 # define UART8_TX_PIN NONE
366 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART8_USED && defined(UART8_TX_PIN)
367 # warning "UART8_TX_PIN is defined but UART8 is not enabled"
369 #if !SERIAL_UART8_USED && defined(UART8_TX_PIN)
372 #if SERIAL_UART8_USED && !defined(INVERTER_PIN_UART8)
373 # define INVERTER_PIN_UART8 NONE
375 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART8_USED && defined(INVERTER_PIN_UART8)
376 # warning "INVERTER_PIN_UART8 is defined but UART8 is not enabled"
378 #if !SERIAL_UART8_USED && defined(INVERTER_PIN_UART8)
379 # undef INVERTER_PIN_UART8
381 #if SERIAL_UART9_USED && !defined(UART9_RX_PIN)
382 # define UART9_RX_PIN NONE
384 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART9_USED && defined(UART9_RX_PIN)
385 # warning "UART9_RX_PIN is defined but UART9 is not enabled"
387 #if !SERIAL_UART9_USED && defined(UART9_RX_PIN)
390 #if SERIAL_UART9_USED && !defined(UART9_TX_PIN)
391 # define UART9_TX_PIN NONE
393 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART9_USED && defined(UART9_TX_PIN)
394 # warning "UART9_TX_PIN is defined but UART9 is not enabled"
396 #if !SERIAL_UART9_USED && defined(UART9_TX_PIN)
399 #if SERIAL_UART9_USED && !defined(INVERTER_PIN_UART9)
400 # define INVERTER_PIN_UART9 NONE
402 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART9_USED && defined(INVERTER_PIN_UART9)
403 # warning "INVERTER_PIN_UART9 is defined but UART9 is not enabled"
405 #if !SERIAL_UART9_USED && defined(INVERTER_PIN_UART9)
406 # undef INVERTER_PIN_UART9
408 #if SERIAL_UART10_USED && !defined(UART10_RX_PIN)
409 # define UART10_RX_PIN NONE
411 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART10_USED && defined(UART10_RX_PIN)
412 # warning "UART10_RX_PIN is defined but UART10 is not enabled"
414 #if !SERIAL_UART10_USED && defined(UART10_RX_PIN)
415 # undef UART10_RX_PIN
417 #if SERIAL_UART10_USED && !defined(UART10_TX_PIN)
418 # define UART10_TX_PIN NONE
420 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART10_USED && defined(UART10_TX_PIN)
421 # warning "UART10_TX_PIN is defined but UART10 is not enabled"
423 #if !SERIAL_UART10_USED && defined(UART10_TX_PIN)
424 # undef UART10_TX_PIN
426 #if SERIAL_UART10_USED && !defined(INVERTER_PIN_UART10)
427 # define INVERTER_PIN_UART10 NONE
429 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_UART10_USED && defined(INVERTER_PIN_UART10)
430 # warning "INVERTER_PIN_UART10 is defined but UART10 is not enabled"
432 #if !SERIAL_UART10_USED && defined(INVERTER_PIN_UART10)
433 # undef INVERTER_PIN_UART10
438 #if defined(USE_LPUART1)
439 # define SERIAL_LPUART1_USED 1
441 # define SERIAL_LPUART1_USED 0
444 #define SERIAL_LPUART_MASK ((SERIAL_LPUART1_USED * BIT(1 - 1)))
445 #define SERIAL_LPUART_COUNT (SERIAL_LPUART1_USED)
446 // 0 if no port is defined
447 #define SERIAL_LPUART_MAX (SERIAL_LPUART_MASK ? LOG2(SERIAL_LPUART_MASK) + 1 : 0)
449 // Normalize LPUART TX/RX
450 #if SERIAL_LPUART1_USED && !defined(LPUART1_RX_PIN)
451 # define LPUART1_RX_PIN NONE
453 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_LPUART1_USED && defined(LPUART1_RX_PIN)
454 # warning "LPUART1_RX_PIN is defined but LPUART1 is not enabled"
456 #if !SERIAL_LPUART1_USED && defined(LPUART1_RX_PIN)
457 # undef LPUART1_RX_PIN
459 #if SERIAL_LPUART1_USED && !defined(LPUART1_TX_PIN)
460 # define LPUART1_TX_PIN NONE
462 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_LPUART1_USED && defined(LPUART1_TX_PIN)
463 # warning "LPUART1_TX_PIN is defined but LPUART1 is not enabled"
465 #if !SERIAL_LPUART1_USED && defined(LPUART1_TX_PIN)
466 # undef LPUART1_TX_PIN
469 /**** SOFTSERIAL *****/
471 #if defined(USE_SOFTSERIAL)
472 // USE_SOFTSERIAL enables all SOFTSERIAL ports
473 # if !defined(USE_SOFTSERIAL1)
474 # define USE_SOFTSERIAL1
476 # if !defined(USE_SOFTSERIAL2)
477 # define USE_SOFTSERIAL2
481 #if defined(USE_SOFTSERIAL1)
482 # define SERIAL_SOFTSERIAL1_USED 1
484 # define SERIAL_SOFTSERIAL1_USED 0
486 #if defined(USE_SOFTSERIAL2)
487 # define SERIAL_SOFTSERIAL2_USED 1
489 # define SERIAL_SOFTSERIAL2_USED 0
492 #define SERIAL_SOFTSERIAL_MASK ((SERIAL_SOFTSERIAL1_USED * BIT(1 - 1)) | (SERIAL_SOFTSERIAL2_USED * BIT(2 - 1)))
493 #define SERIAL_SOFTSERIAL_COUNT (SERIAL_SOFTSERIAL1_USED + SERIAL_SOFTSERIAL2_USED)
494 // 0 if no port is defined
495 #define SERIAL_SOFTSERIAL_MAX (SERIAL_SOFTSERIAL_MASK ? LOG2(SERIAL_SOFTSERIAL_MASK) + 1 : 0)
497 #if SERIAL_SOFTSERIAL_COUNT != SERIAL_SOFTSERIAL_MAX
498 # error SOFTSERIAL ports must start with SOFTSERIAL1 and be continuous
501 // Normalize SOFTSERIAL TX/RX
502 #if SERIAL_SOFTSERIAL1_USED && !defined(SOFTSERIAL1_RX_PIN)
503 # define SOFTSERIAL1_RX_PIN NONE
505 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_SOFTSERIAL1_USED && defined(SOFTSERIAL1_RX_PIN)
506 # warning "SOFTSERIAL1_RX_PIN is defined but SOFTSERIAL1 is not enabled"
508 #if !SERIAL_SOFTSERIAL1_USED && defined(SOFTSERIAL1_RX_PIN)
509 # undef SOFTSERIAL1_RX_PIN
511 #if SERIAL_SOFTSERIAL1_USED && !defined(SOFTSERIAL1_TX_PIN)
512 # define SOFTSERIAL1_TX_PIN NONE
514 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_SOFTSERIAL1_USED && defined(SOFTSERIAL1_TX_PIN)
515 # warning "SOFTSERIAL1_TX_PIN is defined but SOFTSERIAL1 is not enabled"
517 #if !SERIAL_SOFTSERIAL1_USED && defined(SOFTSERIAL1_TX_PIN)
518 # undef SOFTSERIAL1_TX_PIN
520 #if SERIAL_SOFTSERIAL2_USED && !defined(SOFTSERIAL2_RX_PIN)
521 # define SOFTSERIAL2_RX_PIN NONE
523 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_SOFTSERIAL2_USED && defined(SOFTSERIAL2_RX_PIN)
524 # warning "SOFTSERIAL2_RX_PIN is defined but SOFTSERIAL2 is not enabled"
526 #if !SERIAL_SOFTSERIAL2_USED && defined(SOFTSERIAL2_RX_PIN)
527 # undef SOFTSERIAL2_RX_PIN
529 #if SERIAL_SOFTSERIAL2_USED && !defined(SOFTSERIAL2_TX_PIN)
530 # define SOFTSERIAL2_TX_PIN NONE
532 #if defined(WARN_UNUSED_SERIAL_PORT) && !SERIAL_SOFTSERIAL2_USED && defined(SOFTSERIAL2_TX_PIN)
533 # warning "SOFTSERIAL2_TX_PIN is defined but SOFTSERIAL2 is not enabled"
535 #if !SERIAL_SOFTSERIAL2_USED && defined(SOFTSERIAL2_TX_PIN)
536 # undef SOFTSERIAL2_TX_PIN
542 # define SERIAL_VCP_USED 1
544 # define SERIAL_VCP_USED 0
547 // for consistency, set one bit if port is enabled
548 #define SERIAL_VCP_MASK (SERIAL_VCP_USED * BIT(0))
549 #define SERIAL_VCP_COUNT (SERIAL_VCP_USED)
550 // 0 if no port is defined
551 #define SERIAL_VCP_MAX (SERIAL_VCP_MASK ? LOG2(SERIAL_VCP_MASK) + 1 : 0)
553 // normalize USE_x after all ports are enumerated (x_COUNT of dependencies must be available)
554 #if !defined(USE_UART) && (SERIAL_UART_COUNT || SERIAL_LPUART_COUNT)
557 #if !defined(USE_LPUART) && (SERIAL_LPUART_COUNT)
560 #if !defined(USE_SOFTSERIAL) && (SERIAL_SOFTSERIAL_COUNT)
561 # define USE_SOFTSERIAL
563 #if !defined(USE_VCP) && (SERIAL_VCP_COUNT)