├── .build-rules.yml ├── .codespellrc ├── .flake8 ├── .github └── workflows │ ├── arduino_lint.yml │ ├── check_lib_versions.yml │ ├── issue_comment.yml │ ├── new_issues.yml │ ├── new_prs.yml │ ├── pre-commit.yml │ └── upload_component.yml ├── .gitignore ├── .gitlab-ci.yml ├── .gitlab ├── ci │ ├── build.yml │ ├── deploy.yml │ ├── pre_check.yml │ └── rules.yml └── tools │ ├── build_apps.py │ ├── check_readme_links.py │ └── push_to_github.sh ├── .pre-commit-config.yaml ├── CHANGELOG.md ├── CMakeLists.txt ├── Kconfig ├── README.md ├── README_CN.md ├── check_copyright_config.yaml ├── docs ├── _static │ ├── block_diagram.drawio │ └── block_diagram.png ├── board │ ├── board_elecrow.md │ ├── board_espressif.md │ ├── board_jingcai.md │ ├── board_m5stack.md │ ├── board_viewe.md │ └── board_waveshare.md ├── drivers │ ├── lcd.md │ └── touch.md ├── envs │ ├── use_with_arduino.md │ ├── use_with_arduino_cn.md │ ├── use_with_idf.md │ ├── use_with_idf_cn.md │ ├── use_with_micropython.md │ └── use_with_micropython_cn.md ├── faq_others.md └── faq_others_cn.md ├── esp_panel_board_custom_conf.h ├── esp_panel_board_supported_conf.h ├── esp_panel_drivers_conf.h ├── examples ├── arduino │ ├── board │ │ ├── board_dynamic_config │ │ │ ├── README.md │ │ │ ├── board_dynamic_config.ino │ │ │ ├── board_external_config.cpp │ │ │ ├── board_external_config.hpp │ │ │ ├── esp_panel_drivers_conf.h │ │ │ └── esp_utils_conf.h │ │ └── board_static_config │ │ │ ├── README.md │ │ │ ├── board_static_config.ino │ │ │ ├── esp_panel_board_custom_conf.h │ │ │ ├── esp_panel_board_supported_conf.h │ │ │ ├── esp_panel_drivers_conf.h │ │ │ └── esp_utils_conf.h │ ├── drivers │ │ ├── lcd │ │ │ ├── lcd_3wire_spi_rgb │ │ │ │ ├── README.md │ │ │ │ ├── esp_panel_drivers_conf.h │ │ │ │ ├── esp_utils_conf.h │ │ │ │ └── lcd_3wire_spi_rgb.ino │ │ │ ├── lcd_mipi_dsi │ │ │ │ ├── README.md │ │ │ │ ├── esp_panel_drivers_conf.h │ │ │ │ ├── esp_utils_conf.h │ │ │ │ └── lcd_mipi_dsi.ino │ │ │ ├── lcd_qspi │ │ │ │ ├── README.md │ │ │ │ ├── esp_panel_drivers_conf.h │ │ │ │ ├── esp_utils_conf.h │ │ │ │ └── lcd_qspi.ino │ │ │ ├── lcd_single_rgb │ │ │ │ ├── README.md │ │ │ │ ├── esp_panel_drivers_conf.h │ │ │ │ ├── esp_utils_conf.h │ │ │ │ └── lcd_single_rgb.ino │ │ │ └── lcd_spi │ │ │ │ ├── README.md │ │ │ │ ├── esp_panel_drivers_conf.h │ │ │ │ ├── esp_utils_conf.h │ │ │ │ └── lcd_spi.ino │ │ └── touch │ │ │ ├── touch_i2c │ │ │ ├── README.md │ │ │ ├── esp_panel_drivers_conf.h │ │ │ ├── esp_utils_conf.h │ │ │ └── touch_i2c.ino │ │ │ └── touch_spi │ │ │ ├── README.md │ │ │ ├── esp_panel_drivers_conf.h │ │ │ ├── esp_utils_conf.h │ │ │ └── touch_spi.ino │ └── gui │ │ └── lvgl_v8 │ │ ├── simple_port │ │ ├── README.md │ │ ├── esp_panel_board_custom_conf.h │ │ ├── esp_panel_board_supported_conf.h │ │ ├── esp_panel_drivers_conf.h │ │ ├── esp_utils_conf.h │ │ ├── lv_conf.h │ │ ├── lvgl_v8_port.cpp │ │ ├── lvgl_v8_port.h │ │ └── simple_port.ino │ │ ├── simple_rotation │ │ ├── README.md │ │ ├── esp_panel_board_custom_conf.h │ │ ├── esp_panel_board_supported_conf.h │ │ ├── esp_panel_drivers_conf.h │ │ ├── esp_utils_conf.h │ │ ├── img_esp_logo.c │ │ ├── lv_conf.h │ │ ├── lvgl_v8_port.cpp │ │ ├── lvgl_v8_port.h │ │ └── simple_rotation.ino │ │ ├── squareline_port │ │ ├── README.md │ │ ├── esp_panel_board_custom_conf.h │ │ ├── esp_panel_board_supported_conf.h │ │ ├── esp_panel_drivers_conf.h │ │ ├── esp_utils_conf.h │ │ ├── libraries │ │ │ └── ui │ │ │ │ ├── library.properties │ │ │ │ ├── src │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── components │ │ │ │ │ └── ui_comp_hook.c │ │ │ │ ├── filelist.txt │ │ │ │ ├── images │ │ │ │ │ ├── ui_img_lexin_1_png.c │ │ │ │ │ └── ui_img_lexin_2_png.c │ │ │ │ ├── readme.txt │ │ │ │ ├── screens │ │ │ │ │ └── ui_ScreenMain.c │ │ │ │ ├── ui.c │ │ │ │ ├── ui.h │ │ │ │ ├── ui_events.h │ │ │ │ ├── ui_helpers.c │ │ │ │ └── ui_helpers.h │ │ │ │ └── ui.h │ │ ├── lv_conf.h │ │ ├── lvgl_v8_port.cpp │ │ ├── lvgl_v8_port.h │ │ └── squareline_port.ino │ │ └── squareline_wifi_clock │ │ ├── README.md │ │ ├── esp_panel_board_custom_conf.h │ │ ├── esp_panel_board_supported_conf.h │ │ ├── esp_panel_drivers_conf.h │ │ ├── esp_utils_conf.h │ │ ├── libraries │ │ └── ui │ │ │ ├── library.properties │ │ │ ├── src │ │ │ ├── CMakeLists.txt │ │ │ ├── components │ │ │ │ └── ui_comp_hook.c │ │ │ ├── filelist.txt │ │ │ ├── fonts │ │ │ │ ├── ui_font_AliShuHeTi16sbpp4.c │ │ │ │ ├── ui_font_FontNumber28bp4.c │ │ │ │ ├── ui_font_FontNumber36bp4.c │ │ │ │ ├── ui_font_FontNumber48bp4.c │ │ │ │ └── ui_font_FontPuHui20bp4.c │ │ │ ├── images │ │ │ │ ├── ui_img_atmosphere_png.c │ │ │ │ ├── ui_img_cloudy_png.c │ │ │ │ ├── ui_img_drizzle_png.c │ │ │ │ ├── ui_img_light_rain_png.c │ │ │ │ ├── ui_img_return_png.c │ │ │ │ ├── ui_img_settings_icon_png.c │ │ │ │ ├── ui_img_snow_png.c │ │ │ │ ├── ui_img_sunny_png.c │ │ │ │ ├── ui_img_thunderstorm_png.c │ │ │ │ └── ui_img_wifi_png.c │ │ │ ├── readme.txt │ │ │ ├── screens │ │ │ │ ├── ui_ScreenAla.c │ │ │ │ ├── ui_ScreenClock.c │ │ │ │ ├── ui_ScreenPassord.c │ │ │ │ ├── ui_ScreenSet.c │ │ │ │ └── ui_ScreenWifiList.c │ │ │ ├── ui.c │ │ │ ├── ui.h │ │ │ ├── ui_events.h │ │ │ ├── ui_helpers.c │ │ │ └── ui_helpers.h │ │ │ └── ui.h │ │ ├── lv_conf.h │ │ ├── lvgl_v8_port.cpp │ │ ├── lvgl_v8_port.h │ │ └── squareline_wifi_clock.ino ├── esp_idf │ └── lvgl_v8_port │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── main │ │ ├── CMakeLists.txt │ │ ├── Kconfig.projbuild │ │ ├── idf_component.yml │ │ ├── lvgl_v8_port.cpp │ │ ├── lvgl_v8_port.h │ │ └── main.cpp │ │ ├── partitions.csv │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_C3_LCDKIT │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_BOX_3 │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5 │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5 │ │ ├── sdkconfig.defaults │ │ ├── sdkconfig.defaults.esp32p4 │ │ ├── sdkconfig.defaults.esp32s3 │ │ ├── sdkconfig.test.avoid_mode_1 │ │ ├── sdkconfig.test.avoid_mode_2 │ │ ├── sdkconfig.test.avoid_mode_3 │ │ ├── sdkconfig.test.rotation_180 │ │ ├── sdkconfig.test.rotation_270 │ │ └── sdkconfig.test.rotation_90 └── platformio │ └── lvgl_v8_port │ ├── .gitignore │ ├── README.md │ ├── boards │ ├── BOARD_CUSTOM.json │ ├── BOARD_ESPRESSIF_ESP32_C3_LCDKIT.json │ ├── BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD.json │ ├── BOARD_ESPRESSIF_ESP32_S3_BOX.json │ ├── BOARD_ESPRESSIF_ESP32_S3_BOX_3.json │ ├── BOARD_ESPRESSIF_ESP32_S3_EYE.json │ ├── BOARD_ESPRESSIF_ESP32_S3_KORVO_2.json │ ├── BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD.json │ ├── BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2.json │ ├── BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5.json │ ├── BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5.json │ └── BOARD_ESPRESSIF_ESP32_S3_USB_OTG.json │ ├── platformio.ini │ └── src │ ├── esp_panel_board_custom_conf.h │ ├── esp_panel_drivers_conf.h │ ├── esp_utils_conf.h │ ├── lv_conf.h │ ├── lvgl_v8_port.cpp │ ├── lvgl_v8_port.h │ └── main.cpp ├── idf_component.yml ├── library.properties ├── license.txt ├── micropython.cmake ├── mpy_support ├── esp_panel_mp_board.cpp ├── esp_panel_mp_board.h ├── esp_panel_mp_module.c └── esp_panel_mp_types.h ├── src ├── ESP_Panel_Library.h ├── board │ ├── Kconfig.board │ ├── custom │ │ ├── Kconfig.board_custom │ │ ├── Kconfig.board_custom.backlight │ │ ├── Kconfig.board_custom.expander │ │ ├── Kconfig.board_custom.lcd │ │ ├── Kconfig.board_custom.touch │ │ ├── esp_panel_board_config_custom.h │ │ ├── esp_panel_board_kconfig_custom.h │ │ ├── esp_panel_board_kconfig_custom_backlight.h │ │ ├── esp_panel_board_kconfig_custom_expander.h │ │ ├── esp_panel_board_kconfig_custom_lcd.h │ │ └── esp_panel_board_kconfig_custom_touch.h │ ├── esp_panel_board.cpp │ ├── esp_panel_board.hpp │ ├── esp_panel_board_conf_internal.h │ ├── esp_panel_board_config.hpp │ ├── esp_panel_board_default_config.cpp │ ├── esp_panel_board_default_config.hpp │ ├── esp_panel_board_private.hpp │ └── supported │ │ ├── Kconfig.board_supported │ │ ├── elecrow │ │ ├── BOARD_ELECROW_CROWPANEL_7_0.h │ │ └── Kconfig.elecrow │ │ ├── esp_panel_board_config_supported.h │ │ ├── esp_panel_board_kconfig_supported.h │ │ ├── espressif │ │ ├── BOARD_ESPRESSIF_ESP32_C3_LCDKIT.h │ │ ├── BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD.h │ │ ├── BOARD_ESPRESSIF_ESP32_S3_BOX.h │ │ ├── BOARD_ESPRESSIF_ESP32_S3_BOX_3.h │ │ ├── BOARD_ESPRESSIF_ESP32_S3_BOX_3_BETA.h │ │ ├── BOARD_ESPRESSIF_ESP32_S3_BOX_LITE.h │ │ ├── BOARD_ESPRESSIF_ESP32_S3_EYE.h │ │ ├── BOARD_ESPRESSIF_ESP32_S3_KORVO_2.h │ │ ├── BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD.h │ │ ├── BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2.h │ │ ├── BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5.h │ │ ├── BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5.h │ │ ├── BOARD_ESPRESSIF_ESP32_S3_USB_OTG.h │ │ └── Kconfig.espressif │ │ ├── jingcai │ │ ├── BOARD_JINGCAI_ESP32_4848S040C_I_Y_3.h │ │ ├── BOARD_JINGCAI_JC8048W550C.h │ │ └── Kconfig.jingcai │ │ ├── m5stack │ │ ├── BOARD_M5STACK_M5CORE2.h │ │ ├── BOARD_M5STACK_M5CORES3.h │ │ ├── BOARD_M5STACK_M5DIAL.h │ │ └── Kconfig.m5stack │ │ ├── viewe │ │ ├── BOARD_VIEWE_UEDX24320024E_WB_A.h │ │ ├── BOARD_VIEWE_UEDX24320028E_WB_A.h │ │ ├── BOARD_VIEWE_UEDX24320035E_WB_A.h │ │ ├── BOARD_VIEWE_UEDX32480035E_WB_A.h │ │ ├── BOARD_VIEWE_UEDX48270043E_WB_A.h │ │ ├── BOARD_VIEWE_UEDX48480040E_WB_A.h │ │ ├── BOARD_VIEWE_UEDX80480043E_WB_A.h │ │ ├── BOARD_VIEWE_UEDX80480050E_WB_A.h │ │ ├── BOARD_VIEWE_UEDX80480050E_WB_A_2.h │ │ ├── BOARD_VIEWE_UEDX80480070E_WB_A.h │ │ └── Kconfig.viewe │ │ └── waveshare │ │ ├── BOARD_WAVESHARE_ESP32_P4_NANO.h │ │ ├── BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85.h │ │ ├── BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1.h │ │ ├── BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3.h │ │ ├── BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B.h │ │ ├── BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5.h │ │ ├── BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5_B.h │ │ ├── BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_7.h │ │ └── Kconfig.waveshare ├── drivers │ ├── Kconfig.drivers │ ├── backlight │ │ ├── Kconfig.backlight │ │ ├── esp_panel_backlight.cpp │ │ ├── esp_panel_backlight.hpp │ │ ├── esp_panel_backlight_conf_internal.h │ │ ├── esp_panel_backlight_custom.cpp │ │ ├── esp_panel_backlight_custom.hpp │ │ ├── esp_panel_backlight_factory.cpp │ │ ├── esp_panel_backlight_factory.hpp │ │ ├── esp_panel_backlight_pwm_ledc.cpp │ │ ├── esp_panel_backlight_pwm_ledc.hpp │ │ ├── esp_panel_backlight_switch_expander.cpp │ │ ├── esp_panel_backlight_switch_expander.hpp │ │ ├── esp_panel_backlight_switch_gpio.cpp │ │ └── esp_panel_backlight_switch_gpio.hpp │ ├── bus │ │ ├── Kconfig.bus │ │ ├── esp_panel_bus.cpp │ │ ├── esp_panel_bus.hpp │ │ ├── esp_panel_bus_conf_internal.h │ │ ├── esp_panel_bus_dsi.cpp │ │ ├── esp_panel_bus_dsi.hpp │ │ ├── esp_panel_bus_factory.cpp │ │ ├── esp_panel_bus_factory.hpp │ │ ├── esp_panel_bus_i2c.cpp │ │ ├── esp_panel_bus_i2c.hpp │ │ ├── esp_panel_bus_qspi.cpp │ │ ├── esp_panel_bus_qspi.hpp │ │ ├── esp_panel_bus_rgb.cpp │ │ ├── esp_panel_bus_rgb.hpp │ │ ├── esp_panel_bus_spi.cpp │ │ ├── esp_panel_bus_spi.hpp │ │ └── port │ │ │ ├── esp_lcd_panel_io_3wire_spi.c │ │ │ └── esp_lcd_panel_io_additions.h │ ├── esp_panel_drivers_conf_internal.h │ ├── host │ │ ├── esp_panel_host.hpp │ │ ├── esp_panel_host_dsi.cpp │ │ ├── esp_panel_host_dsi.hpp │ │ ├── esp_panel_host_i2c.cpp │ │ ├── esp_panel_host_i2c.hpp │ │ ├── esp_panel_host_spi.cpp │ │ └── esp_panel_host_spi.hpp │ ├── io_expander │ │ ├── Kconfig.expander │ │ ├── esp_panel_io_expander.hpp │ │ ├── esp_panel_io_expander_adapter.hpp │ │ ├── esp_panel_io_expander_conf_internal.h │ │ ├── esp_panel_io_expander_factory.cpp │ │ └── esp_panel_io_expander_factory.hpp │ ├── lcd │ │ ├── Kconfig.lcd │ │ ├── esp_panel_lcd.cpp │ │ ├── esp_panel_lcd.hpp │ │ ├── esp_panel_lcd_axs15231b.cpp │ │ ├── esp_panel_lcd_axs15231b.hpp │ │ ├── esp_panel_lcd_conf_internal.h │ │ ├── esp_panel_lcd_ek79007.cpp │ │ ├── esp_panel_lcd_ek79007.hpp │ │ ├── esp_panel_lcd_ek9716b.cpp │ │ ├── esp_panel_lcd_ek9716b.hpp │ │ ├── esp_panel_lcd_factory.cpp │ │ ├── esp_panel_lcd_factory.hpp │ │ ├── esp_panel_lcd_gc9503.cpp │ │ ├── esp_panel_lcd_gc9503.hpp │ │ ├── esp_panel_lcd_gc9a01.cpp │ │ ├── esp_panel_lcd_gc9a01.hpp │ │ ├── esp_panel_lcd_gc9b71.cpp │ │ ├── esp_panel_lcd_gc9b71.hpp │ │ ├── esp_panel_lcd_hx8399.cpp │ │ ├── esp_panel_lcd_hx8399.hpp │ │ ├── esp_panel_lcd_ili9341.cpp │ │ ├── esp_panel_lcd_ili9341.hpp │ │ ├── esp_panel_lcd_ili9881c.cpp │ │ ├── esp_panel_lcd_ili9881c.hpp │ │ ├── esp_panel_lcd_jd9165.cpp │ │ ├── esp_panel_lcd_jd9165.hpp │ │ ├── esp_panel_lcd_jd9365.cpp │ │ ├── esp_panel_lcd_jd9365.hpp │ │ ├── esp_panel_lcd_nv3022b.cpp │ │ ├── esp_panel_lcd_nv3022b.hpp │ │ ├── esp_panel_lcd_sh8601.cpp │ │ ├── esp_panel_lcd_sh8601.hpp │ │ ├── esp_panel_lcd_spd2010.cpp │ │ ├── esp_panel_lcd_spd2010.hpp │ │ ├── esp_panel_lcd_st7262.cpp │ │ ├── esp_panel_lcd_st7262.hpp │ │ ├── esp_panel_lcd_st7701.cpp │ │ ├── esp_panel_lcd_st7701.hpp │ │ ├── esp_panel_lcd_st7703.cpp │ │ ├── esp_panel_lcd_st7703.hpp │ │ ├── esp_panel_lcd_st7789.cpp │ │ ├── esp_panel_lcd_st7789.hpp │ │ ├── esp_panel_lcd_st77903.cpp │ │ ├── esp_panel_lcd_st77903.hpp │ │ ├── esp_panel_lcd_st77916.cpp │ │ ├── esp_panel_lcd_st77916.hpp │ │ ├── esp_panel_lcd_st77922.cpp │ │ ├── esp_panel_lcd_st77922.hpp │ │ ├── esp_panel_lcd_st7796.cpp │ │ ├── esp_panel_lcd_st7796.hpp │ │ └── port │ │ │ ├── esp_lcd_axs15231b.c │ │ │ ├── esp_lcd_axs15231b.h │ │ │ ├── esp_lcd_ek79007.c │ │ │ ├── esp_lcd_ek79007.h │ │ │ ├── esp_lcd_gc9503.c │ │ │ ├── esp_lcd_gc9503.h │ │ │ ├── esp_lcd_gc9a01.c │ │ │ ├── esp_lcd_gc9a01.h │ │ │ ├── esp_lcd_gc9b71.c │ │ │ ├── esp_lcd_gc9b71.h │ │ │ ├── esp_lcd_hx8399.c │ │ │ ├── esp_lcd_hx8399.h │ │ │ ├── esp_lcd_ili9341.c │ │ │ ├── esp_lcd_ili9341.h │ │ │ ├── esp_lcd_ili9881c.c │ │ │ ├── esp_lcd_ili9881c.h │ │ │ ├── esp_lcd_jd9165.c │ │ │ ├── esp_lcd_jd9165.h │ │ │ ├── esp_lcd_jd9365.c │ │ │ ├── esp_lcd_jd9365.h │ │ │ ├── esp_lcd_nv3022b.c │ │ │ ├── esp_lcd_nv3022b.h │ │ │ ├── esp_lcd_sh8601.c │ │ │ ├── esp_lcd_sh8601.h │ │ │ ├── esp_lcd_spd2010.c │ │ │ ├── esp_lcd_spd2010.h │ │ │ ├── esp_lcd_st7701.c │ │ │ ├── esp_lcd_st7701.h │ │ │ ├── esp_lcd_st7701_interface.h │ │ │ ├── esp_lcd_st7701_mipi.c │ │ │ ├── esp_lcd_st7701_rgb.c │ │ │ ├── esp_lcd_st7703.c │ │ │ ├── esp_lcd_st7703.h │ │ │ ├── esp_lcd_st7789.c │ │ │ ├── esp_lcd_st7789.h │ │ │ ├── esp_lcd_st77903_rgb.c │ │ │ ├── esp_lcd_st77903_rgb.h │ │ │ ├── esp_lcd_st77916.c │ │ │ ├── esp_lcd_st77916.h │ │ │ ├── esp_lcd_st77922.c │ │ │ ├── esp_lcd_st77922.h │ │ │ ├── esp_lcd_st77922_general.c │ │ │ ├── esp_lcd_st77922_interface.h │ │ │ ├── esp_lcd_st77922_mipi.c │ │ │ ├── esp_lcd_st77922_rgb.c │ │ │ ├── esp_lcd_st7796.c │ │ │ ├── esp_lcd_st7796.h │ │ │ ├── esp_lcd_st7796_general.c │ │ │ ├── esp_lcd_st7796_interface.h │ │ │ ├── esp_lcd_st7796_mipi.c │ │ │ └── esp_panel_lcd_vendor_types.h │ └── touch │ │ ├── Kconfig.touch │ │ ├── esp_panel_touch.cpp │ │ ├── esp_panel_touch.hpp │ │ ├── esp_panel_touch_axs15231b.cpp │ │ ├── esp_panel_touch_axs15231b.hpp │ │ ├── esp_panel_touch_chsc6540.cpp │ │ ├── esp_panel_touch_chsc6540.hpp │ │ ├── esp_panel_touch_conf_internal.h │ │ ├── esp_panel_touch_cst816s.cpp │ │ ├── esp_panel_touch_cst816s.hpp │ │ ├── esp_panel_touch_factory.cpp │ │ ├── esp_panel_touch_factory.hpp │ │ ├── esp_panel_touch_ft5x06.cpp │ │ ├── esp_panel_touch_ft5x06.hpp │ │ ├── esp_panel_touch_gt1151.cpp │ │ ├── esp_panel_touch_gt1151.hpp │ │ ├── esp_panel_touch_gt911.cpp │ │ ├── esp_panel_touch_gt911.hpp │ │ ├── esp_panel_touch_spd2010.cpp │ │ ├── esp_panel_touch_spd2010.hpp │ │ ├── esp_panel_touch_st1633.cpp │ │ ├── esp_panel_touch_st1633.hpp │ │ ├── esp_panel_touch_st7123.cpp │ │ ├── esp_panel_touch_st7123.hpp │ │ ├── esp_panel_touch_stmpe610.cpp │ │ ├── esp_panel_touch_stmpe610.hpp │ │ ├── esp_panel_touch_tt21100.cpp │ │ ├── esp_panel_touch_tt21100.hpp │ │ ├── esp_panel_touch_xpt2046.cpp │ │ ├── esp_panel_touch_xpt2046.hpp │ │ └── port │ │ ├── esp_lcd_touch.c │ │ ├── esp_lcd_touch.h │ │ ├── esp_lcd_touch_axs15231b.c │ │ ├── esp_lcd_touch_axs15231b.h │ │ ├── esp_lcd_touch_chsc6540.c │ │ ├── esp_lcd_touch_chsc6540.h │ │ ├── esp_lcd_touch_cst816s.c │ │ ├── esp_lcd_touch_cst816s.h │ │ ├── esp_lcd_touch_ft5x06.c │ │ ├── esp_lcd_touch_ft5x06.h │ │ ├── esp_lcd_touch_gt1151.c │ │ ├── esp_lcd_touch_gt1151.h │ │ ├── esp_lcd_touch_gt911.c │ │ ├── esp_lcd_touch_gt911.h │ │ ├── esp_lcd_touch_spd2010.c │ │ ├── esp_lcd_touch_spd2010.h │ │ ├── esp_lcd_touch_st1633.c │ │ ├── esp_lcd_touch_st1633.h │ │ ├── esp_lcd_touch_st7123.c │ │ ├── esp_lcd_touch_st7123.h │ │ ├── esp_lcd_touch_stmpe610.c │ │ ├── esp_lcd_touch_stmpe610.h │ │ ├── esp_lcd_touch_tt21100.c │ │ ├── esp_lcd_touch_tt21100.h │ │ ├── esp_lcd_touch_xpt2046.c │ │ └── esp_lcd_touch_xpt2046.h ├── esp_display_panel.hpp ├── esp_panel_conf_internal.h ├── esp_panel_types.h ├── esp_panel_versions.h └── utils │ ├── esp_panel_utils_cxx.hpp │ ├── esp_panel_utils_log.h │ ├── esp_panel_utils_map.hpp │ ├── esp_panel_utils_memory.hpp │ ├── esp_panel_utils_string.hpp │ └── esp_panel_utils_vector.hpp ├── template_files ├── esp_utils_conf.h ├── lv_conf.h ├── lvgl_v8_port.cpp └── lvgl_v8_port.h ├── test_apps ├── board │ ├── common │ │ ├── CMakeLists.txt │ │ ├── main │ │ │ ├── CMakeLists.txt │ │ │ ├── board_configs │ │ │ │ ├── BOARD_ESPRESSIF_ESP32_C3_LCDKIT.cpp │ │ │ │ ├── BOARD_ESPRESSIF_ESP32_C3_LCDKIT.hpp │ │ │ │ ├── BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD.cpp │ │ │ │ ├── BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD.hpp │ │ │ │ ├── BOARD_ESPRESSIF_ESP32_S3_BOX_3.cpp │ │ │ │ ├── BOARD_ESPRESSIF_ESP32_S3_BOX_3.hpp │ │ │ │ ├── BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5.cpp │ │ │ │ ├── BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5.hpp │ │ │ │ ├── BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5.cpp │ │ │ │ ├── BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5.hpp │ │ │ │ └── board_configs.hpp │ │ │ ├── idf_component.yml │ │ │ ├── test_app_main.cpp │ │ │ └── test_board_common.cpp │ │ ├── sdkconfig.ci.custom.BOARD_ESPRESSIF_ESP32_C3_LCDKIT │ │ ├── sdkconfig.ci.custom.BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD │ │ ├── sdkconfig.ci.custom.BOARD_ESPRESSIF_ESP32_S3_BOX_3 │ │ ├── sdkconfig.ci.custom.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5 │ │ ├── sdkconfig.ci.custom.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5 │ │ ├── sdkconfig.ci.custom.touch_spi_xpt2046 │ │ ├── sdkconfig.ci.supported.BOARD_ESPRESSIF_ESP32_C3_LCDKIT │ │ ├── sdkconfig.ci.supported.BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD │ │ ├── sdkconfig.ci.supported.BOARD_ESPRESSIF_ESP32_S3_BOX_3 │ │ ├── sdkconfig.ci.supported.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5 │ │ ├── sdkconfig.ci.supported.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5 │ │ ├── sdkconfig.defaults │ │ ├── sdkconfig.defaults.esp32p4 │ │ ├── sdkconfig.defaults.esp32s3 │ │ ├── sdkconfig.test.rotation_180 │ │ ├── sdkconfig.test.rotation_270 │ │ └── sdkconfig.test.rotation_90 │ ├── elecrow │ │ ├── CMakeLists.txt │ │ ├── main │ │ │ ├── CMakeLists.txt │ │ │ ├── idf_component.yml │ │ │ ├── test_app_main.cpp │ │ │ └── test_board_supported.cpp │ │ ├── sdkconfig.ci.BOARD_ELECROW_CROWPANEL_7_0 │ │ ├── sdkconfig.defaults │ │ ├── sdkconfig.defaults.esp32p4 │ │ └── sdkconfig.defaults.esp32s3 │ ├── espressif │ │ ├── CMakeLists.txt │ │ ├── main │ │ │ ├── CMakeLists.txt │ │ │ ├── idf_component.yml │ │ │ ├── test_app_main.cpp │ │ │ └── test_board_supported.cpp │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_C3_LCDKIT │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_BOX │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_BOX_3 │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_BOX_3_BETA │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_BOX_LITE │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_EYE │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_KORVO_2 │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2 │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5 │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5 │ │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_USB_OTG │ │ ├── sdkconfig.defaults │ │ ├── sdkconfig.defaults.esp32p4 │ │ └── sdkconfig.defaults.esp32s3 │ ├── jingcai │ │ ├── CMakeLists.txt │ │ ├── main │ │ │ ├── CMakeLists.txt │ │ │ ├── idf_component.yml │ │ │ ├── test_app_main.cpp │ │ │ └── test_board_supported.cpp │ │ ├── sdkconfig.ci.BOARD_JINGCAI_ESP32_4848S040C_I_Y_3 │ │ ├── sdkconfig.ci.BOARD_JINGCAI_JC8048W550C │ │ ├── sdkconfig.defaults │ │ ├── sdkconfig.defaults.esp32p4 │ │ └── sdkconfig.defaults.esp32s3 │ ├── m5stack │ │ ├── CMakeLists.txt │ │ ├── main │ │ │ ├── CMakeLists.txt │ │ │ ├── idf_component.yml │ │ │ ├── test_app_main.cpp │ │ │ └── test_board_supported.cpp │ │ ├── sdkconfig.ci.BOARD_M5STACK_M5CORE2 │ │ ├── sdkconfig.ci.BOARD_M5STACK_M5CORES3 │ │ ├── sdkconfig.ci.BOARD_M5STACK_M5DIAL │ │ ├── sdkconfig.defaults │ │ ├── sdkconfig.defaults.esp32p4 │ │ └── sdkconfig.defaults.esp32s3 │ ├── viewe │ │ ├── CMakeLists.txt │ │ ├── main │ │ │ ├── CMakeLists.txt │ │ │ ├── idf_component.yml │ │ │ ├── test_app_main.cpp │ │ │ └── test_board_supported.cpp │ │ ├── sdkconfig.ci.BOARD_VIEWE_UEDX24320024E_WB_A │ │ ├── sdkconfig.ci.BOARD_VIEWE_UEDX24320028E_WB_A │ │ ├── sdkconfig.ci.BOARD_VIEWE_UEDX24320035E_WB_A │ │ ├── sdkconfig.ci.BOARD_VIEWE_UEDX32480035E_WB_A │ │ ├── sdkconfig.ci.BOARD_VIEWE_UEDX48270043E_WB_A │ │ ├── sdkconfig.ci.BOARD_VIEWE_UEDX48480040E_WB_A │ │ ├── sdkconfig.ci.BOARD_VIEWE_UEDX80480043E_WB_A │ │ ├── sdkconfig.ci.BOARD_VIEWE_UEDX80480050E_WB_A │ │ ├── sdkconfig.ci.BOARD_VIEWE_UEDX80480050E_WB_A_2 │ │ ├── sdkconfig.ci.BOARD_VIEWE_UEDX80480070E_WB_A │ │ ├── sdkconfig.defaults │ │ ├── sdkconfig.defaults.esp32p4 │ │ └── sdkconfig.defaults.esp32s3 │ └── waveshare │ │ ├── CMakeLists.txt │ │ ├── main │ │ ├── CMakeLists.txt │ │ ├── idf_component.yml │ │ ├── test_app_main.cpp │ │ └── test_board_supported.cpp │ │ ├── sdkconfig.ci.BOARD_WAVESHARE_ESP32_P4_NANO │ │ ├── sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85 │ │ ├── sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1 │ │ ├── sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3 │ │ ├── sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B │ │ ├── sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5 │ │ ├── sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5_B │ │ ├── sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_7 │ │ ├── sdkconfig.defaults │ │ ├── sdkconfig.defaults.esp32p4 │ │ └── sdkconfig.defaults.esp32s3 ├── common_components │ ├── lcd_general_test │ │ ├── CMakeLists.txt │ │ ├── idf_component.yml │ │ ├── lcd_general_test.cpp │ │ └── lcd_general_test.hpp │ └── touch_general_test │ │ ├── CMakeLists.txt │ │ ├── idf_component.yml │ │ ├── touch_general_test.cpp │ │ └── touch_general_test.hpp ├── drivers │ ├── lcd │ │ ├── 3wire_spi_rgb │ │ │ ├── CMakeLists.txt │ │ │ ├── main │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── idf_component.yml │ │ │ │ ├── test_3wire_spi_rgb_lcd.cpp │ │ │ │ └── test_app_main.cpp │ │ │ ├── sdkconfig.defaults │ │ │ └── sdkconfig.defaults.esp32s3 │ │ ├── mipi_dsi │ │ │ ├── CMakeLists.txt │ │ │ ├── main │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── idf_component.yml │ │ │ │ ├── test_app_main.cpp │ │ │ │ └── test_mipi_dsi_lcd.cpp │ │ │ ├── sdkconfig.defaults │ │ │ └── sdkconfig.defaults.esp32p4 │ │ ├── qspi │ │ │ ├── CMakeLists.txt │ │ │ ├── main │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── idf_component.yml │ │ │ │ ├── test_app_main.cpp │ │ │ │ └── test_qspi_lcd.cpp │ │ │ └── sdkconfig.defaults │ │ ├── rgb │ │ │ ├── CMakeLists.txt │ │ │ ├── main │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── idf_component.yml │ │ │ │ ├── test_app_main.cpp │ │ │ │ └── test_rgb_lcd.cpp │ │ │ ├── sdkconfig.defaults │ │ │ └── sdkconfig.defaults.esp32s3 │ │ └── spi │ │ │ ├── CMakeLists.txt │ │ │ ├── main │ │ │ ├── CMakeLists.txt │ │ │ ├── idf_component.yml │ │ │ ├── test_app_main.cpp │ │ │ └── test_spi_lcd.cpp │ │ │ └── sdkconfig.defaults │ └── touch │ │ ├── i2c │ │ ├── CMakeLists.txt │ │ ├── main │ │ │ ├── CMakeLists.txt │ │ │ ├── idf_component.yml │ │ │ ├── test_app_main.cpp │ │ │ └── test_i2c_touch.cpp │ │ └── sdkconfig.defaults │ │ └── spi │ │ ├── CMakeLists.txt │ │ ├── main │ │ ├── CMakeLists.txt │ │ ├── idf_component.yml │ │ ├── test_app_main.cpp │ │ └── test_spi_touch.cpp │ │ └── sdkconfig.defaults └── gui │ └── lvgl_v8_port │ ├── CMakeLists.txt │ ├── main │ ├── CMakeLists.txt │ ├── Kconfig.projbuild │ ├── idf_component.yml │ ├── lvgl_v8_port.cpp │ ├── lvgl_v8_port.h │ ├── test_app_main.cpp │ └── test_lvgl_port.cpp │ ├── partitions.csv │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_C3_LCDKIT │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_BOX_3 │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5 │ ├── sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5 │ ├── sdkconfig.defaults │ ├── sdkconfig.defaults.esp32p4 │ ├── sdkconfig.defaults.esp32s3 │ ├── sdkconfig.test.avoid_mode_1 │ ├── sdkconfig.test.avoid_mode_2 │ ├── sdkconfig.test.avoid_mode_3 │ ├── sdkconfig.test.rotation_180 │ ├── sdkconfig.test.rotation_270 │ └── sdkconfig.test.rotation_90 └── tools ├── check_executables.py ├── check_file_version.py ├── check_lib_versions.sh ├── executable-list.txt ├── idf_ci_utils.py └── sync_conf_files.py /.build-rules.yml: -------------------------------------------------------------------------------- 1 | # Note: All operators are binary operators. For more than two operands, you may use the nested parentheses trick. 2 | # For example: 3 | # * A == 1 or (B == 2 and C in [1,2,3]) 4 | # * (A == 1 and B == 2) or (C not in ["3", "4", 5]) 5 | 6 | # Test apps 7 | # Board 8 | test_apps/board/common: 9 | enable: 10 | - if: INCLUDE_DEFAULT == 1 11 | 12 | test_apps/board/elecrow: 13 | enable: 14 | - if: INCLUDE_DEFAULT == 1 15 | 16 | test_apps/board/espressif: 17 | enable: 18 | - if: INCLUDE_DEFAULT == 1 19 | 20 | test_apps/board/jingcai: 21 | enable: 22 | - if: INCLUDE_DEFAULT == 1 23 | 24 | test_apps/board/m5stack: 25 | enable: 26 | - if: INCLUDE_DEFAULT == 1 27 | 28 | test_apps/board/viewe: 29 | enable: 30 | - if: INCLUDE_DEFAULT == 1 31 | 32 | test_apps/board/waveshare: 33 | enable: 34 | - if: INCLUDE_DEFAULT == 1 35 | 36 | # Drivers 37 | test_apps/drivers/lcd/3wire_spi_rgb: 38 | disable: 39 | - if: SOC_LCD_RGB_SUPPORTED != 1 40 | - if: IDF_TARGET == "esp32p4" 41 | temporary: true 42 | reason: not ready 43 | 44 | test_apps/drivers/lcd/qspi: 45 | disable: 46 | - if: SOC_GPSPI_SUPPORTED != 1 47 | 48 | test_apps/drivers/lcd/mipi_dsi: 49 | disable: 50 | - if: SOC_MIPI_DSI_SUPPORTED != 1 51 | 52 | test_apps/drivers/lcd/rgb: 53 | disable: 54 | - if: SOC_LCD_RGB_SUPPORTED != 1 55 | - if: IDF_TARGET == "esp32p4" 56 | temporary: true 57 | reason: not ready 58 | 59 | test_apps/drivers/lcd/spi: 60 | disable: 61 | - if: SOC_GPSPI_SUPPORTED != 1 62 | 63 | test_apps/drivers/touch/i2c: 64 | disable: 65 | - if: SOC_I2C_SUPPORTED != 1 66 | 67 | test_apps/drivers/touch/spi: 68 | disable: 69 | - if: SOC_GPSPI_SUPPORTED != 1 70 | 71 | # Examples 72 | test_apps/gui/lvgl_v8_port: 73 | enable: 74 | - if: INCLUDE_DEFAULT == 1 75 | -------------------------------------------------------------------------------- /.codespellrc: -------------------------------------------------------------------------------- 1 | [codespell] 2 | skip = ./src/touch/port/esp_lcd_touch_xpt2046.c, 3 | -------------------------------------------------------------------------------- /.github/workflows/arduino_lint.yml: -------------------------------------------------------------------------------- 1 | name: Arduino Lint Action 2 | 3 | on: 4 | workflow_dispatch: 5 | pull_request: 6 | types: [opened, reopened, synchronize] 7 | push: 8 | branches: 9 | - master 10 | 11 | jobs: 12 | lint: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v3 16 | - uses: arduino/arduino-lint-action@v1 17 | with: 18 | library-manager: update 19 | -------------------------------------------------------------------------------- /.github/workflows/check_lib_versions.yml: -------------------------------------------------------------------------------- 1 | name: Check Library Versions 2 | 3 | on: 4 | pull_request: 5 | types: [opened, reopened, synchronize] 6 | 7 | jobs: 8 | check_lib_versions: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | - name: Get latest release info of repository 13 | id: last_release 14 | uses: InsonusK/get-latest-release@v1.1.0 15 | with: 16 | myToken: ${{ github.token }} 17 | exclude_types: "draft|prerelease" 18 | view_top: 1 19 | - name: Print result 20 | run: | 21 | echo "id: ${{ steps.last_release.outputs.id }}" 22 | echo "name: ${{ steps.last_release.outputs.name }}" 23 | echo "tag_name: ${{ steps.last_release.outputs.tag_name }}" 24 | echo "created_at: ${{ steps.last_release.outputs.created_at }}" 25 | echo "draft: ${{ steps.last_release.outputs.draft }}" 26 | echo "prerelease: ${{ steps.last_release.outputs.prerelease }}" 27 | echo "url: ${{ steps.last_release.outputs.url }}" 28 | - name: Check & Compare versions 29 | run: bash ./tools/check_lib_versions.sh --latest_version=${{ steps.last_release.outputs.tag_name }} 30 | -------------------------------------------------------------------------------- /.github/workflows/issue_comment.yml: -------------------------------------------------------------------------------- 1 | name: Sync issue comments to JIRA 2 | 3 | # This workflow will be triggered when new issue comment is created (including PR comments) 4 | on: issue_comment 5 | 6 | # Limit to single concurrent run for workflows which can create Jira issues. 7 | # Same concurrency group is used in new_issues.yml 8 | concurrency: jira_issues 9 | 10 | jobs: 11 | sync_issue_comments_to_jira: 12 | name: Sync Issue Comments to Jira 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v2 16 | - name: Sync issue comments to JIRA 17 | uses: espressif/github-actions/sync_issues_to_jira@master 18 | env: 19 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 20 | JIRA_PASS: ${{ secrets.JIRA_PASS }} 21 | JIRA_PROJECT: ${{ secrets.JIRA_PROJECT }} 22 | JIRA_COMPONENT: ${{ secrets.JIRA_COMPONENT }} 23 | JIRA_URL: ${{ secrets.JIRA_URL }} 24 | JIRA_USER: ${{ secrets.JIRA_USER }} 25 | -------------------------------------------------------------------------------- /.github/workflows/new_issues.yml: -------------------------------------------------------------------------------- 1 | name: Sync issues to Jira 2 | 3 | # This workflow will be triggered when a new issue is opened 4 | on: issues 5 | 6 | # Limit to single concurrent run for workflows which can create Jira issues. 7 | # Same concurrency group is used in issue_comment.yml 8 | concurrency: jira_issues 9 | 10 | jobs: 11 | sync_issues_to_jira: 12 | name: Sync issues to Jira 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v2 16 | - name: Sync GitHub issues to Jira project 17 | uses: espressif/github-actions/sync_issues_to_jira@master 18 | env: 19 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 20 | JIRA_PASS: ${{ secrets.JIRA_PASS }} 21 | JIRA_PROJECT: ${{ secrets.JIRA_PROJECT }} 22 | JIRA_COMPONENT: ${{ secrets.JIRA_COMPONENT }} 23 | JIRA_URL: ${{ secrets.JIRA_URL }} 24 | JIRA_USER: ${{ secrets.JIRA_USER }} 25 | -------------------------------------------------------------------------------- /.github/workflows/new_prs.yml: -------------------------------------------------------------------------------- 1 | name: Sync remain PRs to Jira 2 | 3 | # This workflow will be triggered every hour, to sync remaining PRs (i.e. PRs with zero comment) to Jira project 4 | # Note that, PRs can also get synced when new PR comment is created 5 | on: 6 | schedule: 7 | - cron: "0 * * * *" 8 | 9 | # Limit to single concurrent run for workflows which can create Jira issues. 10 | # Same concurrency group is used in issue_comment.yml 11 | concurrency: jira_issues 12 | 13 | jobs: 14 | sync_prs_to_jira: 15 | name: Sync PRs to Jira 16 | runs-on: ubuntu-latest 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Sync PRs to Jira project 20 | uses: espressif/github-actions/sync_issues_to_jira@master 21 | with: 22 | cron_job: true 23 | env: 24 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 25 | JIRA_PASS: ${{ secrets.JIRA_PASS }} 26 | JIRA_PROJECT: ${{ secrets.JIRA_PROJECT }} 27 | JIRA_COMPONENT: ${{ secrets.JIRA_COMPONENT }} 28 | JIRA_URL: ${{ secrets.JIRA_URL }} 29 | JIRA_USER: ${{ secrets.JIRA_USER }} 30 | -------------------------------------------------------------------------------- /.github/workflows/pre-commit.yml: -------------------------------------------------------------------------------- 1 | name: pre-commit 2 | 3 | on: 4 | workflow_dispatch: 5 | pull_request: 6 | types: [opened, reopened, synchronize] 7 | 8 | jobs: 9 | pre-commit: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v2 13 | - uses: actions/setup-python@v2 14 | - uses: pre-commit/action@v3.0.1 15 | -------------------------------------------------------------------------------- /.github/workflows/upload_component.yml: -------------------------------------------------------------------------------- 1 | name: Push components to Espressif Component Service 2 | 3 | on: 4 | workflow_dispatch: 5 | release: 6 | types: [published] 7 | 8 | jobs: 9 | upload_components: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@master 13 | with: 14 | submodules: 'recursive' 15 | - name: Upload components to component service 16 | uses: espressif/upload-components-ci-action@v1 17 | with: 18 | name: "esp32_display_panel" 19 | namespace: "espressif" 20 | api_token: ${{ secrets.IDF_COMPONENT_API_TOKEN }} 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .config 2 | *.o 3 | *.pyc 4 | *.orig 5 | 6 | # gtags 7 | GTAGS 8 | GRTAGS 9 | GPATH 10 | 11 | # emacs 12 | .dir-locals.el 13 | 14 | # emacs temp file suffixes 15 | *~ 16 | .#* 17 | \#*# 18 | 19 | # eclipse setting 20 | .settings 21 | 22 | # MacOS directory files 23 | .DS_Store 24 | 25 | # Unit Test CMake compile log folder 26 | log_ut_cmake 27 | 28 | TEST_LOGS 29 | 30 | # gcov coverage reports 31 | *.gcda 32 | *.gcno 33 | coverage.info 34 | coverage_report/ 35 | 36 | test_multi_heap_host 37 | 38 | # VS Code Settings 39 | .vscode/ 40 | 41 | # VIM files 42 | *.swp 43 | *.swo 44 | 45 | # Clion IDE CMake build & config 46 | .idea/ 47 | cmake-build-*/ 48 | 49 | # Results for the checking of the Python coding style and static analysis 50 | .mypy_cache 51 | flake8_output.txt 52 | 53 | # ESP-IDF default build directory name 54 | build 55 | build_esp*/ 56 | build_linux*/ 57 | size_info.txt 58 | sdkconfig 59 | sdkconfig.old 60 | 61 | # lock files for examples and components 62 | dependencies.lock 63 | 64 | # managed_components for examples 65 | managed_components 66 | 67 | # pytest log 68 | pytest_embedded_log/ 69 | pytest_log/ 70 | .pytest_cache/ 71 | XUNIT_RESULT.xml 72 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | stages: 2 | - pre_check 3 | - build 4 | - deploy 5 | 6 | workflow: 7 | rules: 8 | # Disable those non-protected push triggered pipelines 9 | - if: '$CI_COMMIT_REF_NAME != "master" && $CI_COMMIT_BRANCH !~ /^release\/v/ && $CI_COMMIT_TAG !~ /^v\d+\.\d+(\.\d+)?($|-)/ && $CI_PIPELINE_SOURCE == "push"' 10 | when: never 11 | # when running merged result pipelines, it would create a temp commit id. use $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA instead of $CI_COMMIT_SHA. 12 | # Please use PIPELINE_COMMIT_SHA at all places that require a commit sha 13 | - if: $CI_OPEN_MERGE_REQUESTS != null 14 | variables: 15 | PIPELINE_COMMIT_SHA: $CI_MERGE_REQUEST_SOURCE_BRANCH_SHA 16 | - if: $CI_OPEN_MERGE_REQUESTS == null 17 | variables: 18 | PIPELINE_COMMIT_SHA: $CI_COMMIT_SHA 19 | - when: always 20 | 21 | variables: 22 | COMPONENT_PATH: "$CI_PROJECT_DIR" 23 | 24 | include: 25 | - '.gitlab/ci/rules.yml' 26 | - '.gitlab/ci/pre_check.yml' 27 | - '.gitlab/ci/build.yml' 28 | - '.gitlab/ci/deploy.yml' 29 | -------------------------------------------------------------------------------- /.gitlab/ci/deploy.yml: -------------------------------------------------------------------------------- 1 | push_to_github: 2 | stage: deploy 3 | only: 4 | - master 5 | - /^release\/v/ 6 | # when: on_success 7 | image: $CI_DOCKER_REGISTRY/esp32-ci-env 8 | tags: 9 | - github_sync 10 | variables: 11 | GIT_STRATEGY: clone 12 | SUBMODULES_TO_FETCH: "none" 13 | dependencies: [] 14 | before_script: 15 | - echo "skip default before_script" 16 | script: 17 | - mkdir -p ~/.ssh 18 | - chmod 700 ~/.ssh 19 | - echo -n $GH_PUSH_KEY > ~/.ssh/id_rsa_base64 20 | - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa 21 | - chmod 600 ~/.ssh/id_rsa 22 | - echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config 23 | - git remote remove github &>/dev/null || true 24 | - git remote add github git@github.com:esp-arduino-libs/ESP32_Display_Panel.git 25 | - ${COMPONENT_PATH}/.gitlab/tools/push_to_github.sh 26 | -------------------------------------------------------------------------------- /.gitlab/ci/pre_check.yml: -------------------------------------------------------------------------------- 1 | .pre_check_template: 2 | stage: pre_check 3 | image: python:3.9 4 | tags: ["build", "amd64", "internet"] 5 | dependencies: [] 6 | 7 | check_pre_commit: 8 | extends: 9 | - .pre_check_template 10 | before_script: 11 | - pip install pre-commit 12 | script: 13 | - pre-commit run --show-diff-on-failure --color=always --all-files 14 | 15 | check_readme_links: 16 | extends: 17 | - .pre_check_template 18 | - .rules:pre_check:readme 19 | allow_failure: true 20 | script: 21 | - python ${CI_PROJECT_DIR}/.gitlab/tools/check_readme_links.py 22 | -------------------------------------------------------------------------------- /.gitlab/tools/push_to_github.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # gitlab-ci script to push current tested revision (tag or branch) to github 4 | 5 | set -ex 6 | 7 | if [ -n "${CI_COMMIT_TAG}" ]; then 8 | # for tags 9 | git push github "${CI_COMMIT_TAG}" 10 | else 11 | # for branches 12 | git push github "${CI_COMMIT_SHA}:refs/heads/${CI_COMMIT_REF_NAME}" 13 | fi 14 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(SRCS_DIR "src") 2 | 3 | file(GLOB_RECURSE CPP_SRCS "${SRCS_DIR}/*.cpp") 4 | file(GLOB_RECURSE C_SRCS "${SRCS_DIR}/*.c") 5 | 6 | idf_component_register( 7 | SRCS ${C_SRCS} ${CPP_SRCS} 8 | INCLUDE_DIRS ${SRCS_DIR} 9 | REQUIRES driver esp_lcd 10 | ) 11 | 12 | target_compile_options(${COMPONENT_LIB} 13 | PUBLIC 14 | -Wno-missing-field-initializers 15 | PRIVATE 16 | $<$:-std=gnu++17> 17 | ) 18 | -------------------------------------------------------------------------------- /Kconfig: -------------------------------------------------------------------------------- 1 | menu "ESP Display Panel Configurations" 2 | config ESP_PANEL_DRIVERS_FILE_SKIP 3 | bool "Enable to skip `esp_panel_drivers_conf.h`" 4 | default y 5 | help 6 | If want to use `esp_panel_drivers_conf.h` to configure the panel, uncheck this option. Otherwise, the configurations in sdkconfig will be used. 7 | 8 | config ESP_PANEL_BOARD_FILE_SKIP 9 | bool "Enable to skip `esp_panel_board_*.h`" 10 | default y 11 | help 12 | If want to use `esp_panel_board_*.h` to configure the panel, uncheck this option. Otherwise, the configurations in sdkconfig will be used. 13 | 14 | if ESP_PANEL_DRIVERS_FILE_SKIP 15 | orsource "./src/drivers/Kconfig.drivers" 16 | endif 17 | 18 | if ESP_PANEL_BOARD_FILE_SKIP 19 | orsource "./src/board/Kconfig.board" 20 | endif 21 | 22 | endmenu 23 | -------------------------------------------------------------------------------- /check_copyright_config.yaml: -------------------------------------------------------------------------------- 1 | DEFAULT: 2 | perform_check: yes # should the check be performed? 3 | # Sections setting this to 'no' don't need to include any other options as they are ignored 4 | # When a file is using a section with the option set to 'no', no checks are performed. 5 | 6 | # what licenses (or license expressions) are allowed for files in this section 7 | # when setting this option in a section, you need to list all the allowed licenses 8 | allowed_licenses: 9 | - Apache-2.0 10 | - MIT 11 | license_for_new_files: Apache-2.0 # license to be used when inserting a new copyright notice 12 | new_notice_c: | # notice for new C, CPP, H, HPP and LD files 13 | /* 14 | * SPDX-FileCopyrightText: {years} Espressif Systems (Shanghai) CO LTD 15 | * 16 | * SPDX-License-Identifier: {license} 17 | */ 18 | new_notice_python: | # notice for new python files 19 | # SPDX-FileCopyrightText: {years} Espressif Systems (Shanghai) CO LTD 20 | # SPDX-License-Identifier: {license} 21 | 22 | # comment lines matching: 23 | # SPDX-FileCopyrightText: year[-year] Espressif Systems 24 | # or 25 | # SPDX-FileContributor: year[-year] Espressif Systems 26 | # are replaced with this template prefixed with the correct comment notation (# or // or *) and SPDX- notation 27 | espressif_copyright: '{years} Espressif Systems (Shanghai) CO LTD' 28 | 29 | # You can create your own rules for files or group of files 30 | examples_and_unit_tests: 31 | include: 32 | - 'test_apps/' 33 | - 'examples/' 34 | - 'template_files/' 35 | allowed_licenses: 36 | - Apache-2.0 37 | - Unlicense 38 | - CC0-1.0 39 | license_for_new_files: CC0-1.0 40 | 41 | ignore: # You can also select ignoring files here 42 | perform_check: no # Don't check files from that block 43 | include: 44 | - 'examples/platformio/lvgl_v8_port/src/lv_conf.h' 45 | -------------------------------------------------------------------------------- /docs/_static/block_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/esp-arduino-libs/ESP32_Display_Panel/2128a6e8c2de7231626c32a5642b1efd8fdbf76d/docs/_static/block_diagram.png -------------------------------------------------------------------------------- /docs/drivers/touch.md: -------------------------------------------------------------------------------- 1 | # Supported Touch Controllers 2 | 3 | | **Name** | **Version** | **I2C** | **SPI** | 4 | | :--------------------------------------------------------------------------------------: | :---------: | :-----: | :-----: | 5 | | [esp_lcd_touch](https://components.espressif.com/components/espressif/esp_lcd_touch) | 1.1.2 | | | 6 | | AXS15231B | - | ✅ | | 7 | | CHSC6540 | - | ✅ | | 8 | | [CST816S](https://components.espressif.com/components/espressif/esp_lcd_touch_cst816s) | 1.0.3~1 | ✅ | | 9 | | [FT5x06](https://components.espressif.com/components/espressif/esp_lcd_touch_ft5x06) | 1.0.6~1 | ✅ | | 10 | | [GT911](https://components.espressif.com/components/espressif/esp_lcd_touch_gt911) | 1.1.1~1 | ✅ | | 11 | | [GT1151](https://components.espressif.com/components/espressif/esp_lcd_touch_gt1151) | 1.0.5~2 | ✅ | | 12 | | [SPD2010](https://components.espressif.com/components/espressif/esp_lcd_touch_spd2010) | 1.0.0 | ✅ | | 13 | | ST1633 | 0.1.0 | ✅ | | 14 | | [ST7123](https://components.espressif.com/components/espressif/esp_lcd_touch_st7123) | 1.0.0 | ✅ | | 15 | | [STMPE610](https://components.espressif.com/components/espressif/esp_lcd_touch_stmpe610) | 1.0.6 | | ✅ | 16 | | [TT21100](https://components.espressif.com/components/espressif/esp_lcd_touch_tt21100) | 1.1.0~1 | ✅ | | 17 | | [XPT2046](https://components.espressif.com/components/atanisoft/esp_lcd_touch_xpt2046) | 1.0.5 | | ✅ | 18 | -------------------------------------------------------------------------------- /docs/faq_others.md: -------------------------------------------------------------------------------- 1 | # Other FAQs 2 | 3 | ## Can't find drivers for the same model of LCD/Touch device? 4 | 5 | For **LCD**, devices with the same interface type (SPI, QSPI, etc.) have similar or even identical driving methods. For example, ILI9341 and GC9A01 have almost identical driver code when using the SPI interface. Therefore, you can try using drivers for other devices with the same interface type. 6 | 7 | For **Touch**, drivers for some devices in the same series are compatible, such as CST816S, CST816D, and CST820 having compatible driver code. Therefore, you can check the technical manuals of devices in the same series to determine if there is compatibility (devices with the same I2C address are usually compatible). 8 | 9 | If the above methods cannot solve your problem, you can create a [Github Issue](https://github.com/esp-arduino-libs/ESP32_Display_Panel/issues) to request adding a driver. 10 | -------------------------------------------------------------------------------- /docs/faq_others_cn.md: -------------------------------------------------------------------------------- 1 | # 其他 FAQ 2 | 3 | ## 找不到相同型号的 LCD/Touch 设备驱动? 4 | 5 | 对于 **LCD**,具有相同接口类型(SPI、QSPI 等)的设备的驱动方式是类似的,甚至是相同的,例如 ILI9341 和 GC9A01 在使用 SPI 接口时,驱动代码几乎相同。因此,您可以尝试使用其他相同接口类型的设备驱动。 6 | 7 | 对于 **Touch**,部分相同系列设备的驱动是兼容的,如 CST816S 和 CST816D 以及 CST820 的驱动代码是兼容的。因此,您可以查阅相同系列设备的技术手册判断是否存在兼容性(如具有相同的 I2C 地址的设备通常是兼容的)。 8 | 9 | 如果上述方法无法解决问题,您可以创建 [Github Issue](https://github.com/esp-arduino-libs/ESP32_Display_Panel/issues) 请求添加驱动。 10 | -------------------------------------------------------------------------------- /examples/arduino/board/board_dynamic_config/board_external_config.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #pragma once 8 | 9 | #include "board/esp_panel_board_config.hpp" 10 | 11 | extern const esp_panel::board::BoardConfig BOARD_EXTERNAL_CONFIG; 12 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_port/libraries/ui/library.properties: -------------------------------------------------------------------------------- 1 | name=ui 2 | version=1.0 3 | author=SquareLine_Studio 4 | category=Display 5 | url=https://squareline.io 6 | architectures=* 7 | includes=ui.h 8 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_port/libraries/ui/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET(SOURCES screens/ui_ScreenMain.c 2 | ui.c 3 | components/ui_comp_hook.c 4 | ui_helpers.c 5 | images/ui_img_lexin_1_png.c 6 | images/ui_img_lexin_2_png.c) 7 | 8 | add_library(ui ${SOURCES}) 9 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_port/libraries/ui/src/components/ui_comp_hook.c: -------------------------------------------------------------------------------- 1 | // This file was generated by SquareLine Studio 2 | // SquareLine Studio version: SquareLine Studio 1.3.2 3 | // LVGL version: 8.3.6 4 | // Project name: Porting 5 | 6 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_port/libraries/ui/src/filelist.txt: -------------------------------------------------------------------------------- 1 | screens/ui_ScreenMain.c 2 | ui.c 3 | components/ui_comp_hook.c 4 | ui_helpers.c 5 | images/ui_img_lexin_1_png.c 6 | images/ui_img_lexin_2_png.c 7 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_port/libraries/ui/src/readme.txt: -------------------------------------------------------------------------------- 1 | The UI files will be exported here 2 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_port/libraries/ui/src/screens/ui_ScreenMain.c: -------------------------------------------------------------------------------- 1 | // This file was generated by SquareLine Studio 2 | // SquareLine Studio version: SquareLine Studio 1.3.2 3 | // LVGL version: 8.3.6 4 | // Project name: Porting 5 | 6 | #include "../ui.h" 7 | 8 | void ui_ScreenMain_screen_init(void) 9 | { 10 | ui_ScreenMain = lv_obj_create(NULL); 11 | lv_obj_clear_flag( ui_ScreenMain, LV_OBJ_FLAG_SCROLLABLE ); /// Flags 12 | lv_obj_set_style_bg_color(ui_ScreenMain, lv_color_hex(0xFFFFFF), LV_PART_MAIN | LV_STATE_DEFAULT ); 13 | lv_obj_set_style_bg_opa(ui_ScreenMain, 255, LV_PART_MAIN| LV_STATE_DEFAULT); 14 | 15 | ui_Image1ScreenMain = lv_img_create(ui_ScreenMain); 16 | lv_img_set_src(ui_Image1ScreenMain, &ui_img_lexin_1_png); 17 | lv_obj_set_width( ui_Image1ScreenMain, LV_SIZE_CONTENT); /// 1 18 | lv_obj_set_height( ui_Image1ScreenMain, LV_SIZE_CONTENT); /// 1 19 | lv_obj_set_align( ui_Image1ScreenMain, LV_ALIGN_CENTER ); 20 | lv_obj_add_flag( ui_Image1ScreenMain, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_ADV_HITTEST ); /// Flags 21 | lv_obj_clear_flag( ui_Image1ScreenMain, LV_OBJ_FLAG_SCROLLABLE ); /// Flags 22 | 23 | ui_Image2ScreenMain = lv_img_create(ui_ScreenMain); 24 | lv_img_set_src(ui_Image2ScreenMain, &ui_img_lexin_2_png); 25 | lv_obj_set_width( ui_Image2ScreenMain, LV_SIZE_CONTENT); /// 1 26 | lv_obj_set_height( ui_Image2ScreenMain, LV_SIZE_CONTENT); /// 1 27 | lv_obj_set_align( ui_Image2ScreenMain, LV_ALIGN_CENTER ); 28 | lv_obj_add_flag( ui_Image2ScreenMain, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_ADV_HITTEST ); /// Flags 29 | lv_obj_clear_flag( ui_Image2ScreenMain, LV_OBJ_FLAG_SCROLLABLE ); /// Flags 30 | 31 | lv_obj_add_event_cb(ui_Image1ScreenMain, ui_event_Image1ScreenMain, LV_EVENT_ALL, NULL); 32 | lv_obj_add_event_cb(ui_Image2ScreenMain, ui_event_Image2ScreenMain, LV_EVENT_ALL, NULL); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_port/libraries/ui/src/ui.h: -------------------------------------------------------------------------------- 1 | // This file was generated by SquareLine Studio 2 | // SquareLine Studio version: SquareLine Studio 1.3.2 3 | // LVGL version: 8.3.6 4 | // Project name: Porting 5 | 6 | #ifndef _PORTING_UI_H 7 | #define _PORTING_UI_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | #if defined __has_include 14 | #if __has_include("lvgl.h") 15 | #include "lvgl.h" 16 | #elif __has_include("lvgl/lvgl.h") 17 | #include "lvgl/lvgl.h" 18 | #else 19 | #include "lvgl.h" 20 | #endif 21 | #else 22 | #include "lvgl.h" 23 | #endif 24 | 25 | #include "ui_helpers.h" 26 | #include "ui_events.h" 27 | // SCREEN: ui_ScreenMain 28 | void ui_ScreenMain_screen_init(void); 29 | extern lv_obj_t *ui_ScreenMain; 30 | void ui_event_Image1ScreenMain( lv_event_t * e); 31 | extern lv_obj_t *ui_Image1ScreenMain; 32 | void ui_event_Image2ScreenMain( lv_event_t * e); 33 | extern lv_obj_t *ui_Image2ScreenMain; 34 | extern lv_obj_t *ui____initial_actions0; 35 | 36 | LV_IMG_DECLARE( ui_img_lexin_1_png); // assets/lexin_1.png 37 | LV_IMG_DECLARE( ui_img_lexin_2_png); // assets/lexin_2.png 38 | 39 | 40 | 41 | void ui_init(void); 42 | 43 | #ifdef __cplusplus 44 | } /*extern "C"*/ 45 | #endif 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_port/libraries/ui/src/ui_events.h: -------------------------------------------------------------------------------- 1 | // This file was generated by SquareLine Studio 2 | // SquareLine Studio version: SquareLine Studio 1.3.2 3 | // LVGL version: 8.3.6 4 | // Project name: Porting 5 | 6 | #ifndef _UI_EVENTS_H 7 | #define _UI_EVENTS_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | #ifdef __cplusplus 14 | } /*extern "C"*/ 15 | #endif 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_port/libraries/ui/ui.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file ui.h 3 | * 4 | */ 5 | 6 | #ifndef UI_OUTER_H 7 | #define UI_OUTER_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | #include "src/ui.h" 17 | 18 | /********************* 19 | * DEFINES 20 | *********************/ 21 | 22 | /********************** 23 | * TYPEDEFS 24 | **********************/ 25 | 26 | /********************** 27 | * GLOBAL PROTOTYPES 28 | **********************/ 29 | 30 | /********************** 31 | * MACROS 32 | **********************/ 33 | 34 | #ifdef __cplusplus 35 | } /*extern "C"*/ 36 | #endif 37 | 38 | #endif /*UI_OUTER_H*/ 39 | 40 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_port/squareline_port.ino: -------------------------------------------------------------------------------- 1 | /** 2 | * Detailed usage of the example can be found in the [README.md](./README.md) file 3 | */ 4 | 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include "lvgl_v8_port.h" 10 | 11 | using namespace esp_panel::drivers; 12 | using namespace esp_panel::board; 13 | 14 | void setup() 15 | { 16 | Serial.begin(115200); 17 | 18 | Serial.println("Initializing board"); 19 | Board *board = new Board(); 20 | board->init(); 21 | #if LVGL_PORT_AVOID_TEARING_MODE 22 | auto lcd = board->getLCD(); 23 | // When avoid tearing function is enabled, the frame buffer number should be set in the board driver 24 | lcd->configFrameBufferNumber(LVGL_PORT_DISP_BUFFER_NUM); 25 | #if ESP_PANEL_DRIVERS_BUS_ENABLE_RGB && CONFIG_IDF_TARGET_ESP32S3 26 | auto lcd_bus = lcd->getBus(); 27 | /** 28 | * As the anti-tearing feature typically consumes more PSRAM bandwidth, for the ESP32-S3, we need to utilize the 29 | * "bounce buffer" functionality to enhance the RGB data bandwidth. 30 | * This feature will consume `bounce_buffer_size * bytes_per_pixel * 2` of SRAM memory. 31 | */ 32 | if (lcd_bus->getBasicAttributes().type == ESP_PANEL_BUS_TYPE_RGB) { 33 | static_cast(lcd_bus)->configRGB_BounceBufferSize(lcd->getFrameWidth() * 10); 34 | } 35 | #endif 36 | #endif 37 | assert(board->begin()); 38 | 39 | Serial.println("Initializing LVGL"); 40 | lvgl_port_init(board->getLCD(), board->getTouch()); 41 | 42 | Serial.println("Creating UI"); 43 | /* Lock the mutex due to the LVGL APIs are not thread-safe */ 44 | lvgl_port_lock(-1); 45 | 46 | /* Initialize LVGL UI generated by Squareline */ 47 | ui_init(); 48 | 49 | /* Release the mutex */ 50 | lvgl_port_unlock(); 51 | } 52 | 53 | void loop() 54 | { 55 | Serial.println("IDLE loop"); 56 | delay(1000); 57 | } 58 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_wifi_clock/libraries/ui/library.properties: -------------------------------------------------------------------------------- 1 | name=ui 2 | version=1.0 3 | author=SquareLine_Studio 4 | category=Display 5 | url=https://squareline.io 6 | architectures=* 7 | includes=ui.h 8 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_wifi_clock/libraries/ui/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET(SOURCES screens/ui_ScreenClock.c 2 | screens/ui_ScreenSet.c 3 | screens/ui_ScreenWifiList.c 4 | screens/ui_ScreenPassword.c 5 | screens/ui_ScreenAla.c 6 | ui.c 7 | components/ui_comp_hook.c 8 | ui_helpers.c 9 | images/ui_img_settings_icon_png.c 10 | images/ui_img_cloudy_png.c 11 | images/ui_img_light_rain_png.c 12 | images/ui_img_sunny_png.c 13 | images/ui_img_snow_png.c 14 | images/ui_img_wifi_png.c 15 | images/ui_img_thunderstorm_png.c 16 | images/ui_img_atmosphere_png.c 17 | images/ui_img_drizzle_png.c 18 | images/ui_img_return_png.c 19 | fonts/ui_font_AliShuHeTi16sbpp4.c 20 | fonts/ui_font_FontNumber28bp4.c 21 | fonts/ui_font_FontNumber36bp4.c 22 | fonts/ui_font_FontNumber48bp4.c 23 | fonts/ui_font_FontPuHui20bp4.c) 24 | 25 | add_library(ui ${SOURCES}) 26 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_wifi_clock/libraries/ui/src/components/ui_comp_hook.c: -------------------------------------------------------------------------------- 1 | // This file was generated by SquareLine Studio 2 | // SquareLine Studio version: SquareLine Studio 1.3.2 3 | // LVGL version: 8.3.6 4 | // Project name: ArduinoDemo 5 | 6 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_wifi_clock/libraries/ui/src/filelist.txt: -------------------------------------------------------------------------------- 1 | screens/ui_ScreenClock.c 2 | screens/ui_ScreenSet.c 3 | screens/ui_ScreenWifiList.c 4 | screens/ui_ScreenPassword.c 5 | screens/ui_ScreenAla.c 6 | ui.c 7 | components/ui_comp_hook.c 8 | ui_helpers.c 9 | images/ui_img_settings_icon_png.c 10 | images/ui_img_cloudy_png.c 11 | images/ui_img_light_rain_png.c 12 | images/ui_img_sunny_png.c 13 | images/ui_img_snow_png.c 14 | images/ui_img_wifi_png.c 15 | images/ui_img_thunderstorm_png.c 16 | images/ui_img_atmosphere_png.c 17 | images/ui_img_drizzle_png.c 18 | images/ui_img_return_png.c 19 | fonts/ui_font_AliShuHeTi16sbpp4.c 20 | fonts/ui_font_FontNumber28bp4.c 21 | fonts/ui_font_FontNumber36bp4.c 22 | fonts/ui_font_FontNumber48bp4.c 23 | fonts/ui_font_FontPuHui20bp4.c 24 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_wifi_clock/libraries/ui/src/readme.txt: -------------------------------------------------------------------------------- 1 | The UI files will be exported here 2 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_wifi_clock/libraries/ui/src/ui_events.h: -------------------------------------------------------------------------------- 1 | // This file was generated by SquareLine Studio 2 | // SquareLine Studio version: SquareLine Studio 1.3.2 3 | // LVGL version: 8.3.6 4 | // Project name: ArduinoDemo 5 | 6 | #ifndef _UI_EVENTS_H 7 | #define _UI_EVENTS_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | void handleFactoryAction(lv_event_t * e); 14 | void handleAlarmConfirmation(lv_event_t * e); 15 | void handleButtonAlarmEvent(lv_event_t * e); 16 | void handleButtonSetWifiEvent(lv_event_t * e); 17 | void handleButtonResetAction(lv_event_t * e); 18 | void handleButtonReturnWifiAction(lv_event_t * e); 19 | #ifdef __cplusplus 20 | } /*extern "C"*/ 21 | #endif 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /examples/arduino/gui/lvgl_v8/squareline_wifi_clock/libraries/ui/ui.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file ui.h 3 | * 4 | */ 5 | 6 | #ifndef UI_OUTER_H 7 | #define UI_OUTER_H 8 | 9 | #ifdef __cplusplus 10 | extern "C" { 11 | #endif 12 | 13 | /********************* 14 | * INCLUDES 15 | *********************/ 16 | #include "src/ui.h" 17 | 18 | /********************* 19 | * DEFINES 20 | *********************/ 21 | 22 | /********************** 23 | * TYPEDEFS 24 | **********************/ 25 | 26 | /********************** 27 | * GLOBAL PROTOTYPES 28 | **********************/ 29 | 30 | /********************** 31 | * MACROS 32 | **********************/ 33 | 34 | #ifdef __cplusplus 35 | } /*extern "C"*/ 36 | #endif 37 | 38 | #endif /*UI_OUTER_H*/ 39 | 40 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 5 | project(lvgl_v8_port) 6 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "main.cpp" "lvgl_v8_port.cpp" 3 | INCLUDE_DIRS . 4 | ) 5 | 6 | target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-missing-field-initializers) 7 | 8 | # The following code is to avoid the error: 9 | # lvgl_v8_port/managed_components/lvgl__lvgl/demos/stress/lv_demo_stress.c:92:29: error: format '%d' expects argument of 10 | # type 'int', but argument 6 has type 'uint32_t' {aka 'long unsigned int'} [-Werror=format=] 11 | 12 | # Get the exact component name 13 | idf_build_get_property(build_components BUILD_COMPONENTS) 14 | foreach(COMPONENT ${build_components}) 15 | if(COMPONENT MATCHES "lvgl" OR COMPONENT MATCHES "lvgl__lvgl") 16 | set(TARGET_COMPONENT ${COMPONENT}) 17 | break() 18 | endif() 19 | endforeach() 20 | # Get the component library 21 | if(TARGET_COMPONENT STREQUAL "") 22 | message(FATAL_ERROR "Component 'lvgl' not found.") 23 | else() 24 | idf_component_get_property(LVGL_LIB ${TARGET_COMPONENT} COMPONENT_LIB) 25 | endif() 26 | target_compile_options(${LVGL_LIB} PRIVATE "-Wno-format") 27 | set(TARGET_COMPONENT "") 28 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | ESP32_Display_Panel: 4 | version: "*" 5 | override_path: "../../../../../ESP32_Display_Panel" 6 | lvgl/lvgl: 7 | version: "^8" 8 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/main/main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | 7 | #include "esp_check.h" 8 | #include "esp_display_panel.hpp" 9 | #include "esp_lib_utils.h" 10 | #include "lvgl.h" 11 | #include "lvgl_v8_port.h" 12 | #include "lv_demos.h" 13 | 14 | using namespace esp_panel::drivers; 15 | using namespace esp_panel::board; 16 | 17 | static const char *TAG = "example"; 18 | 19 | extern "C" void app_main() 20 | { 21 | Board *board = new Board(); 22 | assert(board); 23 | 24 | ESP_LOGI(TAG, "Initializing board"); 25 | ESP_UTILS_CHECK_FALSE_EXIT(board->init(), "Board init failed"); 26 | #if LVGL_PORT_AVOID_TEARING_MODE 27 | auto lcd = board->getLCD(); 28 | // When avoid tearing function is enabled, the frame buffer number should be set in the board driver 29 | lcd->configFrameBufferNumber(LVGL_PORT_DISP_BUFFER_NUM); 30 | #if ESP_PANEL_DRIVERS_BUS_ENABLE_RGB && CONFIG_IDF_TARGET_ESP32S3 31 | auto lcd_bus = lcd->getBus(); 32 | /** 33 | * As the anti-tearing feature typically consumes more PSRAM bandwidth, for the ESP32-S3, we need to utilize the 34 | * "bounce buffer" functionality to enhance the RGB data bandwidth. 35 | * This feature will consume `bounce_buffer_size * bytes_per_pixel * 2` of SRAM memory. 36 | */ 37 | if (lcd_bus->getBasicAttributes().type == ESP_PANEL_BUS_TYPE_RGB) { 38 | static_cast(lcd_bus)->configRGB_BounceBufferSize(lcd->getFrameWidth() * 10); 39 | } 40 | #endif 41 | #endif 42 | ESP_UTILS_CHECK_FALSE_EXIT(board->begin(), "Board begin failed"); 43 | 44 | ESP_LOGI(TAG, "Initializing LVGL"); 45 | ESP_UTILS_CHECK_FALSE_EXIT(lvgl_port_init(board->getLCD(), board->getTouch()), "LVGL init failed"); 46 | 47 | ESP_LOGI(TAG, "Creating UI"); 48 | /* Lock the mutex due to the LVGL APIs are not thread-safe */ 49 | lvgl_port_lock(-1); 50 | 51 | // lv_demo_widgets(); 52 | // lv_demo_benchmark(); 53 | lv_demo_music(); 54 | // lv_demo_stress(); 55 | 56 | /* Release the mutex */ 57 | lvgl_port_unlock(); 58 | } 59 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/partitions.csv: -------------------------------------------------------------------------------- 1 | # Name, Type, SubType, Offset, Size, Flags 2 | # Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap 3 | nvs, data, nvs, , 0x6000, 4 | phy_init, data, phy, , 0x1000, 5 | factory, app, factory, , 3M, 6 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_C3_LCDKIT: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32c3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 4 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 5 | CONFIG_BOARD_ESPRESSIF_ESP32_C3_LCDKIT=y 6 | 7 | CONFIG_LV_COLOR_16_SWAP=y 8 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32p4" 2 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 3 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 4 | CONFIG_BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD=y 5 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_BOX_3: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 3 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_BOX_3=y 5 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 6 | 7 | CONFIG_SPIRAM_MODE_OCT=y 8 | 9 | CONFIG_LV_COLOR_16_SWAP=y 10 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 3 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5=y 5 | 6 | CONFIG_SPIRAM_MODE_OCT=y 7 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 3 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5=y 5 | 6 | CONFIG_SPIRAM_MODE_OCT=y 7 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_FREERTOS_HZ=1000 2 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 3 | 4 | CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y 5 | CONFIG_PARTITION_TABLE_CUSTOM=y 6 | 7 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 8 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 9 | 10 | CONFIG_LV_USE_LOG=y 11 | CONFIG_LV_LOG_PRINTF=y 12 | CONFIG_LV_MEM_CUSTOM=y 13 | CONFIG_LV_MEMCPY_MEMSET_STD=y 14 | CONFIG_LV_USE_PERF_MONITOR=y 15 | CONFIG_LV_FONT_MONTSERRAT_12=y 16 | CONFIG_LV_FONT_MONTSERRAT_16=y 17 | CONFIG_LV_FONT_MONTSERRAT_18=y 18 | CONFIG_LV_FONT_MONTSERRAT_20=y 19 | CONFIG_LV_FONT_MONTSERRAT_22=y 20 | CONFIG_LV_FONT_MONTSERRAT_24=y 21 | CONFIG_LV_FONT_MONTSERRAT_26=y 22 | CONFIG_LV_FONT_MONTSERRAT_28=y 23 | CONFIG_LV_FONT_MONTSERRAT_30=y 24 | CONFIG_LV_FONT_MONTSERRAT_32=y 25 | CONFIG_LV_FONT_MONTSERRAT_34=y 26 | CONFIG_LV_USE_DEMO_WIDGETS=y 27 | CONFIG_LV_USE_DEMO_KEYPAD_AND_ENCODER=y 28 | CONFIG_LV_USE_DEMO_BENCHMARK=y 29 | CONFIG_LV_USE_DEMO_STRESS=y 30 | CONFIG_LV_USE_DEMO_MUSIC=y 31 | CONFIG_LV_DEMO_MUSIC_AUTO_PLAY=y 32 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.defaults.esp32p4: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_MODE_HEX=y 5 | CONFIG_SPIRAM_SPEED_200M=y 6 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 7 | 8 | CONFIG_IDF_EXPERIMENTAL_FEATURES=y 9 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.defaults.esp32s3: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y 2 | 3 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 4 | 5 | CONFIG_SPIRAM=y 6 | CONFIG_SPIRAM_SPEED_80M=y 7 | # Enable the XIP-PSRAM feature, so the ext-mem cache won't be disabled when SPI1 is operating the main flash 8 | # For v5.2 and below 9 | CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y 10 | CONFIG_SPIRAM_RODATA=y 11 | # For v5.3 and above 12 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 13 | 14 | # Used in conjunction with "RGB Bounce Buffer" 15 | CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y 16 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.test.avoid_mode_1: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_AVOID_TEARING_MODE_1=y 2 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.test.avoid_mode_2: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_AVOID_TEARING_MODE_2=y 2 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.test.avoid_mode_3: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_AVOID_TEARING_MODE_3=y 2 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.test.rotation_180: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_ROTATION_DEGREE_180=y 2 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.test.rotation_270: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_ROTATION_DEGREE_270=y 2 | -------------------------------------------------------------------------------- /examples/esp_idf/lvgl_v8_port/sdkconfig.test.rotation_90: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_ROTATION_DEGREE_90=y 2 | -------------------------------------------------------------------------------- /examples/platformio/lvgl_v8_port/.gitignore: -------------------------------------------------------------------------------- 1 | .pio 2 | .vscode/.browse.c_cpp.db* 3 | .vscode/c_cpp_properties.json 4 | .vscode/launch.json 5 | .vscode/ipch 6 | -------------------------------------------------------------------------------- /examples/platformio/lvgl_v8_port/boards/BOARD_CUSTOM.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "arduino":{ 4 | "ldscript": "esp32s3_out.ld", 5 | "partitions": "default_16MB.csv", 6 | "memory_type": "qio_opi" 7 | }, 8 | "core": "esp32", 9 | "extra_flags": [ 10 | "-DBOARD_HAS_PSRAM", 11 | "-DARDUINO_USB_MODE=1", 12 | "-DARDUINO_USB_CDC_ON_BOOT=0" 13 | ], 14 | "f_cpu": "240000000L", 15 | "f_flash": "80000000L", 16 | "flash_mode": "qio", 17 | "hwids": [ 18 | [ 19 | "0X303A", 20 | "0x1001" 21 | ] 22 | ], 23 | "mcu": "esp32s3", 24 | "variant": "esp32s3" 25 | }, 26 | "connectivity": [ 27 | "wifi", 28 | "bluetooth" 29 | ], 30 | "debug": { 31 | "openocd_target": "esp32s3.cfg" 32 | }, 33 | "frameworks": [ 34 | "arduino", 35 | "espidf" 36 | ], 37 | "name": "Espressif ESP32-S3-LCD-EV-Board-2(v1.5)", 38 | "upload": { 39 | "flash_size": "16MB", 40 | "maximum_ram_size": 327680, 41 | "maximum_size": 16777216, 42 | "require_upload_port": true, 43 | "speed": 921600 44 | }, 45 | "url": "https://www.adafruit.com/product/5290", 46 | "vendor": "Espressif" 47 | } 48 | -------------------------------------------------------------------------------- /examples/platformio/lvgl_v8_port/boards/BOARD_ESPRESSIF_ESP32_C3_LCDKIT.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "arduino":{ 4 | "ldscript": "esp32c3_out.ld", 5 | "partitions": "max_app_4MB.csv" 6 | }, 7 | "core": "esp32", 8 | "extra_flags": [ 9 | "-DARDUINO_ESP32C3_DEV", 10 | "-DARDUINO_USB_MODE=1", 11 | "-DARDUINO_USB_CDC_ON_BOOT=1" 12 | ], 13 | "f_cpu": "160000000L", 14 | "f_flash": "80000000L", 15 | "flash_mode": "qio", 16 | "mcu": "esp32c3", 17 | "variant": "esp32c3" 18 | }, 19 | "connectivity": [ 20 | "wifi", 21 | "bluetooth" 22 | ], 23 | "debug": { 24 | "openocd_target": "esp32c3.cfg" 25 | }, 26 | "frameworks": [ 27 | "arduino", 28 | "espidf" 29 | ], 30 | "name": "Espressif ESP32-C3-LCDkit", 31 | "upload": { 32 | "flash_size": "4MB", 33 | "maximum_ram_size": 327680, 34 | "maximum_size": 4194304, 35 | "require_upload_port": true, 36 | "speed": 460800 37 | }, 38 | "url": "https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32c3/esp32-c3-lcdkit/index.html", 39 | "vendor": "Espressif" 40 | } 41 | -------------------------------------------------------------------------------- /examples/platformio/lvgl_v8_port/boards/BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "arduino": { 4 | "partitions": "default_16MB.csv" 5 | }, 6 | "core": "esp32", 7 | "extra_flags": [ 8 | "-DBOARD_HAS_PSRAM" 9 | ], 10 | "f_cpu": "360000000L", 11 | "f_flash": "80000000L", 12 | "flash_mode": "qio", 13 | "mcu": "esp32p4", 14 | "variant": "esp32p4" 15 | }, 16 | "connectivity": [ 17 | "bluetooth", 18 | "openthread" 19 | ], 20 | "debug": { 21 | "openocd_target": "esp32p4.cfg" 22 | }, 23 | "frameworks": [ 24 | "arduino", 25 | "espidf" 26 | ], 27 | "name": "Espressif ESP32-P4-Function-EV-Board", 28 | "upload": { 29 | "flash_size": "16MB", 30 | "maximum_ram_size": 512000, 31 | "maximum_size": 16777216, 32 | "require_upload_port": true, 33 | "speed": 1500000 34 | }, 35 | "url": "https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32p4/esp32-p4-function-ev-board/index.html", 36 | "vendor": "Espressif" 37 | } 38 | -------------------------------------------------------------------------------- /examples/platformio/lvgl_v8_port/boards/BOARD_ESPRESSIF_ESP32_S3_BOX.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "arduino":{ 4 | "ldscript": "esp32s3_out.ld", 5 | "partitions": "default_16MB.csv", 6 | "memory_type": "qio_opi" 7 | }, 8 | "core": "esp32", 9 | "extra_flags": [ 10 | "-DBOARD_HAS_PSRAM", 11 | "-DARDUINO_ESP32S3_DEV", 12 | "-DARDUINO_USB_MODE=1", 13 | "-DARDUINO_USB_CDC_ON_BOOT=1" 14 | ], 15 | "f_cpu": "240000000L", 16 | "f_flash": "80000000L", 17 | "flash_mode": "qio", 18 | "hwids": [ 19 | [ 20 | "0X303A", 21 | "0x1001" 22 | ] 23 | ], 24 | "mcu": "esp32s3", 25 | "variant": "esp32s3" 26 | }, 27 | "connectivity": [ 28 | "wifi", 29 | "bluetooth" 30 | ], 31 | "debug": { 32 | "openocd_target": "esp32s3.cfg" 33 | }, 34 | "frameworks": [ 35 | "arduino", 36 | "espidf" 37 | ], 38 | "name": "Espressif ESP32-S3-Box", 39 | "upload": { 40 | "flash_size": "16MB", 41 | "maximum_ram_size": 327680, 42 | "maximum_size": 16777216, 43 | "require_upload_port": true, 44 | "speed": 921600 45 | }, 46 | "url": "https://github.com/espressif/esp-box/tree/master", 47 | "vendor": "Espressif" 48 | } 49 | -------------------------------------------------------------------------------- /examples/platformio/lvgl_v8_port/boards/BOARD_ESPRESSIF_ESP32_S3_BOX_3.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "arduino":{ 4 | "ldscript": "esp32s3_out.ld", 5 | "partitions": "default_16MB.csv", 6 | "memory_type": "qio_opi" 7 | }, 8 | "core": "esp32", 9 | "extra_flags": [ 10 | "-DBOARD_HAS_PSRAM", 11 | "-DARDUINO_ESP32S3_DEV", 12 | "-DARDUINO_USB_MODE=1", 13 | "-DARDUINO_USB_CDC_ON_BOOT=1" 14 | ], 15 | "f_cpu": "240000000L", 16 | "f_flash": "80000000L", 17 | "flash_mode": "qio", 18 | "hwids": [ 19 | [ 20 | "0X303A", 21 | "0x1001" 22 | ] 23 | ], 24 | "mcu": "esp32s3", 25 | "variant": "esp32s3" 26 | }, 27 | "connectivity": [ 28 | "wifi", 29 | "bluetooth" 30 | ], 31 | "debug": { 32 | "openocd_target": "esp32s3.cfg" 33 | }, 34 | "frameworks": [ 35 | "arduino", 36 | "espidf" 37 | ], 38 | "name": "Espressif ESP32-S3-Box-3", 39 | "upload": { 40 | "flash_size": "16MB", 41 | "maximum_ram_size": 327680, 42 | "maximum_size": 16777216, 43 | "require_upload_port": true, 44 | "speed": 921600 45 | }, 46 | "url": "https://github.com/espressif/esp-box/tree/master", 47 | "vendor": "Espressif" 48 | } 49 | -------------------------------------------------------------------------------- /examples/platformio/lvgl_v8_port/boards/BOARD_ESPRESSIF_ESP32_S3_EYE.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "arduino":{ 4 | "ldscript": "esp32s3_out.ld", 5 | "partitions": "default_8MB.csv", 6 | "memory_type": "qio_opi" 7 | }, 8 | "core": "esp32", 9 | "extra_flags": [ 10 | "-DBOARD_HAS_PSRAM", 11 | "-DARDUINO_ESP32S3_DEV", 12 | "-DARDUINO_USB_MODE=1", 13 | "-DARDUINO_USB_CDC_ON_BOOT=1" 14 | ], 15 | "f_cpu": "240000000L", 16 | "f_flash": "80000000L", 17 | "flash_mode": "qio", 18 | "hwids": [ 19 | [ 20 | "0X303A", 21 | "0x1001" 22 | ] 23 | ], 24 | "mcu": "esp32s3", 25 | "variant": "esp32s3" 26 | }, 27 | "connectivity": [ 28 | "wifi", 29 | "bluetooth" 30 | ], 31 | "debug": { 32 | "openocd_target": "esp32s3.cfg" 33 | }, 34 | "frameworks": [ 35 | "arduino", 36 | "espidf" 37 | ], 38 | "name": "Espressif ESP32-S3-EYE", 39 | "upload": { 40 | "flash_size": "16MB", 41 | "maximum_ram_size": 327680, 42 | "maximum_size": 16777216, 43 | "require_upload_port": true, 44 | "speed": 921600 45 | }, 46 | "url": "https://github.com/espressif/esp-who/blob/master/docs/en/get-started/ESP32-S3-EYE_Getting_Started_Guide.md", 47 | "vendor": "Espressif" 48 | } 49 | -------------------------------------------------------------------------------- /examples/platformio/lvgl_v8_port/boards/BOARD_ESPRESSIF_ESP32_S3_KORVO_2.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "arduino":{ 4 | "ldscript": "esp32s3_out.ld", 5 | "partitions": "default_16MB.csv", 6 | "memory_type": "qio_opi" 7 | }, 8 | "core": "esp32", 9 | "extra_flags": [ 10 | "-DBOARD_HAS_PSRAM", 11 | "-DARDUINO_ESP32S3_DEV", 12 | "-DARDUINO_USB_MODE=1", 13 | "-DARDUINO_USB_CDC_ON_BOOT=0" 14 | ], 15 | "f_cpu": "240000000L", 16 | "f_flash": "80000000L", 17 | "flash_mode": "qio", 18 | "hwids": [ 19 | [ 20 | "0X303A", 21 | "0x1001" 22 | ] 23 | ], 24 | "mcu": "esp32s3", 25 | "variant": "esp32s3" 26 | }, 27 | "connectivity": [ 28 | "wifi", 29 | "bluetooth" 30 | ], 31 | "debug": { 32 | "openocd_target": "esp32s3.cfg" 33 | }, 34 | "frameworks": [ 35 | "arduino", 36 | "espidf" 37 | ], 38 | "name": "Espressif ESP32-S3-Korvo-2", 39 | "upload": { 40 | "flash_size": "16MB", 41 | "maximum_ram_size": 327680, 42 | "maximum_size": 16777216, 43 | "require_upload_port": true, 44 | "speed": 921600 45 | }, 46 | "url": "https://docs.espressif.com/projects/esp-adf/en/latest/design-guide/dev-boards/user-guide-esp32-s3-korvo-2.html", 47 | "vendor": "Espressif" 48 | } 49 | -------------------------------------------------------------------------------- /examples/platformio/lvgl_v8_port/boards/BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "arduino":{ 4 | "ldscript": "esp32s3_out.ld", 5 | "partitions": "default_16MB.csv", 6 | "memory_type": "qio_opi" 7 | }, 8 | "core": "esp32", 9 | "extra_flags": [ 10 | "-DBOARD_HAS_PSRAM", 11 | "-DARDUINO_ESP32S3_DEV", 12 | "-DARDUINO_USB_MODE=1", 13 | "-DARDUINO_USB_CDC_ON_BOOT=0" 14 | ], 15 | "f_cpu": "240000000L", 16 | "f_flash": "80000000L", 17 | "flash_mode": "qio", 18 | "hwids": [ 19 | [ 20 | "0X303A", 21 | "0x1001" 22 | ] 23 | ], 24 | "mcu": "esp32s3", 25 | "variant": "esp32s3" 26 | }, 27 | "connectivity": [ 28 | "wifi", 29 | "bluetooth" 30 | ], 31 | "debug": { 32 | "openocd_target": "esp32s3.cfg" 33 | }, 34 | "frameworks": [ 35 | "arduino", 36 | "espidf" 37 | ], 38 | "name": "Espressif ESP32-S3-LCD-EV-Board(v1.1-v1.4)", 39 | "upload": { 40 | "flash_size": "16MB", 41 | "maximum_ram_size": 327680, 42 | "maximum_size": 16777216, 43 | "require_upload_port": true, 44 | "speed": 921600 45 | }, 46 | "url": "https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-lcd-ev-board/user_guide_v1.4.html", 47 | "vendor": "Espressif" 48 | } 49 | -------------------------------------------------------------------------------- /examples/platformio/lvgl_v8_port/boards/BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "arduino":{ 4 | "ldscript": "esp32s3_out.ld", 5 | "partitions": "default_16MB.csv", 6 | "memory_type": "qio_opi" 7 | }, 8 | "core": "esp32", 9 | "extra_flags": [ 10 | "-DBOARD_HAS_PSRAM", 11 | "-DARDUINO_ESP32S3_DEV", 12 | "-DARDUINO_USB_MODE=1", 13 | "-DARDUINO_USB_CDC_ON_BOOT=0" 14 | ], 15 | "f_cpu": "240000000L", 16 | "f_flash": "80000000L", 17 | "flash_mode": "qio", 18 | "hwids": [ 19 | [ 20 | "0X303A", 21 | "0x1001" 22 | ] 23 | ], 24 | "mcu": "esp32s3", 25 | "variant": "esp32s3" 26 | }, 27 | "connectivity": [ 28 | "wifi", 29 | "bluetooth" 30 | ], 31 | "debug": { 32 | "openocd_target": "esp32s3.cfg" 33 | }, 34 | "frameworks": [ 35 | "arduino", 36 | "espidf" 37 | ], 38 | "name": "Espressif ESP32-S3-LCD-EV-Board-2(v1.1-v1.4)", 39 | "upload": { 40 | "flash_size": "16MB", 41 | "maximum_ram_size": 327680, 42 | "maximum_size": 16777216, 43 | "require_upload_port": true, 44 | "speed": 921600 45 | }, 46 | "url": "https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-lcd-ev-board/user_guide_v1.4.html", 47 | "vendor": "Espressif" 48 | } 49 | -------------------------------------------------------------------------------- /examples/platformio/lvgl_v8_port/boards/BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "arduino":{ 4 | "ldscript": "esp32s3_out.ld", 5 | "partitions": "default_16MB.csv", 6 | "memory_type": "qio_opi" 7 | }, 8 | "core": "esp32", 9 | "extra_flags": [ 10 | "-DBOARD_HAS_PSRAM", 11 | "-DARDUINO_ESP32S3_DEV", 12 | "-DARDUINO_USB_MODE=1", 13 | "-DARDUINO_USB_CDC_ON_BOOT=0" 14 | ], 15 | "f_cpu": "240000000L", 16 | "f_flash": "80000000L", 17 | "flash_mode": "qio", 18 | "hwids": [ 19 | [ 20 | "0X303A", 21 | "0x1001" 22 | ] 23 | ], 24 | "mcu": "esp32s3", 25 | "variant": "esp32s3" 26 | }, 27 | "connectivity": [ 28 | "wifi", 29 | "bluetooth" 30 | ], 31 | "debug": { 32 | "openocd_target": "esp32s3.cfg" 33 | }, 34 | "frameworks": [ 35 | "arduino", 36 | "espidf" 37 | ], 38 | "name": "Espressif ESP32-S3-LCD-EV-Board-2(v1.5)", 39 | "upload": { 40 | "flash_size": "16MB", 41 | "maximum_ram_size": 327680, 42 | "maximum_size": 16777216, 43 | "require_upload_port": true, 44 | "speed": 921600 45 | }, 46 | "url": "https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-lcd-ev-board/user_guide.html", 47 | "vendor": "Espressif" 48 | } 49 | -------------------------------------------------------------------------------- /examples/platformio/lvgl_v8_port/boards/BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "arduino":{ 4 | "ldscript": "esp32s3_out.ld", 5 | "partitions": "default_16MB.csv", 6 | "memory_type": "qio_opi" 7 | }, 8 | "core": "esp32", 9 | "extra_flags": [ 10 | "-DBOARD_HAS_PSRAM", 11 | "-DARDUINO_ESP32S3_DEV", 12 | "-DARDUINO_USB_MODE=1", 13 | "-DARDUINO_USB_CDC_ON_BOOT=0" 14 | ], 15 | "f_cpu": "240000000L", 16 | "f_flash": "80000000L", 17 | "flash_mode": "qio", 18 | "hwids": [ 19 | [ 20 | "0X303A", 21 | "0x1001" 22 | ] 23 | ], 24 | "mcu": "esp32s3", 25 | "variant": "esp32s3" 26 | }, 27 | "connectivity": [ 28 | "wifi", 29 | "bluetooth" 30 | ], 31 | "debug": { 32 | "openocd_target": "esp32s3.cfg" 33 | }, 34 | "frameworks": [ 35 | "arduino", 36 | "espidf" 37 | ], 38 | "name": "Espressif ESP32-S3-LCD-EV-Board(v1.5)", 39 | "upload": { 40 | "flash_size": "16MB", 41 | "maximum_ram_size": 327680, 42 | "maximum_size": 16777216, 43 | "require_upload_port": true, 44 | "speed": 921600 45 | }, 46 | "url": "https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-lcd-ev-board/user_guide.html", 47 | "vendor": "Espressif" 48 | } 49 | -------------------------------------------------------------------------------- /examples/platformio/lvgl_v8_port/boards/BOARD_ESPRESSIF_ESP32_S3_USB_OTG.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "arduino":{ 4 | "ldscript": "esp32s3_out.ld", 5 | "partitions": "default_8MB.csv" 6 | }, 7 | "core": "esp32", 8 | "extra_flags": [ 9 | "-DARDUINO_ESP32S3_DEV", 10 | "-DARDUINO_USB_MODE=1", 11 | "-DARDUINO_USB_CDC_ON_BOOT=0" 12 | ], 13 | "f_cpu": "240000000L", 14 | "f_flash": "80000000L", 15 | "flash_mode": "qio", 16 | "hwids": [ 17 | [ 18 | "0x303A", 19 | "0x1001" 20 | ] 21 | ], 22 | "mcu": "esp32s3", 23 | "variant": "esp32s3" 24 | }, 25 | "connectivity": [ 26 | "wifi", 27 | "bluetooth" 28 | ], 29 | "debug": { 30 | "default_tool": "esp-builtin", 31 | "onboard_tools": [ 32 | "esp-builtin" 33 | ], 34 | "openocd_target": "esp32s3.cfg" 35 | }, 36 | "frameworks": [ 37 | "arduino", 38 | "espidf" 39 | ], 40 | "name": "Espressif ESP32-S3-USB-OTG", 41 | "upload": { 42 | "flash_size": "8MB", 43 | "maximum_ram_size": 327680, 44 | "maximum_size": 8388608, 45 | "require_upload_port": true, 46 | "speed": 460800 47 | }, 48 | "url": "https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-usb-otg/index.html", 49 | "vendor": "Espressif" 50 | } 51 | -------------------------------------------------------------------------------- /idf_component.yml: -------------------------------------------------------------------------------- 1 | version: "1.0.3" 2 | description: ESP32_Display_Panel is a display driver and GUI porting library designed by Espressif specifically for ESP series SoCs (ESP32, ESP32-S3, ESP32-P4, etc.) 3 | url: https://github.com/esp-arduino-libs/ESP32_Display_Panel 4 | repository: https://github.com/esp-arduino-libs/ESP32_Display_Panel.git 5 | issues: https://github.com/esp-arduino-libs/ESP32_Display_Panel/issues 6 | dependencies: 7 | idf: ">=5.1" 8 | espressif/esp-lib-utils: 9 | version: "0.2.*" 10 | public: true 11 | espressif/esp32_io_expander: 12 | version: "1.*" 13 | public: true 14 | -------------------------------------------------------------------------------- /library.properties: -------------------------------------------------------------------------------- 1 | name=ESP32_Display_Panel 2 | version=1.0.3 3 | author=espressif 4 | maintainer=espressif 5 | sentence=ESP32_Display_Panel is a display driver and GUI porting library designed by Espressif specifically for ESP series SoCs (ESP32, ESP32-S3, ESP32-P4, etc.) 6 | paragraph=Currently supported board manufacturers: Espressif,M5Stack,Waveshare,Elecrow,Jingcai,Viewe. Currently supported drivers: Host,Bus,LCD,Touch,Backlight,IO expander. Currently supported Bus: I2C,SPI,QSPI,RGB,MIPI-DSI. 7 | category=Display 8 | architectures=esp32 9 | url=https://github.com/esp-arduino-libs/ESP32_Display_Panel 10 | includes=esp_display_panel.hpp 11 | depends=ESP32_IO_Expander (>=1.0.0 && <2.0.0), esp-lib-utils (>=0.1.0 && <0.2.0) 12 | -------------------------------------------------------------------------------- /micropython.cmake: -------------------------------------------------------------------------------- 1 | # This file is to be given as "make USER_C_MODULES=..." when building Micropython port 2 | 3 | add_library(usermod_esp_display_panel INTERFACE) 4 | 5 | # Find all source files in the `src` directory. 6 | set(SRC_DIR ${CMAKE_CURRENT_LIST_DIR}/src) 7 | file(GLOB_RECURSE SRCS_C ${SRC_DIR}/*.c) 8 | file(GLOB_RECURSE SRCS_CXX ${SRC_DIR}/*.cpp) 9 | 10 | # Find all source files in the `micropython` directory. 11 | set(MPY_DIR ${CMAKE_CURRENT_LIST_DIR}/mpy_support) 12 | file(GLOB_RECURSE MPY_C ${MPY_DIR}/*.c) 13 | file(GLOB_RECURSE MPY_CXX ${MPY_DIR}/*.cpp) 14 | 15 | # Add source files to the library. 16 | target_sources(usermod_esp_display_panel INTERFACE ${SRCS_C} ${SRCS_CXX} ${MPY_C} ${MPY_CXX}) 17 | 18 | # Add the current directory as an include directory. 19 | target_include_directories(usermod_esp_display_panel INTERFACE ${SRC_DIR} ${MPY_DIR}) 20 | 21 | # Add compile options. Since the target is not created by `idf_component_register()`, we need to add the `ESP_PLATFORM` define manually. 22 | target_compile_options(usermod_esp_display_panel 23 | INTERFACE 24 | -Wno-missing-field-initializers -DESP_PLATFORM $<$:-std=gnu++17> 25 | ) 26 | 27 | # Link INTERFACE library to the usermod target. 28 | target_link_libraries(usermod INTERFACE usermod_esp_display_panel) 29 | -------------------------------------------------------------------------------- /mpy_support/esp_panel_mp_board.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | #ifdef __cplusplus 9 | extern "C" { 10 | #endif 11 | 12 | #include "py/runtime.h" 13 | #include "py/obj.h" 14 | 15 | extern const mp_obj_type_t esp_panel_mp_board_type; 16 | 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | -------------------------------------------------------------------------------- /mpy_support/esp_panel_mp_module.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #include "py/runtime.h" 7 | #include "esp_panel_mp_board.h" 8 | 9 | // Define all attributes of the module. 10 | // Table entries are key/value pairs of the attribute name (a string) 11 | // and the MicroPython object reference. 12 | // All identifiers and strings are written as MP_QSTR_xxx and will be 13 | // optimized to word-sized integers by the build system (interned strings). 14 | static const mp_rom_map_elem_t module_globals_table[] = { 15 | { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_esp_panel) }, 16 | { MP_ROM_QSTR(MP_QSTR_Board), MP_ROM_PTR(&esp_panel_mp_board_type) }, 17 | }; 18 | static MP_DEFINE_CONST_DICT(module_globals, module_globals_table); 19 | 20 | // Define module object. 21 | const mp_obj_module_t esp_panel_mp_module = { 22 | .base = { &mp_type_module }, 23 | .globals = (mp_obj_dict_t *) &module_globals, 24 | }; 25 | 26 | // Register the module to make it available in Python. 27 | MP_REGISTER_MODULE(MP_QSTR_esp_panel, esp_panel_mp_module); 28 | -------------------------------------------------------------------------------- /mpy_support/esp_panel_mp_types.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | #ifdef __cplusplus 9 | extern "C" { 10 | #endif 11 | 12 | #include "py/obj.h" 13 | 14 | #define MP_DEFINE_CONST_FUN_OBJ_1_CXX(obj_name, fun_name) \ 15 | const mp_obj_fun_builtin_fixed_t obj_name = { .base = &mp_type_fun_builtin_1, .fun = {._1 = fun_name }} 16 | 17 | #define MP_DEFINE_CONST_FUN_OBJ_2_CXX(obj_name, fun_name) \ 18 | const mp_obj_fun_builtin_fixed_t obj_name = { .base = &mp_type_fun_builtin_2, .fun = {._2 = fun_name }} 19 | 20 | #ifdef __cplusplus 21 | } 22 | #endif 23 | -------------------------------------------------------------------------------- /src/ESP_Panel_Library.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #pragma once 8 | 9 | #warning "This file is Deprecated. Please use the `esp_display_panel.hpp` file instead." 10 | 11 | #include "esp_display_panel.hpp" 12 | -------------------------------------------------------------------------------- /src/board/Kconfig.board: -------------------------------------------------------------------------------- 1 | menu "Board" 2 | choice 3 | prompt "Select the default board type" 4 | default ESP_PANEL_BOARD_DEFAULT_USE_NONE 5 | 6 | config ESP_PANEL_BOARD_DEFAULT_USE_NONE 7 | bool "None" 8 | help 9 | Enable this option if not using a board. 10 | 11 | config ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED 12 | bool "Supported board" 13 | help 14 | Enable this option if using a supported board. 15 | 16 | config ESP_PANEL_BOARD_DEFAULT_USE_CUSTOM 17 | bool "Custom board" 18 | help 19 | Select this option if using a custom board. 20 | endchoice 21 | 22 | if ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED 23 | orsource "./supported/Kconfig.board_supported" 24 | endif 25 | 26 | if ESP_PANEL_BOARD_DEFAULT_USE_CUSTOM 27 | orsource "./custom/Kconfig.board_custom" 28 | endif 29 | endmenu 30 | -------------------------------------------------------------------------------- /src/board/custom/Kconfig.board_custom: -------------------------------------------------------------------------------- 1 | config ESP_PANEL_BOARD_NAME 2 | string "Board name (Manufacturer:Model)" 3 | default "Custom:Custom" 4 | help 5 | Board name. (format: "Manufacturer:Model") 6 | 7 | config ESP_PANEL_BOARD_WIDTH 8 | int "Panel width (horizontal, in pixels)" 9 | default 320 10 | range 1 10000 11 | 12 | config ESP_PANEL_BOARD_HEIGHT 13 | int "Panel height (vertical, in pixels)" 14 | default 240 15 | range 1 10000 16 | 17 | orsource "./Kconfig.board_custom.lcd" 18 | 19 | orsource "./Kconfig.board_custom.touch" 20 | 21 | orsource "./Kconfig.board_custom.backlight" 22 | 23 | orsource "./Kconfig.board_custom.expander" 24 | -------------------------------------------------------------------------------- /src/board/custom/esp_panel_board_kconfig_custom.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | // *INDENT-OFF* 9 | 10 | #ifndef ESP_PANEL_BOARD_NAME 11 | #ifdef CONFIG_ESP_PANEL_BOARD_NAME 12 | #define ESP_PANEL_BOARD_NAME CONFIG_ESP_PANEL_BOARD_NAME 13 | #else 14 | #error "Missing configuration: ESP_PANEL_BOARD_NAME" 15 | #endif 16 | #endif 17 | 18 | #ifndef ESP_PANEL_BOARD_WIDTH 19 | #ifdef CONFIG_ESP_PANEL_BOARD_WIDTH 20 | #define ESP_PANEL_BOARD_WIDTH CONFIG_ESP_PANEL_BOARD_WIDTH 21 | #else 22 | #error "Missing configuration: ESP_PANEL_BOARD_WIDTH" 23 | #endif 24 | #endif 25 | 26 | #ifndef ESP_PANEL_BOARD_HEIGHT 27 | #ifdef CONFIG_ESP_PANEL_BOARD_HEIGHT 28 | #define ESP_PANEL_BOARD_HEIGHT CONFIG_ESP_PANEL_BOARD_HEIGHT 29 | #else 30 | #error "Missing configuration: ESP_PANEL_BOARD_HEIGHT" 31 | #endif 32 | #endif 33 | 34 | #include "esp_panel_board_kconfig_custom_backlight.h" 35 | #include "esp_panel_board_kconfig_custom_expander.h" 36 | #include "esp_panel_board_kconfig_custom_lcd.h" 37 | #include "esp_panel_board_kconfig_custom_touch.h" 38 | 39 | // *INDENT-ON* 40 | -------------------------------------------------------------------------------- /src/board/esp_panel_board_conf_internal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #pragma once 8 | 9 | // *INDENT-OFF* 10 | 11 | #include "esp_panel_conf_internal.h" 12 | 13 | #ifndef ESP_PANEL_BOARD_FILE_SKIP 14 | /* If "esp_panel_board_*.h" are available from here, try to use them later */ 15 | #if __has_include("esp_panel_board_supported_conf.h") 16 | #ifndef ESP_PANEL_BOARD_INCLUDE_SUPPORTED_SIMPLE 17 | #define ESP_PANEL_BOARD_INCLUDE_SUPPORTED_SIMPLE 18 | #endif 19 | #elif __has_include("../../../esp_panel_board_supported_conf.h") 20 | #ifndef ESP_PANEL_BOARD_INCLUDE_SUPPORTED_OUTSIDE 21 | #define ESP_PANEL_BOARD_INCLUDE_SUPPORTED_OUTSIDE 22 | #endif 23 | #endif 24 | #ifndef ESP_PANEL_BOARD_USE_SUPPORTED_FILE 25 | #if defined(ESP_PANEL_BOARD_INCLUDE_SUPPORTED_SIMPLE) || defined(ESP_PANEL_BOARD_INCLUDE_SUPPORTED_OUTSIDE) 26 | #define ESP_PANEL_BOARD_USE_SUPPORTED_FILE 27 | #endif 28 | #endif 29 | 30 | #if __has_include("esp_panel_board_custom_conf.h") 31 | #ifndef ESP_PANEL_BOARD_INCLUDE_CUSTOM_SIMPLE 32 | #define ESP_PANEL_BOARD_INCLUDE_CUSTOM_SIMPLE 33 | #endif 34 | #elif __has_include("../../../esp_panel_board_custom_conf.h") 35 | #ifndef ESP_PANEL_BOARD_INCLUDE_OUTSIDE_CUSTOM 36 | #define ESP_PANEL_BOARD_INCLUDE_OUTSIDE_CUSTOM 37 | #endif 38 | #endif 39 | #ifndef ESP_PANEL_BOARD_USE_CUSTOM_FILE 40 | #if defined(ESP_PANEL_BOARD_INCLUDE_CUSTOM_SIMPLE) || defined(ESP_PANEL_BOARD_INCLUDE_OUTSIDE_CUSTOM) 41 | #define ESP_PANEL_BOARD_USE_CUSTOM_FILE 42 | #endif 43 | #endif 44 | #endif 45 | 46 | // *INDENT-ON* 47 | -------------------------------------------------------------------------------- /src/board/esp_panel_board_default_config.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #pragma once 8 | 9 | #include "board/esp_panel_board_config.hpp" 10 | 11 | extern const esp_panel::board::BoardConfig ESP_PANEL_BOARD_DEFAULT_CONFIG; 12 | -------------------------------------------------------------------------------- /src/board/supported/Kconfig.board_supported: -------------------------------------------------------------------------------- 1 | choice 2 | prompt "Select the manufacturer" 3 | default ESP_PANEL_BOARD_MANUFACTURER_ALL 4 | 5 | config ESP_PANEL_BOARD_MANUFACTURER_ALL 6 | bool "All" 7 | help 8 | Espressif, Elecrow, M5Stack, Shenzhen Jingcai Intelligent, Waveshare 9 | 10 | config ESP_PANEL_BOARD_MANUFACTURER_ESPRESSIF 11 | bool "Espressif" 12 | help 13 | https://www.espressif.com/en/products/devkits 14 | 15 | config ESP_PANEL_BOARD_MANUFACTURER_ELECROW 16 | bool "Elecrow" 17 | help 18 | https://www.elecrow.com 19 | 20 | config ESP_PANEL_BOARD_MANUFACTURER_M5STACK 21 | bool "M5Stack" 22 | help 23 | https://m5stack.com/ 24 | 25 | config ESP_PANEL_BOARD_MANUFACTURER_JINGCAI 26 | bool "Shenzhen Jingcai Intelligent" 27 | help 28 | https://www.displaysmodule.com/ 29 | 30 | config ESP_PANEL_BOARD_MANUFACTURER_WAVESHARE 31 | bool "Waveshare" 32 | help 33 | https://www.waveshare.com/ 34 | 35 | config ESP_PANEL_BOARD_MANUFACTURER_VIEWE 36 | bool "VIEWE" 37 | help 38 | https://viewedisplay.com/ 39 | endchoice 40 | 41 | choice 42 | prompt "Select a target board" 43 | 44 | if ESP_PANEL_BOARD_MANUFACTURER_ESPRESSIF || ESP_PANEL_BOARD_MANUFACTURER_ALL 45 | orsource "./espressif/Kconfig.espressif" 46 | endif 47 | 48 | if ESP_PANEL_BOARD_MANUFACTURER_ELECROW || ESP_PANEL_BOARD_MANUFACTURER_ALL 49 | orsource "./elecrow/Kconfig.elecrow" 50 | endif 51 | 52 | if ESP_PANEL_BOARD_MANUFACTURER_M5STACK || ESP_PANEL_BOARD_MANUFACTURER_ALL 53 | orsource "./m5stack/Kconfig.m5stack" 54 | endif 55 | 56 | if ESP_PANEL_BOARD_MANUFACTURER_JINGCAI || ESP_PANEL_BOARD_MANUFACTURER_ALL 57 | orsource "./jingcai/Kconfig.jingcai" 58 | endif 59 | 60 | if ESP_PANEL_BOARD_MANUFACTURER_WAVESHARE || ESP_PANEL_BOARD_MANUFACTURER_ALL 61 | orsource "./waveshare/Kconfig.waveshare" 62 | endif 63 | 64 | if ESP_PANEL_BOARD_MANUFACTURER_VIEWE || ESP_PANEL_BOARD_MANUFACTURER_ALL 65 | orsource "./viewe/Kconfig.viewe" 66 | endif 67 | endchoice 68 | -------------------------------------------------------------------------------- /src/board/supported/elecrow/Kconfig.elecrow: -------------------------------------------------------------------------------- 1 | config BOARD_ELECROW_CROWPANEL_7_0 2 | bool "ELECROW_CROWPANEL_7_0" 3 | help 4 | https://www.elecrow.com/esp32-display-7-inch-hmi-display-rgb-tft-lcd-touch-screen-support-lvgl.html 5 | -------------------------------------------------------------------------------- /src/board/supported/jingcai/Kconfig.jingcai: -------------------------------------------------------------------------------- 1 | config BOARD_JINGCAI_ESP32_4848S040C_I_Y_3 2 | bool "ESP32-4848S040C_I_Y_3" 3 | help 4 | https://www.displaysmodule.com/sale-41828962-experience-the-power-of-the-esp32-display-module-sku-esp32-4848s040c-i-y-3.html 5 | 6 | config BOARD_JINGCAI_JC8048W550C 7 | bool "JC8048W550C" 8 | help 9 | https://www.displaysmodule.com/sale-43987867-capacitive-touch-advanced-tft-hmi-display-module-jc8048w550-800-480-pixel-resolution-st7262-driver-c.html 10 | -------------------------------------------------------------------------------- /src/board/supported/m5stack/Kconfig.m5stack: -------------------------------------------------------------------------------- 1 | config BOARD_M5STACK_M5CORE2 2 | bool "M5STACK_M5CORE2" 3 | help 4 | https://docs.m5stack.com/en/core/core2 5 | 6 | config BOARD_M5STACK_M5CORES3 7 | bool "M5STACK_M5CORES3" 8 | help 9 | https://docs.m5stack.com/en/core/CoreS3 10 | 11 | config BOARD_M5STACK_M5DIAL 12 | bool "M5STACK_M5DIAL" 13 | help 14 | https://docs.m5stack.com/en/core/M5Dial 15 | -------------------------------------------------------------------------------- /src/board/supported/viewe/Kconfig.viewe: -------------------------------------------------------------------------------- 1 | config BOARD_VIEWE_UEDX24320024E_WB_A 2 | bool "UEDX24320024E-WB-A" 3 | help 4 | https://viewedisplay.com/product/esp32-2-4-inch-240x320-rgb-ips-tft-display-touch-screen-arduino-lvgl-wifi-ble-uart-smart-module/ 5 | 6 | config BOARD_VIEWE_UEDX24320028E_WB_A 7 | bool "UEDX24320028E-WB-A" 8 | help 9 | https://viewedisplay.com/product/esp32-2-8-inch-240x320-mcu-ips-tft-display-touch-screen-arduino-lvgl-wifi-ble-uart-smart-module/ 10 | 11 | config BOARD_VIEWE_UEDX24320035E_WB_A 12 | bool "UEDX24320035E-WB-A" 13 | help 14 | https://viewedisplay.com/product/esp32-3-5-inch-240x320-mcu-ips-tft-display-touch-screen-arduino-lvgl-wifi-ble-uart-smart-module/ 15 | 16 | config BOARD_VIEWE_UEDX32480035E_WB_A 17 | bool "UEDX32480035E-WB-A" 18 | help 19 | https://github.com/VIEWESMART/Product-Specification-and-Schematic/blob/main/ESP32/3.5inch/320480/UEDX32480035E-WB-A%20SPEC.pdf 20 | 21 | config BOARD_VIEWE_UEDX48270043E_WB_A 22 | bool "UEDX48270043E-WB-A" 23 | help 24 | https://github.com/VIEWESMART/Product-Specification-and-Schematic/blob/main/ESP32/4.3inch/Low-Resolution_480272/UEDX48270043E-WB-A%20SPEC.pdf 25 | 26 | config BOARD_VIEWE_UEDX48480040E_WB_A 27 | bool "UEDX48480040E-WB-A" 28 | help 29 | https://viewedisplay.com/product/esp32-4-inch-tft-display-touch-screen-arduino-lvgl/ 30 | 31 | config BOARD_VIEWE_UEDX80480043E_WB_A 32 | bool "UEDX80480043E-WB-A" 33 | help 34 | https://viewedisplay.com/product/esp32-4-3-inch-800x480-rgb-ips-tft-display-touch-screen-arduino-lvgl/ 35 | 36 | config BOARD_VIEWE_UEDX80480050E_WB_A 37 | bool "UEDX80480050E-WB-A" 38 | help 39 | https://viewedisplay.com/product/esp32-5-inch-800x480-rgb-ips-tft-display-touch-screen-arduino-lvgl/ 40 | 41 | config BOARD_VIEWE_UEDX80480050E_WB_A_2 42 | bool "UEDX80480050E-WB-A-2" 43 | help 44 | https://viewedisplay.com/product/esp32-5-inch-800x480-rgb-ips-tft-display-touch-screen-arduino-lvgl/ 45 | 46 | config BOARD_VIEWE_UEDX80480070E_WB_A 47 | bool "UEDX80480070E-WB-A" 48 | help 49 | https://viewedisplay.com/product/esp32-7-inch-800x480-rgb-ips-tft-display-touch-screen-arduino-lvgl-uart/ 50 | -------------------------------------------------------------------------------- /src/board/supported/waveshare/Kconfig.waveshare: -------------------------------------------------------------------------------- 1 | config BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85 2 | bool "ESP32_S3_TOUCH_LCD_1_85" 3 | help 4 | https://www.waveshare.com/esp32-s3-touch-lcd-1.85.htm 5 | 6 | config BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1 7 | bool "ESP32_S3_TOUCH_LCD_2_1" 8 | help 9 | https://www.waveshare.com/esp32-s3-touch-lcd-2.1.htm 10 | 11 | config BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3 12 | bool "ESP32_S3_TOUCH_LCD_4_3" 13 | help 14 | https://www.waveshare.com/esp32-s3-touch-lcd-4.3.htm 15 | 16 | config BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B 17 | bool "ESP32_S3_TOUCH_LCD_4_3_B" 18 | help 19 | https://www.waveshare.com/esp32-s3-touch-lcd-4.3B.htm 20 | 21 | config BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5 22 | bool "ESP32_S3_TOUCH_LCD_5" 23 | help 24 | https://www.waveshare.com/esp32-s3-touch-lcd-5.htm?sku=28117 25 | 26 | config BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5_B 27 | bool "ESP32_S3_TOUCH_LCD_5_B" 28 | help 29 | https://www.waveshare.com/esp32-s3-touch-lcd-5.htm?sku=28151 30 | config BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_7 31 | bool "ESP32_S3_TOUCH_LCD_7" 32 | help 33 | https://www.waveshare.com/esp32-s3-touch-lcd-7.htm 34 | 35 | config BOARD_WAVESHARE_ESP32_P4_NANO 36 | bool "ESP32_P4_NANO" 37 | help 38 | https://www.waveshare.com/esp32-p4-nano.htm 39 | -------------------------------------------------------------------------------- /src/drivers/Kconfig.drivers: -------------------------------------------------------------------------------- 1 | menu "Drivers" 2 | orsource "./bus/Kconfig.bus" 3 | 4 | orsource "./lcd/Kconfig.lcd" 5 | 6 | orsource "./touch/Kconfig.touch" 7 | 8 | orsource "./backlight/Kconfig.backlight" 9 | 10 | orsource "./io_expander/Kconfig.expander" 11 | endmenu 12 | -------------------------------------------------------------------------------- /src/drivers/backlight/Kconfig.backlight: -------------------------------------------------------------------------------- 1 | menu "Backlight" 2 | menu "Enable used drivers in factory" 3 | config ESP_PANEL_DRIVERS_BACKLIGHT_USE_ALL 4 | bool "Use all" 5 | default n 6 | 7 | if !ESP_PANEL_DRIVERS_BACKLIGHT_USE_ALL 8 | config ESP_PANEL_DRIVERS_BACKLIGHT_USE_SWITCH_GPIO 9 | bool "Use switch (GPIO)" 10 | default n 11 | 12 | config ESP_PANEL_DRIVERS_BACKLIGHT_USE_SWITCH_EXPANDER 13 | bool "Use switch (Expander)" 14 | default n 15 | 16 | config ESP_PANEL_DRIVERS_BACKLIGHT_USE_PWM_LEDC 17 | bool "Use PWM (LEDC)" 18 | default n 19 | 20 | config ESP_PANEL_DRIVERS_BACKLIGHT_USE_CUSTOM 21 | bool "Use custom function" 22 | default n 23 | endif 24 | endmenu 25 | 26 | config ESP_PANEL_DRIVERS_BACKLIGHT_COMPILE_UNUSED_DRIVERS 27 | bool "Compile unused drivers" 28 | default y 29 | help 30 | When disabled, code for unused drivers will be excluded to speed up compilation. 31 | Make sure the driver is not used when this option is disabled. 32 | endmenu 33 | -------------------------------------------------------------------------------- /src/drivers/backlight/esp_panel_backlight.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "utils/esp_panel_utils_log.h" 8 | #include "esp_panel_backlight_factory.hpp" 9 | 10 | namespace esp_panel::drivers { 11 | 12 | bool Backlight::on() 13 | { 14 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 15 | 16 | ESP_UTILS_CHECK_FALSE_RETURN(isOverState(State::BEGIN), false, "Not begun"); 17 | 18 | ESP_UTILS_CHECK_FALSE_RETURN(setBrightness(100), false, "Turn on failed"); 19 | 20 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 21 | 22 | return true; 23 | } 24 | 25 | bool Backlight::off() 26 | { 27 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 28 | 29 | ESP_UTILS_CHECK_FALSE_RETURN(isOverState(State::BEGIN), false, "Not begun"); 30 | 31 | ESP_UTILS_CHECK_FALSE_RETURN(setBrightness(0), false, "Turn off failed"); 32 | 33 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 34 | 35 | return true; 36 | } 37 | 38 | } // namespace esp_panel::drivers 39 | -------------------------------------------------------------------------------- /src/drivers/bus/Kconfig.bus: -------------------------------------------------------------------------------- 1 | menu "Bus" 2 | menu "Enable used drivers in factory" 3 | config ESP_PANEL_DRIVERS_BUS_USE_ALL 4 | bool "Use all" 5 | default n 6 | 7 | if !ESP_PANEL_DRIVERS_BUS_USE_ALL 8 | config ESP_PANEL_DRIVERS_BUS_USE_SPI 9 | bool "Use SPI" 10 | default n 11 | 12 | config ESP_PANEL_DRIVERS_BUS_USE_QSPI 13 | bool "Use QSPI" 14 | default n 15 | 16 | config ESP_PANEL_DRIVERS_BUS_USE_RGB 17 | bool "Use RGB" 18 | default n 19 | 20 | config ESP_PANEL_DRIVERS_BUS_USE_I2C 21 | bool "Use I2C" 22 | default n 23 | 24 | config ESP_PANEL_DRIVERS_BUS_USE_MIPI_DSI 25 | bool "Use MIPI DSI" 26 | default n 27 | endif 28 | endmenu 29 | 30 | config ESP_PANEL_DRIVERS_BUS_COMPILE_UNUSED_DRIVERS 31 | bool "Compile unused drivers" 32 | default y 33 | help 34 | When disabled, code for unused drivers will be excluded to speed up compilation. 35 | Make sure the driver is not used when this option is disabled. 36 | endmenu 37 | -------------------------------------------------------------------------------- /src/drivers/host/esp_panel_host_dsi.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #pragma once 8 | 9 | #include "soc/soc_caps.h" 10 | #if SOC_MIPI_DSI_SUPPORTED 11 | #include "hal/mipi_dsi_ll.h" 12 | #include "esp_lcd_mipi_dsi.h" 13 | #include "esp_panel_host.hpp" 14 | 15 | namespace esp_panel::drivers { 16 | 17 | /** 18 | * @brief MIPI-DSI bus host class 19 | */ 20 | class HostDSI : public Host { 21 | public: 22 | /* Add friend class to allow them to access the private member */ 23 | template 24 | friend struct esp_utils::GeneralMemoryAllocator; // To access `HostDSI()` 25 | template 26 | friend class Host; // To access `del()`, `calibrateConfig()` 27 | 28 | /** 29 | * @brief Destroy the host 30 | */ 31 | ~HostDSI() override; 32 | 33 | /** 34 | * @brief Startup the host 35 | * 36 | * @return `true` if successful, `false` otherwise 37 | */ 38 | bool begin() override; 39 | 40 | private: 41 | /** 42 | * @brief Private constructor to prevent direct instantiation 43 | * 44 | * @param[in] id Host ID 45 | * @param[in] config Host configuration 46 | */ 47 | HostDSI(int id, const esp_lcd_dsi_bus_config_t &config): 48 | Host(id, config) {} 49 | 50 | /** 51 | * @brief Calibrate configuration when host already exists 52 | * 53 | * @param[in] config New configuration 54 | * @return `true` if successful, `false` otherwise 55 | */ 56 | bool calibrateConfig(const esp_lcd_dsi_bus_config_t &config) override; 57 | }; 58 | 59 | } // namespace esp_panel::drivers 60 | 61 | #endif // SOC_MIPI_DSI_SUPPORTED 62 | -------------------------------------------------------------------------------- /src/drivers/host/esp_panel_host_i2c.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #pragma once 8 | 9 | #include "driver/i2c.h" 10 | #include "esp_panel_host.hpp" 11 | 12 | namespace esp_panel::drivers { 13 | 14 | /** 15 | * @brief I2C bus host class 16 | */ 17 | class HostI2C : public Host(I2C_NUM_MAX)> { 18 | public: 19 | /* Add friend class to allow them to access the private member */ 20 | template 21 | friend struct esp_utils::GeneralMemoryAllocator; // To access `HostI2C()` 22 | template 23 | friend class Host; // To access `del()`, `calibrateConfig()` 24 | 25 | /** 26 | * @brief Destroy the host 27 | */ 28 | ~HostI2C() override; 29 | 30 | /** 31 | * @brief Startup the host 32 | * 33 | * @return `true` if successful, `false` otherwise 34 | */ 35 | bool begin() override; 36 | 37 | private: 38 | /** 39 | * @brief Private constructor to prevent direct instantiation 40 | * 41 | * @param[in] id Host ID 42 | * @param[in] config Host configuration 43 | */ 44 | HostI2C(int id, const i2c_config_t &config): 45 | Host(I2C_NUM_MAX)>(id, config) {} 46 | 47 | /** 48 | * @brief Calibrate configuration when host already exists 49 | * 50 | * @param[in] config New configuration 51 | * @return `true` if successful, `false` otherwise 52 | */ 53 | bool calibrateConfig(const i2c_config_t &config) override; 54 | }; 55 | 56 | } // namespace esp_panel::drivers 57 | -------------------------------------------------------------------------------- /src/drivers/io_expander/Kconfig.expander: -------------------------------------------------------------------------------- 1 | menu "IO Expander" 2 | menu "Enable used drivers in factory" 3 | config ESP_PANEL_DRIVERS_EXPANDER_USE_ALL 4 | bool "Use all" 5 | default n 6 | 7 | if !ESP_PANEL_DRIVERS_EXPANDER_USE_ALL 8 | config ESP_PANEL_DRIVERS_EXPANDER_USE_CH422G 9 | bool "Use CH422G" 10 | default n 11 | 12 | config ESP_PANEL_DRIVERS_EXPANDER_USE_HT8574 13 | bool "Use HT8574" 14 | default n 15 | 16 | config ESP_PANEL_DRIVERS_EXPANDER_USE_TCA95XX_8BIT 17 | bool "Use TCA95XX (8-bit)" 18 | default n 19 | 20 | config ESP_PANEL_DRIVERS_EXPANDER_USE_TCA95XX_16BIT 21 | bool "Use TCA95XX (16-bit)" 22 | default n 23 | endif 24 | endmenu 25 | endmenu 26 | -------------------------------------------------------------------------------- /src/drivers/io_expander/esp_panel_io_expander_factory.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "utils/esp_panel_utils_log.h" 8 | #include "esp_io_expander.hpp" 9 | #include "esp_panel_io_expander_conf_internal.h" 10 | #include "esp_panel_io_expander_adapter.hpp" 11 | #include "esp_panel_io_expander_factory.hpp" 12 | 13 | namespace esp_panel::drivers { 14 | 15 | #define DEVICE_CREATOR(chip) \ 16 | [](const IO_Expander::Config &config) -> std::shared_ptr { \ 17 | std::shared_ptr device = nullptr; \ 18 | ESP_UTILS_CHECK_EXCEPTION_RETURN( \ 19 | (device = utils::make_shared>( \ 20 | IO_Expander::BasicAttributes{#chip}, config \ 21 | )), nullptr, "Create " #chip " failed" \ 22 | ); \ 23 | return device; \ 24 | } 25 | #define MAP_ITEM(chip) \ 26 | {#chip, DEVICE_CREATOR(chip)} 27 | 28 | const utils::unordered_map 29 | IO_ExpanderFactory::_name_function_map = { 30 | #if ESP_PANEL_DRIVERS_EXPANDER_USE_CH422G 31 | MAP_ITEM(CH422G), 32 | #endif 33 | #if ESP_PANEL_DRIVERS_EXPANDER_USE_HT8574 34 | MAP_ITEM(HT8574), 35 | #endif 36 | #if ESP_PANEL_DRIVERS_EXPANDER_USE_TCA95XX_8BIT 37 | MAP_ITEM(TCA95XX_8BIT), 38 | #endif 39 | #if ESP_PANEL_DRIVERS_EXPANDER_USE_TCA95XX_16BIT 40 | MAP_ITEM(TCA95XX_16BIT), 41 | #endif 42 | }; 43 | 44 | std::shared_ptr IO_ExpanderFactory::create(utils::string name, const IO_Expander::Config &config) 45 | { 46 | ESP_UTILS_LOGD("Param: name(%s), config(@%p)", name.c_str(), &config); 47 | 48 | auto it = _name_function_map.find(name); 49 | ESP_UTILS_CHECK_FALSE_RETURN(it != _name_function_map.end(), nullptr, "Unknown controller: %s", name.c_str()); 50 | 51 | std::shared_ptr device = it->second(config); 52 | ESP_UTILS_CHECK_NULL_RETURN(device, nullptr, "Create device failed"); 53 | 54 | return device; 55 | } 56 | 57 | } // namespace esp_panel::drivers 58 | -------------------------------------------------------------------------------- /src/drivers/io_expander/esp_panel_io_expander_factory.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | #include 9 | #include 10 | #include 11 | #include "utils/esp_panel_utils_cxx.hpp" 12 | #include "esp_panel_io_expander.hpp" 13 | #include "esp_panel_io_expander_conf_internal.h" 14 | 15 | namespace esp_panel::drivers { 16 | 17 | /** 18 | * @brief Factory class for creating IO expander device instances 19 | */ 20 | class IO_ExpanderFactory { 21 | public: 22 | /** 23 | * @brief Function pointer type for IO expander device constructors 24 | * 25 | * @param[in] config IO expander device configuration 26 | * @return Shared pointer to the created IO expander device 27 | */ 28 | using FunctionDeviceConstructor = std::shared_ptr (*)(const IO_Expander::Config &config); 29 | 30 | /** 31 | * @brief Create a new IO expander device instance 32 | * 33 | * @param[in] name Name of the IO expander device to create 34 | * @param[in] config Configuration for the IO expander device 35 | * @return Shared pointer to the created IO expander device if successful, nullptr otherwise 36 | */ 37 | static std::shared_ptr create(utils::string name, const IO_Expander::Config &config); 38 | 39 | private: 40 | /** 41 | * @brief Map of IO expander device names to their constructor functions 42 | */ 43 | static const utils::unordered_map _name_function_map; 44 | }; 45 | 46 | } // namespace esp_panel::drivers 47 | -------------------------------------------------------------------------------- /src/drivers/lcd/port/esp_lcd_st7701.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "../esp_panel_lcd_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_LCD_ENABLE_ST7701 9 | 10 | #include "soc/soc_caps.h" 11 | #include "esp_check.h" 12 | #include "esp_lcd_types.h" 13 | 14 | #include "esp_lcd_st7701_interface.h" 15 | #include "esp_lcd_st7701.h" 16 | 17 | #include "utils/esp_panel_utils_log.h" 18 | #include "esp_utils_helpers.h" 19 | #include "esp_panel_lcd_vendor_types.h" 20 | 21 | static const char *TAG = "st7701"; 22 | 23 | esp_err_t esp_lcd_new_panel_st7701(const esp_lcd_panel_io_handle_t io, const esp_lcd_panel_dev_config_t *panel_dev_config, 24 | esp_lcd_panel_handle_t *ret_panel) 25 | { 26 | ESP_LOGI(TAG, "version: %d.%d.%d", ESP_LCD_ST7701_VER_MAJOR, ESP_LCD_ST7701_VER_MINOR, ESP_LCD_ST7701_VER_PATCH); 27 | ESP_RETURN_ON_FALSE(panel_dev_config && ret_panel, ESP_ERR_INVALID_ARG, TAG, "Invalid arguments"); 28 | esp_panel_lcd_vendor_config_t *vendor_config = (esp_panel_lcd_vendor_config_t *)panel_dev_config->vendor_config; 29 | ESP_RETURN_ON_FALSE(vendor_config, ESP_ERR_INVALID_ARG, TAG, "`vendor_config` is necessary"); 30 | 31 | esp_err_t ret = ESP_ERR_NOT_SUPPORTED; 32 | 33 | #if SOC_LCD_RGB_SUPPORTED 34 | if (!vendor_config->flags.use_mipi_interface) { 35 | ret = esp_lcd_new_panel_st7701_rgb(io, panel_dev_config, ret_panel); 36 | } 37 | #endif 38 | 39 | #if SOC_MIPI_DSI_SUPPORTED 40 | if (vendor_config->flags.use_mipi_interface) { 41 | ret = esp_lcd_new_panel_st7701_mipi(io, panel_dev_config, ret_panel); 42 | } 43 | #endif 44 | 45 | return ret; 46 | } 47 | 48 | #endif // ESP_PANEL_DRIVERS_LCD_ENABLE_ST7701 49 | -------------------------------------------------------------------------------- /src/drivers/lcd/port/esp_lcd_st7701_interface.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | #include "esp_err.h" 9 | #include "esp_lcd_types.h" 10 | #include "esp_lcd_panel_vendor.h" 11 | #include "soc/soc_caps.h" 12 | 13 | #ifdef __cplusplus 14 | extern "C" { 15 | #endif 16 | 17 | #define ST7701_CMD_SDIR (0xC7) 18 | #define ST7701_CMD_SS_BIT (1 << 2) 19 | 20 | #define ST7701_CMD_CND2BKxSEL (0xFF) 21 | #define ST7701_CMD_BKxSEL_BYTE0 (0x77) 22 | #define ST7701_CMD_BKxSEL_BYTE1 (0x01) 23 | #define ST7701_CMD_BKxSEL_BYTE2 (0x00) 24 | #define ST7701_CMD_BKxSEL_BYTE3 (0x00) 25 | #define ST7701_CMD_CN2_BIT (1 << 4) 26 | #define ST7701_CMD_BKxSEL_BK0 (0x00) 27 | 28 | #if SOC_LCD_RGB_SUPPORTED 29 | /** 30 | * @brief Initialize ST7701 LCD panel with RGB interface 31 | * 32 | * @param[in] io LCD panel IO handle 33 | * @param[in] panel_dev_config LCD panel device configuration 34 | * @param[out] ret_panel LCD panel handle 35 | * @return 36 | * - ESP_OK: Success 37 | * - Otherwise: Fail 38 | */ 39 | esp_err_t esp_lcd_new_panel_st7701_rgb(const esp_lcd_panel_io_handle_t io, const esp_lcd_panel_dev_config_t *panel_dev_config, esp_lcd_panel_handle_t *ret_panel); 40 | #endif 41 | 42 | #if SOC_MIPI_DSI_SUPPORTED 43 | /** 44 | * @brief Initialize ST7701 LCD panel with MIPI interface 45 | * 46 | * @param[in] io LCD panel IO handle 47 | * @param[in] panel_dev_config LCD panel device configuration 48 | * @param[out] ret_panel LCD panel handle 49 | * @return 50 | * - ESP_OK: Success 51 | * - Otherwise: Fail 52 | */ 53 | esp_err_t esp_lcd_new_panel_st7701_mipi(const esp_lcd_panel_io_handle_t io, const esp_lcd_panel_dev_config_t *panel_dev_config, 54 | esp_lcd_panel_handle_t *ret_panel); 55 | #endif 56 | 57 | #ifdef __cplusplus 58 | } 59 | #endif 60 | -------------------------------------------------------------------------------- /src/drivers/lcd/port/esp_lcd_st7796.c: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "../esp_panel_lcd_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_LCD_ENABLE_ST7796 9 | 10 | #include "soc/soc_caps.h" 11 | #include "esp_check.h" 12 | #include "esp_lcd_types.h" 13 | 14 | #include "esp_lcd_st7796.h" 15 | #include "esp_lcd_st7796_interface.h" 16 | 17 | #include "utils/esp_panel_utils_log.h" 18 | #include "esp_utils_helpers.h" 19 | #include "esp_panel_lcd_vendor_types.h" 20 | 21 | static const char *TAG = "st7796"; 22 | 23 | esp_err_t esp_lcd_new_panel_st7796(const esp_lcd_panel_io_handle_t io, const esp_lcd_panel_dev_config_t *panel_dev_config, 24 | esp_lcd_panel_handle_t *ret_panel) 25 | { 26 | ESP_LOGI(TAG, "version: %d.%d.%d", ESP_LCD_ST7796_VER_MAJOR, ESP_LCD_ST7796_VER_MINOR, ESP_LCD_ST7796_VER_PATCH); 27 | ESP_RETURN_ON_FALSE(panel_dev_config && ret_panel, ESP_ERR_INVALID_ARG, TAG, "Invalid arguments"); 28 | esp_panel_lcd_vendor_config_t *vendor_config = (esp_panel_lcd_vendor_config_t *)panel_dev_config->vendor_config; 29 | 30 | esp_err_t ret = ESP_ERR_NOT_SUPPORTED; 31 | 32 | if (vendor_config && vendor_config->flags.use_mipi_interface) { 33 | #if SOC_MIPI_DSI_SUPPORTED 34 | ret = esp_lcd_new_panel_st7796_mipi(io, panel_dev_config, ret_panel); 35 | #else 36 | ESP_LOGE(TAG, "The chip does not support MIPI-DSI interface"); 37 | #endif 38 | } else { 39 | ret = esp_lcd_new_panel_st7796_general(io, panel_dev_config, ret_panel); 40 | } 41 | 42 | return ret; 43 | } 44 | 45 | #endif // ESP_PANEL_DRIVERS_LCD_ENABLE_ST7796 46 | -------------------------------------------------------------------------------- /src/drivers/lcd/port/esp_lcd_st7796_interface.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | #include "esp_err.h" 9 | #include "esp_lcd_types.h" 10 | #include "esp_lcd_panel_vendor.h" 11 | #include "soc/soc_caps.h" 12 | 13 | #ifdef __cplusplus 14 | extern "C" { 15 | #endif 16 | /** 17 | * @brief Initialize ST7796 LCD panel with SPI/I80 interface 18 | * 19 | * @param[in] io LCD panel IO handle 20 | * @param[in] panel_dev_config LCD panel device configuration 21 | * @param[out] ret_panel LCD panel handle 22 | * @return 23 | * - ESP_OK: Success 24 | * - Otherwise: Fail 25 | */ 26 | esp_err_t esp_lcd_new_panel_st7796_general(const esp_lcd_panel_io_handle_t io, const esp_lcd_panel_dev_config_t *panel_dev_config, esp_lcd_panel_handle_t *ret_panel); 27 | 28 | #if SOC_MIPI_DSI_SUPPORTED 29 | /** 30 | * @brief Initialize ST7796 LCD panel with MIPI interface 31 | * 32 | * @param[in] io LCD panel IO handle 33 | * @param[in] panel_dev_config LCD panel device configuration 34 | * @param[out] ret_panel LCD panel handle 35 | * @return 36 | * - ESP_OK: Success 37 | * - Otherwise: Fail 38 | */ 39 | esp_err_t esp_lcd_new_panel_st7796_mipi(const esp_lcd_panel_io_handle_t io, const esp_lcd_panel_dev_config_t *panel_dev_config, 40 | esp_lcd_panel_handle_t *ret_panel); 41 | #endif 42 | 43 | #ifdef __cplusplus 44 | } 45 | #endif 46 | -------------------------------------------------------------------------------- /src/drivers/touch/esp_panel_touch_axs15231b.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "esp_panel_touch_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_TOUCH_ENABLE_AXS15231B 9 | 10 | #include "utils/esp_panel_utils_log.h" 11 | #include "esp_panel_touch_axs15231b.hpp" 12 | 13 | namespace esp_panel::drivers { 14 | 15 | TouchAXS15231B::~TouchAXS15231B() 16 | { 17 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 18 | 19 | ESP_UTILS_CHECK_FALSE_EXIT(del(), "Delete failed"); 20 | 21 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 22 | } 23 | 24 | bool TouchAXS15231B::begin() 25 | { 26 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 27 | 28 | ESP_UTILS_CHECK_FALSE_RETURN(!isOverState(State::BEGIN), false, "Already begun"); 29 | 30 | // Initialize the touch if not initialized 31 | if (!isOverState(State::INIT)) { 32 | ESP_UTILS_CHECK_FALSE_RETURN(init(), false, "Init failed"); 33 | } 34 | 35 | // Create touch panel 36 | ESP_UTILS_CHECK_ERROR_RETURN( 37 | esp_lcd_touch_new_i2c_axs15231b( 38 | getBus()->getControlPanelHandle(), getConfig().getDeviceFullConfig(), &touch_panel 39 | ), false, "Create touch panel failed" 40 | ); 41 | ESP_UTILS_LOGD("Create touch panel(@%p)", touch_panel); 42 | 43 | setState(State::BEGIN); 44 | 45 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 46 | 47 | return true; 48 | } 49 | 50 | } // namespace esp_panel::drivers 51 | 52 | #endif // ESP_PANEL_DRIVERS_TOUCH_ENABLE_AXS15231B 53 | -------------------------------------------------------------------------------- /src/drivers/touch/esp_panel_touch_chsc6540.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "esp_panel_touch_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_TOUCH_ENABLE_CHSC6540 9 | 10 | #include "utils/esp_panel_utils_log.h" 11 | #include "esp_panel_touch_chsc6540.hpp" 12 | 13 | namespace esp_panel::drivers { 14 | 15 | TouchCHSC6540::~TouchCHSC6540() 16 | { 17 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 18 | 19 | ESP_UTILS_CHECK_FALSE_EXIT(del(), "Delete failed"); 20 | 21 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 22 | } 23 | 24 | bool TouchCHSC6540::begin() 25 | { 26 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 27 | 28 | ESP_UTILS_CHECK_FALSE_RETURN(!isOverState(State::BEGIN), false, "Already begun"); 29 | 30 | // Initialize the touch if not initialized 31 | if (!isOverState(State::INIT)) { 32 | ESP_UTILS_CHECK_FALSE_RETURN(init(), false, "Init failed"); 33 | } 34 | 35 | // Create touch panel 36 | ESP_UTILS_CHECK_ERROR_RETURN( 37 | esp_lcd_touch_new_i2c_chsc6540( 38 | getBus()->getControlPanelHandle(), getConfig().getDeviceFullConfig(), &touch_panel 39 | ), false, "Create touch panel failed" 40 | ); 41 | ESP_UTILS_LOGD("Create touch panel(@%p)", touch_panel); 42 | 43 | setState(State::BEGIN); 44 | 45 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 46 | 47 | return true; 48 | } 49 | 50 | } // namespace esp_panel::drivers 51 | 52 | #endif // ESP_PANEL_DRIVERS_TOUCH_ENABLE_CHSC6540 53 | -------------------------------------------------------------------------------- /src/drivers/touch/esp_panel_touch_cst816s.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "esp_panel_touch_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_TOUCH_ENABLE_CST816S 9 | 10 | #include "utils/esp_panel_utils_log.h" 11 | #include "esp_panel_touch_cst816s.hpp" 12 | 13 | namespace esp_panel::drivers { 14 | 15 | TouchCST816S::~TouchCST816S() 16 | { 17 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 18 | 19 | ESP_UTILS_CHECK_FALSE_EXIT(del(), "Delete failed"); 20 | 21 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 22 | } 23 | 24 | bool TouchCST816S::begin() 25 | { 26 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 27 | 28 | ESP_UTILS_CHECK_FALSE_RETURN(!isOverState(State::BEGIN), false, "Already begun"); 29 | 30 | // Initialize the touch if not initialized 31 | if (!isOverState(State::INIT)) { 32 | ESP_UTILS_CHECK_FALSE_RETURN(init(), false, "Init failed"); 33 | } 34 | 35 | // Create touch panel 36 | ESP_UTILS_CHECK_ERROR_RETURN( 37 | esp_lcd_touch_new_i2c_cst816s( 38 | getBus()->getControlPanelHandle(), getConfig().getDeviceFullConfig(), &touch_panel 39 | ), false, "Create touch panel failed" 40 | ); 41 | ESP_UTILS_LOGD("Create touch panel(@%p)", touch_panel); 42 | 43 | setState(State::BEGIN); 44 | 45 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 46 | 47 | return true; 48 | } 49 | 50 | } // namespace esp_panel::drivers 51 | 52 | #endif // ESP_PANEL_DRIVERS_TOUCH_ENABLE_CST816S 53 | -------------------------------------------------------------------------------- /src/drivers/touch/esp_panel_touch_ft5x06.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "esp_panel_touch_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_TOUCH_ENABLE_FT5x06 9 | 10 | #include "utils/esp_panel_utils_log.h" 11 | #include "esp_panel_touch_ft5x06.hpp" 12 | 13 | namespace esp_panel::drivers { 14 | 15 | TouchFT5x06::~TouchFT5x06() 16 | { 17 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 18 | 19 | ESP_UTILS_CHECK_FALSE_EXIT(del(), "Delete failed"); 20 | 21 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 22 | } 23 | 24 | bool TouchFT5x06::begin() 25 | { 26 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 27 | 28 | ESP_UTILS_CHECK_FALSE_RETURN(!isOverState(State::BEGIN), false, "Already begun"); 29 | 30 | // Initialize the touch if not initialized 31 | if (!isOverState(State::INIT)) { 32 | ESP_UTILS_CHECK_FALSE_RETURN(init(), false, "Init failed"); 33 | } 34 | 35 | // Create touch panel 36 | ESP_UTILS_CHECK_ERROR_RETURN( 37 | esp_lcd_touch_new_i2c_ft5x06( 38 | getBus()->getControlPanelHandle(), getConfig().getDeviceFullConfig(), &touch_panel 39 | ), false, "Create touch panel failed" 40 | ); 41 | ESP_UTILS_LOGD("Create touch panel(@%p)", touch_panel); 42 | 43 | setState(State::BEGIN); 44 | 45 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 46 | 47 | return true; 48 | } 49 | 50 | } // namespace esp_panel::drivers 51 | 52 | #endif // ESP_PANEL_DRIVERS_TOUCH_ENABLE_FT5x06 53 | -------------------------------------------------------------------------------- /src/drivers/touch/esp_panel_touch_gt1151.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "esp_panel_touch_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_TOUCH_ENABLE_GT1151 9 | 10 | #include "utils/esp_panel_utils_log.h" 11 | #include "drivers/bus/esp_panel_bus_i2c.hpp" 12 | #include "esp_panel_touch_gt1151.hpp" 13 | 14 | namespace esp_panel::drivers { 15 | 16 | TouchGT1151::~TouchGT1151() 17 | { 18 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 19 | 20 | ESP_UTILS_CHECK_FALSE_EXIT(del(), "Delete failed"); 21 | 22 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 23 | } 24 | 25 | bool TouchGT1151::begin() 26 | { 27 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 28 | 29 | ESP_UTILS_CHECK_FALSE_RETURN(!isOverState(State::BEGIN), false, "Already begun"); 30 | 31 | // Initialize the touch if not initialized 32 | if (!isOverState(State::INIT)) { 33 | ESP_UTILS_CHECK_FALSE_RETURN(init(), false, "Init failed"); 34 | } 35 | 36 | // Create touch panel 37 | ESP_UTILS_CHECK_ERROR_RETURN( 38 | esp_lcd_touch_new_i2c_gt1151( 39 | getBus()->getControlPanelHandle(), getConfig().getDeviceFullConfig(), &touch_panel 40 | ), false, "Create touch panel failed" 41 | ); 42 | ESP_UTILS_LOGD("Create touch panel(@%p)", touch_panel); 43 | 44 | setState(State::BEGIN); 45 | 46 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 47 | 48 | return true; 49 | } 50 | 51 | } // namespace esp_panel::drivers 52 | 53 | #endif // ESP_PANEL_DRIVERS_TOUCH_ENABLE_GT1151 54 | -------------------------------------------------------------------------------- /src/drivers/touch/esp_panel_touch_gt911.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "esp_panel_touch_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_TOUCH_ENABLE_GT911 9 | 10 | #include "utils/esp_panel_utils_log.h" 11 | #include "drivers/bus/esp_panel_bus_i2c.hpp" 12 | #include "esp_panel_touch_gt911.hpp" 13 | 14 | namespace esp_panel::drivers { 15 | 16 | TouchGT911::~TouchGT911() 17 | { 18 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 19 | 20 | ESP_UTILS_CHECK_FALSE_EXIT(del(), "Delete failed"); 21 | 22 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 23 | } 24 | 25 | bool TouchGT911::begin() 26 | { 27 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 28 | 29 | ESP_UTILS_CHECK_FALSE_RETURN(!isOverState(State::BEGIN), false, "Already begun"); 30 | 31 | // Initialize the touch if not initialized 32 | if (!isOverState(State::INIT)) { 33 | ESP_UTILS_CHECK_FALSE_RETURN(init(), false, "Init failed"); 34 | } 35 | 36 | // Since GT911 has two I2C addresses, we can decide which one to use 37 | auto bus = static_cast(getBus()); 38 | esp_lcd_touch_io_gt911_config_t tp_gt911_config = { 39 | .dev_addr = bus->getI2cAddress(), 40 | }; 41 | setDriverData(&tp_gt911_config); 42 | 43 | // Create touch panel 44 | ESP_UTILS_CHECK_ERROR_RETURN( 45 | esp_lcd_touch_new_i2c_gt911(bus->getControlPanelHandle(), getConfig().getDeviceFullConfig(), &touch_panel), 46 | false, "Create touch panel failed" 47 | ); 48 | ESP_UTILS_LOGD("Create touch panel(@%p)", touch_panel); 49 | 50 | setState(State::BEGIN); 51 | 52 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 53 | 54 | return true; 55 | } 56 | 57 | } // namespace esp_panel::drivers 58 | 59 | #endif // ESP_PANEL_DRIVERS_TOUCH_ENABLE_GT911 60 | -------------------------------------------------------------------------------- /src/drivers/touch/esp_panel_touch_spd2010.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "esp_panel_touch_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_TOUCH_ENABLE_SPD2010 9 | 10 | #include "utils/esp_panel_utils_log.h" 11 | #include "esp_panel_touch_spd2010.hpp" 12 | 13 | namespace esp_panel::drivers { 14 | 15 | TouchSPD2010::~TouchSPD2010() 16 | { 17 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 18 | 19 | ESP_UTILS_CHECK_FALSE_EXIT(del(), "Delete failed"); 20 | 21 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 22 | } 23 | 24 | bool TouchSPD2010::begin() 25 | { 26 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 27 | 28 | ESP_UTILS_CHECK_FALSE_RETURN(!isOverState(State::BEGIN), false, "Already begun"); 29 | 30 | // Initialize the touch if not initialized 31 | if (!isOverState(State::INIT)) { 32 | ESP_UTILS_CHECK_FALSE_RETURN(init(), false, "Init failed"); 33 | } 34 | 35 | // Create touch panel 36 | ESP_UTILS_CHECK_ERROR_RETURN( 37 | esp_lcd_touch_new_i2c_spd2010( 38 | getBus()->getControlPanelHandle(), getConfig().getDeviceFullConfig(), &touch_panel 39 | ), false, "Create touch panel failed" 40 | ); 41 | ESP_UTILS_LOGD("Create touch panel(@%p)", touch_panel); 42 | 43 | setState(State::BEGIN); 44 | 45 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 46 | 47 | return true; 48 | } 49 | 50 | } // namespace esp_panel::drivers 51 | 52 | #endif // ESP_PANEL_DRIVERS_TOUCH_ENABLE_SPD2010 53 | -------------------------------------------------------------------------------- /src/drivers/touch/esp_panel_touch_st1633.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "esp_panel_touch_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_TOUCH_ENABLE_ST1633 9 | 10 | #include "utils/esp_panel_utils_log.h" 11 | #include "esp_panel_touch_st1633.hpp" 12 | 13 | namespace esp_panel::drivers { 14 | 15 | TouchST1633::~TouchST1633() 16 | { 17 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 18 | 19 | ESP_UTILS_CHECK_FALSE_EXIT(del(), "Delete failed"); 20 | 21 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 22 | } 23 | 24 | bool TouchST1633::begin() 25 | { 26 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 27 | 28 | ESP_UTILS_CHECK_FALSE_RETURN(!isOverState(State::BEGIN), false, "Already begun"); 29 | 30 | // Initialize the touch if not initialized 31 | if (!isOverState(State::INIT)) { 32 | ESP_UTILS_CHECK_FALSE_RETURN(init(), false, "Init failed"); 33 | } 34 | 35 | // Create touch panel 36 | ESP_UTILS_CHECK_ERROR_RETURN( 37 | esp_lcd_touch_new_i2c_st1633( 38 | getBus()->getControlPanelHandle(), getConfig().getDeviceFullConfig(), &touch_panel 39 | ), false, "Create touch panel failed" 40 | ); 41 | ESP_UTILS_LOGD("Create touch panel(@%p)", touch_panel); 42 | 43 | setState(State::BEGIN); 44 | 45 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 46 | 47 | return true; 48 | } 49 | 50 | } // namespace esp_panel::drivers 51 | 52 | #endif // ESP_PANEL_DRIVERS_TOUCH_ENABLE_ST1633 53 | -------------------------------------------------------------------------------- /src/drivers/touch/esp_panel_touch_st7123.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "esp_panel_touch_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_TOUCH_ENABLE_ST7123 9 | 10 | #include "utils/esp_panel_utils_log.h" 11 | #include "esp_panel_touch_st7123.hpp" 12 | 13 | namespace esp_panel::drivers { 14 | 15 | TouchST7123::~TouchST7123() 16 | { 17 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 18 | 19 | ESP_UTILS_CHECK_FALSE_EXIT(del(), "Delete failed"); 20 | 21 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 22 | } 23 | 24 | bool TouchST7123::begin() 25 | { 26 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 27 | 28 | ESP_UTILS_CHECK_FALSE_RETURN(!isOverState(State::BEGIN), false, "Already begun"); 29 | 30 | // Initialize the touch if not initialized 31 | if (!isOverState(State::INIT)) { 32 | ESP_UTILS_CHECK_FALSE_RETURN(init(), false, "Init failed"); 33 | } 34 | 35 | // Create touch panel 36 | ESP_UTILS_CHECK_ERROR_RETURN( 37 | esp_lcd_touch_new_i2c_st7123( 38 | getBus()->getControlPanelHandle(), getConfig().getDeviceFullConfig(), &touch_panel 39 | ), false, "Create touch panel failed" 40 | ); 41 | ESP_UTILS_LOGD("Create touch panel(@%p)", touch_panel); 42 | 43 | setState(State::BEGIN); 44 | 45 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 46 | 47 | return true; 48 | } 49 | 50 | } // namespace esp_panel::drivers 51 | 52 | #endif // ESP_PANEL_DRIVERS_TOUCH_ENABLE_ST7123 53 | -------------------------------------------------------------------------------- /src/drivers/touch/esp_panel_touch_stmpe610.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "esp_panel_touch_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_TOUCH_ENABLE_STMPE610 9 | 10 | #include "utils/esp_panel_utils_log.h" 11 | #include "esp_panel_touch_stmpe610.hpp" 12 | 13 | namespace esp_panel::drivers { 14 | 15 | TouchSTMPE610::~TouchSTMPE610() 16 | { 17 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 18 | 19 | ESP_UTILS_CHECK_FALSE_EXIT(del(), "Delete failed"); 20 | 21 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 22 | } 23 | 24 | bool TouchSTMPE610::begin() 25 | { 26 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 27 | 28 | ESP_UTILS_CHECK_FALSE_RETURN(!isOverState(State::BEGIN), false, "Already begun"); 29 | 30 | // Initialize the touch if not initialized 31 | if (!isOverState(State::INIT)) { 32 | ESP_UTILS_CHECK_FALSE_RETURN(init(), false, "Init failed"); 33 | } 34 | 35 | // Create touch panel 36 | ESP_UTILS_CHECK_ERROR_RETURN( 37 | esp_lcd_touch_new_spi_stmpe610( 38 | getBus()->getControlPanelHandle(), getConfig().getDeviceFullConfig(), &touch_panel 39 | ), false, "Create touch panel failed" 40 | ); 41 | ESP_UTILS_LOGD("Create touch panel(@%p)", touch_panel); 42 | 43 | setState(State::BEGIN); 44 | 45 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 46 | 47 | return true; 48 | } 49 | 50 | } // namespace esp_panel::drivers 51 | 52 | #endif // ESP_PANEL_DRIVERS_TOUCH_ENABLE_STMPE610 53 | -------------------------------------------------------------------------------- /src/drivers/touch/esp_panel_touch_tt21100.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "esp_panel_touch_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_TOUCH_ENABLE_TT21100 9 | 10 | #include "utils/esp_panel_utils_log.h" 11 | #include "esp_panel_touch_tt21100.hpp" 12 | 13 | namespace esp_panel::drivers { 14 | 15 | TouchTT21100::~TouchTT21100() 16 | { 17 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 18 | 19 | ESP_UTILS_CHECK_FALSE_EXIT(del(), "Delete failed"); 20 | 21 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 22 | } 23 | 24 | bool TouchTT21100::begin() 25 | { 26 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 27 | 28 | ESP_UTILS_CHECK_FALSE_RETURN(!isOverState(State::BEGIN), false, "Already begun"); 29 | 30 | // Initialize the touch if not initialized 31 | if (!isOverState(State::INIT)) { 32 | ESP_UTILS_CHECK_FALSE_RETURN(init(), false, "Init failed"); 33 | } 34 | 35 | // Create touch panel 36 | ESP_UTILS_CHECK_ERROR_RETURN( 37 | esp_lcd_touch_new_i2c_tt21100( 38 | getBus()->getControlPanelHandle(), getConfig().getDeviceFullConfig(), &touch_panel 39 | ), false, "Create touch panel failed" 40 | ); 41 | ESP_UTILS_LOGD("Create touch panel(@%p)", touch_panel); 42 | 43 | setState(State::BEGIN); 44 | 45 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 46 | 47 | return true; 48 | } 49 | 50 | } // namespace esp_panel::drivers 51 | 52 | #endif // ESP_PANEL_DRIVERS_TOUCH_ENABLE_TT21100 53 | -------------------------------------------------------------------------------- /src/drivers/touch/esp_panel_touch_xpt2046.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #include "esp_panel_touch_conf_internal.h" 8 | #if ESP_PANEL_DRIVERS_TOUCH_ENABLE_XPT2046 9 | 10 | #include "utils/esp_panel_utils_log.h" 11 | #include "esp_panel_touch_xpt2046.hpp" 12 | 13 | namespace esp_panel::drivers { 14 | 15 | TouchXPT2046::~TouchXPT2046() 16 | { 17 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 18 | 19 | ESP_UTILS_CHECK_FALSE_EXIT(del(), "Delete failed"); 20 | 21 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 22 | } 23 | 24 | bool TouchXPT2046::begin() 25 | { 26 | ESP_UTILS_LOG_TRACE_ENTER_WITH_THIS(); 27 | 28 | ESP_UTILS_CHECK_FALSE_RETURN(!isOverState(State::BEGIN), false, "Already begun"); 29 | 30 | // Initialize the touch if not initialized 31 | if (!isOverState(State::INIT)) { 32 | ESP_UTILS_CHECK_FALSE_RETURN(init(), false, "Init failed"); 33 | } 34 | 35 | // Create touch panel 36 | ESP_UTILS_CHECK_ERROR_RETURN( 37 | esp_lcd_touch_new_spi_xpt2046( 38 | getBus()->getControlPanelHandle(), getConfig().getDeviceFullConfig(), &touch_panel 39 | ), false, "Create touch panel failed" 40 | ); 41 | ESP_UTILS_LOGD("Create touch panel(@%p)", touch_panel); 42 | 43 | setState(State::BEGIN); 44 | 45 | ESP_UTILS_LOG_TRACE_EXIT_WITH_THIS(); 46 | 47 | return true; 48 | } 49 | 50 | } // namespace esp_panel::drivers 51 | 52 | #endif // ESP_PANEL_DRIVERS_TOUCH_ENABLE_XPT2046 53 | -------------------------------------------------------------------------------- /src/drivers/touch/port/esp_lcd_touch_axs15231b.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | /** 7 | * @file 8 | * @brief ESP LCD & Touch: AXS15231B 9 | */ 10 | 11 | #pragma once 12 | 13 | #include "esp_lcd_touch.h" 14 | 15 | #ifdef __cplusplus 16 | extern "C" { 17 | #endif 18 | 19 | #define ESP_LCD_TOUCH_AXS15231B_VER_MAJOR (1) 20 | #define ESP_LCD_TOUCH_AXS15231B_VER_MINOR (0) 21 | #define ESP_LCD_TOUCH_AXS15231B_VER_PATCH (3) 22 | 23 | /** 24 | * @brief Create a new AXS15231B1B touch driver 25 | * 26 | * @note The I2C communication should be initialized before use this function. 27 | * 28 | * @param io LCD panel IO handle, it should be created by `esp_lcd_new_panel_io_i2c()` 29 | * @param config Touch panel configuration 30 | * @param tp Touch panel handle 31 | * @return 32 | * - ESP_OK: on success 33 | */ 34 | esp_err_t esp_lcd_touch_new_i2c_axs15231b(const esp_lcd_panel_io_handle_t io, const esp_lcd_touch_config_t *config, esp_lcd_touch_handle_t *tp); 35 | 36 | /** 37 | * @brief I2C address of the AXS15231B controller 38 | * 39 | */ 40 | #define ESP_LCD_TOUCH_IO_I2C_AXS15231B_ADDRESS (0x3B) 41 | 42 | /** 43 | * @brief Touch IO configuration structure 44 | * 45 | */ 46 | #define ESP_LCD_TOUCH_IO_I2C_AXS15231B_CONFIG() \ 47 | { \ 48 | .dev_addr = ESP_LCD_TOUCH_IO_I2C_AXS15231B_ADDRESS, \ 49 | .control_phase_bytes = 1, \ 50 | .dc_bit_offset = 0, \ 51 | .lcd_cmd_bits = 8, \ 52 | .flags = \ 53 | { \ 54 | .disable_control_phase = 1, \ 55 | } \ 56 | } 57 | 58 | #ifdef __cplusplus 59 | } 60 | #endif 61 | -------------------------------------------------------------------------------- /src/drivers/touch/port/esp_lcd_touch_chsc6540.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | /** 8 | * @file 9 | * @brief ESP LCD touch: CHSC6540 10 | */ 11 | 12 | #pragma once 13 | 14 | #include "esp_lcd_touch.h" 15 | 16 | #ifdef __cplusplus 17 | extern "C" { 18 | #endif 19 | 20 | #define ESP_LCD_TOUCH_CHSC6540_VER_MAJOR (0) 21 | #define ESP_LCD_TOUCH_CHSC6540_VER_MINOR (0) 22 | #define ESP_LCD_TOUCH_CHSC6540_VER_PATCH (1) 23 | 24 | /** 25 | * @brief Create a new CHSC6540 touch driver 26 | * 27 | * @note The I2C communication should be initialized before use this function. 28 | * 29 | * @param io LCD panel IO handle, it should be created by `esp_lcd_new_panel_io_i2c()` 30 | * @param config Touch panel configuration 31 | * @param tp Touch panel handle 32 | * @return 33 | * - ESP_OK: on success 34 | */ 35 | esp_err_t esp_lcd_touch_new_i2c_chsc6540(const esp_lcd_panel_io_handle_t io, const esp_lcd_touch_config_t *config, esp_lcd_touch_handle_t *tp); 36 | 37 | /** 38 | * @brief I2C address of the CHSC6540 controller 39 | * 40 | */ 41 | #define ESP_LCD_TOUCH_IO_I2C_CHSC6540_ADDRESS (0x2E) 42 | /** 43 | * @brief Touch IO configuration structure 44 | * 45 | */ 46 | #define ESP_LCD_TOUCH_IO_I2C_CHSC6540_CONFIG() \ 47 | { \ 48 | .dev_addr = ESP_LCD_TOUCH_IO_I2C_CHSC6540_ADDRESS, \ 49 | .control_phase_bytes = 1, \ 50 | .dc_bit_offset = 0, \ 51 | .lcd_cmd_bits = 8, \ 52 | .flags = \ 53 | { \ 54 | .disable_control_phase = 1, \ 55 | } \ 56 | } 57 | 58 | #ifdef __cplusplus 59 | } 60 | #endif 61 | -------------------------------------------------------------------------------- /src/drivers/touch/port/esp_lcd_touch_cst816s.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | /** 8 | * @file 9 | * @brief ESP LCD touch: CST816S 10 | */ 11 | 12 | #pragma once 13 | 14 | #include "esp_lcd_touch.h" 15 | 16 | #ifdef __cplusplus 17 | extern "C" { 18 | #endif 19 | 20 | #define ESP_LCD_TOUCH_CST816S_VER_MAJOR (1) 21 | #define ESP_LCD_TOUCH_CST816S_VER_MINOR (0) 22 | #define ESP_LCD_TOUCH_CST816S_VER_PATCH (3) 23 | 24 | /** 25 | * @brief Create a new CST816S touch driver 26 | * 27 | * @note The I2C communication should be initialized before use this function. 28 | * 29 | * @param io LCD panel IO handle, it should be created by `esp_lcd_new_panel_io_i2c()` 30 | * @param config Touch panel configuration 31 | * @param tp Touch panel handle 32 | * @return 33 | * - ESP_OK: on success 34 | */ 35 | esp_err_t esp_lcd_touch_new_i2c_cst816s(const esp_lcd_panel_io_handle_t io, const esp_lcd_touch_config_t *config, esp_lcd_touch_handle_t *tp); 36 | 37 | /** 38 | * @brief I2C address of the CST816S controller 39 | * 40 | */ 41 | #define ESP_LCD_TOUCH_IO_I2C_CST816S_ADDRESS (0x15) 42 | 43 | /** 44 | * @brief Touch IO configuration structure 45 | * 46 | */ 47 | #define ESP_LCD_TOUCH_IO_I2C_CST816S_CONFIG() \ 48 | { \ 49 | .dev_addr = ESP_LCD_TOUCH_IO_I2C_CST816S_ADDRESS, \ 50 | .control_phase_bytes = 1, \ 51 | .dc_bit_offset = 0, \ 52 | .lcd_cmd_bits = 8, \ 53 | .flags = \ 54 | { \ 55 | .disable_control_phase = 1, \ 56 | } \ 57 | } 58 | 59 | #ifdef __cplusplus 60 | } 61 | #endif 62 | -------------------------------------------------------------------------------- /src/drivers/touch/port/esp_lcd_touch_ft5x06.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | /** 8 | * @file 9 | * @brief ESP LCD touch: FT5x06 10 | */ 11 | 12 | #pragma once 13 | 14 | #include "esp_lcd_touch.h" 15 | 16 | #ifdef __cplusplus 17 | extern "C" { 18 | #endif 19 | 20 | #define ESP_LCD_TOUCH_FT5x06_VER_MAJOR (1) 21 | #define ESP_LCD_TOUCH_FT5x06_VER_MINOR (0) 22 | #define ESP_LCD_TOUCH_FT5x06_VER_PATCH (6) 23 | 24 | /** 25 | * @brief Create a new FT5x06 touch driver 26 | * 27 | * @note The I2C communication should be initialized before use this function. 28 | * 29 | * @param io LCD/Touch panel IO handle 30 | * @param config: Touch configuration 31 | * @param out_touch: Touch instance handle 32 | * @return 33 | * - ESP_OK on success 34 | * - ESP_ERR_NO_MEM if there is no memory for allocating main structure 35 | */ 36 | esp_err_t esp_lcd_touch_new_i2c_ft5x06(const esp_lcd_panel_io_handle_t io, const esp_lcd_touch_config_t *config, esp_lcd_touch_handle_t *out_touch); 37 | 38 | /** 39 | * @brief I2C address of the FT5x06 controller 40 | * 41 | */ 42 | #define ESP_LCD_TOUCH_IO_I2C_FT5x06_ADDRESS (0x38) 43 | 44 | /** 45 | * @brief Touch IO configuration structure 46 | * 47 | */ 48 | #define ESP_LCD_TOUCH_IO_I2C_FT5x06_CONFIG() \ 49 | { \ 50 | .dev_addr = ESP_LCD_TOUCH_IO_I2C_FT5x06_ADDRESS, \ 51 | .control_phase_bytes = 1, \ 52 | .dc_bit_offset = 0, \ 53 | .lcd_cmd_bits = 8, \ 54 | .flags = \ 55 | { \ 56 | .disable_control_phase = 1, \ 57 | } \ 58 | } 59 | 60 | 61 | #ifdef __cplusplus 62 | } 63 | #endif 64 | -------------------------------------------------------------------------------- /src/drivers/touch/port/esp_lcd_touch_gt1151.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | /** 8 | * @file 9 | * @brief ESP LCD touch: GT1151 10 | */ 11 | 12 | #pragma once 13 | 14 | #include "esp_lcd_touch.h" 15 | 16 | #ifdef __cplusplus 17 | extern "C" { 18 | #endif 19 | 20 | #define ESP_LCD_TOUCH_GT1151_VER_MAJOR (1) 21 | #define ESP_LCD_TOUCH_GT1151_VER_MINOR (0) 22 | #define ESP_LCD_TOUCH_GT1151_VER_PATCH (5) 23 | 24 | /** 25 | * @brief Create a new GT1151 touch driver 26 | * 27 | * @note The I2C communication should be initialized before use this function. 28 | * 29 | * @param io LCD panel IO handle, it should be created by `esp_lcd_new_panel_io_i2c()` 30 | * @param config Touch panel configuration 31 | * @param tp Touch panel handle 32 | * @return 33 | * - ESP_OK: on success 34 | */ 35 | esp_err_t esp_lcd_touch_new_i2c_gt1151(const esp_lcd_panel_io_handle_t io, const esp_lcd_touch_config_t *config, esp_lcd_touch_handle_t *tp); 36 | 37 | /** 38 | * @brief I2C address of the GT1151 controller 39 | * 40 | */ 41 | #define ESP_LCD_TOUCH_IO_I2C_GT1151_ADDRESS (0x14) 42 | 43 | /** 44 | * @brief Touch IO configuration structure 45 | * 46 | */ 47 | #define ESP_LCD_TOUCH_IO_I2C_GT1151_CONFIG() \ 48 | { \ 49 | .dev_addr = ESP_LCD_TOUCH_IO_I2C_GT1151_ADDRESS, \ 50 | .control_phase_bytes = 1, \ 51 | .dc_bit_offset = 0, \ 52 | .lcd_cmd_bits = 16, \ 53 | .flags = \ 54 | { \ 55 | .disable_control_phase = 1, \ 56 | } \ 57 | } 58 | 59 | #ifdef __cplusplus 60 | } 61 | #endif 62 | -------------------------------------------------------------------------------- /src/drivers/touch/port/esp_lcd_touch_spd2010.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | #include "esp_lcd_touch.h" 9 | 10 | #ifdef __cplusplus 11 | extern "C" { 12 | #endif 13 | 14 | #define ESP_LCD_TOUCH_SPD2010_VER_MAJOR (0) 15 | #define ESP_LCD_TOUCH_SPD2010_VER_MINOR (1) 16 | #define ESP_LCD_TOUCH_SPD2010_VER_PATCH (0) 17 | 18 | /** 19 | * @brief Create a new SPD2010 touch driver 20 | * 21 | * @note The I2C communication should be initialized before use this function. 22 | * 23 | * @param io LCD panel IO handle, it should be created by `esp_lcd_new_panel_io_i2c()` 24 | * @param config Touch panel configuration 25 | * @param tp Touch panel handle 26 | * @return 27 | * - ESP_OK: on success 28 | */ 29 | esp_err_t esp_lcd_touch_new_i2c_spd2010(const esp_lcd_panel_io_handle_t io, const esp_lcd_touch_config_t *config, esp_lcd_touch_handle_t *tp); 30 | 31 | /** 32 | * @brief I2C address of the SPD2010 controller 33 | * 34 | */ 35 | #define ESP_LCD_TOUCH_IO_I2C_SPD2010_ADDRESS (0x53) 36 | 37 | /** 38 | * @brief Touch IO configuration structure 39 | * 40 | */ 41 | #define ESP_LCD_TOUCH_IO_I2C_SPD2010_CONFIG() \ 42 | { \ 43 | .dev_addr = ESP_LCD_TOUCH_IO_I2C_SPD2010_ADDRESS, \ 44 | .control_phase_bytes = 1, \ 45 | .dc_bit_offset = 0, \ 46 | .lcd_cmd_bits = 0, \ 47 | .flags = \ 48 | { \ 49 | .disable_control_phase = 1, \ 50 | } \ 51 | } 52 | 53 | #ifdef __cplusplus 54 | } 55 | #endif 56 | -------------------------------------------------------------------------------- /src/drivers/touch/port/esp_lcd_touch_st1633.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | #include "esp_lcd_touch.h" 9 | 10 | #ifdef __cplusplus 11 | extern "C" { 12 | #endif 13 | 14 | #define ESP_LCD_TOUCH_ST1633_VER_MAJOR (0) 15 | #define ESP_LCD_TOUCH_ST1633_VER_MINOR (1) 16 | #define ESP_LCD_TOUCH_ST1633_VER_PATCH (0) 17 | 18 | /** 19 | * @brief Create a new ST1633 touch driver 20 | * 21 | * @note The I2C communication should be initialized before use this function. 22 | * 23 | * @param io LCD panel IO handle, it should be created by `esp_lcd_new_panel_io_i2c()` 24 | * @param config Touch panel configuration 25 | * @param tp Touch panel handle 26 | * @return 27 | * - ESP_OK: on success 28 | */ 29 | esp_err_t esp_lcd_touch_new_i2c_st1633(const esp_lcd_panel_io_handle_t io, const esp_lcd_touch_config_t *config, esp_lcd_touch_handle_t *tp); 30 | 31 | /** 32 | * @brief I2C address of the ST1633 controller 33 | * 34 | */ 35 | #define ESP_LCD_TOUCH_IO_I2C_ST1633_ADDRESS (0x55) 36 | 37 | /** 38 | * @brief Touch IO configuration structure 39 | * 40 | */ 41 | #define ESP_LCD_TOUCH_IO_I2C_ST1633_CONFIG() \ 42 | { \ 43 | .dev_addr = ESP_LCD_TOUCH_IO_I2C_ST1633_ADDRESS, \ 44 | .control_phase_bytes = 1, \ 45 | .lcd_cmd_bits = 8, \ 46 | .flags = \ 47 | { \ 48 | .disable_control_phase = 1, \ 49 | } \ 50 | } 51 | 52 | #ifdef __cplusplus 53 | } 54 | #endif 55 | -------------------------------------------------------------------------------- /src/drivers/touch/port/esp_lcd_touch_st7123.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | #include "esp_lcd_touch.h" 9 | 10 | #ifdef __cplusplus 11 | extern "C" { 12 | #endif 13 | 14 | #define ESP_LCD_TOUCH_ST7123_VER_MAJOR (1) 15 | #define ESP_LCD_TOUCH_ST7123_VER_MINOR (0) 16 | #define ESP_LCD_TOUCH_ST7123_VER_PATCH (0) 17 | 18 | /** 19 | * @brief Create a new ST7123 touch driver 20 | * 21 | * @note The I2C communication should be initialized before use this function. 22 | * 23 | * @param io LCD panel IO handle, it should be created by `esp_lcd_new_panel_io_i2c()` 24 | * @param config Touch panel configuration 25 | * @param tp Touch panel handle 26 | * @return 27 | * - ESP_OK: on success 28 | */ 29 | esp_err_t esp_lcd_touch_new_i2c_st7123(const esp_lcd_panel_io_handle_t io, const esp_lcd_touch_config_t *config, esp_lcd_touch_handle_t *tp); 30 | 31 | /** 32 | * @brief I2C address of the ST7123 controller 33 | * 34 | */ 35 | #define ESP_LCD_TOUCH_IO_I2C_ST7123_ADDRESS (0x55) 36 | 37 | /** 38 | * @brief Touch IO configuration structure 39 | * 40 | */ 41 | #define ESP_LCD_TOUCH_IO_I2C_ST7123_CONFIG() \ 42 | { \ 43 | .dev_addr = ESP_LCD_TOUCH_IO_I2C_ST7123_ADDRESS, \ 44 | .control_phase_bytes = 1, \ 45 | .lcd_cmd_bits = 16, \ 46 | .flags = \ 47 | { \ 48 | .disable_control_phase = 1, \ 49 | } \ 50 | } 51 | 52 | #ifdef __cplusplus 53 | } 54 | #endif 55 | -------------------------------------------------------------------------------- /src/drivers/touch/port/esp_lcd_touch_stmpe610.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | /** 8 | * @file 9 | * @brief ESP LCD touch: STMPE610 10 | */ 11 | 12 | #pragma once 13 | 14 | #include "esp_lcd_touch.h" 15 | 16 | #ifdef __cplusplus 17 | extern "C" { 18 | #endif 19 | 20 | #define ESP_LCD_TOUCH_STMPE610_VER_MAJOR (1) 21 | #define ESP_LCD_TOUCH_STMPE610_VER_MINOR (0) 22 | #define ESP_LCD_TOUCH_STMPE610_VER_PATCH (6) 23 | 24 | /** 25 | * @brief Create a new STMPE610 touch driver 26 | * 27 | * @note The SPI communication should be initialized before use this function. 28 | * 29 | * @param io LCD/Touch panel IO handle 30 | * @param config: Touch configuration 31 | * @param out_touch: Touch instance handle 32 | * @return 33 | * - ESP_OK on success 34 | * - ESP_ERR_NO_MEM if there is no memory for allocating main structure 35 | */ 36 | esp_err_t esp_lcd_touch_new_spi_stmpe610(const esp_lcd_panel_io_handle_t io, const esp_lcd_touch_config_t *config, esp_lcd_touch_handle_t *out_touch); 37 | 38 | /** 39 | * @brief Recommended clock for SPI read of the STMPE610 40 | * 41 | */ 42 | #define ESP_LCD_TOUCH_SPI_CLOCK_HZ (1 * 1000 * 1000) 43 | 44 | /** 45 | * @brief Communication SPI device IO structure 46 | * 47 | */ 48 | #define ESP_LCD_TOUCH_IO_SPI_STMPE610_CONFIG(touch_cs) \ 49 | { \ 50 | .cs_gpio_num = touch_cs, \ 51 | .pclk_hz = ESP_LCD_TOUCH_SPI_CLOCK_HZ, \ 52 | .lcd_cmd_bits = 8, \ 53 | .lcd_param_bits = 8, \ 54 | .spi_mode = 1, \ 55 | .trans_queue_depth = 1, \ 56 | } 57 | 58 | #ifdef __cplusplus 59 | } 60 | #endif 61 | -------------------------------------------------------------------------------- /src/drivers/touch/port/esp_lcd_touch_tt21100.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | /** 8 | * @file 9 | * @brief ESP LCD touch: TT21100 10 | */ 11 | 12 | #pragma once 13 | 14 | #include "esp_lcd_touch.h" 15 | 16 | #ifdef __cplusplus 17 | extern "C" { 18 | #endif 19 | 20 | #define ESP_LCD_TOUCH_TT21100_VER_MAJOR (1) 21 | #define ESP_LCD_TOUCH_TT21100_VER_MINOR (1) 22 | #define ESP_LCD_TOUCH_TT21100_VER_PATCH (0) 23 | 24 | /** 25 | * @brief Create a new TT21100 touch driver 26 | * 27 | * @note The I2C communication should be initialized before use this function. 28 | * 29 | * @param io LCD/Touch panel IO handle 30 | * @param config: Touch configuration 31 | * @param out_touch: Touch instance handle 32 | * @return 33 | * - ESP_OK on success 34 | * - ESP_ERR_NO_MEM if there is no memory for allocating main structure 35 | */ 36 | esp_err_t esp_lcd_touch_new_i2c_tt21100(const esp_lcd_panel_io_handle_t io, const esp_lcd_touch_config_t *config, esp_lcd_touch_handle_t *out_touch); 37 | 38 | /** 39 | * @brief I2C address of the TT21100 controller 40 | * 41 | */ 42 | #define ESP_LCD_TOUCH_IO_I2C_TT21100_ADDRESS (0x24) 43 | 44 | /** 45 | * @brief Touch IO configuration structure 46 | * 47 | */ 48 | #define ESP_LCD_TOUCH_IO_I2C_TT21100_CONFIG() \ 49 | { \ 50 | .dev_addr = ESP_LCD_TOUCH_IO_I2C_TT21100_ADDRESS, \ 51 | .control_phase_bytes = 1, \ 52 | .dc_bit_offset = 0, \ 53 | .lcd_cmd_bits = 16, \ 54 | .flags = \ 55 | { \ 56 | .disable_control_phase = 1, \ 57 | } \ 58 | } 59 | 60 | #ifdef __cplusplus 61 | } 62 | #endif 63 | -------------------------------------------------------------------------------- /src/esp_display_panel.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | /* Base */ 9 | #include "esp_panel_types.h" 10 | #include "esp_panel_versions.h" 11 | #include "esp_panel_conf_internal.h" 12 | 13 | /* Utils */ 14 | #include "utils/esp_panel_utils_cxx.hpp" 15 | 16 | /* Drivers */ 17 | #include "drivers/bus/esp_panel_bus_factory.hpp" 18 | #include "drivers/lcd/esp_panel_lcd_factory.hpp" 19 | #include "drivers/touch/esp_panel_touch_factory.hpp" 20 | #include "drivers/backlight/esp_panel_backlight_factory.hpp" 21 | #include "drivers/io_expander/esp_panel_io_expander_factory.hpp" 22 | 23 | /* Board */ 24 | #include "board/esp_panel_board.hpp" 25 | -------------------------------------------------------------------------------- /src/esp_panel_conf_internal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #pragma once 8 | 9 | /* Include type definitions before including configuration header file */ 10 | #include "esp_panel_types.h" 11 | #include "esp_panel_versions.h" 12 | 13 | #include "soc/soc_caps.h" 14 | 15 | // *INDENT-OFF* 16 | 17 | /* Handle special Kconfig options */ 18 | #ifndef ESP_PANEL_KCONFIG_IGNORE 19 | #include "sdkconfig.h" 20 | 21 | #ifndef ESP_PANEL_DRIVERS_FILE_SKIP 22 | #ifdef CONFIG_ESP_PANEL_DRIVERS_FILE_SKIP 23 | #define ESP_PANEL_DRIVERS_FILE_SKIP 24 | #endif 25 | #endif 26 | 27 | #ifndef ESP_PANEL_BOARD_FILE_SKIP 28 | #ifdef CONFIG_ESP_PANEL_BOARD_FILE_SKIP 29 | #define ESP_PANEL_BOARD_FILE_SKIP 30 | #endif 31 | #endif 32 | #endif 33 | 34 | // *INDENT-ON* 35 | -------------------------------------------------------------------------------- /src/esp_panel_types.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | 7 | #pragma once 8 | 9 | #include "soc/soc_caps.h" 10 | #include "sdkconfig.h" 11 | 12 | /** 13 | * @brief Macros for bus type 14 | */ 15 | #define ESP_PANEL_BUS_TYPE_SPI (0) 16 | #define ESP_PANEL_BUS_TYPE_QSPI (1) 17 | #define ESP_PANEL_BUS_TYPE_RGB (2) 18 | #define ESP_PANEL_BUS_TYPE_I2C (3) 19 | #define ESP_PANEL_BUS_TYPE_I80 (4) 20 | #define ESP_PANEL_BUS_TYPE_MIPI_DSI (5) 21 | 22 | /** 23 | * @brief Macros for LCD color format bits 24 | */ 25 | #define ESP_PANEL_LCD_COLOR_BITS_RGB565 (16) 26 | #define ESP_PANEL_LCD_COLOR_BITS_RGB666 (18) 27 | #define ESP_PANEL_LCD_COLOR_BITS_RGB888 (24) 28 | 29 | /** 30 | * @brief Macros for backlight 31 | */ 32 | #define ESP_PANEL_BACKLIGHT_TYPE_SWITCH_GPIO (0) 33 | #define ESP_PANEL_BACKLIGHT_TYPE_SWITCH_EXPANDER (1) 34 | #define ESP_PANEL_BACKLIGHT_TYPE_PWM_LEDC (2) 35 | #define ESP_PANEL_BACKLIGHT_TYPE_CUSTOM (3) 36 | -------------------------------------------------------------------------------- /src/esp_panel_versions.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | /* Library Version */ 9 | #define ESP_PANEL_VERSION_MAJOR 1 10 | #define ESP_PANEL_VERSION_MINOR 0 11 | #define ESP_PANEL_VERSION_PATCH 3 12 | 13 | /* File `esp_panel_drivers_conf.h` */ 14 | #define ESP_PANEL_DRIVERS_CONF_VERSION_MAJOR 1 15 | #define ESP_PANEL_DRIVERS_CONF_VERSION_MINOR 0 16 | #define ESP_PANEL_DRIVERS_CONF_VERSION_PATCH 0 17 | 18 | /* File `esp_panel_board_custom_conf.h` */ 19 | #define ESP_PANEL_BOARD_CUSTOM_VERSION_MAJOR 1 20 | #define ESP_PANEL_BOARD_CUSTOM_VERSION_MINOR 1 21 | #define ESP_PANEL_BOARD_CUSTOM_VERSION_PATCH 0 22 | 23 | /* File `esp_panel_board_supported_conf.h` */ 24 | #define ESP_PANEL_BOARD_SUPPORTED_VERSION_MAJOR 1 25 | #define ESP_PANEL_BOARD_SUPPORTED_VERSION_MINOR 0 26 | #define ESP_PANEL_BOARD_SUPPORTED_VERSION_PATCH 0 27 | -------------------------------------------------------------------------------- /src/utils/esp_panel_utils_cxx.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | #include "esp_panel_utils_map.hpp" 9 | #include "esp_panel_utils_memory.hpp" 10 | #include "esp_panel_utils_string.hpp" 11 | #include "esp_panel_utils_vector.hpp" 12 | -------------------------------------------------------------------------------- /src/utils/esp_panel_utils_log.h: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | /** 9 | * @note This file shouldn't be included in the public header file. 10 | */ 11 | 12 | // Define the log tag for the current library, should be declared before `esp_lib_utils.h` 13 | #undef ESP_UTILS_LOG_TAG 14 | #define ESP_UTILS_LOG_TAG "Panel" 15 | #include "esp_lib_utils.h" 16 | -------------------------------------------------------------------------------- /src/utils/esp_panel_utils_map.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | #include 9 | #include "esp_lib_utils.h" 10 | 11 | namespace esp_panel::utils { 12 | 13 | template 14 | using unordered_map = std::unordered_map < 15 | K, V, std::hash, std::equal_to, esp_utils::GeneralMemoryAllocator> 16 | >; 17 | 18 | template 19 | using map = std::map, esp_utils::GeneralMemoryAllocator>>; 20 | 21 | } // namespace esp_panel::utils 22 | -------------------------------------------------------------------------------- /src/utils/esp_panel_utils_memory.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | #include 9 | #include "esp_lib_utils.h" 10 | 11 | namespace esp_panel::utils { 12 | 13 | template 14 | std::shared_ptr make_shared(Args &&... args) 15 | { 16 | return std::allocate_shared>( 17 | esp_utils::GeneralMemoryAllocator(), std::forward(args)... 18 | ); 19 | } 20 | 21 | } // namespace esp_panel::utils 22 | -------------------------------------------------------------------------------- /src/utils/esp_panel_utils_vector.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | */ 6 | #pragma once 7 | 8 | #include 9 | #include "esp_lib_utils.h" 10 | 11 | namespace esp_panel::utils { 12 | 13 | template 14 | using vector = std::vector>; 15 | 16 | } // namespace esp_panel::utils 17 | -------------------------------------------------------------------------------- /test_apps/board/common/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(board_common_test) 7 | -------------------------------------------------------------------------------- /test_apps/board/common/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(BOARD_CONFIGS_DIR ${CMAKE_CURRENT_LIST_DIR}/board_configs) 2 | file(GLOB_RECURSE BOARD_CONFIGS_SRCS ${BOARD_CONFIGS_DIR}/*.cpp) 3 | 4 | idf_component_register( 5 | SRCS 6 | "test_app_main.cpp" "test_board_common.cpp" ${BOARD_CONFIGS_SRCS} 7 | INCLUDE_DIRS 8 | . ${BOARD_CONFIGS_DIR} 9 | WHOLE_ARCHIVE 10 | ) 11 | -------------------------------------------------------------------------------- /test_apps/board/common/main/board_configs/BOARD_ESPRESSIF_ESP32_C3_LCDKIT.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | 7 | #pragma once 8 | 9 | #include "board/esp_panel_board_config.hpp" 10 | 11 | extern const esp_panel::board::BoardConfig BOARD_ESPRESSIF_ESP32_C3_LCDKIT_CONFIG; 12 | -------------------------------------------------------------------------------- /test_apps/board/common/main/board_configs/BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | 7 | #pragma once 8 | 9 | #include "board/esp_panel_board_config.hpp" 10 | 11 | extern const esp_panel::board::BoardConfig BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD_CONFIG; 12 | -------------------------------------------------------------------------------- /test_apps/board/common/main/board_configs/BOARD_ESPRESSIF_ESP32_S3_BOX_3.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | 7 | #pragma once 8 | 9 | #include "board/esp_panel_board_config.hpp" 10 | 11 | extern const esp_panel::board::BoardConfig BOARD_ESPRESSIF_ESP32_S3_BOX_3_CONFIG; 12 | -------------------------------------------------------------------------------- /test_apps/board/common/main/board_configs/BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | 7 | #pragma once 8 | 9 | #include "board/esp_panel_board_config.hpp" 10 | 11 | extern const esp_panel::board::BoardConfig BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5_CONFIG; 12 | -------------------------------------------------------------------------------- /test_apps/board/common/main/board_configs/BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | 7 | #pragma once 8 | 9 | #include "board/esp_panel_board_config.hpp" 10 | 11 | extern const esp_panel::board::BoardConfig BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5_CONFIG; 12 | -------------------------------------------------------------------------------- /test_apps/board/common/main/board_configs/board_configs.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | 7 | #pragma once 8 | 9 | #include "BOARD_ESPRESSIF_ESP32_C3_LCDKIT.hpp" 10 | #include "BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD.hpp" 11 | #include "BOARD_ESPRESSIF_ESP32_S3_BOX_3.hpp" 12 | #include "BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5.hpp" 13 | #include "BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5.hpp" 14 | -------------------------------------------------------------------------------- /test_apps/board/common/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | ESP32_Display_Panel: 6 | version: "*" 7 | override_path: "../../../../../ESP32_Display_Panel" 8 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.ci.custom.BOARD_ESPRESSIF_ESP32_C3_LCDKIT: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32c3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | 4 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_CUSTOM=y 5 | CONFIG_ESP_PANEL_BOARD_NAME="Custom_ESP32_C3_LCDKIT" 6 | CONFIG_ESP_PANEL_BOARD_WIDTH=240 7 | CONFIG_ESP_PANEL_BOARD_USE_LCD=y 8 | CONFIG_ESP_PANEL_LCD_CONTROLLER_GC9A01=y 9 | CONFIG_ESP_PANEL_BOARD_LCD_SPI_IO_CS=7 10 | CONFIG_ESP_PANEL_BOARD_LCD_SPI_IO_DC=2 11 | CONFIG_ESP_PANEL_BOARD_LCD_SPI_IO_SCK=1 12 | CONFIG_ESP_PANEL_BOARD_LCD_SPI_IO_MOSI=0 13 | CONFIG_ESP_PANEL_BOARD_LCD_COLOR_BGR_ORDER=y 14 | CONFIG_ESP_PANEL_BOARD_LCD_COLOR_INEVRT_BIT=y 15 | CONFIG_ESP_PANEL_BOARD_LCD_MIRROR_X=y 16 | CONFIG_ESP_PANEL_BOARD_USE_BACKLIGHT=y 17 | CONFIG_ESP_PANEL_BOARD_BACKLIGHT_IO=5 18 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.ci.custom.BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32p4" 2 | 3 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_CUSTOM=y 4 | CONFIG_ESP_PANEL_BOARD_NAME="Custom_ESP32_P4_FUNCTION_EV_BOARD" 5 | CONFIG_ESP_PANEL_BOARD_WIDTH=1024 6 | CONFIG_ESP_PANEL_BOARD_HEIGHT=600 7 | CONFIG_ESP_PANEL_BOARD_USE_LCD=y 8 | CONFIG_ESP_PANEL_LCD_CONTROLLER_EK79007=y 9 | CONFIG_ESP_PANEL_BOARD_LCD_BUS_TYPE_MIPI_DSI=y 10 | CONFIG_ESP_PANEL_BOARD_LCD_RST_IO=27 11 | CONFIG_ESP_PANEL_BOARD_USE_TOUCH=y 12 | CONFIG_ESP_PANEL_BOARD_TOUCH_CONTROLLER_GT911=y 13 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_IO_SCL=8 14 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_IO_SDA=7 15 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_SCL_PULLUP=n 16 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_SDA_PULLUP=n 17 | CONFIG_ESP_PANEL_BOARD_TOUCH_MIRROR_X=y 18 | CONFIG_ESP_PANEL_BOARD_TOUCH_MIRROR_Y=y 19 | CONFIG_ESP_PANEL_BOARD_USE_BACKLIGHT=y 20 | CONFIG_ESP_PANEL_BOARD_BACKLIGHT_IO=26 21 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.ci.custom.BOARD_ESPRESSIF_ESP32_S3_BOX_3: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | CONFIG_SPIRAM_MODE_OCT=y 4 | 5 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_CUSTOM=y 6 | CONFIG_ESP_PANEL_BOARD_NAME="Custom_ESP32_S3_BOX_3" 7 | CONFIG_ESP_PANEL_BOARD_USE_LCD=y 8 | CONFIG_ESP_PANEL_BOARD_LCD_COLOR_BGR_ORDER=y 9 | CONFIG_ESP_PANEL_BOARD_LCD_MIRROR_X=y 10 | CONFIG_ESP_PANEL_BOARD_LCD_MIRROR_Y=y 11 | CONFIG_ESP_PANEL_BOARD_LCD_RST_IO=48 12 | CONFIG_ESP_PANEL_BOARD_LCD_RST_LEVEL=1 13 | CONFIG_ESP_PANEL_BOARD_USE_TOUCH=y 14 | CONFIG_ESP_PANEL_BOARD_TOUCH_CONTROLLER_GT911=y 15 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_SCL_PULLUP=n 16 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_SDA_PULLUP=n 17 | CONFIG_ESP_PANEL_BOARD_TOUCH_INT_IO=3 18 | CONFIG_ESP_PANEL_BOARD_USE_BACKLIGHT=y 19 | CONFIG_ESP_PANEL_BOARD_BACKLIGHT_IO=47 20 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.ci.custom.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_CUSTOM=y 5 | CONFIG_ESP_PANEL_BOARD_NAME="Custom_ESP32_S3_LCD_EV_BOARD_2_V1_5" 6 | CONFIG_ESP_PANEL_BOARD_WIDTH=800 7 | CONFIG_ESP_PANEL_BOARD_HEIGHT=480 8 | CONFIG_ESP_PANEL_BOARD_USE_LCD=y 9 | CONFIG_ESP_PANEL_LCD_CONTROLLER_ST7262=y 10 | CONFIG_ESP_PANEL_BOARD_LCD_BUS_TYPE_RGB=y 11 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_USE_CONTROL_PANEL=n 12 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_HPW=40 13 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_HBP=40 14 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_HFP=40 15 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_VPW=23 16 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_VBP=32 17 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_VFP=13 18 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_PCLK_ACTIVE_NEG=y 19 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_BOUNCE_BUF_SIZE=8000 20 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_IO_DATA6=8 21 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_IO_DATA7=18 22 | CONFIG_ESP_PANEL_BOARD_LCD_COLOR_BITS_RGB888=y 23 | CONFIG_ESP_PANEL_BOARD_USE_TOUCH=y 24 | CONFIG_ESP_PANEL_BOARD_TOUCH_CONTROLLER_GT1151=y 25 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_IO_SCL=48 26 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_IO_SDA=47 27 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_SCL_PULLUP=n 28 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_SDA_PULLUP=n 29 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.ci.custom.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_CUSTOM=y 5 | CONFIG_ESP_PANEL_BOARD_NAME="Custom_ESP32_S3_LCD_EV_BOARD_V1_5" 6 | CONFIG_ESP_PANEL_BOARD_WIDTH=480 7 | CONFIG_ESP_PANEL_BOARD_HEIGHT=480 8 | CONFIG_ESP_PANEL_BOARD_USE_LCD=y 9 | CONFIG_ESP_PANEL_LCD_CONTROLLER_GC9503=y 10 | CONFIG_ESP_PANEL_BOARD_LCD_BUS_TYPE_RGB=y 11 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_SPI_IO_CS=1 12 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_SPI_IO_SCK=2 13 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_SPI_IO_SDA=3 14 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_SPI_CS_USE_EXPNADER=y 15 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_SPI_SCL_USE_EXPNADER=y 16 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_SPI_SDA_USE_EXPNADER=y 17 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_BOUNCE_BUF_SIZE=4800 18 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_IO_DATA6=8 19 | CONFIG_ESP_PANEL_BOARD_LCD_RGB_IO_DATA7=18 20 | CONFIG_ESP_PANEL_BOARD_LCD_FLAGS_ENABLE_IO_MULTIPLEX=y 21 | CONFIG_ESP_PANEL_BOARD_LCD_COLOR_BITS_RGB666=y 22 | CONFIG_ESP_PANEL_BOARD_USE_TOUCH=y 23 | CONFIG_ESP_PANEL_BOARD_TOUCH_CONTROLLER_FT5x06=y 24 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_IO_SCL=48 25 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_IO_SDA=47 26 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_SCL_PULLUP=n 27 | CONFIG_ESP_PANEL_BOARD_TOUCH_I2C_SDA_PULLUP=n 28 | CONFIG_ESP_PANEL_BOARD_USE_EXPANDER=y 29 | CONFIG_ESP_PANEL_BOARD_EXPANDER_I2C_ADDRESS=32 30 | CONFIG_ESP_PANEL_BOARD_EXPANDER_I2C_IO_SCL=48 31 | CONFIG_ESP_PANEL_BOARD_EXPANDER_I2C_IO_SDA=47 32 | CONFIG_ESP_PANEL_BOARD_EXPANDER_I2C_SCL_PULLUP=n 33 | CONFIG_ESP_PANEL_BOARD_EXPANDER_I2C_SDA_PULLUP=n 34 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.ci.custom.touch_spi_xpt2046: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_CUSTOM=y 2 | CONFIG_ESP_PANEL_BOARD_USE_TOUCH=y 3 | CONFIG_ESP_PANEL_BOARD_TOUCH_CONTROLLER_XPT2046=y 4 | CONFIG_ESP_PANEL_BOARD_TOUCH_BUS_TYPE_SPI=y 5 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.ci.supported.BOARD_ESPRESSIF_ESP32_C3_LCDKIT: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32c3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 4 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 5 | CONFIG_BOARD_ESPRESSIF_ESP32_C3_LCDKIT=y 6 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.ci.supported.BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32p4" 2 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 3 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 4 | CONFIG_BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD=y 5 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.ci.supported.BOARD_ESPRESSIF_ESP32_S3_BOX_3: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 3 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_BOX_3=y 5 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 6 | 7 | CONFIG_SPIRAM_MODE_OCT=y 8 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.ci.supported.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 3 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5=y 5 | 6 | CONFIG_SPIRAM_MODE_OCT=y 7 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.ci.supported.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 3 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5=y 5 | 6 | CONFIG_SPIRAM_MODE_OCT=y 7 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT_EN=n 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | 5 | CONFIG_ESP_PANEL_DRIVERS_BUS_USE_ALL=y 6 | CONFIG_ESP_PANEL_DRIVERS_LCD_USE_ALL=y 7 | CONFIG_ESP_PANEL_DRIVERS_TOUCH_USE_ALL=y 8 | CONFIG_ESP_PANEL_DRIVERS_EXPANDER_USE_ALL=y 9 | CONFIG_ESP_PANEL_DRIVERS_BACKLIGHT_USE_ALL=y 10 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.defaults.esp32p4: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_MODE_HEX=y 5 | CONFIG_SPIRAM_SPEED_200M=y 6 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 7 | 8 | CONFIG_IDF_EXPERIMENTAL_FEATURES=y 9 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.defaults.esp32s3: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_SPEED_80M=y 5 | # Enable the XIP-PSRAM feature, so the ext-mem cache won't be disabled when SPI1 is operating the main flash 6 | # For v5.2 and below 7 | CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y 8 | CONFIG_SPIRAM_RODATA=y 9 | # For v5.3 and above 10 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 11 | 12 | # Used in conjunction with "RGB Bounce Buffer" 13 | CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y 14 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.test.rotation_180: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_ROTATION_DEGREE_180=y 2 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.test.rotation_270: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_ROTATION_DEGREE_270=y 2 | -------------------------------------------------------------------------------- /test_apps/board/common/sdkconfig.test.rotation_90: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_ROTATION_DEGREE_90=y 2 | -------------------------------------------------------------------------------- /test_apps/board/elecrow/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(board_supported_test) 7 | -------------------------------------------------------------------------------- /test_apps/board/elecrow/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_board_supported.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | -------------------------------------------------------------------------------- /test_apps/board/elecrow/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../ESP32_Display_Panel" 10 | -------------------------------------------------------------------------------- /test_apps/board/elecrow/main/test_board_supported.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | #include 7 | #include 8 | #include "freertos/FreeRTOS.h" 9 | #include "freertos/task.h" 10 | #include "esp_heap_caps.h" 11 | #include "esp_log.h" 12 | #include "esp_timer.h" 13 | #include "unity.h" 14 | #include "unity_test_runner.h" 15 | #include "esp_display_panel.hpp" 16 | #include "lcd_general_test.hpp" 17 | #include "touch_general_test.hpp" 18 | 19 | using namespace std; 20 | using namespace esp_panel::board; 21 | using namespace esp_panel::drivers; 22 | 23 | static const char *TAG = "test_supported_board"; 24 | 25 | TEST_CASE("Test supported board", "[board][supported]") 26 | { 27 | shared_ptr board = make_shared(); 28 | TEST_ASSERT_NOT_NULL_MESSAGE(board, "Create board object failed"); 29 | 30 | ESP_LOGI(TAG, "Initialize board"); 31 | TEST_ASSERT_TRUE_MESSAGE(board->init(), "Board init failed"); 32 | TEST_ASSERT_TRUE_MESSAGE(board->begin(), "Board begin failed"); 33 | 34 | auto lcd = board->getLCD(); 35 | if (lcd) { 36 | lcd_general_test(lcd); 37 | } 38 | 39 | auto touch = board->getTouch(); 40 | if (touch) { 41 | touch_general_test(touch); 42 | gpio_uninstall_isr_service(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /test_apps/board/elecrow/sdkconfig.ci.BOARD_ELECROW_CROWPANEL_7_0: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_ELECROW_CROWPANEL_7_0=y 5 | -------------------------------------------------------------------------------- /test_apps/board/elecrow/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT_EN=n 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | 5 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 6 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 7 | -------------------------------------------------------------------------------- /test_apps/board/elecrow/sdkconfig.defaults.esp32p4: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_MODE_HEX=y 5 | CONFIG_SPIRAM_SPEED_200M=y 6 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 7 | 8 | CONFIG_IDF_EXPERIMENTAL_FEATURES=y 9 | -------------------------------------------------------------------------------- /test_apps/board/elecrow/sdkconfig.defaults.esp32s3: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_SPEED_80M=y 5 | # Enable the XIP-PSRAM feature, so the ext-mem cache won't be disabled when SPI1 is operating the main flash 6 | # For v5.2 and below 7 | CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y 8 | CONFIG_SPIRAM_RODATA=y 9 | # For v5.3 and above 10 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 11 | 12 | # Used in conjunction with "RGB Bounce Buffer" 13 | CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y 14 | -------------------------------------------------------------------------------- /test_apps/board/espressif/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(board_supported_test) 7 | -------------------------------------------------------------------------------- /test_apps/board/espressif/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_board_supported.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | -------------------------------------------------------------------------------- /test_apps/board/espressif/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../ESP32_Display_Panel" 10 | -------------------------------------------------------------------------------- /test_apps/board/espressif/main/test_board_supported.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | #include 7 | #include 8 | #include "freertos/FreeRTOS.h" 9 | #include "freertos/task.h" 10 | #include "esp_heap_caps.h" 11 | #include "esp_log.h" 12 | #include "esp_timer.h" 13 | #include "unity.h" 14 | #include "unity_test_runner.h" 15 | #include "esp_display_panel.hpp" 16 | #include "lcd_general_test.hpp" 17 | #include "touch_general_test.hpp" 18 | 19 | using namespace std; 20 | using namespace esp_panel::board; 21 | using namespace esp_panel::drivers; 22 | 23 | static const char *TAG = "test_supported_board"; 24 | 25 | TEST_CASE("Test supported board", "[board][supported]") 26 | { 27 | shared_ptr board = make_shared(); 28 | TEST_ASSERT_NOT_NULL_MESSAGE(board, "Create board object failed"); 29 | 30 | ESP_LOGI(TAG, "Initialize board"); 31 | TEST_ASSERT_TRUE_MESSAGE(board->init(), "Board init failed"); 32 | TEST_ASSERT_TRUE_MESSAGE(board->begin(), "Board begin failed"); 33 | 34 | auto lcd = board->getLCD(); 35 | if (lcd) { 36 | lcd_general_test(lcd); 37 | } 38 | 39 | auto touch = board->getTouch(); 40 | if (touch) { 41 | touch_general_test(touch); 42 | gpio_uninstall_isr_service(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_C3_LCDKIT: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32c3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | 4 | CONFIG_BOARD_ESPRESSIF_ESP32_C3_LCDKIT=y 5 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32p4" 2 | 3 | CONFIG_BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD=y 4 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_BOX: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | CONFIG_SPIRAM_MODE_OCT=y 4 | 5 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_BOX=y 6 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_BOX_3: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | CONFIG_SPIRAM_MODE_OCT=y 4 | 5 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_BOX_3=y 6 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_BOX_3_BETA: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | CONFIG_SPIRAM_MODE_OCT=y 4 | 5 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_BOX_3_BETA=y 6 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_BOX_LITE: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | CONFIG_SPIRAM_MODE_OCT=y 4 | 5 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_BOX_LITE=y 6 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_EYE: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | CONFIG_SPIRAM_MODE_OCT=y 4 | 5 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_EYE=y 6 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_KORVO_2: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_KORVO_2=y 5 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD=y 5 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2=y 5 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5=y 5 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5=y 5 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_USB_OTG: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | 3 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_USB_OTG=y 4 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT_EN=n 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | 5 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 6 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 7 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.defaults.esp32p4: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_MODE_HEX=y 5 | CONFIG_SPIRAM_SPEED_200M=y 6 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 7 | 8 | CONFIG_IDF_EXPERIMENTAL_FEATURES=y 9 | -------------------------------------------------------------------------------- /test_apps/board/espressif/sdkconfig.defaults.esp32s3: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_SPEED_80M=y 5 | # Enable the XIP-PSRAM feature, so the ext-mem cache won't be disabled when SPI1 is operating the main flash 6 | # For v5.2 and below 7 | CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y 8 | CONFIG_SPIRAM_RODATA=y 9 | # For v5.3 and above 10 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 11 | 12 | # Used in conjunction with "RGB Bounce Buffer" 13 | CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y 14 | -------------------------------------------------------------------------------- /test_apps/board/jingcai/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(board_supported_test) 7 | -------------------------------------------------------------------------------- /test_apps/board/jingcai/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_board_supported.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | -------------------------------------------------------------------------------- /test_apps/board/jingcai/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../ESP32_Display_Panel" 10 | -------------------------------------------------------------------------------- /test_apps/board/jingcai/main/test_board_supported.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | #include 7 | #include 8 | #include "freertos/FreeRTOS.h" 9 | #include "freertos/task.h" 10 | #include "esp_heap_caps.h" 11 | #include "esp_log.h" 12 | #include "esp_timer.h" 13 | #include "unity.h" 14 | #include "unity_test_runner.h" 15 | #include "esp_display_panel.hpp" 16 | #include "lcd_general_test.hpp" 17 | #include "touch_general_test.hpp" 18 | 19 | using namespace std; 20 | using namespace esp_panel::board; 21 | using namespace esp_panel::drivers; 22 | 23 | static const char *TAG = "test_supported_board"; 24 | 25 | TEST_CASE("Test supported board", "[board][supported]") 26 | { 27 | shared_ptr board = make_shared(); 28 | TEST_ASSERT_NOT_NULL_MESSAGE(board, "Create board object failed"); 29 | 30 | ESP_LOGI(TAG, "Initialize board"); 31 | TEST_ASSERT_TRUE_MESSAGE(board->init(), "Board init failed"); 32 | TEST_ASSERT_TRUE_MESSAGE(board->begin(), "Board begin failed"); 33 | 34 | auto lcd = board->getLCD(); 35 | if (lcd) { 36 | lcd_general_test(lcd); 37 | } 38 | 39 | auto touch = board->getTouch(); 40 | if (touch) { 41 | touch_general_test(touch); 42 | gpio_uninstall_isr_service(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /test_apps/board/jingcai/sdkconfig.ci.BOARD_JINGCAI_ESP32_4848S040C_I_Y_3: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_JINGCAI_ESP32_4848S040C_I_Y_3=y 5 | -------------------------------------------------------------------------------- /test_apps/board/jingcai/sdkconfig.ci.BOARD_JINGCAI_JC8048W550C: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_JINGCAI_JC8048W550C=y 5 | -------------------------------------------------------------------------------- /test_apps/board/jingcai/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT_EN=n 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | 5 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 6 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 7 | -------------------------------------------------------------------------------- /test_apps/board/jingcai/sdkconfig.defaults.esp32p4: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_MODE_HEX=y 5 | CONFIG_SPIRAM_SPEED_200M=y 6 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 7 | 8 | CONFIG_IDF_EXPERIMENTAL_FEATURES=y 9 | -------------------------------------------------------------------------------- /test_apps/board/jingcai/sdkconfig.defaults.esp32s3: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_SPEED_80M=y 5 | # Enable the XIP-PSRAM feature, so the ext-mem cache won't be disabled when SPI1 is operating the main flash 6 | # For v5.2 and below 7 | CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y 8 | CONFIG_SPIRAM_RODATA=y 9 | # For v5.3 and above 10 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 11 | 12 | # Used in conjunction with "RGB Bounce Buffer" 13 | CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y 14 | -------------------------------------------------------------------------------- /test_apps/board/m5stack/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(board_supported_test) 7 | -------------------------------------------------------------------------------- /test_apps/board/m5stack/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_board_supported.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | -------------------------------------------------------------------------------- /test_apps/board/m5stack/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../ESP32_Display_Panel" 10 | -------------------------------------------------------------------------------- /test_apps/board/m5stack/main/test_board_supported.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | #include 7 | #include 8 | #include "freertos/FreeRTOS.h" 9 | #include "freertos/task.h" 10 | #include "esp_heap_caps.h" 11 | #include "esp_log.h" 12 | #include "esp_timer.h" 13 | #include "unity.h" 14 | #include "unity_test_runner.h" 15 | #include "esp_display_panel.hpp" 16 | #include "lcd_general_test.hpp" 17 | #include "touch_general_test.hpp" 18 | 19 | using namespace std; 20 | using namespace esp_panel::board; 21 | using namespace esp_panel::drivers; 22 | 23 | static const char *TAG = "test_supported_board"; 24 | 25 | TEST_CASE("Test supported board", "[board][supported]") 26 | { 27 | shared_ptr board = make_shared(); 28 | TEST_ASSERT_NOT_NULL_MESSAGE(board, "Create board object failed"); 29 | 30 | ESP_LOGI(TAG, "Initialize board"); 31 | TEST_ASSERT_TRUE_MESSAGE(board->init(), "Board init failed"); 32 | TEST_ASSERT_TRUE_MESSAGE(board->begin(), "Board begin failed"); 33 | 34 | auto lcd = board->getLCD(); 35 | if (lcd) { 36 | lcd_general_test(lcd); 37 | } 38 | 39 | auto touch = board->getTouch(); 40 | if (touch) { 41 | touch_general_test(touch); 42 | gpio_uninstall_isr_service(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /test_apps/board/m5stack/sdkconfig.ci.BOARD_M5STACK_M5CORE2: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | 3 | CONFIG_BOARD_M5STACK_M5CORE2=y 4 | -------------------------------------------------------------------------------- /test_apps/board/m5stack/sdkconfig.ci.BOARD_M5STACK_M5CORES3: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | 4 | CONFIG_BOARD_M5STACK_M5CORES3=y 5 | -------------------------------------------------------------------------------- /test_apps/board/m5stack/sdkconfig.ci.BOARD_M5STACK_M5DIAL: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_M5STACK_M5DIAL=y 5 | -------------------------------------------------------------------------------- /test_apps/board/m5stack/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT_EN=n 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | 5 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 6 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 7 | -------------------------------------------------------------------------------- /test_apps/board/m5stack/sdkconfig.defaults.esp32p4: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_MODE_HEX=y 5 | CONFIG_SPIRAM_SPEED_200M=y 6 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 7 | 8 | CONFIG_IDF_EXPERIMENTAL_FEATURES=y 9 | -------------------------------------------------------------------------------- /test_apps/board/m5stack/sdkconfig.defaults.esp32s3: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_SPEED_80M=y 5 | # Enable the XIP-PSRAM feature, so the ext-mem cache won't be disabled when SPI1 is operating the main flash 6 | # For v5.2 and below 7 | CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y 8 | CONFIG_SPIRAM_RODATA=y 9 | # For v5.3 and above 10 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 11 | 12 | # Used in conjunction with "RGB Bounce Buffer" 13 | CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y 14 | -------------------------------------------------------------------------------- /test_apps/board/viewe/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(board_supported_test) 7 | -------------------------------------------------------------------------------- /test_apps/board/viewe/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_board_supported.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | -------------------------------------------------------------------------------- /test_apps/board/viewe/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../ESP32_Display_Panel" 10 | -------------------------------------------------------------------------------- /test_apps/board/viewe/main/test_board_supported.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | #include 7 | #include 8 | #include "freertos/FreeRTOS.h" 9 | #include "freertos/task.h" 10 | #include "esp_heap_caps.h" 11 | #include "esp_log.h" 12 | #include "esp_timer.h" 13 | #include "unity.h" 14 | #include "unity_test_runner.h" 15 | #include "esp_display_panel.hpp" 16 | #include "lcd_general_test.hpp" 17 | #include "touch_general_test.hpp" 18 | 19 | using namespace std; 20 | using namespace esp_panel::board; 21 | using namespace esp_panel::drivers; 22 | 23 | static const char *TAG = "test_supported_board"; 24 | 25 | TEST_CASE("Test supported board", "[board][supported]") 26 | { 27 | shared_ptr board = make_shared(); 28 | TEST_ASSERT_NOT_NULL_MESSAGE(board, "Create board object failed"); 29 | 30 | ESP_LOGI(TAG, "Initialize board"); 31 | TEST_ASSERT_TRUE_MESSAGE(board->init(), "Board init failed"); 32 | TEST_ASSERT_TRUE_MESSAGE(board->begin(), "Board begin failed"); 33 | 34 | auto lcd = board->getLCD(); 35 | if (lcd) { 36 | lcd_general_test(lcd); 37 | } 38 | 39 | auto touch = board->getTouch(); 40 | if (touch) { 41 | touch_general_test(touch); 42 | gpio_uninstall_isr_service(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /test_apps/board/viewe/sdkconfig.ci.BOARD_VIEWE_UEDX24320024E_WB_A: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_VIEWE_UEDX24320024E_WB_A=y 5 | -------------------------------------------------------------------------------- /test_apps/board/viewe/sdkconfig.ci.BOARD_VIEWE_UEDX24320028E_WB_A: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_VIEWE_UEDX24320028E_WB_A=y 5 | -------------------------------------------------------------------------------- /test_apps/board/viewe/sdkconfig.ci.BOARD_VIEWE_UEDX24320035E_WB_A: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_VIEWE_UEDX24320035E_WB_A=y 5 | -------------------------------------------------------------------------------- /test_apps/board/viewe/sdkconfig.ci.BOARD_VIEWE_UEDX32480035E_WB_A: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_VIEWE_UEDX32480035E_WB_A=y 5 | -------------------------------------------------------------------------------- /test_apps/board/viewe/sdkconfig.ci.BOARD_VIEWE_UEDX48270043E_WB_A: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_VIEWE_UEDX48270043E_WB_A=y 5 | -------------------------------------------------------------------------------- /test_apps/board/viewe/sdkconfig.ci.BOARD_VIEWE_UEDX48480040E_WB_A: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_VIEWE_UEDX48480040E_WB_A=y 5 | -------------------------------------------------------------------------------- /test_apps/board/viewe/sdkconfig.ci.BOARD_VIEWE_UEDX80480043E_WB_A: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_VIEWE_UEDX80480043E_WB_A=y 5 | -------------------------------------------------------------------------------- /test_apps/board/viewe/sdkconfig.ci.BOARD_VIEWE_UEDX80480050E_WB_A: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_VIEWE_UEDX80480050E_WB_A=y 5 | -------------------------------------------------------------------------------- /test_apps/board/viewe/sdkconfig.ci.BOARD_VIEWE_UEDX80480050E_WB_A_2: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_VIEWE_UEDX80480050E_WB_A_2=y 5 | -------------------------------------------------------------------------------- /test_apps/board/viewe/sdkconfig.ci.BOARD_VIEWE_UEDX80480070E_WB_A: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_VIEWE_UEDX80480070E_WB_A=y 5 | -------------------------------------------------------------------------------- /test_apps/board/viewe/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT_EN=n 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | 5 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 6 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 7 | -------------------------------------------------------------------------------- /test_apps/board/viewe/sdkconfig.defaults.esp32p4: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_MODE_HEX=y 5 | CONFIG_SPIRAM_SPEED_200M=y 6 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 7 | 8 | CONFIG_IDF_EXPERIMENTAL_FEATURES=y 9 | -------------------------------------------------------------------------------- /test_apps/board/viewe/sdkconfig.defaults.esp32s3: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_SPEED_80M=y 5 | # Enable the XIP-PSRAM feature, so the ext-mem cache won't be disabled when SPI1 is operating the main flash 6 | # For v5.2 and below 7 | CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y 8 | CONFIG_SPIRAM_RODATA=y 9 | # For v5.3 and above 10 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 11 | 12 | # Used in conjunction with "RGB Bounce Buffer" 13 | CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y 14 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(board_supported_test) 7 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_board_supported.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../ESP32_Display_Panel" 10 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/main/test_board_supported.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | #include 7 | #include 8 | #include "freertos/FreeRTOS.h" 9 | #include "freertos/task.h" 10 | #include "esp_heap_caps.h" 11 | #include "esp_log.h" 12 | #include "esp_timer.h" 13 | #include "unity.h" 14 | #include "unity_test_runner.h" 15 | #include "esp_display_panel.hpp" 16 | #include "lcd_general_test.hpp" 17 | #include "touch_general_test.hpp" 18 | 19 | using namespace std; 20 | using namespace esp_panel::board; 21 | using namespace esp_panel::drivers; 22 | 23 | static const char *TAG = "test_supported_board"; 24 | 25 | TEST_CASE("Test supported board", "[board][supported]") 26 | { 27 | shared_ptr board = make_shared(); 28 | TEST_ASSERT_NOT_NULL_MESSAGE(board, "Create board object failed"); 29 | 30 | ESP_LOGI(TAG, "Initialize board"); 31 | TEST_ASSERT_TRUE_MESSAGE(board->init(), "Board init failed"); 32 | TEST_ASSERT_TRUE_MESSAGE(board->begin(), "Board begin failed"); 33 | 34 | auto lcd = board->getLCD(); 35 | if (lcd) { 36 | lcd_general_test(lcd); 37 | } 38 | 39 | auto touch = board->getTouch(); 40 | if (touch) { 41 | touch_general_test(touch); 42 | gpio_uninstall_isr_service(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/sdkconfig.ci.BOARD_WAVESHARE_ESP32_P4_NANO: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32p4" 2 | 3 | CONFIG_BOARD_WAVESHARE_ESP32_P4_NANO=y 4 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | CONFIG_SPIRAM_MODE_OCT=y 4 | 5 | CONFIG_BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_1_85=y 6 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | CONFIG_SPIRAM_MODE_OCT=y 4 | 5 | CONFIG_BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_2_1=y 6 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3=y 5 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_4_3_B=y 5 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5=y 5 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5_B: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_5_B=y 5 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/sdkconfig.ci.BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_7: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | 4 | CONFIG_BOARD_WAVESHARE_ESP32_S3_TOUCH_LCD_7=y 5 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT_EN=n 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | 5 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 6 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 7 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/sdkconfig.defaults.esp32p4: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_MODE_HEX=y 5 | CONFIG_SPIRAM_SPEED_200M=y 6 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 7 | 8 | CONFIG_IDF_EXPERIMENTAL_FEATURES=y 9 | -------------------------------------------------------------------------------- /test_apps/board/waveshare/sdkconfig.defaults.esp32s3: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_SPEED_80M=y 5 | # Enable the XIP-PSRAM feature, so the ext-mem cache won't be disabled when SPI1 is operating the main flash 6 | # For v5.2 and below 7 | CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y 8 | CONFIG_SPIRAM_RODATA=y 9 | # For v5.3 and above 10 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 11 | 12 | # Used in conjunction with "RGB Bounce Buffer" 13 | CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y 14 | -------------------------------------------------------------------------------- /test_apps/common_components/lcd_general_test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "lcd_general_test.cpp" 3 | INCLUDE_DIRS "." 4 | REQUIRES esp_timer ESP32_Display_Panel 5 | ) 6 | -------------------------------------------------------------------------------- /test_apps/common_components/lcd_general_test/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | -------------------------------------------------------------------------------- /test_apps/common_components/lcd_general_test/lcd_general_test.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | #pragma once 7 | 8 | #include 9 | #include "esp_display_panel.hpp" 10 | 11 | void lcd_general_test(esp_panel::drivers::LCD *lcd); 12 | -------------------------------------------------------------------------------- /test_apps/common_components/touch_general_test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "touch_general_test.cpp" 3 | INCLUDE_DIRS "." 4 | REQUIRES esp_timer ESP32_Display_Panel 5 | ) 6 | -------------------------------------------------------------------------------- /test_apps/common_components/touch_general_test/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | -------------------------------------------------------------------------------- /test_apps/common_components/touch_general_test/touch_general_test.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD 3 | * 4 | * SPDX-License-Identifier: CC0-1.0 5 | */ 6 | #pragma once 7 | 8 | #include 9 | #include "esp_display_panel.hpp" 10 | 11 | void touch_general_test(esp_panel::drivers::Touch *touch); 12 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/3wire_spi_rgb/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(3wire_spi_rgb_lcd_test) 7 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/3wire_spi_rgb/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_3wire_spi_rgb_lcd.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/3wire_spi_rgb/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../../ESP32_Display_Panel" 10 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/3wire_spi_rgb/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT_INIT=n 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/3wire_spi_rgb/sdkconfig.defaults.esp32s3: -------------------------------------------------------------------------------- 1 | CONFIG_SPIRAM=y 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | CONFIG_SPIRAM_SPEED_80M=y 4 | 5 | # Enable the XIP-PSRAM feature, so the ext-mem cache won't be disabled when SPI1 is operating the main flash 6 | # For v5.2 and below 7 | CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y 8 | CONFIG_SPIRAM_RODATA=y 9 | # For v5.3 and above 10 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 11 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/mipi_dsi/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(mipi_dsi_lcd_test) 7 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/mipi_dsi/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_mipi_dsi_lcd.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/mipi_dsi/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../../ESP32_Display_Panel" 10 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/mipi_dsi/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT_INIT=n 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/mipi_dsi/sdkconfig.defaults.esp32p4: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_MODE_HEX=y 5 | CONFIG_SPIRAM_SPEED_200M=y 6 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 7 | 8 | CONFIG_IDF_EXPERIMENTAL_FEATURES=y 9 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/qspi/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(qspi_lcd_test) 7 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/qspi/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_qspi_lcd.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/qspi/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../../ESP32_Display_Panel" 10 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/qspi/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT= 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/rgb/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(rgb_lcd_test) 7 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/rgb/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_rgb_lcd.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/rgb/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../../ESP32_Display_Panel" 10 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/rgb/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT_INIT=n 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/rgb/sdkconfig.defaults.esp32s3: -------------------------------------------------------------------------------- 1 | CONFIG_SPIRAM=y 2 | CONFIG_SPIRAM_MODE_OCT=y 3 | CONFIG_SPIRAM_SPEED_80M=y 4 | 5 | CONFIG_SPIRAM=y 6 | CONFIG_SPIRAM_MODE_OCT=y 7 | CONFIG_SPIRAM_SPEED_80M=y 8 | # Enable the XIP-PSRAM feature, so the ext-mem cache won't be disabled when SPI1 is operating the main flash 9 | # For v5.2 and below 10 | CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y 11 | CONFIG_SPIRAM_RODATA=y 12 | # For v5.3 and above 13 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 14 | 15 | # Used in conjunction with "RGB Bounce Buffer" 16 | CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y 17 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/spi/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(spi_lcd_test) 7 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/spi/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_spi_lcd.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/spi/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../../ESP32_Display_Panel" 10 | -------------------------------------------------------------------------------- /test_apps/drivers/lcd/spi/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT= 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 5 | -------------------------------------------------------------------------------- /test_apps/drivers/touch/i2c/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(i2c_touch_test) 7 | -------------------------------------------------------------------------------- /test_apps/drivers/touch/i2c/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_i2c_touch.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | 6 | target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-missing-field-initializers) 7 | -------------------------------------------------------------------------------- /test_apps/drivers/touch/i2c/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../../ESP32_Display_Panel" 10 | -------------------------------------------------------------------------------- /test_apps/drivers/touch/i2c/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | # This file was generated using idf.py save-defconfig. It can be edited manually. 2 | # Espressif IoT Development Framework (ESP-IDF) 5.4.0 Project Minimal Configuration 3 | # 4 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 5 | CONFIG_ESP_TASK_WDT_INIT=n 6 | CONFIG_FREERTOS_HZ=1000 7 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 8 | -------------------------------------------------------------------------------- /test_apps/drivers/touch/spi/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | set(EXTRA_COMPONENT_DIRS ${CMAKE_CURRENT_LIST_DIR}/../../../common_components) 5 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 6 | project(spi_touch_test) 7 | -------------------------------------------------------------------------------- /test_apps/drivers/touch/spi/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_spi_touch.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | -------------------------------------------------------------------------------- /test_apps/drivers/touch/spi/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../../ESP32_Display_Panel" 10 | -------------------------------------------------------------------------------- /test_apps/drivers/touch/spi/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT= 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's CMakeLists 2 | # in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 5 | project(lvgl_v8_port_test) 6 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS "test_app_main.cpp" "test_lvgl_port.cpp" "lvgl_v8_port.cpp" 3 | WHOLE_ARCHIVE 4 | ) 5 | 6 | target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-missing-field-initializers) 7 | 8 | # The following code is to avoid the error: 9 | # lvgl_v8_port/managed_components/lvgl__lvgl/demos/stress/lv_demo_stress.c:92:29: error: format '%d' expects argument of 10 | # type 'int', but argument 6 has type 'uint32_t' {aka 'long unsigned int'} [-Werror=format=] 11 | 12 | # Get the exact component name 13 | idf_build_get_property(build_components BUILD_COMPONENTS) 14 | foreach(COMPONENT ${build_components}) 15 | if(COMPONENT MATCHES "lvgl" OR COMPONENT MATCHES "lvgl__lvgl") 16 | set(TARGET_COMPONENT ${COMPONENT}) 17 | break() 18 | endif() 19 | endforeach() 20 | # Get the component library 21 | if(TARGET_COMPONENT STREQUAL "") 22 | message(FATAL_ERROR "Component 'lvgl' not found.") 23 | else() 24 | idf_component_get_property(LVGL_LIB ${TARGET_COMPONENT} COMPONENT_LIB) 25 | endif() 26 | target_compile_options(${LVGL_LIB} PRIVATE "-Wno-format") 27 | set(TARGET_COMPONENT "") 28 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/main/Kconfig.projbuild: -------------------------------------------------------------------------------- 1 | menu "Test Configurations" 2 | choice LVGL_PORT_AVOID_TEARING_MODE_CHOICE 3 | prompt "Avoid Tearing Mode" 4 | default LVGL_PORT_AVOID_TEARING_MODE_NONE 5 | 6 | config LVGL_PORT_AVOID_TEARING_MODE_NONE 7 | bool "None" 8 | 9 | config LVGL_PORT_AVOID_TEARING_MODE_1 10 | bool "Mode1: LCD double-buffer & LVGL full-refresh" 11 | depends on SOC_LCD_RGB_SUPPORTED || SOC_MIPI_DSI_SUPPORTED 12 | 13 | config LVGL_PORT_AVOID_TEARING_MODE_2 14 | bool "Mode2: LCD triple-buffer & LVGL full-refresh" 15 | depends on SOC_LCD_RGB_SUPPORTED || SOC_MIPI_DSI_SUPPORTED 16 | 17 | config LVGL_PORT_AVOID_TEARING_MODE_3 18 | bool "Mode3: LCD double-buffer & LVGL direct-mode (recommended)" 19 | depends on SOC_LCD_RGB_SUPPORTED || SOC_MIPI_DSI_SUPPORTED 20 | endchoice 21 | 22 | config LVGL_PORT_AVOID_TEARING_MODE 23 | int 24 | default 3 if LVGL_PORT_AVOID_TEARING_MODE_3 25 | default 2 if LVGL_PORT_AVOID_TEARING_MODE_2 26 | default 1 if LVGL_PORT_AVOID_TEARING_MODE_1 27 | default 0 if LVGL_PORT_AVOID_TEARING_MODE_NONE 28 | 29 | choice LVGL_PORT_ROTATION_DEGREE_CHOICE 30 | prompt "Rotation Degree" 31 | default LVGL_PORT_ROTATION_DEGREE_0 32 | 33 | config LVGL_PORT_ROTATION_DEGREE_0 34 | bool "0 degree" 35 | depends on LVGL_PORT_AVOID_TEARING_MODE != 0 36 | 37 | config LVGL_PORT_ROTATION_DEGREE_90 38 | bool "90 degree" 39 | depends on LVGL_PORT_AVOID_TEARING_MODE != 0 40 | 41 | config LVGL_PORT_ROTATION_DEGREE_180 42 | bool "180 degree" 43 | depends on LVGL_PORT_AVOID_TEARING_MODE != 0 44 | 45 | config LVGL_PORT_ROTATION_DEGREE_270 46 | bool "270 degree" 47 | depends on LVGL_PORT_AVOID_TEARING_MODE != 0 48 | endchoice 49 | 50 | config LVGL_PORT_ROTATION_DEGREE 51 | int 52 | default 0 if LVGL_PORT_ROTATION_DEGREE_0 53 | default 90 if LVGL_PORT_ROTATION_DEGREE_90 54 | default 180 if LVGL_PORT_ROTATION_DEGREE_180 55 | default 270 if LVGL_PORT_ROTATION_DEGREE_270 56 | endmenu 57 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/main/idf_component.yml: -------------------------------------------------------------------------------- 1 | ## IDF Component Manager Manifest File 2 | dependencies: 3 | test_utils: 4 | path: ${IDF_PATH}/tools/unit-test-app/components/test_utils 5 | test_driver_utils: 6 | path: ${IDF_PATH}/components/driver/test_apps/components/test_driver_utils 7 | ESP32_Display_Panel: 8 | version: "*" 9 | override_path: "../../../../../ESP32_Display_Panel" 10 | lvgl/lvgl: 11 | version: "^8" 12 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/partitions.csv: -------------------------------------------------------------------------------- 1 | # Name, Type, SubType, Offset, Size, Flags 2 | # Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap 3 | nvs, data, nvs, , 0x6000, 4 | phy_init, data, phy, , 0x1000, 5 | factory, app, factory, , 3M, 6 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_C3_LCDKIT: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32c3" 2 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 3 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 4 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 5 | CONFIG_BOARD_ESPRESSIF_ESP32_C3_LCDKIT=y 6 | 7 | CONFIG_LV_COLOR_16_SWAP=y 8 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32p4" 2 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 3 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 4 | CONFIG_BOARD_ESPRESSIF_ESP32_P4_FUNCTION_EV_BOARD=y 5 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_BOX_3: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 3 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_BOX_3=y 5 | CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y 6 | 7 | CONFIG_SPIRAM_MODE_OCT=y 8 | 9 | CONFIG_LV_COLOR_16_SWAP=y 10 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 3 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_2_V1_5=y 5 | 6 | CONFIG_SPIRAM_MODE_OCT=y 7 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.ci.BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5: -------------------------------------------------------------------------------- 1 | CONFIG_IDF_TARGET="esp32s3" 2 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 3 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 4 | CONFIG_BOARD_ESPRESSIF_ESP32_S3_LCD_EV_BOARD_V1_5=y 5 | 6 | CONFIG_SPIRAM_MODE_OCT=y 7 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.defaults: -------------------------------------------------------------------------------- 1 | CONFIG_ESP_TASK_WDT_EN=n 2 | CONFIG_FREERTOS_HZ=1000 3 | CONFIG_COMPILER_CXX_EXCEPTIONS=y 4 | 5 | CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y 6 | CONFIG_PARTITION_TABLE_CUSTOM=y 7 | 8 | CONFIG_ESP_PANEL_BOARD_DEFAULT_USE_SUPPORTED=y 9 | CONFIG_ESP_PANEL_BOARD_MANUFACTURER_ALL=y 10 | 11 | CONFIG_LV_USE_LOG=y 12 | CONFIG_LV_LOG_PRINTF=y 13 | # Use these two config will lead memory leak due to `lv_deinit()` will not work 14 | # CONFIG_LV_MEM_CUSTOM=y 15 | # CONFIG_LV_MEMCPY_MEMSET_STD=y 16 | CONFIG_LV_MEM_SIZE_KILOBYTES=64 17 | CONFIG_LV_USE_PERF_MONITOR=y 18 | CONFIG_LV_FONT_MONTSERRAT_12=y 19 | CONFIG_LV_FONT_MONTSERRAT_16=y 20 | CONFIG_LV_FONT_MONTSERRAT_18=y 21 | CONFIG_LV_FONT_MONTSERRAT_20=y 22 | CONFIG_LV_FONT_MONTSERRAT_22=y 23 | CONFIG_LV_FONT_MONTSERRAT_24=y 24 | CONFIG_LV_FONT_MONTSERRAT_26=y 25 | CONFIG_LV_FONT_MONTSERRAT_28=y 26 | CONFIG_LV_FONT_MONTSERRAT_30=y 27 | CONFIG_LV_FONT_MONTSERRAT_32=y 28 | CONFIG_LV_FONT_MONTSERRAT_34=y 29 | CONFIG_LV_USE_DEMO_WIDGETS=y 30 | CONFIG_LV_USE_DEMO_KEYPAD_AND_ENCODER=y 31 | CONFIG_LV_USE_DEMO_BENCHMARK=y 32 | CONFIG_LV_USE_DEMO_STRESS=y 33 | CONFIG_LV_USE_DEMO_MUSIC=y 34 | CONFIG_LV_DEMO_MUSIC_AUTO_PLAY=y 35 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.defaults.esp32p4: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_MODE_HEX=y 5 | CONFIG_SPIRAM_SPEED_200M=y 6 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 7 | 8 | CONFIG_IDF_EXPERIMENTAL_FEATURES=y 9 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.defaults.esp32s3: -------------------------------------------------------------------------------- 1 | CONFIG_COMPILER_OPTIMIZATION_PERF=y 2 | 3 | CONFIG_SPIRAM=y 4 | CONFIG_SPIRAM_SPEED_80M=y 5 | # Enable the XIP-PSRAM feature, so the ext-mem cache won't be disabled when SPI1 is operating the main flash 6 | # For v5.2 and below 7 | CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y 8 | CONFIG_SPIRAM_RODATA=y 9 | # For v5.3 and above 10 | CONFIG_SPIRAM_XIP_FROM_PSRAM=y 11 | 12 | # Used in conjunction with "RGB Bounce Buffer" 13 | CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y 14 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.test.avoid_mode_1: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_AVOID_TEARING_MODE_1=y 2 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.test.avoid_mode_2: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_AVOID_TEARING_MODE_2=y 2 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.test.avoid_mode_3: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_AVOID_TEARING_MODE_3=y 2 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.test.rotation_180: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_ROTATION_DEGREE_180=y 2 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.test.rotation_270: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_ROTATION_DEGREE_270=y 2 | -------------------------------------------------------------------------------- /test_apps/gui/lvgl_v8_port/sdkconfig.test.rotation_90: -------------------------------------------------------------------------------- 1 | CONFIG_LVGL_PORT_ROTATION_DEGREE_90=y 2 | -------------------------------------------------------------------------------- /tools/executable-list.txt: -------------------------------------------------------------------------------- 1 | .gitlab/tools/check_readme_links.py 2 | .gitlab/tools/push_to_github.sh 3 | 4 | tools/check_executables.py 5 | tools/check_file_version.py 6 | tools/check_lib_versions.sh 7 | tools/sync_conf_files.py 8 | --------------------------------------------------------------------------------