|
|
|
@ -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
|
|
|
|
|