sonyupd: More updates based on lessons learned about the Nidec Copal printers

This commit is contained in:
Solomon Peachy 2023-06-08 11:09:44 -04:00
parent 8ba6ded6de
commit 8e8aa25ce2
2 changed files with 26 additions and 11 deletions

9
README
View file

@ -85,7 +85,9 @@
DNP M4 / Q4
DNP M8
DNP Q8
Fujifilm ASK-500
Fujifilm ASK-2000, ASK-2500, and ASK-4000
HiTi M610 (not X610!)
HiTi P310L / P310W
HiTi P322W
@ -102,6 +104,7 @@
Mitsubishi CP3020D/DE and CP3020DA/DAE
Mitsubishi CP9000DW, CP9500DW, and CP9600DW-S
Mitsubishi CP9800DW, CP9800DW-S, CP9810DW, and CP9820DW-S
Nidec Copal DPB-4000, DPB-6000, DPB-7000
Olmec OP900
Shinko CHC-S6145-5A (aka Sinfonia CS2-c)
Sony UP-CR20L (aka DNP DS-SL20)
@ -908,6 +911,12 @@
DNP DS-SL10
Work-in-progress printers:
Nidec Copal DPB-4000, DPB-6000, DPB-7000
Fujifilm ASK-2000, ASK-2500, ASK-4000
DNP Q8
Valid commands:
-s Query printer status

View file

@ -1,7 +1,7 @@
/*
* Sony UP-D series Photo Printer CUPS backend -- libusb-1.0 version
*
* (c) 2013-2021 Solomon Peachy <pizza@shaftnet.org>
* (c) 2013-2023 Solomon Peachy <pizza@shaftnet.org>
*
* The latest version of this program can be found at:
*
@ -306,7 +306,8 @@ static void upd_cleanup_job(const void *vjob)
free((void*)job);
}
#define MAX_PRINTJOB_LEN (2048*2764*3 + 2048)
//#define MAX_PRINTJOB_LEN (2048*2764*3 + 2048) /* Sony */
#define MAX_PRINTJOB_LEN (2444*3644*3 + 2048) /* DPB and ASK series */
static int upd_read_parse(void *vctx, const void **vjob, int data_fd, int copies) {
struct upd_ctx *ctx = vctx;
@ -741,7 +742,7 @@ static const char *sonyupd_prefixes[] = {
const struct dyesub_backend sonyupd_backend = {
.name = "Sony UP-D",
.version = "0.46",
.version = "0.47",
.uri_prefixes = sonyupd_prefixes,
.cmdline_arg = upd_cmdline_arg,
.cmdline_usage = upd_cmdline,
@ -758,6 +759,9 @@ const struct dyesub_backend sonyupd_backend = {
{ 0x054c, 0x02d4, P_SONY_UPCR10, NULL, "sony-upcx1"},
{ 0x054c, 0x0049, P_SONY_UPD895, NULL, "sony-upd895"},
{ 0x054c, 0x01e7, P_SONY_UPD897, NULL, "sony-upd897"},
// DPB-6000/ASK-2000
// DPB-7000/ASK-2500
// DPB-4000/ASK-4000/DNP Q8
{ 0, 0, 0, NULL, NULL}
}
};
@ -791,7 +795,9 @@ const struct dyesub_backend sonyupd_backend = {
All printer commands start with 0x1b, and are at least 7 bytes long.
General Command format:
1b XX ?? ?? ?? LL 00 # XX is cmd, LL is data or response length.
1b XX ?? ?? ?? LL 00 # XX is cmd, LL is data/response length
If least significant bit of XX is 1, it is a WRITE, and LL is number of bytes of the payload. If LSB is 0, it is a READ, and printer will return LL bytes.
UNKNOWN QUERY [possibly media?]
@ -799,7 +805,7 @@ const struct dyesub_backend sonyupd_backend = {
-> 70 00 00 00 00 00 00 0b 00 00 00 00 00 00 00 00
00 00 00
UNKNOWN CMD (UP-DR & SL10 & UP-D895 & UP-DP10) [ possibly START ]
UNKNOWN CMD (UP-DR & SL10 & UP-D895 & UP-DP10 & DPB/ASK) [ possibly START? ]
<- 1b 0a 00 00 00 00 00
@ -847,7 +853,7 @@ const struct dyesub_backend sonyupd_backend = {
IMAGE DIMENSIONS & OVERCOAT
<- 1b e1 00 00 00 0b 00
<- 00 ZZ QQ 00 00 00 00 XX XX YY YY # XX = cols, YY == rows, ZZ == 0x04 on UP-DP10, otherwise 0x80. QQ == 00 glossy, 08 texture (UP-DP10 + UP-DR150), 0c matte, +0x10 for "nocorrection" on UP-DR200..
<- 00 ZZ QQ 00 00 00 00 XX XX YY YY # XX = cols, YY == rows, ZZ == 0x04 on UP-DP10/DPB-xxxx/ASK-xxxx, otherwise 0x80. QQ == 00 glossy, 08 texture (UP-DP10 + UP-DR150), 0c matte, +0x10 for "nocorrection" on UP-DR200..
UNKNOWN
@ -857,7 +863,7 @@ const struct dyesub_backend sonyupd_backend = {
UNKNOWN (UP-D897)
<- 1b e6 00 00 00 08 00
<- 07 00 00 00 00 00 00 00
-> 07 00 00 00 00 00 00 00
DATA TRANSFER
@ -885,13 +891,13 @@ const struct dyesub_backend sonyupd_backend = {
UNKNOWN (Fujifilm ASK2000 series
<- 1b 23 00 00 00 04 00 ff ff ff ff
-> ?? ??
<- 1b 23 00 00 00 04 00
<- ff ff ff ff
UNKNOWN (Fujifilm ASK2000/4000 series
<- 1b 1e 00 00 00 0c 00 00 00 00 00 00 00 00 00 00 00 00 00
-> ?? ??
<- 1b 1e 00 00 00 0c 00
00 00 00 00 00 00 00 00 00 00 00 00
************************************************************************