hiti: Initial support for P320 series. Just detection and tables.

This is where things will stand until I get one in my hands.
This commit is contained in:
Solomon Peachy 2023-06-05 22:26:09 -04:00
parent 7a6c82828c
commit dd64a8f78f
10 changed files with 42 additions and 7 deletions

4
README
View File

@ -88,6 +88,7 @@
Fujifilm ASK-500
HiTi M610 (not X610!)
HiTi P310L / P310W
HiTi P322W
HiTi P530D
HiTi P710L
HiTi P720L / P728L
@ -1274,7 +1275,7 @@ Notes:
Model IDs recognized:
hiti-p310l hiti-p310w hiti-p461
hiti-p310l hiti-p310w hiti-p320w hiti-p461
hiti-p510k hiti-p510l hiti-p510s hiti-p510si
hiti-p518a hiti-p518s
hiti-p520l hiti-p525l hiti-p52x hiti-p530
@ -1299,6 +1300,7 @@ Notes:
HiTi CS2x0 series
HiTi P310 series
HiTi P32x series
HiTi P530D
This backend supports additional commands:

View File

@ -118,6 +118,7 @@ enum {
P_FUJI_ASK500,
P_HITI_CS2XX,
P_HITI_310,
P_HITI_320,
P_HITI_461,
P_HITI_51X,
P_HITI_520,

View File

@ -323,7 +323,8 @@ struct hiti_heattable_hdr_v2 {
#define HEATTABLE_V2_MAX_SIZE (1024*128)
#define HEATTABLE_S_SIZE 4167
#define HEATTABLE_S_SIZE 4167 /* P461, P310, and some P32x */
#define HEATTABLE_S2_SIZE 4232 /* Some P32x */
// size
#define HEATTABLE_V2_ID_Y 0x01 // 522
@ -1409,6 +1410,17 @@ static uint8_t *hiti_get_correction_data(struct hiti_ctx *ctx, uint8_t mode)
}
break;
case P_HITI_320:
if (mediatype == 0x1000) { /* CHC media */
if (mode) {
fname = "P320_CCQP1sn.bin";
break;
} else {
fname = "P320_CCPP1sn.bin";
break;
}
}
break;
case P_HITI_461:
if (mediatype == 0x1000) { /* CHC media */
if (mode) {
@ -1836,6 +1848,18 @@ static const char* hiti_get_heat_file(struct hiti_ctx *ctx, uint8_t mode)
return "P461_heatthsl.bin";
}
break;
case P_HITI_320:
if (mediatype == 0x1000) { /* CHC media */
// XXX what aboput heatpcsp.bin
if (mode) {
return "P320_hea1qcsp.bin";
} else {
return "P320_hea1tcsp.bin";
}
} else { /* DNP media */
return NULL;
}
break;
case P_HITI_461:
if (mediatype == 0x1000) { /* CHC media */
if (mode) {
@ -2725,7 +2749,7 @@ static int hiti_main_loop(void *vctx, const void *vjob, int wait_for_return)
} else {
const char *fname = hiti_get_heat_file(ctx, job->hdr.quality);
if (fname) {
if (ctx->conn->type == P_HITI_461) {
if (ctx->conn->type == P_HITI_461 || ctx->conn->type == P_HITI_310 || ctx->conn->type == P_HITI_320) {
char full[256];
snprintf(full, sizeof(full), "%s/%s", corrtable_path, fname);
@ -2744,8 +2768,8 @@ static int hiti_main_loop(void *vctx, const void *vjob, int wait_for_return)
if (ret)
return ret;
if (len != HEATTABLE_S_SIZE) {
ERROR("Unexpected heattable size (%d vs %d)\n", len, HEATTABLE_S_SIZE);
if (len != HEATTABLE_S_SIZE && len != HEATTABLE_S2_SIZE) {
ERROR("Unexpected heattable size (%d vs %d/%d)\n", len, HEATTABLE_S_SIZE, HEATTABLE_S2_SIZE);
return CUPS_BACKEND_FAILED;
}
@ -3462,6 +3486,7 @@ const struct dyesub_backend hiti_backend = {
{ 0x0d16, 0x0502, P_HITI_520, NULL, "hiti-p520l"},
{ 0x0d16, 0x0503, P_HITI_310, NULL, "hiti-p310l"},
{ 0x0d16, 0x050a, P_HITI_310, NULL, "hiti-p310w"},
{ 0x0d16, 0x050c, P_HITI_320, NULL, "hiti-p320w"},
{ 0x0d16, 0x0509, P_HITI_461, NULL, "hiti-p461"},
{ 0x0d16, 0x050e, P_HITI_525, NULL, "hiti-p525l"},
{ 0x0d16, 0x000f, P_HITI_530, NULL, "hiti-p530d"},

View File

@ -306,6 +306,9 @@
# HiTi P310W
0x0d16 0x050a blacklist
# HiTi P320W
0x0d16 0x050c blacklist
# HiTi P461 (Prinhome)
0x0d16 0x0509 blacklist

BIN
hiti_data/P320_CCPP1sp.bin Normal file

Binary file not shown.

BIN
hiti_data/P320_CCQP1sp.bin Normal file

Binary file not shown.

BIN
hiti_data/P320_hea1qcsp.bin Normal file

Binary file not shown.

BIN
hiti_data/P320_hea1tcsp.bin Normal file

Binary file not shown.

BIN
hiti_data/P320_heatpcsp.bin Normal file

Binary file not shown.

View File

@ -17,11 +17,11 @@ that are used internally by the printer to fine-tune the output.
ca = CS300/CS300i
cb = CS31x
cc = CS32x/CS36x
cd = CS200e
cd = CS2xx
cg = CIIAT CTC-940
ch = Fagoo P550/P560
ci = Seaory T11S/T11D
cl = CS2xx (sub-model?)
cl = CS230 (sub-model?)
cm = CS2xx (sub-model?)
da = 640DL
db = 640DL-Amphi
@ -47,7 +47,10 @@ that are used internally by the printer to fine-tune the output.
ri1 = P525 (?? might be used in certian modes only)
rj = P910 (Rebadged Shinko S6245)
rk = P530
rl = X610
rn = X620
rm = M610 (Rebadged Shinko S2245)
s0 = Pringo P231/P233/P235
sb = 630PSV
sc = 64xPS (640PS/641PS)
sd = 640GOLD
@ -58,6 +61,7 @@ that are used internally by the printer to fine-tune the output.
sj = MiX
sk = Unomat P128S
sl = P310
sm = P115 series
sn = P461/Prinhome
sp = P320