esp32-smartdisplay
esp32-smartdisplay copied to clipboard
smartdisplay & pioarduino core >=3.1.0
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.
update your Espressif32 platform to 6.10.0
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.