From 4f41aa37daf6895b0bc937c612855c78c9f54460 Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Fri, 26 Feb 2021 22:04:20 -0500 Subject: [PATCH] hiti: Fixes for the P510 series. Enable the P510, P518, and P728 series. --- README | 11 ++-- backend_hiti.c | 57 +++++++++++------- blacklist | 21 +++++++ .../{P51x_hea0qhra.bin => P51x_hea0qcra.bin} | Bin .../{P51x_hea0thra.bin => P51x_hea0tcra.bin} | Bin .../{P51x_hea1qhra.bin => P51x_hea1qcra.bin} | Bin .../{P51x_hea1thra.bin => P51x_hea1tcra.bin} | Bin .../{P51x_hea2qhra.bin => P51x_hea2qcra.bin} | Bin .../{P51x_hea2thra.bin => P51x_hea2tcra.bin} | Bin .../{P51x_hea3qhra.bin => P51x_hea3qcra.bin} | Bin .../{P51x_hea3thra.bin => P51x_hea3tcra.bin} | Bin 11 files changed, 64 insertions(+), 25 deletions(-) rename hiti_data/{P51x_hea0qhra.bin => P51x_hea0qcra.bin} (100%) rename hiti_data/{P51x_hea0thra.bin => P51x_hea0tcra.bin} (100%) rename hiti_data/{P51x_hea1qhra.bin => P51x_hea1qcra.bin} (100%) rename hiti_data/{P51x_hea1thra.bin => P51x_hea1tcra.bin} (100%) rename hiti_data/{P51x_hea2qhra.bin => P51x_hea2qcra.bin} (100%) rename hiti_data/{P51x_hea2thra.bin => P51x_hea2tcra.bin} (100%) rename hiti_data/{P51x_hea3qhra.bin => P51x_hea3qcra.bin} (100%) rename hiti_data/{P51x_hea3thra.bin => P51x_hea3tcra.bin} (100%) diff --git a/README b/README index 885ba30..d4eca25 100644 --- a/README +++ b/README @@ -78,7 +78,7 @@ HiTi P110 series HiTi P510 series HiTi M610 (not X610!) - HiTi P720L + HiTi P720L / P728L HiTi P750L HiTi P910L HiTi CS-200e @@ -1236,8 +1236,10 @@ Notes: Model IDs recognized: + hiti-p510k hiti-p510l hiti-p510s hiti-p510si + hiti-p518a hiti-p518s hiti-p520l hiti-p525l hiti-p52x - hiti-p720l hiti-p750l + hiti-p720l hiti-p728l hiti-p750l Verified supported printers: @@ -1246,13 +1248,14 @@ Notes: Theoretically supported printers (Untested) - HiTi P720L + HiTi P510 series + HiTi P518 series + HiTi P720L / P728L HiTi P750L Work-in-progress printers HiTi P110 series - HiTi P510 series This backend supports additional commands: diff --git a/backend_hiti.c b/backend_hiti.c index 52d32f4..8ddc5d3 100644 --- a/backend_hiti.c +++ b/backend_hiti.c @@ -236,9 +236,9 @@ struct hiti_heattable { uint8_t pad1[30]; uint8_t c[2050]; uint8_t pad2[30]; - uint8_t o[2050]; + uint8_t o[2050]; /* Overcoat Glossy */ uint8_t pad3[30]; - uint8_t om[2050]; + uint8_t om[2050]; /* Overcoat Matte */ uint8_t pad4[30]; uint8_t cvd[582]; uint8_t pad5[26]; @@ -1164,7 +1164,7 @@ static int hiti_send_heat_data(struct hiti_ctx *ctx, uint8_t mode, uint8_t matte switch (ctx->conn->type) { case P_HITI_51X: - if (!mediatype) { + if (!mediatype) { /* DNP media */ if (mode) { fname = "P51x_heatqhra.bin"; break; @@ -1172,37 +1172,37 @@ static int hiti_send_heat_data(struct hiti_ctx *ctx, uint8_t mode, uint8_t matte fname = "P51x_heatthra.bin"; break; } - } else { + } else { /* CHC media */ if (mode) { switch(mediaver) { case 0: - fname = "P51x_hea0qhra.bin"; + fname = "P51x_hea0qcra.bin"; break; case 1: - fname = "P51x_hea1qhra.bin"; + fname = "P51x_hea1qcra.bin"; break; case 2: - fname = "P51x_hea2qhra.bin"; + fname = "P51x_hea2qcra.bin"; break; case 3: default: - fname = "P51x_hea3qhra.bin"; + fname = "P51x_hea3qcra.bin"; break; } } else { switch(mediaver) { case 0: - fname = "P51x_hea0thra.bin"; + fname = "P51x_hea0tcra.bin"; break; case 1: - fname = "P51x_hea1thra.bin"; + fname = "P51x_hea1tcra.bin"; break; case 2: - fname = "P51x_hea2thra.bin"; + fname = "P51x_hea2tcra.bin"; break; case 3: default: - fname = "P51x_hea3thra.bin"; + fname = "P51x_hea3tcra.bin"; break; } } @@ -1493,6 +1493,13 @@ static int hiti_read_parse(void *vctx, const void **vjob, int data_fd, int copie /* Sanity check printer type vs job type */ switch(ctx->conn->type) { + case P_HITI_51X: + if (job->hdr.model != 510) { + ERROR("Unrecognized header!\n"); + hiti_cleanup_job(job); + return CUPS_BACKEND_CANCEL; + } + break; case P_HITI_52X: if (job->hdr.model != 520) { ERROR("Unrecognized header!\n"); @@ -1789,10 +1796,14 @@ static int hiti_main_loop(void *vctx, const void *vjob) uint8_t chs[2] = { 0, 1 }; /* Fixed..? */ - resplen = 0; - ret = hiti_docmd(ctx, CMD_EFD_CHS, chs, sizeof(chs), &resplen); - if (ret) - return CUPS_BACKEND_FAILED; + if (ctx->conn->type == P_HITI_51X) { + ret = hiti_send_heat_data(ctx, job->hdr.quality, job->hdr.overcoat); + } else { + resplen = 0; + ret = hiti_docmd(ctx, CMD_EFD_CHS, chs, sizeof(chs), &resplen); + if (ret) + return CUPS_BACKEND_FAILED; + } ret = hiti_docmd(ctx, CMD_EPC_SP, NULL, 0, &resplen); if (ret) @@ -1801,9 +1812,6 @@ static int hiti_main_loop(void *vctx, const void *vjob) // XXX send ESD_SHTPC w/ heat table. Unknown. // CMD_ESD_SHPTC // Heating Parameters & Tone Curve (~7Kb, seen on windows..) /* Send heat table data */ - if (ctx->conn->type == P_HITI_51X) { - ret = hiti_send_heat_data(ctx, job->hdr.quality, job->hdr.overcoat); - } resend_y: INFO("Sending yellow plane\n"); @@ -2336,7 +2344,7 @@ static const char *hiti_prefixes[] = { const struct dyesub_backend hiti_backend = { .name = "HiTi Photo Printers", - .version = "0.22", + .version = "0.23", .uri_prefixes = hiti_prefixes, .cmdline_usage = hiti_cmdline, .cmdline_arg = hiti_cmdline_arg, @@ -2349,9 +2357,16 @@ const struct dyesub_backend hiti_backend = { .query_markers = hiti_query_markers, .query_stats = hiti_query_stats, .devices = { + { USB_VID_HITI, USB_PID_HITI_P510K, P_HITI_51X, NULL, "hiti-p510k"}, + { USB_VID_HITI, USB_PID_HITI_P510L, P_HITI_51X, NULL, "hiti-p510l"}, + { USB_VID_HITI, USB_PID_HITI_P518A, P_HITI_51X, NULL, "hiti-p518a"}, + { USB_VID_HITI, USB_PID_HITI_P510S, P_HITI_51X, NULL, "hiti-p510s"}, + { USB_VID_HITI, USB_PID_HITI_P510SI, P_HITI_51X, NULL, "hiti-p510si"}, + { USB_VID_HITI, USB_PID_HITI_P518S, P_HITI_51X, NULL, "hiti-p518s"}, { USB_VID_HITI, USB_PID_HITI_P52X, P_HITI_52X, NULL, "hiti-p520l"}, { USB_VID_HITI, USB_PID_HITI_P52X, P_HITI_52X, NULL, "hiti-p525l"}, /* Duplicate */ { USB_VID_HITI, USB_PID_HITI_P720, P_HITI_720, NULL, "hiti-p720l"}, + { USB_VID_HITI, USB_PID_HITI_P728, P_HITI_720, NULL, "hiti-p728l"}, { USB_VID_HITI, USB_PID_HITI_P750, P_HITI_750, NULL, "hiti-p750l"}, { 0, 0, 0, NULL, NULL} } @@ -2382,7 +2397,7 @@ const struct dyesub_backend hiti_backend = { * Use external "Cube LUT" implementation? - Commands 8008, 8011, EST_SEHT, ESD_SHTPC, RDC_ROC, PCC_STP, CMD_EDM_* - Test with P525, P720, P750 - - Further investigation into P110 & P510 series + - Further investigation into P110 series - Start research into P530D, X610 - Incorporate changes for CS-series card printers - More "Matrix table" decoding work diff --git a/blacklist b/blacklist index 74bd4c3..a0da2f9 100644 --- a/blacklist +++ b/blacklist @@ -274,12 +274,33 @@ # Fujifilm ASK-300 0x04cb 0x5006 blacklist +# HiTi P510K +0x0d16 0x0007 blacklist + +# HiTi P510L +0x0d16 0x000b blacklist + +# HiTi P518A +0x0d16 0x000d blacklist + +# HiTi P510S +0x0d16 0x010e blacklist + +# HiTi P510Si +0x0d16 0x0111 blacklist + +# HiTi P518S +0x0d16 0x0112 blacklist + # HiTi P520L / P525L 0x0d16 0x0502 blacklist # HiTi P720L 0x0d16 0x0009 blacklist +# HiTi P728L +0x0d16 0x000a blacklist + # HiTi P750L 0x0d16 0x0501 blacklist diff --git a/hiti_data/P51x_hea0qhra.bin b/hiti_data/P51x_hea0qcra.bin similarity index 100% rename from hiti_data/P51x_hea0qhra.bin rename to hiti_data/P51x_hea0qcra.bin diff --git a/hiti_data/P51x_hea0thra.bin b/hiti_data/P51x_hea0tcra.bin similarity index 100% rename from hiti_data/P51x_hea0thra.bin rename to hiti_data/P51x_hea0tcra.bin diff --git a/hiti_data/P51x_hea1qhra.bin b/hiti_data/P51x_hea1qcra.bin similarity index 100% rename from hiti_data/P51x_hea1qhra.bin rename to hiti_data/P51x_hea1qcra.bin diff --git a/hiti_data/P51x_hea1thra.bin b/hiti_data/P51x_hea1tcra.bin similarity index 100% rename from hiti_data/P51x_hea1thra.bin rename to hiti_data/P51x_hea1tcra.bin diff --git a/hiti_data/P51x_hea2qhra.bin b/hiti_data/P51x_hea2qcra.bin similarity index 100% rename from hiti_data/P51x_hea2qhra.bin rename to hiti_data/P51x_hea2qcra.bin diff --git a/hiti_data/P51x_hea2thra.bin b/hiti_data/P51x_hea2tcra.bin similarity index 100% rename from hiti_data/P51x_hea2thra.bin rename to hiti_data/P51x_hea2tcra.bin diff --git a/hiti_data/P51x_hea3qhra.bin b/hiti_data/P51x_hea3qcra.bin similarity index 100% rename from hiti_data/P51x_hea3qhra.bin rename to hiti_data/P51x_hea3qcra.bin diff --git a/hiti_data/P51x_hea3thra.bin b/hiti_data/P51x_hea3tcra.bin similarity index 100% rename from hiti_data/P51x_hea3thra.bin rename to hiti_data/P51x_hea3tcra.bin