From 82eae935138c1a00c31db75ab22086d55ab5261f Mon Sep 17 00:00:00 2001 From: "CSBOOK\\44744" <447449914@qq.com> Date: Thu, 25 Jun 2026 23:31:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BA=86=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=9A=84=E5=B1=8F=E5=B9=95=E6=93=8D=E6=8E=A7=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../runtime/app_composition_default_runtime.c | 27 --- components/platform/include/platform.h | 1 - components/platform/internal/lcd_direct.h | 1 - components/platform/src/lcd_direct.c | 174 ------------------ .../src/runtime/platform_lcd_runtime.c | 5 - 5 files changed, 208 deletions(-) diff --git a/components/app_composition/src/runtime/app_composition_default_runtime.c b/components/app_composition/src/runtime/app_composition_default_runtime.c index 6817f65..effb0e7 100644 --- a/components/app_composition/src/runtime/app_composition_default_runtime.c +++ b/components/app_composition/src/runtime/app_composition_default_runtime.c @@ -31,7 +31,6 @@ typedef enum { APP_COMPOSITION_BOOT_STAGE_AUDIO_RELEASE, APP_COMPOSITION_BOOT_STAGE_LCD_DEVICE, APP_COMPOSITION_BOOT_STAGE_LCD_RENDER_LOOP, - APP_COMPOSITION_BOOT_STAGE_BOOT_EXPRESSION, APP_COMPOSITION_BOOT_STAGE_PLATFORM_DOMAIN, APP_COMPOSITION_BOOT_STAGE_TURNTABLE_CALIBRATION, APP_COMPOSITION_BOOT_STAGE_STORAGE_PREPARE, @@ -107,21 +106,11 @@ static esp_err_t app_composition_run_plan_a_boot_sequence(void) lcd_worker_err); if (lcd_worker_err != ESP_OK) { lcd_ready = false; - app_composition_log_stage_skipped(APP_COMPOSITION_BOOT_STAGE_BOOT_EXPRESSION, - "boot_expression", - "lcd_render_worker_unavailable"); - } else { - app_composition_log_stage(APP_COMPOSITION_BOOT_STAGE_BOOT_EXPRESSION, - "boot_expression", - "deferred_until_runtime_worker_started"); } } else { app_composition_log_stage_skipped(APP_COMPOSITION_BOOT_STAGE_LCD_RENDER_LOOP, "lcd_render_loop", "lcd_device_unavailable"); - app_composition_log_stage_skipped(APP_COMPOSITION_BOOT_STAGE_BOOT_EXPRESSION, - "boot_expression", - "lcd_device_unavailable"); } #else app_composition_log_stage_skipped(APP_COMPOSITION_BOOT_STAGE_LCD_DEVICE, @@ -130,9 +119,6 @@ static esp_err_t app_composition_run_plan_a_boot_sequence(void) app_composition_log_stage_skipped(APP_COMPOSITION_BOOT_STAGE_LCD_RENDER_LOOP, "lcd_render_loop", "disabled_by_config"); - app_composition_log_stage_skipped(APP_COMPOSITION_BOOT_STAGE_BOOT_EXPRESSION, - "boot_expression", - "disabled_by_config"); #endif app_composition_log_stage(APP_COMPOSITION_BOOT_STAGE_PLATFORM_DOMAIN, @@ -189,19 +175,6 @@ static esp_err_t app_composition_run_plan_a_boot_sequence(void) return err; } -#if CONFIG_TQ_SCREEN_ENABLE - if (lcd_ready) { - vTaskDelay(pdMS_TO_TICKS(200)); - app_composition_log_stage(APP_COMPOSITION_BOOT_STAGE_BOOT_EXPRESSION, - "boot_expression", - "control_plane_request_boot_expression"); - esp_err_t expression_err = control_plane_request_boot_expression(); - if (expression_err != ESP_OK) { - ESP_LOGW(TAG, "Boot expression request failed: %s", esp_err_to_name(expression_err)); - } - } -#endif - app_composition_log_stage(APP_COMPOSITION_BOOT_STAGE_NETWORK_SERVICES, "network_services", "started_by_runtime_workers_after_readiness"); diff --git a/components/platform/include/platform.h b/components/platform/include/platform.h index 8566201..40afb08 100644 --- a/components/platform/include/platform.h +++ b/components/platform/include/platform.h @@ -322,7 +322,6 @@ esp_err_t platform_multimodal_audio_register_downstream_playback_callbacks( const platform_multimodal_downstream_playback_callbacks_t *callbacks); esp_err_t platform_init_lcd_device(void); -void platform_run_lcd_blocking_test(void); /** * @brief Start LCD render loop. diff --git a/components/platform/internal/lcd_direct.h b/components/platform/internal/lcd_direct.h index 9687faa..9b75a3e 100644 --- a/components/platform/internal/lcd_direct.h +++ b/components/platform/internal/lcd_direct.h @@ -10,7 +10,6 @@ extern "C" { #endif esp_err_t lcd_direct_init_device(void); -void lcd_direct_run_blocking_test(void); void lcd_direct_start_render_loop(void); esp_err_t lcd_direct_stop_render_loop(int timeout_ms); esp_err_t lcd_direct_request_presentation(const platform_lcd_presentation_request_t *request); diff --git a/components/platform/src/lcd_direct.c b/components/platform/src/lcd_direct.c index 2c863a7..7432686 100644 --- a/components/platform/src/lcd_direct.c +++ b/components/platform/src/lcd_direct.c @@ -31,16 +31,7 @@ #define LCD_DIRECT_PIXELS_PER_TRANSFER (LCD_DIRECT_WIDTH * LCD_DIRECT_ROWS_PER_TRANSFER) #define LCD_DIRECT_PRESENTATION_WAIT_POLL_MS 20U -#define LCD_CMD_SWRESET 0x01 -#define LCD_CMD_SLPOUT 0x11 -#define LCD_CMD_COLMOD 0x3A #define LCD_CMD_MADCTL 0x36 -#define LCD_CMD_CASET 0x2A -#define LCD_CMD_RASET 0x2B -#define LCD_CMD_RAMWR 0x2C -#define LCD_CMD_INVON 0x21 -#define LCD_CMD_INVOFF 0x20 -#define LCD_CMD_DISPON 0x29 #define LCD_CMD_RAMCTRL 0xB0 #define LCD_RAMCTRL_LE_BIT (1U << 3) @@ -79,7 +70,6 @@ static const lcd_direct_init_cmd_t s_st7789_init_cmds[] = { {0, {0}, 0xFF}, }; -static spi_device_handle_t s_spi; static esp_lcd_panel_io_handle_t s_panel_io; static esp_lcd_panel_handle_t s_panel; static SemaphoreHandle_t s_lock; @@ -103,55 +93,6 @@ static uint16_t lcd_direct_swap_color(uint16_t color) #endif } -static void lcd_direct_delay_ms(uint32_t ms) -{ - vTaskDelay(pdMS_TO_TICKS(ms)); -} - -static esp_err_t lcd_direct_spi_write(const void *data, uint32_t length) -{ - spi_transaction_t transaction = { - .length = length * 8U, - .tx_buffer = data, - }; - return spi_device_polling_transmit(s_spi, &transaction); -} - -static esp_err_t lcd_direct_write(uint8_t dc_level, uint16_t value, uint8_t length) -{ - uint8_t bytes[2] = { - (uint8_t)(value >> 8), - (uint8_t)value, - }; - const uint8_t *data = length == 1U ? &bytes[1] : bytes; - - gpio_set_level(CONFIG_TQ_SCREEN_DC_GPIO, dc_level); - return lcd_direct_spi_write(data, length); -} - -static esp_err_t lcd_direct_write_bytes(uint8_t dc_level, const uint8_t *data, uint32_t length) -{ - gpio_set_level(CONFIG_TQ_SCREEN_DC_GPIO, dc_level); - return lcd_direct_spi_write(data, length); -} - -static esp_err_t lcd_direct_set_window(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) -{ - ESP_RETURN_ON_ERROR(lcd_direct_write(0, LCD_CMD_CASET, 1), TAG, "CASET failed"); - ESP_RETURN_ON_ERROR(lcd_direct_write(1, x0, 2), TAG, "CASET x0 failed"); - ESP_RETURN_ON_ERROR(lcd_direct_write(1, x1, 2), TAG, "CASET x1 failed"); - ESP_RETURN_ON_ERROR(lcd_direct_write(0, LCD_CMD_RASET, 1), TAG, "RASET failed"); - ESP_RETURN_ON_ERROR(lcd_direct_write(1, y0, 2), TAG, "RASET y0 failed"); - ESP_RETURN_ON_ERROR(lcd_direct_write(1, y1, 2), TAG, "RASET y1 failed"); - return lcd_direct_write(0, LCD_CMD_RAMWR, 1); -} - -static esp_err_t lcd_direct_write_pixels(const void *data, uint32_t length) -{ - gpio_set_level(CONFIG_TQ_SCREEN_DC_GPIO, 1); - return lcd_direct_spi_write(data, length); -} - static esp_err_t lcd_direct_draw_rows(uint16_t row_start, uint16_t row_count) { ESP_RETURN_ON_FALSE(s_panel != NULL, ESP_ERR_INVALID_STATE, TAG, "panel is not ready"); @@ -189,35 +130,6 @@ static esp_err_t lcd_direct_gpio_init(void) return ESP_OK; } -static esp_err_t lcd_direct_spi_init(void) -{ - spi_bus_config_t bus_config = { - .mosi_io_num = CONFIG_TQ_SCREEN_SPI_MOSI_GPIO, - .miso_io_num = CONFIG_TQ_SCREEN_SPI_MISO_GPIO, - .sclk_io_num = CONFIG_TQ_SCREEN_SPI_CLK_GPIO, - .quadwp_io_num = -1, - .quadhd_io_num = -1, - .max_transfer_sz = LCD_DIRECT_WIDTH * LCD_DIRECT_ROWS_PER_TRANSFER * sizeof(uint16_t), - }; - - esp_err_t err = spi_bus_initialize(LCD_DIRECT_SPI_HOST, &bus_config, SPI_DMA_CH_AUTO); - if (err != ESP_OK && err != ESP_ERR_INVALID_STATE) { - ESP_LOGE(TAG, "spi bus init failed: %s", esp_err_to_name(err)); - return err; - } - - spi_device_interface_config_t device_config = { - .clock_speed_hz = CONFIG_TQ_SCREEN_SPI_PIXEL_CLOCK_HZ, - .mode = 0, - .spics_io_num = CONFIG_TQ_SCREEN_SPI_CS_GPIO, - .queue_size = 8, - }; - ESP_RETURN_ON_ERROR(spi_bus_add_device(LCD_DIRECT_SPI_HOST, &device_config, &s_spi), - TAG, - "spi add device failed"); - return ESP_OK; -} - static esp_err_t lcd_direct_panel_init(void) { spi_bus_config_t bus_config = { @@ -318,69 +230,6 @@ static esp_err_t lcd_direct_panel_init(void) return ESP_OK; } -static void lcd_direct_reset(void) -{ - if (CONFIG_TQ_SCREEN_RESET_PIN < 0) { - return; - } - gpio_set_level(CONFIG_TQ_SCREEN_RESET_PIN, 1); - lcd_direct_delay_ms(20); - gpio_set_level(CONFIG_TQ_SCREEN_RESET_PIN, 0); - lcd_direct_delay_ms(20); - gpio_set_level(CONFIG_TQ_SCREEN_RESET_PIN, 1); - lcd_direct_delay_ms(120); -} - -static uint8_t lcd_direct_madctl_value(void) -{ - uint8_t value = 0; - if (CONFIG_TQ_SCREEN_MIRROR_X) { - value |= 0x40; - } - if (CONFIG_TQ_SCREEN_SWAP_XY) { - value |= 0x20; - } -#if CONFIG_TQ_SCREEN_COLOR_ORDER_BGR - value |= 0x08; -#endif - return value; -} - -static esp_err_t lcd_direct_controller_init(void) -{ - ESP_RETURN_ON_ERROR(lcd_direct_write(0, LCD_CMD_SWRESET, 1), TAG, "SWRESET failed"); - lcd_direct_delay_ms(150); - - for (size_t i = 0; s_st7789_init_cmds[i].databytes != 0xFFU; ++i) { - const lcd_direct_init_cmd_t *cmd = &s_st7789_init_cmds[i]; - ESP_RETURN_ON_ERROR(lcd_direct_write(0, cmd->cmd, 1), TAG, "custom init cmd failed"); - if (cmd->databytes > 0U) { - ESP_RETURN_ON_ERROR(lcd_direct_write_bytes(1, cmd->data, cmd->databytes), - TAG, - "custom init param failed"); - } - } - - ESP_RETURN_ON_ERROR(lcd_direct_write(0, LCD_CMD_MADCTL, 1), TAG, "MADCTL failed"); - ESP_RETURN_ON_ERROR(lcd_direct_write(1, lcd_direct_madctl_value(), 1), TAG, "MADCTL param failed"); - - uint8_t ramctrl[] = {0x00, 0xF0}; -#if CONFIG_TQ_SCREEN_SWAP_COLOR_BYTES - ramctrl[1] |= LCD_RAMCTRL_LE_BIT; -#endif - ESP_RETURN_ON_ERROR(lcd_direct_write(0, LCD_CMD_RAMCTRL, 1), TAG, "RAMCTRL failed"); - ESP_RETURN_ON_ERROR(lcd_direct_write_bytes(1, ramctrl, sizeof(ramctrl)), TAG, "RAMCTRL param failed"); - - ESP_RETURN_ON_ERROR(lcd_direct_write(0, - CONFIG_TQ_SCREEN_INVERT_COLOR ? LCD_CMD_INVON : LCD_CMD_INVOFF, - 1), - TAG, - "invert command failed"); - ESP_RETURN_ON_ERROR(lcd_direct_write(0, LCD_CMD_DISPON, 1), TAG, "DISPON failed"); - lcd_direct_delay_ms(120); - return ESP_OK; -} - static uint16_t lcd_direct_color_for_row(uint16_t row, const lcd_direct_request_t *request) { uint16_t band = row / 40U; @@ -567,29 +416,6 @@ static esp_err_t lcd_direct_draw_default_image(void) return lcd_direct_draw_rle_image(lcd_direct_default_image(), icons, icon_count); } -void lcd_direct_run_blocking_test(void) -{ - if (!s_initialized) { - ESP_LOGW(TAG, "Direct LCD is not initialized, skip blocking test"); - return; - } - - ESP_LOGI(TAG, "Direct LCD blocking test started"); - lcd_direct_request_t color_test = { - .kind = PLATFORM_LCD_PRESENTATION_SLOT_REELS, - }; - esp_err_t color_err = lcd_direct_draw_test_pattern(&color_test); - ESP_LOGI(TAG, "Direct LCD color test draw result=%s", esp_err_to_name(color_err)); - lcd_direct_delay_ms(1000); - - esp_err_t image_err = lcd_direct_draw_default_image(); - ESP_LOGI(TAG, "Direct LCD default image draw result=%s", esp_err_to_name(image_err)); - - while (true) { - lcd_direct_delay_ms(1000); - } -} - static void lcd_direct_signal_completion(void) { portENTER_CRITICAL(&s_state_lock); diff --git a/components/platform/src/runtime/platform_lcd_runtime.c b/components/platform/src/runtime/platform_lcd_runtime.c index b2e47de..ef0ee2e 100644 --- a/components/platform/src/runtime/platform_lcd_runtime.c +++ b/components/platform/src/runtime/platform_lcd_runtime.c @@ -12,11 +12,6 @@ esp_err_t platform_init_lcd_device(void) return lcd_direct_init_device(); } -void platform_run_lcd_blocking_test(void) -{ - lcd_direct_run_blocking_test(); -} - void platform_start_lcd_render_loop(void) { lcd_direct_start_render_loop();