hideakitai/DebugLog

Esp32-s3 compilation error, with a certain #include order

Closed this issue · 1 comments

Platformio,
[env:esp32-s3-devkitc-1] platform = espressif32 board = esp32-s3-devkitc-1 framework = arduino monitor_speed = 115200 build_flags = -DARDUINO_USB_MODE=1 -DARDUINO_USB_CDC_ON_BOOT=1

`Processing esp32-s3-devkitc-1 (platform: espressif32; board: esp32-s3-devkitc-1; framework: arduino)

Verbose mode can be enabled via -v, --verbose option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-s3-devkitc-1.html
PLATFORM: Espressif 32 (6.1.0) > Espressif ESP32-S3-DevKitC-1-N8 (8 MB QD, No PSRAM)
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
DEBUG: Current (esp-builtin) On-board (esp-builtin) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:

  • framework-arduinoespressif32 @ 3.20007.0 (2.0.7)
  • tool-esptoolpy @ 1.40500.0 (4.5.0)
  • toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
  • toolchain-xtensa-esp32s3 @ 8.4.0+2021r2-patch5
    LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
    LDF Modes: Finder ~ chain, Compatibility ~ soft
    Found 39 compatible libraries
    Scanning dependencies...
    Dependency Graph
    |-- ESPAsyncWebServer-esphome @ 3.0.0
    |-- MsgPack @ 0.3.19
    |-- SPI @ 2.0.0
    |-- TFT_eSPI @ 2.5.31
    Building in release mode
    Compiling .pio/build/esp32-s3-devkitc-1/src/main.cpp.o
    In file included from src/main.cpp:3:
    .pio/libdeps/esp32-s3-devkitc-1/TFT_eSPI/TFT_eSPI.h:975:8: warning: #warning >>>>------>> TOUCH_CS pin not defined, TFT_eSPI touch functions will not be available! [-Wcpp]
    #warning >>>>------>> TOUCH_CS pin not defined, TFT_eSPI touch functions will not be available!
    ^~~~~~~
    In file included from .pio/libdeps/esp32-s3-devkitc-1/MsgPack/MsgPack/util/DebugLog/DebugLog.h:17,
    from .pio/libdeps/esp32-s3-devkitc-1/MsgPack/MsgPack.h:5,
    from src/main.cpp:5:
    .pio/libdeps/esp32-s3-devkitc-1/MsgPack/MsgPack/util/DebugLog/DebugLog/Manager.h: In member function 'void arx::debug::Manager::attach(FsType&, const String&, const FileMode&, bool)':
    .pio/libdeps/esp32-s3-devkitc-1/MsgPack/MsgPack/util/DebugLog/DebugLog/Manager.h:76:47: error: 'File' was not declared in this scope
    logger = new FsFileLogger<FsType, File>(s, path, mode);
    ^~~~
    .pio/libdeps/esp32-s3-devkitc-1/MsgPack/MsgPack/util/DebugLog/DebugLog/Manager.h:76:47: note: suggested alternative:
    In file included from .pio/libdeps/esp32-s3-devkitc-1/TFT_eSPI/Processors/TFT_eSPI_ESP32_S3.h:152,
    from .pio/libdeps/esp32-s3-devkitc-1/TFT_eSPI/TFT_eSPI.h:96,
    from src/main.cpp:3:
    /home/andriy/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.h:47:7: note: 'fs::File'
    class File : public Stream
    ^~~~
    In file included from .pio/libdeps/esp32-s3-devkitc-1/MsgPack/MsgPack/util/DebugLog/DebugLog.h:17,
    from .pio/libdeps/esp32-s3-devkitc-1/MsgPack/MsgPack.h:5,
    from src/main.cpp:5:
    .pio/libdeps/esp32-s3-devkitc-1/MsgPack/MsgPack/util/DebugLog/DebugLog/Manager.h:76:51: error: template argument 2 is invalid
    logger = new FsFileLogger<FsType, File>(s, path, mode);
    ^
    *** [.pio/build/esp32-s3-devkitc-1/src/main.cpp.o] Error 1`

`#include "Arduino.h"
#include <SPI.h>
#include <TFT_eSPI.h>
#include <ESPAsyncWebServer.h>
#include <MsgPack.h>

void setup() {
}

void loop() {

}`

Thanks for reporting. This is not a problem of MsgPack but DebugLog.

Required:

  • Introduce DEBUGLOG_ENABLE_FILE_LOGGER and switch if enable file logging or not using it
    • #ifdef FILE_WRITE
      // TODO: `File` class is always valid for various file systems??
      template <typename FsType, typename FileMode>
      void attach(FsType& s, const String& path, const FileMode& mode, const bool auto_save) {
      close();
      logger = new FsFileLogger<FsType, File>(s, path, mode);
      b_auto_save = auto_save;
      }
      #endif
  • Update examples and README to show how to use it
  • Update related libraries