/* * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ /** * @file * @brief BSP LCD * * This file offers API for basic LCD control. * It is useful for users who want to use the LCD without the default Graphical Library LVGL. * * For standard LCD initialization with LVGL graphical library, you can call all-in-one function bsp_display_start(). */ #pragma once #include "esp_lcd_types.h" /* LCD color formats */ #define ESP_LCD_COLOR_FORMAT_RGB565 (1) #define ESP_LCD_COLOR_FORMAT_RGB888 (2) /* LCD display color format */ #define BSP_LCD_COLOR_FORMAT (ESP_LCD_COLOR_FORMAT_RGB565) /* LCD display color bytes endianness */ #define BSP_LCD_BIGENDIAN (1) /* LCD display color bits */ #define BSP_LCD_BITS_PER_PIXEL (16) /* LCD display color space */ #define BSP_LCD_COLOR_SPACE (ESP_LCD_COLOR_SPACE_RGB) /* LCD definition */ #define BSP_LCD_H_RES (360) #define BSP_LCD_V_RES (360) #ifdef __cplusplus extern "C" { #endif /** * @brief BSP display configuration structure * */ typedef struct { int max_transfer_sz; /*!< Maximum transfer size, in bytes. */ } bsp_display_config_t; /** * @brief Create new display panel * * For maximum flexibility, this function performs only reset and initialization of the display. * You must turn on the display explicitly by calling esp_lcd_panel_disp_on_off(). * The display's backlight is not turned on either. You can use bsp_display_backlight_on/off(), * bsp_display_brightness_set() (on supported boards) or implement your own backlight control. * * If you want to free resources allocated by this function, you can use esp_lcd API, ie.: * * \code{.c} * esp_lcd_panel_del(panel); * esp_lcd_panel_io_del(io); * spi_bus_free(spi_num_from_configuration); * \endcode * * @param[in] config display configuration * @param[out] ret_panel esp_lcd panel handle * @param[out] ret_io esp_lcd IO handle * @return * - ESP_OK On success * - Else esp_lcd failure */ esp_err_t bsp_display_new(const bsp_display_config_t *config, esp_lcd_panel_handle_t *ret_panel, esp_lcd_panel_io_handle_t *ret_io); /** * @brief Set display's brightness * * Brightness is controlled with PWM signal to a pin controlling backlight. * Display must be already initialized by calling bsp_display_new() * * @param[in] brightness_percent Brightness in [%] * @return * - ESP_OK On success * - ESP_ERR_INVALID_ARG Parameter error */ esp_err_t bsp_display_brightness_set(int brightness_percent); /** * @brief Turn on display backlight * * Display must be already initialized by calling bsp_display_new() * * @return * - ESP_OK On success * - ESP_ERR_INVALID_ARG Parameter error */ esp_err_t bsp_display_backlight_on(void); /** * @brief Turn off display backlight * * Display must be already initialized by calling bsp_display_new() * * @return * - ESP_OK On success * - ESP_ERR_INVALID_ARG Parameter error */ esp_err_t bsp_display_backlight_off(void); #ifdef __cplusplus } #endif