删除了多余的屏幕操控任务

This commit is contained in:
CSBOOK\44744
2026-06-25 23:31:16 +08:00
parent 3993bf962f
commit 82eae93513
5 changed files with 0 additions and 208 deletions
@@ -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");
-1
View File
@@ -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.
@@ -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);
-174
View File
@@ -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);
@@ -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();