kodak8810: Enhancements:

* Support disabling control panel
 * Additional commands identified
 * Cutter list support [theoretical]
This commit is contained in:
Solomon Peachy 2019-09-18 22:23:36 -04:00
parent 0229d9ae6e
commit 9f32458aec
4 changed files with 35 additions and 10 deletions

3
README
View File

@ -725,6 +725,7 @@
Valid commands:
-b [ 0 | 1 ] Disable or Enable the printer control panel [4]
-c filename Query User tone curve from flash [1]
-C filename Store User tone curve in flash [1]
-e Query Error log
@ -743,6 +744,8 @@
* Work-in-progress, has not been tested on an actual printer yet.
[4] Kodak 8810 only
[1] Format of curvedata file:
256 entries each of Yellow, Magenta, Cyan mappings:

View File

@ -785,6 +785,7 @@ static void dump_mediainfo(struct sinfonia_6x45_mediainfo_resp *resp)
static void shinkos6245_cmdline(void)
{
DEBUG("\t\t[ -b 0|1 ] # Disable/Enable control panel\n");
DEBUG("\t\t[ -c filename ] # Get user/NV tone curve\n");
DEBUG("\t\t[ -C filename ] # Set user/NV tone curve\n");
DEBUG("\t\t[ -e ] # Query error log\n");
@ -808,9 +809,19 @@ int shinkos6245_cmdline_arg(void *vctx, int argc, char **argv)
if (!ctx)
return -1;
while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "c:C:eFik:l:L:mrR:sX:")) >= 0) {
while ((i = getopt(argc, argv, GETOPT_LIST_GLOBAL "b:c:C:eFik:l:L:mrR:sX:")) >= 0) {
switch(i) {
GETOPT_PROCESS_GLOBAL
case 'b':
if (ctx->dev.type != P_KODAK_8810)
return -1;
else if (optarg[0] == '1')
j = sinfonia_button_set(&ctx->dev, BUTTON_ENABLED);
else if (optarg[0] == '0')
j = sinfonia_button_set(&ctx->dev, BUTTON_DISABLED);
else
return -1;
break;
case 'c':
j = sinfonia_gettonecurve(&ctx->dev, TONECURVE_USER, optarg);
break;
@ -1010,6 +1021,7 @@ static int shinkos6245_main_loop(void *vctx, const void *vjob) {
break;
}
// XXX what about mcut |= PRINT_METHOD_DISABLE_ERR;
// XXX set up CUTLIST for EK8810!
#if 0 /* Doesn't work on EK8810. Not sure about S6245 */
int i;
@ -1245,7 +1257,7 @@ static const char *shinkos6245_prefixes[] = {
struct dyesub_backend shinkos6245_backend = {
.name = "Sinfonia CHC-S6245 / Kodak 8810",
.version = "0.25" " (lib " LIBSINFONIA_VER ")",
.version = "0.26" " (lib " LIBSINFONIA_VER ")",
.uri_prefixes = shinkos6245_prefixes,
.cmdline_usage = shinkos6245_cmdline,
.cmdline_arg = shinkos6245_cmdline_arg,

View File

@ -1047,14 +1047,14 @@ const char *sinfonia_cmd_names(uint16_t v) {
return "Button Enable";
case SINFONIA_CMD_SETPARAM:
return "Set Parameter";
// case SINFONIA_CMD_UNKNOWN48:
// return "UKNOWN 4008"; // XXX
case SINFONIA_CMD_SETLAMSTR:
return "Set Lamination String";
case SINFONIA_CMD_COMMPPA:
return "Communication PPA";
// case SINFONIA_CMD_SETCUTLIST:
return "Communication PPA / Set Cut List";
case SINFONIA_CMD_SETPPAPARM:
return "Set PPA Parameter";
// case SINFONIA_CMD_WAKEUPSTBY::
return "Set PPA Parameter / Set Wakeup Standby";
case SINFONIA_CMD_BACKPRINT:
return "Set Backprint String";
case SINFONIA_CMD_UNKNOWN4C:

View File

@ -104,7 +104,10 @@ const char *sinfonia_bank_statuses(uint8_t v);
#define UPDATE_TARGET_USER 0x03
#define UPDATE_TARGET_CURRENT 0x04
// XXX 0x10, 0x11 , lens 0x22e3e0 and 0x447c68/. LAMINATE patterns?
#define UPDATE_TARGET_LAM1 0x10
#define UPDATE_TARGET_LAM2 0x11
// XXX 0x10 (len 0x22e3e0), 0x11 (len 0x447c68 on EK701x)
// XXX 0x10, len 0x884100 on EK8810
/* Update is three channels, Y, M, C;
each is 256 entries of 11-bit data padded to 16-bits.
@ -381,6 +384,12 @@ struct kodak701x_backprint {
uint8_t text[42]; //
} __attribute__((packed));
struct kodak8810_cutlist {
struct sinfonia_cmd_hdr hdr;
uint8_t entries; /* max 24 */
uint16_t cut[36]; /* LE, each one is presumably a line number. */
} __attribute__((packed));
#define CODE_4x6 0x00
#define CODE_3_5x5 0x01
#define CODE_5x7 0x03
@ -456,10 +465,11 @@ const char *sinfonia_status_str(uint8_t v);
#define SINFONIA_CMD_BUTTON 0x4006 // 2145?
#define SINFONIA_CMD_SETPARAM 0x4007 // !2145
#define SINFONIA_CMD_UNKNOWN48 0x4008 // EK8810, panorama status? (len 28)
#define SINFONIA_CMD_SETLAMSTR 0x4008 // EK70xx
#define SINFONIA_CMD_SETLAMSTR 0x4008 // EK70xx, EK8810? (len 28)
#define SINFONIA_CMD_COMMPPA 0x4009 // EK70xx
#define SINFONIA_CMD_SETCUTLIST 0x4009 // EK8810 (len 73, count + 36 entries, 16bit LE)
#define SINFONIA_CMD_SETPPAPARM 0x400A // EK70xx
#define SINFONIA_CMD_WAKEUPSDBY 0x400A // EK8810 (len 1)
#define SINFONIA_CMD_BACKPRINT 0x400B // EK701x only! (len 50)
#define SINFONIA_CMD_UNKNOWN4C 0x400C // EK8810, panorama setup?
@ -475,7 +485,7 @@ const char *sinfonia_status_str(uint8_t v);
#define SINFONIA_CMD_MAINTPERM 0x8002 // EK70xx
#define SINFONIA_CMD_GETUNIQUE 0x8003 // 2145
#define SINFONIA_CMD_SELFDIAG 0xC001
#define SINFONIA_CMD_SELFDIAG 0xC001 // (len 3)
#define SINFONIA_CMD_DIAGRES 0xC002
#define SINFONIA_CMD_FWINFO 0xC003
#define SINFONIA_CMD_UPDATE 0xC004