Skip to content

Commit 9b402f0

Browse files
committed
io_pin_remap: add sanity checks to the core build
Building with BOARD_HAS_PIN_REMAP but without setting ARDUINO_CORE_BUILD on core files is absolutely forbidden, as this would lead to multiple pin remappings being silently applied on the same numbers. Also advise the user when, on a board that has a custom pin mapping, - the core is being built without pin mapping support, or - the user explictly asked to use GPIO pin numbers.
1 parent dec6db6 commit 9b402f0

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

Diff for: variants/arduino_nano_nora/io_pin_remap.cpp

+17-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,20 @@
1-
#ifndef BOARD_USES_HW_GPIO_NUMBERS
1+
#if defined(BOARD_HAS_PIN_REMAP) && !defined(ARDUINO_CORE_BUILD)
2+
// -DARDUINO_CORE_BUILD must be set for core files only, to avoid extra
3+
// remapping steps that would create all sorts of issues in the core.
4+
// Removing -DBOARD_HAS_PIN_REMAP at least does correctly restore the
5+
// use of GPIO numbers in the API.
6+
#error This build system is not supported. Please rebuild without BOARD_HAS_PIN_REMAP.
7+
#endif
8+
9+
#if !defined(BOARD_HAS_PIN_REMAP)
10+
// This board uses pin mapping but the build system has disabled it
11+
#warning The build system forces the Arduino API to use GPIO numbers on a board that has custom pin mapping.
12+
#elif defined(BOARD_USES_HW_GPIO_NUMBERS)
13+
// The user has chosen to disable pin mappin.
14+
#warning The Arduino API will use GPIO numbers for this build.
15+
#endif
16+
17+
#if defined(BOARD_HAS_PIN_REMAP) && !defined(BOARD_USES_HW_GPIO_NUMBERS)
218

319
#include "Arduino.h"
420

0 commit comments

Comments
 (0)