diff --git a/README b/README index 7ef7625..2626933 100644 --- a/README +++ b/README @@ -42,6 +42,7 @@ Kodak 805 Photo Printer Kodak 6800 Photo Printer Kodak 6850 Photo Printer + Kodak 7000 Photo Printer Magicard Tango 2E Mitsubishi CP-3800DW Mitsubishi CP-9550D/DW/DW-S/DZ/DZ-S @@ -67,7 +68,7 @@ HiTi P910L ICI Imagedata OP900 Kodak 6900 - Kodak 7000 / 7010 / 7015 + Kodak 7010 / 7015 Kodak 8810 Magicard Rio 2E (and other Magicard models) Mitsubishi CP-3020D/DE and CP-3020DA/DAE @@ -458,10 +459,11 @@ Verified supported printers: Kodak 605 + Kodak 7000 Work-in-progress printers: - Kodak 7000/7010/7015 + Kodak 7010/7015 Valid commands: diff --git a/backend_kodak605.c b/backend_kodak605.c index a7bd363..842f66b 100644 --- a/backend_kodak605.c +++ b/backend_kodak605.c @@ -287,18 +287,23 @@ static int kodak605_get_media(struct kodak605_ctx *ctx, struct kodak605_media_li { struct sinfonia_cmd_hdr cmd; - int ret, num = 0; + int i, ret, num = 0; cmd.cmd = cpu_to_le16(SINFONIA_CMD_MEDIAINFO); cmd.len = cpu_to_le16(0); - if ((ret =sinfonia_docmd(&ctx->dev, - (uint8_t*)&cmd, sizeof(cmd), - (uint8_t*)media, MAX_MEDIA_LEN, - &num))) { + if ((ret = sinfonia_docmd(&ctx->dev, + (uint8_t*)&cmd, sizeof(cmd), + (uint8_t*)media, MAX_MEDIA_LEN, + &num))) { return ret; } + for (i = 0 ; i < media->count; i++) { + media->entries[i].rows = le16_to_cpu(media->entries[i].rows); + media->entries[i].columns = le16_to_cpu(media->entries[i].columns); + } + return 0; } @@ -624,9 +629,10 @@ static void kodak605_dump_mediainfo(struct kodak605_media_list *media) DEBUG("Legal print sizes:\n"); for (i = 0 ; i < media->count ; i++) { - DEBUG("\t%d: %ux%u\n", i, - le16_to_cpu(media->entries[i].columns), - le16_to_cpu(media->entries[i].rows)); + DEBUG("\t%d: %ux%u (%x)\n", i, + media->entries[i].columns, + media->entries[i].rows, + media->entries[i].code); } DEBUG("\n"); } @@ -735,7 +741,7 @@ static const char *kodak605_prefixes[] = { /* Exported */ struct dyesub_backend kodak605_backend = { .name = "Kodak 605/70xx", - .version = "0.43" " (lib " LIBSINFONIA_VER ")", + .version = "0.44" " (lib " LIBSINFONIA_VER ")", .uri_prefixes = kodak605_prefixes, .cmdline_usage = kodak605_cmdline, .cmdline_arg = kodak605_cmdline_arg, diff --git a/backend_sinfonia.c b/backend_sinfonia.c index 121ff56..c28a22e 100644 --- a/backend_sinfonia.c +++ b/backend_sinfonia.c @@ -463,7 +463,7 @@ int sinfonia_getfwinfo(struct sinfonia_usbdev *usbh) INFO("FW Information:\n"); - for (i = FWINFO_TARGET_MAIN_BOOT ; i <= FWINFO_TARGET_PRINT_TABLES ; i++) { + for (i = FWINFO_TARGET_MAIN_BOOT ; i <= FWINFO_TARGET_PRINT_TABLES2 ; i++) { int ret; cmd.target = i; @@ -474,6 +474,9 @@ int sinfonia_getfwinfo(struct sinfonia_usbdev *usbh) continue; } + if (resp.major == 0) + continue; + if (le16_to_cpu(resp.hdr.payload_len) != (sizeof(struct sinfonia_fwinfo_resp) - sizeof(struct sinfonia_status_hdr))) continue; @@ -791,10 +794,13 @@ const char *sinfonia_fwinfo_targets (uint8_t v) { return "Main Boot "; case FWINFO_TARGET_MAIN_APP: return "Main App "; - case FWINFO_TARGET_DSP: - return "DSP "; case FWINFO_TARGET_PRINT_TABLES: + case FWINFO_TARGET_PRINT_TABLES2: // Seen on EK70xx return "Print Tables"; + case FWINFO_TARGET_DSP: + return "DSP "; + case FWINFO_TARGET_USB: + return "USB "; default: return "Unknown "; } @@ -991,6 +997,9 @@ void kodak6_dumpmediacommon(int type) case KODAK6_MEDIA_6TR2: INFO("Media type: 6R (Kodak 396-2941 or equivalent)\n"); break; + case KODAK7_MEDIA_6R: + INFO("Media type: 6R (Kodak 659-9047 or equivalent)\n"); + break; default: INFO("Media type %02x (unknown, please report!)\n", type); break; diff --git a/backend_sinfonia.h b/backend_sinfonia.h index e574542..5279679 100644 --- a/backend_sinfonia.h +++ b/backend_sinfonia.h @@ -27,7 +27,7 @@ * */ -#define LIBSINFONIA_VER "0.06" +#define LIBSINFONIA_VER "0.07" #define SINFONIA_HDR1_LEN 0x10 #define SINFONIA_HDR2_LEN 0x64 @@ -156,6 +156,8 @@ const char *sinfonia_print_methods (uint8_t v); #define FWINFO_TARGET_MAIN_APP 0x02 #define FWINFO_TARGET_PRINT_TABLES 0x03 #define FWINFO_TARGET_DSP 0x04 +#define FWINFO_TARGET_USB 0x06 +#define FWINFO_TARGET_PRINT_TABLES2 0x07 const char *sinfonia_fwinfo_targets (uint8_t v); @@ -436,7 +438,7 @@ const char *sinfonia_cmd_names(uint16_t v); //#define KODAK6_MEDIA_6FR2 // 6900-compatible, 102-5925 #define KODAK6_MEDIA_NONE 0x00 //#define KODAK7_MEDIA_5R // 164-9011 137-0600 -#define KODAK7_MEDIA_6R 0x29 // 659-9047 166-1925 396-2966 846-2004 103-7688 DNP-900-070 +#define KODAK7_MEDIA_6R 0x29 // 659-9047 166-1925 396-2966 846-2004 103-7688 DNP-900-070 -- ALSO FUJI R68-D2P570 16578944 //#define KODAK7_MEDIA_6TA2 //#define KODAK7_MEDIA_5TA2 diff --git a/regression-gp.csv b/regression-gp.csv index 32d1421..3545e17 100644 --- a/regression-gp.csv +++ b/regression-gp.csv @@ -77,13 +77,18 @@ kodak-605,0x040a,0x402e,0xb,PageSize=w288h432 kodak-605,0x040a,0x402e,0xb,PageSize=w432h576 kodak-605,0x040a,0x402e,0x3,PageSize=w360h504 # -kodak-7000,0x040a,0x4035,0xb,PageSize=w288h432 -kodak-7000,0x040a,0x4035,0xb,PageSize=w432h576 -# -kodak-7010,0x040a,0x4037,0xb,PageSize=w288h432 -kodak-7010,0x040a,0x4037,0xb,PageSize=w432h576 -# -kodak-7015,0x040a,0x4037,0x3,PageSize=w360h504 +kodak-7000,0x040a,0x4035,0x29,PageSize=w288h432 +kodak-7000,0x040a,0x4035,0x29,PageSize=w288h432;StpLaminate=Satin +kodak-7000,0x040a,0x4035,0x29,PageSize=w432h432 +kodak-7000,0x040a,0x4035,0x29,PageSize=w432h576 +# +kodak-7010,0x040a,0x4037,0x29,PageSize=w288h432 +kodak-7010,0x040a,0x4037,0x29,PageSize=w288h432;StpLaminate=Satin +kodak-7010,0x040a,0x4037,0x29,PageSize=w432h432 +kodak-7010,0x040a,0x4037,0x29,PageSize=w432h576 +# +kodak-7015,0x040a,0x4038,0x3,PageSize=w360h504 +kodak-7015,0x040a,0x4038,0x3,PageSize=w360h504;StpLaminate=Satin # shinko-chcs1245,0x10ce,0x0007,0,PageSize=w288h576 shinko-chcs1245,0x10ce,0x0007,0,PageSize=w360h576