refactor(printer): remove controller residue and coex hooks

- rename printer protocol helpers to driver-centric names\n- remove image download coex preference code and config\n- drop esp_coex dependency from domain\n- remove unused set_black helper to keep build warning-free
This commit is contained in:
admin
2026-03-01 15:07:13 +08:00
parent 742cff63bb
commit 4f574fb65c
7 changed files with 12 additions and 65 deletions

View File

@@ -29,7 +29,6 @@ idf_component_register(
espressif__libpng
json
mbedtls
esp_coex
EMBED_FILES
"assets/fonts/cn16_index.bin"
"assets/fonts/cn16_glyphs.bin"

View File

@@ -6,7 +6,6 @@
#include <string.h>
#include "cJSON.h"
#include "esp_coexist.h"
#include "esp_crt_bundle.h"
#include "esp_heap_caps.h"
#include "esp_http_client.h"
@@ -80,36 +79,6 @@ static SemaphoreHandle_t s_prewarm_lock;
static bool s_prewarm_running;
static char s_last_oss_origin[160] = "https://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/";
static bool image_generation_boost_coex_for_download(void) {
#if CONFIG_ESP_COEX_SW_COEXIST_ENABLE && CONFIG_TQ_Z_IMAGE_COEX_PREFER_WIFI_DURING_DOWNLOAD
esp_err_t rc = esp_coex_preference_set(ESP_COEX_PREFER_WIFI);
if (rc != ESP_OK) {
ESP_LOGW(TAG, "failed to prefer Wi-Fi coexist mode, rc=0x%x", (unsigned)rc);
return false;
}
ESP_LOGI(TAG, "coexist prefer Wi-Fi enabled for image download");
return true;
#else
return false;
#endif
}
static void image_generation_restore_coex_after_download(bool boosted) {
#if CONFIG_ESP_COEX_SW_COEXIST_ENABLE && CONFIG_TQ_Z_IMAGE_COEX_PREFER_WIFI_DURING_DOWNLOAD
if (!boosted) {
return;
}
esp_err_t rc = esp_coex_preference_set(ESP_COEX_PREFER_BALANCE);
if (rc != ESP_OK) {
ESP_LOGW(TAG, "failed to restore coexist balance mode, rc=0x%x", (unsigned)rc);
return;
}
ESP_LOGI(TAG, "coexist preference restored to balance");
#else
(void)boosted;
#endif
}
static void image_generation_fill_err(char *err, size_t err_len, const char *msg) {
if (err != NULL && err_len > 0) {
snprintf(err, err_len, "%s", msg != NULL ? msg : "unknown error");
@@ -791,7 +760,6 @@ static esp_err_t image_generation_download_png(image_generation_result_t *out_re
char *err,
size_t err_len) {
ESP_LOGI(TAG, "generated image download start, timeout_ms=%u", (unsigned)timeout_ms);
bool coex_boosted = image_generation_boost_coex_for_download();
esp_http_client_config_t config = {
.url = out_result->image_url,
@@ -822,7 +790,6 @@ static esp_err_t image_generation_download_png(image_generation_result_t *out_re
(unsigned)rc,
(err != NULL && err[0] != '\0') ? err : "download failed");
bytes_buffer_free(&resp);
image_generation_restore_coex_after_download(coex_boosted);
return rc;
}
@@ -831,7 +798,6 @@ static esp_err_t image_generation_download_png(image_generation_result_t *out_re
if (rc != ESP_OK) {
bytes_buffer_free(&resp);
image_generation_fill_err(err, err_len, "image download failed");
image_generation_restore_coex_after_download(coex_boosted);
return ESP_FAIL;
}
extract_remote_error_message((const char *)resp.data, http_status, err, err_len);
@@ -840,7 +806,6 @@ static esp_err_t image_generation_download_png(image_generation_result_t *out_re
http_status,
(err != NULL && err[0] != '\0') ? err : "image download failed");
bytes_buffer_free(&resp);
image_generation_restore_coex_after_download(coex_boosted);
return ESP_FAIL;
}
@@ -851,14 +816,12 @@ static esp_err_t image_generation_download_png(image_generation_result_t *out_re
bytes_buffer_free(&resp);
image_generation_fill_err(err, err_len, "downloaded image is not png");
ESP_LOGW(TAG, "generated image download invalid png signature");
image_generation_restore_coex_after_download(coex_boosted);
return ESP_FAIL;
}
out_result->png = resp.data;
out_result->png_len = resp.len;
ESP_LOGI(TAG, "generated image download done, png_bytes=%u", (unsigned)out_result->png_len);
image_generation_restore_coex_after_download(coex_boosted);
return ESP_OK;
}

View File

@@ -42,11 +42,11 @@ static const char *TAG = "printer_protocol";
#define PRINT_WORKER_CORE_ID 1
#endif
static esp_err_t ensure_direct_backend_ready(void) {
static esp_err_t ensure_printer_driver_ready(void) {
return platform_printer_init();
}
static void refresh_direct_status_locked(void) {
static void refresh_printer_status_locked(void) {
platform_printer_sensors_t sensors = {0};
if (platform_printer_get_sensors(&sensors) == ESP_OK) {
s_status.has_paper = sensors.has_paper;
@@ -224,7 +224,7 @@ static void status_poll_task(void *arg) {
}
if (can_poll && xSemaphoreTake(s_mutex, pdMS_TO_TICKS(100)) == pdTRUE) {
refresh_direct_status_locked();
refresh_printer_status_locked();
xSemaphoreGive(s_mutex);
}
@@ -287,7 +287,7 @@ esp_err_t printer_protocol_init(void) {
s_protocol_initialized = true;
s_protocol_stopping = false;
esp_err_t err = ensure_direct_backend_ready();
esp_err_t err = ensure_printer_driver_ready();
if (err != ESP_OK) {
s_protocol_initialized = false;
destroy_runtime_objects();
@@ -295,7 +295,7 @@ esp_err_t printer_protocol_init(void) {
}
if (xSemaphoreTake(s_mutex, pdMS_TO_TICKS(200)) == pdTRUE) {
refresh_direct_status_locked();
refresh_printer_status_locked();
xSemaphoreGive(s_mutex);
}
ESP_LOGI(TAG, "printer driver ready at startup");

View File

@@ -63,7 +63,7 @@ static bool precheck_printer_ready(bool ignore_precheck, char *err, size_t err_l
return true;
}
static bool run_print_job_direct(job_slot_t *job) {
static bool run_print_job_printer_driver(job_slot_t *job) {
char check_err[96];
if (!precheck_printer_ready(job->ignore_precheck, check_err, sizeof(check_err))) {
snprintf(job->error, sizeof(job->error), "%s", check_err);
@@ -89,11 +89,11 @@ static bool run_print_job_direct(job_slot_t *job) {
xSemaphoreGive(s_mutex);
}
char direct_err[96] = {0};
esp_err_t rc = platform_printer_print(&req, direct_err, sizeof(direct_err));
char print_err[96] = {0};
esp_err_t rc = platform_printer_print(&req, print_err, sizeof(print_err));
if (rc != ESP_OK) {
if (direct_err[0] != 0) {
snprintf(job->error, sizeof(job->error), "%s", direct_err);
if (print_err[0] != 0) {
snprintf(job->error, sizeof(job->error), "%s", print_err);
} else if (rc == ESP_ERR_TIMEOUT) {
snprintf(job->error, sizeof(job->error), "print timeout");
} else if (rc == ESP_ERR_INVALID_STATE && job->cancel_requested) {
@@ -113,7 +113,7 @@ static bool run_print_job_direct(job_slot_t *job) {
static bool run_print_job(job_slot_t *job) {
ESP_LOGI(TAG,
"job %u print start, mode=printer, raster_bytes=%u, size=%ux%u, density=%s, ignore_precheck=%d",
"job %u print start, raster_bytes=%u, size=%ux%u, density=%s, ignore_precheck=%d",
(unsigned)job->id,
(unsigned)job->data_len,
(unsigned)job->width,
@@ -126,7 +126,7 @@ static bool run_print_job(job_slot_t *job) {
return false;
}
return run_print_job_direct(job);
return run_print_job_printer_driver(job);
}
void printer_protocol_worker_task(void *arg) {

View File

@@ -15,16 +15,6 @@
static const uint8_t s_bit_mask[8] = {0x80u, 0x40u, 0x20u, 0x10u, 0x08u, 0x04u, 0x02u, 0x01u};
static void set_black(uint8_t *buf, uint16_t width, uint16_t x, uint16_t y) {
if (x >= width) {
return;
}
uint16_t bpr = width / 8;
size_t idx = (size_t)y * bpr + (x / 8);
uint8_t bit = (uint8_t)(7 - (x % 8));
buf[idx] |= (uint8_t)(1u << bit);
}
static void *alloc_prefer_psram(size_t size) {
void *ptr = heap_caps_malloc(size, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
if (ptr == NULL) {

View File

@@ -192,10 +192,6 @@ config TQ_Z_IMAGE_HTTP_READ_CHUNK_BYTES
range 4096 32768
default 16384
config TQ_Z_IMAGE_COEX_PREFER_WIFI_DURING_DOWNLOAD
bool "Prefer Wi-Fi RF during image download"
default y
config TQ_VOICE_API_KEY
string "Voice API Key for DashScope WebSocket (optional)"
default "sk-7a50eca6856d4afb968ac3bf512f6d1b"

View File

@@ -21,7 +21,6 @@ CONFIG_TQ_WIFI_PROV_SOFTAP_MAX_CONN=4
CONFIG_TQ_Z_IMAGE_DEFAULT_SIZE="512*768"
CONFIG_TQ_Z_IMAGE_HTTP_BUFFER_BYTES=16384
CONFIG_TQ_Z_IMAGE_HTTP_READ_CHUNK_BYTES=16384
CONFIG_TQ_Z_IMAGE_COEX_PREFER_WIFI_DURING_DOWNLOAD=y
# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set
CONFIG_PARTITION_TABLE_CUSTOM=y
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"