kodak8810: Printer is now confirmed working.
This commit is contained in:
parent
a1921cf334
commit
7c7ef5f7e2
7
README
7
README
|
@ -43,6 +43,7 @@
|
|||
Kodak 6800 Photo Printer
|
||||
Kodak 6850 Photo Printer
|
||||
Kodak 7000 Photo Printer
|
||||
Kodak 8810 Photo Printer
|
||||
Magicard Tango 2E
|
||||
Mitsubishi CP-3800DW
|
||||
Mitsubishi CP-9550D/DW/DW-S/DZ/DZ-S
|
||||
|
@ -69,7 +70,6 @@
|
|||
ICI Imagedata OP900
|
||||
Kodak 6900
|
||||
Kodak 7010 / 7015
|
||||
Kodak 8810
|
||||
Magicard Rio 2E (and other Magicard models)
|
||||
Mitsubishi CP-3020D/DE and CP-3020DA/DAE
|
||||
Mitsubishi CP-9000DW, CP-9500DW, and CP-9600DW-S
|
||||
|
@ -710,10 +710,13 @@
|
|||
|
||||
shinkos6245 hitip910
|
||||
|
||||
Verified supported printers:
|
||||
|
||||
Kodak 8810
|
||||
|
||||
Work-in-process printers:
|
||||
|
||||
HiTi P910L
|
||||
Kodak 8810
|
||||
Shinko CHC-S6245 (aka "Sinfonia CE1")
|
||||
|
||||
Valid commands:
|
||||
|
|
|
@ -59,7 +59,9 @@ struct s6245_print_cmd {
|
|||
uint16_t count;
|
||||
uint16_t columns;
|
||||
uint16_t rows;
|
||||
uint8_t reserved[8]; // columns and rows repeated, then nulls
|
||||
uint16_t columns2;
|
||||
uint16_t rows2;
|
||||
uint8_t reserved[4];
|
||||
uint8_t mode;
|
||||
uint8_t method;
|
||||
uint8_t reserved2;
|
||||
|
@ -357,6 +359,8 @@ struct s6245_mediainfo_resp {
|
|||
#define RIBBON_8x10 0x11
|
||||
#define RIBBON_8x12 0x12
|
||||
|
||||
#define RIBBON_8x12K 0x04 /* EK8810 */
|
||||
|
||||
static const char *ribbon_sizes (uint8_t v) {
|
||||
switch (v) {
|
||||
case RIBBON_NONE:
|
||||
|
@ -364,6 +368,7 @@ static const char *ribbon_sizes (uint8_t v) {
|
|||
case RIBBON_8x10:
|
||||
return "8x10";
|
||||
case RIBBON_8x12:
|
||||
case RIBBON_8x12K:
|
||||
return "8x12";
|
||||
default:
|
||||
return "Unknown";
|
||||
|
@ -591,7 +596,11 @@ int shinkos6245_cmdline_arg(void *vctx, int argc, char **argv)
|
|||
j = sinfonia_settonecurve(&ctx->dev, TONECURVE_USER, optarg);
|
||||
break;
|
||||
case 'e':
|
||||
j = get_errorlog(ctx);
|
||||
if (ctx->dev.type == P_KODAK_8810) {
|
||||
j = sinfonia_geterrorlog(&ctx->dev);
|
||||
} else {
|
||||
j = get_errorlog(ctx);
|
||||
}
|
||||
break;
|
||||
case 'F':
|
||||
j = sinfonia_flashled(&ctx->dev);
|
||||
|
@ -758,7 +767,7 @@ static int shinkos6245_main_loop(void *vctx, const void *vjob) {
|
|||
int ret, num;
|
||||
uint8_t cmdbuf[CMDBUF_LEN];
|
||||
|
||||
int i, last_state = -1, state = S_IDLE;
|
||||
int last_state = -1, state = S_IDLE;
|
||||
uint8_t mcut;
|
||||
int copies;
|
||||
|
||||
|
@ -792,6 +801,8 @@ static int shinkos6245_main_loop(void *vctx, const void *vjob) {
|
|||
}
|
||||
// XXX what about mcut |= PRINT_METHOD_DISABLE_ERR;
|
||||
|
||||
#if 0
|
||||
int i;
|
||||
/* Validate print sizes */
|
||||
for (i = 0; i < ctx->media.count ; i++) {
|
||||
/* Look for matching media */
|
||||
|
@ -803,9 +814,18 @@ static int shinkos6245_main_loop(void *vctx, const void *vjob) {
|
|||
ERROR("Incorrect media loaded for print!\n");
|
||||
return CUPS_BACKEND_HOLD;
|
||||
}
|
||||
#else
|
||||
if (ctx->media.ribbon_code != RIBBON_8x12 &&
|
||||
ctx->media.ribbon_code != RIBBON_8x12K &&
|
||||
job->jp.rows > 3000) {
|
||||
ERROR("Incorrect media loaded for print!\n");
|
||||
return CUPS_BACKEND_HOLD;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* Send Set Time */
|
||||
{
|
||||
if (ctx->dev.type != P_KODAK_8810) {
|
||||
struct s6245_settime_cmd *settime = (struct s6245_settime_cmd *)cmdbuf;
|
||||
time_t now = time(NULL);
|
||||
struct tm *cur = localtime(&now);
|
||||
|
@ -904,11 +924,10 @@ top:
|
|||
memset(cmdbuf, 0, CMDBUF_LEN);
|
||||
print->hdr.cmd = cpu_to_le16(SINFONIA_CMD_PRINTJOB);
|
||||
print->hdr.len = cpu_to_le16(sizeof (*print) - sizeof(*cmd));
|
||||
|
||||
print->id = ctx->jobid;
|
||||
print->count = cpu_to_le16(copies);
|
||||
print->columns = cpu_to_le16(job->jp.columns);
|
||||
print->rows = cpu_to_le16(job->jp.rows);
|
||||
print->columns = print->columns2 = cpu_to_le16(job->jp.columns);
|
||||
print->rows = print->rows2 = cpu_to_le16(job->jp.rows);
|
||||
print->mode = job->jp.oc_mode;
|
||||
print->method = mcut;
|
||||
|
||||
|
@ -1044,8 +1063,8 @@ static const char *shinkos6245_prefixes[] = {
|
|||
};
|
||||
|
||||
struct dyesub_backend shinkos6245_backend = {
|
||||
.name = "Shinko/Sinfonia CHC-S6245",
|
||||
.version = "0.20WIP" " (lib " LIBSINFONIA_VER ")",
|
||||
.name = "Sinfonia CHC-S6245 / Kodak 8810",
|
||||
.version = "0.21" " (lib " LIBSINFONIA_VER ")",
|
||||
.uri_prefixes = shinkos6245_prefixes,
|
||||
.cmdline_usage = shinkos6245_cmdline,
|
||||
.cmdline_arg = shinkos6245_cmdline_arg,
|
||||
|
|
|
@ -812,6 +812,7 @@ const char *sinfonia_print_codes (uint8_t v, int eightinch) {
|
|||
case CODE_8x10:
|
||||
return "8x10";
|
||||
case CODE_8x12:
|
||||
case CODE_8x12K:
|
||||
return "8x12";
|
||||
case CODE_8x4:
|
||||
return "8x4";
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#define LIBSINFONIA_VER "0.07"
|
||||
#define LIBSINFONIA_VER "0.08"
|
||||
|
||||
#define SINFONIA_HDR1_LEN 0x10
|
||||
#define SINFONIA_HDR2_LEN 0x64
|
||||
|
@ -45,7 +45,7 @@ struct sinfonia_job_param {
|
|||
|
||||
uint32_t quality;
|
||||
|
||||
int mattedepth;
|
||||
int mattedepth;
|
||||
uint32_t dust;
|
||||
|
||||
uint32_t ext_flags;
|
||||
|
@ -326,9 +326,9 @@ struct sinfonia_printcmd18_hdr {
|
|||
uint16_t columns;
|
||||
uint16_t rows;
|
||||
uint8_t reserved[8]; // columns and rows repeated, then nulls
|
||||
uint8_t media;
|
||||
uint8_t oc_mode;
|
||||
uint8_t method;
|
||||
uint8_t media; // reserved?
|
||||
} __attribute__((packed));
|
||||
|
||||
struct sinfonia_printcmd28_hdr {
|
||||
|
@ -363,6 +363,9 @@ struct sinfonia_printcmd28_hdr {
|
|||
#define CODE_8x6_2 0x32
|
||||
#define CODE_8x4_3 0x40
|
||||
|
||||
#define CODE_8x12K 0x02 /* Kodak 8810 */
|
||||
|
||||
|
||||
#define CODE_89x60mm 0x10
|
||||
#define CODE_89x59mm 0x11
|
||||
#define CODE_89x58mm 0x12
|
||||
|
|
Loading…
Reference in New Issue