添加热敏打印机调试功能

This commit is contained in:
admin
2026-02-27 16:39:54 +08:00
parent 2b6bcc83dc
commit 46a800c499
10 changed files with 951 additions and 35 deletions

View File

@@ -15,6 +15,12 @@ static esp_err_t unsupported_for_direct(char *err, size_t err_len, const char *o
return ESP_ERR_NOT_SUPPORTED;
}
static void write_err(char *err, size_t err_len, const char *msg) {
if (err != NULL && err_len > 0) {
snprintf(err, err_len, "%s", msg);
}
}
esp_err_t printer_protocol_gap_move(uint32_t timeout_ms, char *err, size_t err_len) {
if (is_direct_backend()) {
return platform_direct_printer_gap_move(timeout_ms, err, err_len);
@@ -343,6 +349,68 @@ esp_err_t printer_protocol_ota_get_version(printer_ota_version_t *out_version,
return ESP_OK;
}
esp_err_t printer_protocol_get_direct_debug_config(printer_direct_debug_config_t *out_config,
char *err,
size_t err_len) {
if (out_config == NULL) {
write_err(err, err_len, "invalid args");
return ESP_ERR_INVALID_ARG;
}
if (!runtime_policy_direct_printer_enabled()) {
write_err(err, err_len, "direct backend disabled");
return ESP_ERR_NOT_SUPPORTED;
}
platform_direct_debug_config_t cfg = {0};
esp_err_t rc = platform_direct_printer_get_debug_config(&cfg);
if (rc != ESP_OK) {
write_err(err, err_len, "get direct debug config failed");
return rc;
}
out_config->shift_clock_high_us = cfg.shift_clock_high_us;
out_config->shift_clock_low_us = cfg.shift_clock_low_us;
out_config->latch_pulse_us = cfg.latch_pulse_us;
out_config->strobe_active_high = cfg.strobe_active_high;
out_config->boost_active_high = cfg.boost_active_high;
out_config->override_strobe_on_us = cfg.override_strobe_on_us;
out_config->override_strobe_interval_us = cfg.override_strobe_interval_us;
out_config->override_motor_step_us = cfg.override_motor_step_us;
out_config->override_steps_per_line = cfg.override_steps_per_line;
return ESP_OK;
}
esp_err_t printer_protocol_set_direct_debug_config(const printer_direct_debug_config_t *config,
bool reset_defaults,
char *err,
size_t err_len) {
if (config == NULL && !reset_defaults) {
write_err(err, err_len, "invalid args");
return ESP_ERR_INVALID_ARG;
}
if (!runtime_policy_direct_printer_enabled()) {
write_err(err, err_len, "direct backend disabled");
return ESP_ERR_NOT_SUPPORTED;
}
platform_direct_debug_config_t cfg = {0};
platform_direct_debug_config_t *pcfg = NULL;
if (config != NULL) {
cfg.shift_clock_high_us = config->shift_clock_high_us;
cfg.shift_clock_low_us = config->shift_clock_low_us;
cfg.latch_pulse_us = config->latch_pulse_us;
cfg.strobe_active_high = config->strobe_active_high;
cfg.boost_active_high = config->boost_active_high;
cfg.override_strobe_on_us = config->override_strobe_on_us;
cfg.override_strobe_interval_us = config->override_strobe_interval_us;
cfg.override_motor_step_us = config->override_motor_step_us;
cfg.override_steps_per_line = config->override_steps_per_line;
pcfg = &cfg;
}
return platform_direct_printer_set_debug_config(pcfg, reset_defaults, err, err_len);
}
const char *printer_protocol_job_state_str(print_job_state_t state) {
switch (state) {
case PRINT_JOB_STATE_NONE: