summaryrefslogtreecommitdiff
path: root/src/cups/backend_mitsu9550.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cups/backend_mitsu9550.c')
-rw-r--r--src/cups/backend_mitsu9550.c42
1 files changed, 23 insertions, 19 deletions
diff --git a/src/cups/backend_mitsu9550.c b/src/cups/backend_mitsu9550.c
index d257227..862f5f0 100644
--- a/src/cups/backend_mitsu9550.c
+++ b/src/cups/backend_mitsu9550.c
@@ -66,7 +66,7 @@ struct mitsu9550_ctx {
/* Spool file structures */
struct mitsu9550_hdr1 {
uint8_t cmd[4]; /* 1b 57 20 2e */
- uint8_t unk[10];
+ uint8_t unk[10];
uint16_t cols; /* BE */
uint16_t rows; /* BE */
uint8_t null[32];
@@ -74,25 +74,25 @@ struct mitsu9550_hdr1 {
struct mitsu9550_hdr2 {
uint8_t cmd[4]; /* 1b 57 21 2e */
- uint8_t unk[24];
- uint16_t copies; /* BE, 1-580 */
+ uint8_t unk[24]; /* 00 80 00 22 08 03 00 [...] */
+ uint16_t copies; /* BE, 1-680 */
uint8_t null[2];
uint8_t cut; /* 00 == normal, 83 == 2x6*2 */
uint8_t unkb[5];
uint8_t mode; /* 00 == normal, 80 == fine */
- uint8_t unkc[11];
+ uint8_t unkc[11]; /* 00 [...] 00 01 */
} __attribute__((packed));
struct mitsu9550_hdr3 {
uint8_t cmd[4]; /* 1b 57 22 2e */
- uint8_t unk[7];
+ uint8_t unk[7]; /* 00 40 00 [...] */
uint8_t mode2; /* 00 == normal, 01 == finedeep */
- uint8_t unkb[38];
+ uint8_t null[38];
} __attribute__((packed));
struct mitsu9550_hdr4 {
uint8_t cmd[4]; /* 1b 57 26 2e */
- uint8_t unk[46];
+ uint8_t unk[46]; /* 00 70 00 00 00 00 00 00 01 01 00 [...] */
} __attribute__((packed));
struct mitsu9550_plane {
@@ -124,7 +124,7 @@ struct mitsu9550_status {
uint8_t null[4];
uint8_t sts1; // MM
uint8_t nullb[1];
- uint16_t copies; // NN
+ uint16_t copies; // BE, NN
uint8_t nullc[6];
uint8_t sts3; // QQ
uint8_t sts4; // RR
@@ -347,19 +347,19 @@ static int mitsu9550_get_status(struct mitsu9550_ctx *ctx, uint8_t *resp, int st
static char *mitsu9550_media_types(uint8_t type)
{
- switch (type) {
+ switch (type & 0xf) { /* values can be 0x0? or 0x4? */
case 0x01:
- return "3.5x5";
+ return "CK9035 (3.5x5)";
case 0x02:
- return "4x6";
+ return "CK9046 (4x6)";
case 0x03:
- return "PC";
+ return "CK9046PST (4x6)";
case 0x04:
- return "5x7";
+ return "CK9057 (5x7)";
case 0x05:
- return "6x9";
+ return "CK9069 (6x9)";
case 0x06:
- return "V";
+ return "CK9068 (6x8)";
default:
return "Unknown";
}
@@ -373,7 +373,7 @@ static int validate_media(int type, int cols, int rows) {
return 1;
break;
case 0x02: /* 4x6 */
- case 0x03: /* PC ??? */
+ case 0x03: /* 4x6 postcard */
if (cols != 2152)
return 1;
if (rows != 1416 && rows != 1184 &&
@@ -389,11 +389,15 @@ static int validate_media(int type, int cols, int rows) {
case 0x05: /* 6x9 */
if (cols != 2152)
return 1;
- if (rows != 1416 && rows != 2972 &&
+ if (rows != 1416 && rows != 2792 &&
rows != 2956 && rows != 3146)
return 1;
break;
- case 0x06: /* V */
+ case 0x06: /* V (6x8??) */
+ if (cols != 2152)
+ return 1;
+ if (rows != 1416 && rows != 2792)
+ return 1;
break;
default: /* Unknown */
break;
@@ -781,7 +785,7 @@ static int mitsu9550_cmdline_arg(void *vctx, int argc, char **argv)
/* Exported */
struct dyesub_backend mitsu9550_backend = {
.name = "Mitsubishi CP-9550DW-S",
- .version = "0.16",
+ .version = "0.17",
.uri_prefix = "mitsu9550",
.cmdline_usage = mitsu9550_cmdline,
.cmdline_arg = mitsu9550_cmdline_arg,