esp32-smartdisplay icon indicating copy to clipboard operation
esp32-smartdisplay copied to clipboard

smartdisplay & pioarduino core >=3.1.0

Open KLelong opened this issue 7 months ago • 2 comments

Hi, I would like to use smartdisplay combined with another library. That library needs arduino core >= 3.1.0. When I compile a smartdisplay-project with that core, it generates errors :

Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-8048S043C.html
PLATFORM: Espressif 32 (53.3.13) > esp32-8048S043C
HARDWARE: ESP32S3 240MHz, 320KB RAM, 16MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-builtin, 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.1.3 
 - framework-arduinoespressif32-libs @ 5.3.0+sha.489d7a2b3a 
 - tool-esptoolpy @ 4.8.6 
 - tool-mklittlefs @ 3.2.0 
 - tool-riscv32-esp-elf-gdb @ 14.2.0+20240403 
 - tool-xtensa-esp-elf-gdb @ 14.2.0+20240403 
 - toolchain-riscv32-esp @ 13.2.0+20240530 
 - toolchain-xtensa-esp-elf @ 13.2.0+20240530
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 43 compatible libraries
Scanning dependencies...
Dependency Graph
|-- esp32_smartdisplay @ 2.1.0+sha.a49bf44
|-- WiFi @ 3.1.3
|-- lvgl @ 9.2.2
Building in release mode
Compiling .pio/build/esp32-8048S043C/libcff/esp32_smartdisplay/esp32_smartdisplay.c.o
Compiling .pio/build/esp32-8048S043C/libcff/esp32_smartdisplay/esp_panel_st7701.c.o
Compiling .pio/build/esp32-8048S043C/libcff/esp32_smartdisplay/esp_panel_st7796.c.o
Compiling .pio/build/esp32-8048S043C/libcff/esp32_smartdisplay/esp_touch_cst816s.c.o
Compiling .pio/build/esp32-8048S043C/libcff/esp32_smartdisplay/esp_touch_gt911.c.o
Compiling .pio/build/esp32-8048S043C/libcff/esp32_smartdisplay/esp_touch_xpt2046.c.o
Compiling .pio/build/esp32-8048S043C/libcff/esp32_smartdisplay/lvgl_panel_gc9a01_spi.c.o
In file included from .pio/libdeps/esp32-8048S043C/esp32_smartdisplay/src/esp32_smartdisplay.c:1:
.pio/libdeps/esp32-8048S043C/esp32_smartdisplay/include/esp32_smartdisplay.h:44:91: error: unknown type name 'uint'; did you mean 'int'?
   44 |     void smartdisplay_lcd_set_brightness_cb(smartdisplay_lcd_adaptive_brightness_cb_t cb, uint interval);
      |                                                                                           ^~~~
      |                                                                                           int
.pio/libdeps/esp32-8048S043C/esp32_smartdisplay/src/esp32_smartdisplay.c:92:87: error: unknown type name 'uint'; did you mean 'int'?
   92 | void smartdisplay_lcd_set_brightness_cb(smartdisplay_lcd_adaptive_brightness_cb_t cb, uint interval)
      |                                                                                       ^~~~
      |                                                                                       int
Compiling .pio/build/esp32-8048S043C/libcff/esp32_smartdisplay/lvgl_panel_ili9341_spi.c.o
*** [.pio/build/esp32-8048S043C/libcff/esp32_smartdisplay/esp32_smartdisplay.c.o] Error 1
=============================================================================================================================================== [FAILED] Took 5.37 seconds ===============================================================================================================================================

Environment      Status    Duration
---------------  --------  ------------
esp32-8048S043C  FAILED    00:00:05.372

Any idea how to solve this ? Using the "standard" core, the project compiles and runs fine.

Thanks.

KLelong avatar May 02 '25 17:05 KLelong

update your Espressif32 platform to 6.10.0

manhere avatar May 09 '25 05:05 manhere

uint is NOT standard C, C++, C## and should be replaced in esp32_smartdisplay.h and esp32_smartdisplay.c by unsigned int or better still, uint8_t.

Re-compiling after making the above amendments will then throw up errors in lvgl_panel_st7789_spi.c where the compile errors states - flags structure has no member named 'dc_as_cmd_phase'. This is due to changes in framework-aduinoespressif32-libs for esp32s2 where the include file esp_lcd_io_spi.h flags structure no longer has the member named 'dc_as_cmd_phase'. Solution for an ESP32S3 is to delete line 65 ( dc_as_cmd_phase = ST7789_SPI_CONFIG_.FLAGS_DC_AS_CMD_PHASE, ) from lvgl_panel_st7789_spi.c. Also need to remove references to dc_as_cmd_phase from the log_d statement at line 68. This changes the statement from log_d("io_spi_config: cs_gpio_num:%d, dc_gpio_num:%d, spi_mode:%d, pclk_hz:%d, trans_queue_depth:%d, user_ctx:0x%08x, on_color_trans_done:0x%08x, lcd_cmd_bits:%d, lcd_param_bits:%d, flags:{dc_as_cmd_phase:%d, dc_low_on_data:%d, octal_mode:%d, lsb_first:%d}", io_spi_config.cs_gpio_num, io_spi_config.dc_gpio_num, io_spi_config.spi_mode, io_spi_config.pclk_hz, io_spi_config.trans_queue_depth, io_spi_config.user_ctx, io_spi_config.on_color_trans_done, io_spi_config.lcd_cmd_bits, io_spi_config.lcd_param_bits, io_spi_config.flags.dc_as_cmd_phase, io_spi_config.flags.dc_low_on_data, io_spi_config.flags.octal_mode, io_spi_config.flags.lsb_first);

to log_d("io_spi_config: cs_gpio_num:%d, dc_gpio_num:%d, spi_mode:%d, pclk_hz:%d, trans_queue_depth:%d, user_ctx:0x%08x, on_color_trans_done:0x%08x, lcd_cmd_bits:%d, lcd_param_bits:%d, flags:{dc_low_on_data:%d, octal_mode:%d, lsb_first:%d}", io_spi_config.cs_gpio_num, io_spi_config.dc_gpio_num, io_spi_config.spi_mode, io_spi_config.pclk_hz, io_spi_config.trans_queue_depth, io_spi_config.user_ctx, io_spi_config.on_color_trans_done, io_spi_config.lcd_cmd_bits, io_spi_config.lcd_param_bits, io_spi_config.flags.dc_low_on_data, io_spi_config.flags.octal_mode, io_spi_config.flags.lsb_first);

I've only tested this with an ESP32S3 / ST7789 combination but solution is likely to be similar for other ESP32 variants and TFT drivers.

GeoffWebster avatar Jul 21 '25 17:07 GeoffWebster