menu "Example Configuration"
    menu "Display"
        config EXAMPLE_LCD_RGB_BOUNCE_BUFFER_HEIGHT
            int "RGB Bounce buffer height"
            default 20
            help
                Height of bounce buffer. The width of the buffer is the same as that of the LCD.

        config EXAMPLE_LVGL_PORT_TASK_MAX_DELAY_MS
            int "LVGL timer task maximum delay (ms)"
            default 500
            range 2 2000  # Example range, adjust as needed
            help
            The maximum delay of the LVGL timer task, in milliseconds.

        config EXAMPLE_LVGL_PORT_TASK_MIN_DELAY_MS
            int "LVGL timer task minimum delay (ms)"
            default 5
            range 1 100  # Example range, adjust as needed
            help
            The minimum delay of the LVGL timer task, in milliseconds.

        config EXAMPLE_LVGL_PORT_TASK_PRIORITY
            int "LVGL task priority"
            default 4
            help
                The Board Support Package will create a task that will periodically handle LVGL operation in lv_timer_handler().

        config EXAMPLE_LVGL_PORT_TASK_STACK_SIZE_KB
            int "LVGL task stack size (KB)"
            default 6
            help
                Size(KB) of LVGL task stack.

        config EXAMPLE_LVGL_PORT_TASK_CORE
            int "LVGL timer task core"
            default -1
            range -1 1
            help
            The core of the LVGL timer task.
            Set to -1 to not specify the core.
            Set to 1 only if the SoCs support dual-core, otherwise set to -1 or 0.

        config EXAMPLE_LVGL_PORT_TICK
            int "LVGL tick period"
            default 2
            range 1 100
            help
                Period of LVGL tick timer.

        config EXAMPLE_LVGL_PORT_AVOID_TEAR_ENABLE
            bool "Avoid tearing effect"
            default "n"
            help
                Avoid tearing effect through LVGL buffer mode and double frame buffers of RGB LCD. This feature is only available for RGB LCD.

        choice
            depends on EXAMPLE_LVGL_PORT_AVOID_TEAR_ENABLE
            prompt "Select Avoid Tearing Mode"
            default EXAMPLE_LVGL_PORT_AVOID_TEAR_MODE_3
            config EXAMPLE_LVGL_PORT_AVOID_TEAR_MODE_1
                bool "Mode1: LCD double-buffer & LVGL full-refresh"
            config EXAMPLE_LVGL_PORT_AVOID_TEAR_MODE_2
                bool "Mode2: LCD triple-buffer & LVGL full-refresh"
            config EXAMPLE_LVGL_PORT_AVOID_TEAR_MODE_3
                bool "Mode3: LCD double-buffer & LVGL direct-mode"
            help
                The current tearing prevention mode supports both full refresh mode and direct mode. Tearing prevention mode may consume more PSRAM space
        endchoice

        config EXAMPLE_LVGL_PORT_AVOID_TEAR_MODE
            depends on EXAMPLE_LVGL_PORT_AVOID_TEAR_ENABLE
            int
            default 1 if EXAMPLE_LVGL_PORT_AVOID_TEAR_MODE_1
            default 2 if EXAMPLE_LVGL_PORT_AVOID_TEAR_MODE_2
            default 3 if EXAMPLE_LVGL_PORT_AVOID_TEAR_MODE_3

        choice
            depends on EXAMPLE_LVGL_PORT_AVOID_TEAR_ENABLE
            prompt "Select rotation"
            default EXAMPLE_LVGL_PORT_ROTATION_0
            config EXAMPLE_LVGL_PORT_ROTATION_0
                bool "Rotation 0"
            config EXAMPLE_LVGL_PORT_ROTATION_90
                bool "Rotation 90"
            config EXAMPLE_LVGL_PORT_ROTATION_180
                bool "Rotation 180"
            config EXAMPLE_LVGL_PORT_ROTATION_270
                bool "Rotation 270"
        endchoice

        config EXAMPLE_LVGL_PORT_PPA_ROTATION_ENABLE
            depends on EXAMPLE_LVGL_PORT_AVOID_TEAR_ENABLE && IDF_TARGET_ESP32P4 && !EXAMPLE_LVGL_PORT_ROTATION_0
            bool "Enable PPA Rotation"
            default n
            help
                Enable this option to use PPA (Pixel Processor Assembly) for display rotation.
                This feature allows hardware-based rotation for improved performance

        config EXAMPLE_LVGL_PORT_ROTATION_DEGREE
            int
            default 0 if EXAMPLE_LVGL_PORT_ROTATION_0
            default 90 if EXAMPLE_LVGL_PORT_ROTATION_90
            default 180 if EXAMPLE_LVGL_PORT_ROTATION_180
            default 270 if EXAMPLE_LVGL_PORT_ROTATION_270

        choice
            depends on !EXAMPLE_LVGL_PORT_AVOID_TEAR_ENABLE
            prompt "Select LVGL buffer memory capability"
            default EXAMPLE_LVGL_PORT_BUF_INTERNAL
            config EXAMPLE_LVGL_PORT_BUF_PSRAM
                bool "PSRAM memory"
            config EXAMPLE_LVGL_PORT_BUF_INTERNAL
                bool "Internal memory"
        endchoice

        config EXAMPLE_LVGL_PORT_BUF_HEIGHT
            depends on !EXAMPLE_LVGL_PORT_AVOID_TEAR_ENABLE
            int "LVGL buffer height"
            default 100
            help
                Height of LVGL buffer. The width of the buffer is the same as that of the LCD.
    endmenu
endmenu
