diff --git a/cores/esp32/io_pin_remap.h b/cores/esp32/io_pin_remap.h index 4a23de4a829..cd5c93f8737 100644 --- a/cores/esp32/io_pin_remap.h +++ b/cores/esp32/io_pin_remap.h @@ -18,7 +18,7 @@ int8_t digitalPinFromGPIONumber(int8_t gpioPin); #define pulseInLong(pin, state, timeout) pulseInLong(digitalPinToGPIONumber(pin), state, timeout) #define pulseIn(pin, state, timeout) pulseIn(digitalPinToGPIONumber(pin), state, timeout) #define noTone(_pin) noTone(digitalPinToGPIONumber(_pin)) -#define tone(_pin, frequency, duration) tone(digitalPinToGPIONumber(_pin), frequency, duration) +#define tone(_pin, args...) tone(digitalPinToGPIONumber(_pin), args) // cores/esp32/esp32-hal.h #define analogGetChannel(pin) analogGetChannel(digitalPinToGPIONumber(pin)) diff --git a/tools/platformio-build.py b/tools/platformio-build.py index 2ee2d92894f..bc57256114a 100644 --- a/tools/platformio-build.py +++ b/tools/platformio-build.py @@ -171,6 +171,10 @@ def add_tinyuf2_extra_image(): # Target: Build Core Library # +# Set -DARDUINO_CORE_BUILD only for the core library +corelib_env = env.Clone() +corelib_env.Append(CPPDEFINES=["ARDUINO_CORE_BUILD"]) + libs = [] variants_dir = join(FRAMEWORK_DIR, "variants") @@ -180,13 +184,14 @@ def add_tinyuf2_extra_image(): if "build.variant" in board_config: env.Append(CPPPATH=[join(variants_dir, board_config.get("build.variant"))]) - env.BuildSources( + corelib_env.Append(CPPPATH=[join(variants_dir, board_config.get("build.variant"))]) + corelib_env.BuildSources( join("$BUILD_DIR", "FrameworkArduinoVariant"), join(variants_dir, board_config.get("build.variant")), ) libs.append( - env.BuildLibrary( + corelib_env.BuildLibrary( join("$BUILD_DIR", "FrameworkArduino"), join(FRAMEWORK_DIR, "cores", board_config.get("build.core")), ) diff --git a/variants/arduino_nano_nora/io_pin_remap.cpp b/variants/arduino_nano_nora/io_pin_remap.cpp index e53c500a328..2a18e029df2 100644 --- a/variants/arduino_nano_nora/io_pin_remap.cpp +++ b/variants/arduino_nano_nora/io_pin_remap.cpp @@ -1,4 +1,20 @@ -#ifndef BOARD_USES_HW_GPIO_NUMBERS +#if defined(BOARD_HAS_PIN_REMAP) && !defined(ARDUINO_CORE_BUILD) +// -DARDUINO_CORE_BUILD must be set for core files only, to avoid extra +// remapping steps that would create all sorts of issues in the core. +// Removing -DBOARD_HAS_PIN_REMAP at least does correctly restore the +// use of GPIO numbers in the API. +#error This build system is not supported. Please rebuild without BOARD_HAS_PIN_REMAP. +#endif + +#if !defined(BOARD_HAS_PIN_REMAP) +// This board uses pin mapping but the build system has disabled it +#warning The build system forces the Arduino API to use GPIO numbers on a board that has custom pin mapping. +#elif defined(BOARD_USES_HW_GPIO_NUMBERS) +// The user has chosen to disable pin mappin. +#warning The Arduino API will use GPIO numbers for this build. +#endif + +#if defined(BOARD_HAS_PIN_REMAP) && !defined(BOARD_USES_HW_GPIO_NUMBERS) #include "Arduino.h"