shinko: Some minor cleanups.

My goal here is to eventually unify these backends.
This commit is contained in:
Solomon Peachy 2019-05-06 13:38:09 -04:00
parent 2f91bf6504
commit ed8e2f18b1
3 changed files with 51 additions and 21 deletions

View File

@ -65,7 +65,7 @@ struct s2145_printjob_hdr {
uint32_t unk6;
uint32_t method;
uint32_t mode;
uint32_t oc_mode;
uint32_t unk7;
uint32_t unk8;
@ -986,8 +986,8 @@ static void dump_mediainfo(struct s2145_mediainfo_resp *resp)
for (i = 0 ; i < resp->count ; i++) {
INFO(" %02d: C 0x%02x (%s), %04ux%04u, M 0x%02x (%s), P 0x%02x (%s)\n", i,
resp->items[i].code, print_sizes(resp->items[i].code),
le16_to_cpu(resp->items[i].columns),
le16_to_cpu(resp->items[i].rows),
resp->items[i].columns,
resp->items[i].rows,
resp->items[i].media_type, media_types(resp->items[i].media_type),
resp->items[i].print_type, print_methods(resp->items[i].print_type));
}
@ -1386,7 +1386,6 @@ static int shinkos2145_attach(void *vctx, struct libusb_device_handle *dev, int
uint8_t endp_up, uint8_t endp_down, uint8_t jobid)
{
struct shinkos2145_ctx *ctx = vctx;
int i;
ctx->dev = dev;
ctx->endp_up = endp_up;
@ -1404,6 +1403,7 @@ static int shinkos2145_attach(void *vctx, struct libusb_device_handle *dev, int
struct s2145_cmd_hdr cmd;
struct s2145_mediainfo_resp *resp = (struct s2145_mediainfo_resp *) rdbuf;
int num = 0;
int i;
cmd.cmd = cpu_to_le16(S2145_CMD_MEDIAINFO);
cmd.len = cpu_to_le16(0);
@ -1417,6 +1417,12 @@ static int shinkos2145_attach(void *vctx, struct libusb_device_handle *dev, int
}
memcpy(&ctx->media, resp, sizeof(ctx->media));
/* Byteswap media descriptor.. */
for (i = 0 ; i < ctx->media.count ; i++) {
ctx->media.items[i].columns = le16_to_cpu(ctx->media.items[i].columns);
ctx->media.items[i].rows = le16_to_cpu(ctx->media.items[i].rows);
}
/* Figure out the media type... */
for (i = 0 ; i < ctx->media.count ; i++) {
if (print_counts(ctx->media.items[i].code) < media_prints) {
@ -1465,7 +1471,8 @@ static void shinkos2145_teardown(void *vctx) {
#define SINFONIA_HDR_LEN (SINFONIA_HDR1_LEN + SINFONIA_HDR2_LEN)
#define SINFONIA_DPI 300
int sinfonia_read_parse(int data_fd, uint32_t model, void *vhdr, uint8_t **data, int *datalen)
int sinfonia_read_parse(int data_fd, uint32_t model, void *vhdr,
uint8_t **data, int *datalen)
{
uint32_t *hdr = vhdr;
int ret, i;
@ -1550,6 +1557,14 @@ int sinfonia_read_parse(int data_fd, uint32_t model, void *vhdr, uint8_t **data,
return CUPS_BACKEND_CANCEL;
}
/* Fill in what's left */
// *copies =
// *oc_mode =
// *media =
// *method =
// *cols =
// *rows =
return CUPS_BACKEND_OK;
}
@ -1603,8 +1618,8 @@ static int shinkos2145_main_loop(void *vctx, const void *vjob) {
/* Validate print sizes */
for (i = 0; i < ctx->media.count ; i++) {
/* Look for matching media */
if (le16_to_cpu(ctx->media.items[i].columns) == cpu_to_le16(job->hdr.columns) &&
le16_to_cpu(ctx->media.items[i].rows) == cpu_to_le16(job->hdr.rows) &&
if (ctx->media.items[i].columns == job->hdr.columns &&
ctx->media.items[i].rows == job->hdr.rows &&
ctx->media.items[i].print_type == job->hdr.method)
break;
}
@ -1689,7 +1704,7 @@ top:
print->columns = cpu_to_le16(job->hdr.columns);
print->rows = cpu_to_le16(job->hdr.rows);
print->media = job->hdr.media;
print->mode = job->hdr.mode;
print->mode = job->hdr.oc_mode;
print->method = job->hdr.method;
if ((ret = s2145_do_cmd(ctx,
@ -1838,7 +1853,7 @@ static const char *shinkos2145_prefixes[] = {
struct dyesub_backend shinkos2145_backend = {
.name = "Shinko/Sinfonia CHC-S2145/S2",
.version = "0.57",
.version = "0.58",
.uri_prefixes = shinkos2145_prefixes,
.cmdline_usage = shinkos2145_cmdline,
.cmdline_arg = shinkos2145_cmdline_arg,

View File

@ -99,7 +99,7 @@ enum {
struct s6145_printjob_hdr {
uint32_t len1; /* Fixed at 0x10 */
uint32_t model; /* Equal to the printer model (eg '6245' or '1245' decimal) */
uint32_t media_w; /* 0x02 for 5", 0x03 for 6" */
uint32_t media_w; /* 0x02 for 5", 0x03 for 6" <-- IGNORED by backend. */
uint32_t unk3; /* Fixed at 0x01 */
uint32_t len2; /* Fixed at 0x64 */
@ -108,7 +108,7 @@ struct s6145_printjob_hdr {
uint32_t unk6;
uint32_t method; /* 0x00 normal, 0x02 4x6*2, 0x04 2x6*2, 0x05 6x6+2x6 */
uint32_t qual; /* 0x00 default, 0x01 std */
uint32_t qual; /* 0x00 default, 0x01 std <-- IGNORED by backend */
uint32_t oc_mode; /* 0x00 default, 0x01 off, 0x02 glossy, 0x03 matte */
uint32_t unk8;
@ -1366,8 +1366,8 @@ static void dump_mediainfo(struct s6145_mediainfo_resp *resp)
for (i = 0 ; i < resp->count ; i++) {
INFO(" %02d: C 0x%02x (%s), %04ux%04u, P 0x%02x (%s)\n", i,
resp->items[i].media_code, print_sizes(resp->items[i].media_code),
le16_to_cpu(resp->items[i].columns),
le16_to_cpu(resp->items[i].rows),
resp->items[i].columns,
resp->items[i].rows,
resp->items[i].print_method, print_methods(resp->items[i].print_method));
}
}
@ -1938,6 +1938,13 @@ static int shinkos6145_attach(void *vctx, struct libusb_device_handle *dev, int
return CUPS_BACKEND_FAILED;
}
memcpy(&ctx->media, resp, sizeof(*resp));
/* Byteswap media descriptor.. */
int i;
for (i = 0 ; i < ctx->media.count ; i++) {
ctx->media.items[i].columns = le16_to_cpu(ctx->media.items[i].columns);
ctx->media.items[i].rows = le16_to_cpu(ctx->media.items[i].rows);
}
} else {
int media_code = RIBBON_6x8;
if (getenv("MEDIA_CODE"))
@ -2184,8 +2191,8 @@ static int shinkos6145_main_loop(void *vctx, const void *vjob) {
/* Validate print sizes */
for (i = 0; i < media->count ; i++) {
/* Look for matching media */
if (le16_to_cpu(media->items[i].columns) == job->hdr.columns &&
le16_to_cpu(media->items[i].rows) == job->hdr.rows &&
if (media->items[i].columns == job->hdr.columns &&
media->items[i].rows == job->hdr.rows &&
media->items[i].print_method == job->hdr.method &&
media->items[i].media_code == job->hdr.media)
break;
@ -2487,7 +2494,7 @@ static const char *shinkos6145_prefixes[] = {
struct dyesub_backend shinkos6145_backend = {
.name = "Shinko/Sinfonia CHC-S6145/CS2",
.version = "0.32",
.version = "0.33",
.uri_prefixes = shinkos6145_prefixes,
.cmdline_usage = shinkos6145_cmdline,
.cmdline_arg = shinkos6145_cmdline_arg,

View File

@ -1128,8 +1128,8 @@ static void dump_mediainfo(struct s6245_mediainfo_resp *resp)
for (i = 0 ; i < resp->count ; i++) {
INFO(" %02d: C 0x%02x (%s), %04ux%04u, P 0x%02x (%s)\n", i,
resp->items[i].media_code, print_sizes(resp->items[i].media_code),
le16_to_cpu(resp->items[i].columns),
le16_to_cpu(resp->items[i].rows),
resp->items[i].columns,
resp->items[i].rows,
resp->items[i].print_method, print_methods(resp->items[i].print_method));
}
}
@ -1494,6 +1494,14 @@ static int shinkos6245_attach(void *vctx, struct libusb_device_handle *dev, int
ERROR("Failed to execute %s command\n", cmd_names(cmd.cmd));
return CUPS_BACKEND_FAILED;
}
/* Byteswap media descriptor.. */
int i;
for (i = 0 ; i < ctx->media.count ; i++) {
ctx->media.items[i].columns = le16_to_cpu(ctx->media.items[i].columns);
ctx->media.items[i].rows = le16_to_cpu(ctx->media.items[i].rows);
}
} else {
int media_code = 0x12;
if (getenv("MEDIA_CODE"))
@ -1607,8 +1615,8 @@ static int shinkos6245_main_loop(void *vctx, const void *vjob) {
/* Validate print sizes */
for (i = 0; i < ctx->media.count ; i++) {
/* Look for matching media */
if (le16_to_cpu(ctx->media.items[i].columns) == cpu_to_le16(job->hdr.columns) &&
le16_to_cpu(ctx->media.items[i].rows) == cpu_to_le16(job->hdr.rows))
if (ctx->media.items[i].columns == job->hdr.columns &&
ctx->media.items[i].rows == job->hdr.rows)
break;
}
if (i == ctx->media.count) {
@ -1860,7 +1868,7 @@ static const char *shinkos6245_prefixes[] = {
struct dyesub_backend shinkos6245_backend = {
.name = "Shinko/Sinfonia CHC-S6245",
.version = "0.16WIP",
.version = "0.17WIP",
.uri_prefixes = shinkos6245_prefixes,
.cmdline_usage = shinkos6245_cmdline,
.cmdline_arg = shinkos6245_cmdline_arg,