Open
Description
Operating System
Linux
Arduino IDE version
PIO PlatformIO Core, version 6.1.16
Board
esp32-s3-devkitc-1
ArduinoCore version
framework-arduinoespressif32 @ 3.20017.0 (2.0.17)
TinyUSB Library version
3.4.2
Sketch as ATTACHED TXT
Compiled Log as ATTACHED TXT
What happened ?
Compiler warns about redefinitions of preprocessor macros. The definitions are conflicting. For example:
Compiling .pio/build/esp32-s3-devkitc-1/lib663/Adafruit TinyUSB Library/arduino/Adafruit_TinyUSB_API.cpp.o
In file included from .pio/libdeps/esp32-s3-devkitc-1/Adafruit TinyUSB Library/src/Adafruit_TinyUSB.h:30,
from .pio/libdeps/esp32-s3-devkitc-1/Adafruit TinyUSB Library/src/arduino/Adafruit_TinyUSB_API.cpp:29:
.pio/libdeps/esp32-s3-devkitc-1/Adafruit TinyUSB Library/src/arduino/ports/esp32/tusb_config_esp32.h:92: warning: "CFG_TUH_ENABLED" redefined
#define CFG_TUH_ENABLED 1
In file included from .pio/libdeps/esp32-s3-devkitc-1/Adafruit TinyUSB Library/src/arduino/Adafruit_TinyUSB_API.cpp:25:
.pio/libdeps/esp32-s3-devkitc-1/Adafruit TinyUSB Library/src/tusb_option.h:318: note: this is the location of the previous definition
#define CFG_TUH_ENABLED (TUH_RHPORT_MODE & OPT_MODE_HOST)
See compiler log for all conflicts.
I analysed the code and noted:
- includes
But
- includes
Adafruit_TinyUSB_Arduino/src/tusb_option.h
Line 240 in c92b7fd
-
on the following conditions:
#elif defined(ARDUINO_ARCH_ESP32) // Note: when compiling core Arduino IDEs will include tusb_config.h in the BSP // sdk/include/arduino_tinyusb/include. While compiling .c file in this library this // file will be used instead. For consistency: include the one in BSP here as well #include "sdkconfig.h" #if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 #include "../../arduino_tinyusb/include/tusb_config.h" #else #include "arduino/ports/esp32/tusb_config_esp32.h" #endif
In summary:
- One time (beginning in
Adafruit_TinyUSB_API.cpp:25
) https://github.com/espressif/arduino-esp32/blob/5e19e086c43d0fa5e5a596497ff8f11a0a43f6c2/tools/sdk/esp32s3/include/arduino_tinyusb/include/tusb_config.h will be used for ESP32S3 (instead of https://github.com/adafruit/Adafruit_TinyUSB_Arduino/blob/c92b7fde169fceb6b375f6f95a69412caf2d1f0f/src/arduino/ports/esp32/tusb_config_esp32.h). - The other time (beginning in
Adafruit_TinyUSB_API.cpp:29
) https://github.com/adafruit/Adafruit_TinyUSB_Arduino/blob/c92b7fde169fceb6b375f6f95a69412caf2d1f0f/src/arduino/ports/esp32/tusb_config_esp32.h will be used.
If both would include the same header, there wouldn't be the conflicts.
How to reproduce ?
Using PlatformIO, build the above "sketch", or use this MVP: https://github.com/Task-Tracker-Systems/Task-Tracker-Device/tree/ec83e905c7b1b328fd92ee1322906067698a20e0
Debug Log
No response
Screenshots
No response