all: Move to using the common read_data() instead of direct libusb functions.
parent
db65d25feb
commit
1888254860
|
@ -429,11 +429,10 @@ static int canonselphy_main_loop(void *vctx, int copies) {
|
|||
int ret, num;
|
||||
|
||||
/* Read in the printer status */
|
||||
ret = libusb_bulk_transfer(ctx->dev, ctx->endp_up,
|
||||
rdbuf,
|
||||
READBACK_LEN,
|
||||
&num,
|
||||
2000);
|
||||
ret = read_data(ctx->dev, ctx->endp_up,
|
||||
rdbuf, READBACK_LEN, &num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
top:
|
||||
|
||||
if (state != last_state) {
|
||||
|
@ -442,26 +441,17 @@ top:
|
|||
}
|
||||
|
||||
/* Do it twice to clear initial state */
|
||||
ret = libusb_bulk_transfer(ctx->dev, ctx->endp_up,
|
||||
rdbuf,
|
||||
READBACK_LEN,
|
||||
&num,
|
||||
2000);
|
||||
ret = read_data(ctx->dev, ctx->endp_up,
|
||||
rdbuf, READBACK_LEN, &num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (ret < 0 || num != READBACK_LEN) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, READBACK_LEN, ctx->endp_up);
|
||||
if (num != READBACK_LEN) {
|
||||
ERROR("Short read! (%d/%d)\n", num, READBACK_LEN);
|
||||
return 4;
|
||||
}
|
||||
|
||||
if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) {
|
||||
int i;
|
||||
if (dyesub_debug) {
|
||||
DEBUG("<- ");
|
||||
for (i = 0 ; i < num ; i++) {
|
||||
DEBUG2("%02x ", rdbuf[i]);
|
||||
}
|
||||
DEBUG2("\n");
|
||||
}
|
||||
memcpy(rdbuf2, rdbuf, READBACK_LEN);
|
||||
} else if (state == last_state) {
|
||||
sleep(1);
|
||||
|
@ -607,7 +597,7 @@ top:
|
|||
|
||||
struct dyesub_backend canonselphy_backend = {
|
||||
.name = "Canon SELPHY CP/ES",
|
||||
.version = "0.62",
|
||||
.version = "0.63",
|
||||
.uri_prefix = "canonselphy",
|
||||
.init = canonselphy_init,
|
||||
.attach = canonselphy_attach,
|
||||
|
|
|
@ -198,47 +198,29 @@ static uint8_t * dnpds40_resp_cmd(struct dnpds40_ctx *ctx,
|
|||
return NULL;
|
||||
|
||||
/* Read in the response header */
|
||||
ret = libusb_bulk_transfer(ctx->dev, ctx->endp_up,
|
||||
(uint8_t*)tmp,
|
||||
8,
|
||||
&num,
|
||||
5000);
|
||||
|
||||
if (ret < 0 || num != 8) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, 8, ctx->endp_up);
|
||||
ret = read_data(ctx->dev, ctx->endp_up,
|
||||
(uint8_t*)tmp, 8, &num);
|
||||
if (ret < 0)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (dyesub_debug) {
|
||||
DEBUG("<- ");
|
||||
for (i = 0 ; i < num; i++) {
|
||||
DEBUG2("%02x ", tmp[i]);
|
||||
}
|
||||
DEBUG2("\n");
|
||||
if (num != 8) {
|
||||
ERROR("Short read! (%d/%d)\n", num, 8);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
i = atoi(tmp); /* Length of payload in bytes, possibly padded */
|
||||
respbuf = malloc(i);
|
||||
|
||||
/* Read in the actual response */
|
||||
memset(respbuf, 0, i);
|
||||
ret = libusb_bulk_transfer(ctx->dev, ctx->endp_up,
|
||||
respbuf,
|
||||
i,
|
||||
&num,
|
||||
5000);
|
||||
|
||||
if (dyesub_debug) {
|
||||
DEBUG("<- ");
|
||||
for (i = 0 ; i < num; i++) {
|
||||
DEBUG2("%02x ", respbuf[i]);
|
||||
}
|
||||
DEBUG2("\n");
|
||||
ret = read_data(ctx->dev, ctx->endp_up,
|
||||
respbuf, i, &num);
|
||||
if (ret < 0) {
|
||||
free(respbuf);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (ret < 0 || num != i) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, i, ctx->endp_up);
|
||||
|
||||
if (num != i) {
|
||||
ERROR("Short read! (%d/%d)\n", num, i);
|
||||
free(respbuf);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -909,7 +891,7 @@ static int dnpds40_cmdline_arg(void *vctx, int run, char *arg1, char *arg2)
|
|||
/* Exported */
|
||||
struct dyesub_backend dnpds40_backend = {
|
||||
.name = "DNP DS40/DS80",
|
||||
.version = "0.20",
|
||||
.version = "0.21",
|
||||
.uri_prefix = "dnpds40",
|
||||
.cmdline_usage = dnpds40_cmdline,
|
||||
.cmdline_arg = dnpds40_cmdline_arg,
|
||||
|
|
|
@ -181,14 +181,13 @@ static int kodak1400_set_tonecurve(struct kodak1400_ctx *ctx, char *fname)
|
|||
cmdbuf, 2)))
|
||||
return -1;
|
||||
|
||||
ret = libusb_bulk_transfer(dev, endp_up,
|
||||
respbuf,
|
||||
sizeof(respbuf),
|
||||
&num,
|
||||
5000);
|
||||
ret = read_data(dev, endp_up,
|
||||
respbuf, sizeof(respbuf), &num);
|
||||
|
||||
if (ret < 0 || (num != 8)) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, (int)sizeof(respbuf), endp_up);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
if (num != 8) {
|
||||
ERROR("Short Read! (%d/%d)\n", num, 8);
|
||||
return ret;
|
||||
}
|
||||
if (respbuf[1] != 0x01) {
|
||||
|
@ -216,18 +215,17 @@ static int kodak1400_set_tonecurve(struct kodak1400_ctx *ctx, char *fname)
|
|||
}
|
||||
|
||||
/* get the response */
|
||||
ret = libusb_bulk_transfer(dev, endp_up,
|
||||
respbuf,
|
||||
sizeof(respbuf),
|
||||
&num,
|
||||
5000);
|
||||
ret = read_data(dev, endp_up,
|
||||
respbuf, sizeof(respbuf), &num);
|
||||
|
||||
if (ret < 0 || (num != 8)) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, (int)sizeof(respbuf), endp_up);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
if (num != 8) {
|
||||
ERROR("Short Read! (%d/%d)\n", num, 8);
|
||||
return ret;
|
||||
}
|
||||
if (respbuf[1] != 0x00) {
|
||||
ERROR("Received unexpected response\n");
|
||||
ERROR("Received unexpected response!\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -380,26 +378,12 @@ top:
|
|||
return ret;
|
||||
|
||||
/* Read in the printer status */
|
||||
ret = libusb_bulk_transfer(ctx->dev, ctx->endp_up,
|
||||
rdbuf,
|
||||
READBACK_LEN,
|
||||
&num,
|
||||
2000);
|
||||
|
||||
if (ret < 0) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, READBACK_LEN, ctx->endp_up);
|
||||
ret = read_data(ctx->dev, ctx->endp_up,
|
||||
rdbuf, READBACK_LEN, &num);
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) {
|
||||
int i;
|
||||
if (dyesub_debug) {
|
||||
DEBUG("<- ");
|
||||
for (i = 0 ; i < num ; i++) {
|
||||
DEBUG2("%02x ", rdbuf[i]);
|
||||
}
|
||||
DEBUG2("\n");
|
||||
}
|
||||
memcpy(rdbuf2, rdbuf, READBACK_LEN);
|
||||
} else if (state == last_state) {
|
||||
sleep(1);
|
||||
|
@ -570,7 +554,7 @@ top:
|
|||
|
||||
struct dyesub_backend kodak1400_backend = {
|
||||
.name = "Kodak 1400/805",
|
||||
.version = "0.24",
|
||||
.version = "0.25",
|
||||
.uri_prefix = "kodak1400",
|
||||
.cmdline_usage = kodak1400_cmdline,
|
||||
.cmdline_arg = kodak1400_cmdline_arg,
|
||||
|
|
|
@ -168,7 +168,7 @@ static int kodak605_main_loop(void *vctx, int copies) {
|
|||
uint8_t cmdbuf[CMDBUF_LEN];
|
||||
|
||||
int last_state = -1, state = S_IDLE;
|
||||
int i, num, ret;
|
||||
int num, ret;
|
||||
int pending = 0;
|
||||
|
||||
if (!ctx)
|
||||
|
@ -203,17 +203,13 @@ top:
|
|||
|
||||
skip_query:
|
||||
/* Read in the printer status */
|
||||
memset(rdbuf, 0, READBACK_LEN);
|
||||
ret = libusb_bulk_transfer(ctx->dev, ctx->endp_up,
|
||||
rdbuf,
|
||||
READBACK_LEN,
|
||||
&num,
|
||||
5000);
|
||||
|
||||
if (ret < 0 || num < 10) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, READBACK_LEN, ctx->endp_up);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = read_data(ctx->dev, ctx->endp_up,
|
||||
rdbuf, READBACK_LEN, &num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (num < 10) {
|
||||
ERROR("Short read! (%d/%d)\n", num, 10);
|
||||
return 4;
|
||||
}
|
||||
|
||||
|
@ -224,13 +220,6 @@ skip_query:
|
|||
}
|
||||
|
||||
if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) {
|
||||
if (dyesub_debug) {
|
||||
DEBUG("<- ");
|
||||
for (i = 0 ; i < num ; i++) {
|
||||
DEBUG2("%02x ", rdbuf[i]);
|
||||
}
|
||||
DEBUG2("\n");
|
||||
}
|
||||
memcpy(rdbuf2, rdbuf, READBACK_LEN);
|
||||
} else if (state == last_state) {
|
||||
sleep(1);
|
||||
|
@ -341,16 +330,13 @@ static int kodak605_get_status(struct kodak605_ctx *ctx)
|
|||
return ret;
|
||||
|
||||
/* Read in the printer status */
|
||||
memset(rdbuf, 0, sizeof(rdbuf));
|
||||
ret = libusb_bulk_transfer(ctx->dev, ctx->endp_up,
|
||||
rdbuf,
|
||||
READBACK_LEN,
|
||||
&num,
|
||||
5000);
|
||||
if (ret < 0 || num < (int)sizeof(rdbuf)) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, (int)sizeof(rdbuf), ctx->endp_up);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = read_data(ctx->dev, ctx->endp_up,
|
||||
rdbuf, READBACK_LEN, &num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (num < (int)sizeof(rdbuf)) {
|
||||
ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(rdbuf));
|
||||
return 4;
|
||||
}
|
||||
|
||||
|
@ -369,7 +355,7 @@ static int kodak605_get_media(struct kodak605_ctx *ctx)
|
|||
|
||||
int ret, i, num = 0;
|
||||
|
||||
/* Send Status Query */
|
||||
/* Send Media Query */
|
||||
cmdbuf[0] = 0x02;
|
||||
cmdbuf[1] = 0x00;
|
||||
cmdbuf[2] = 0x00;
|
||||
|
@ -379,16 +365,13 @@ static int kodak605_get_media(struct kodak605_ctx *ctx)
|
|||
return ret;
|
||||
|
||||
/* Read in the printer status */
|
||||
memset(rdbuf, 0, sizeof(rdbuf));
|
||||
ret = libusb_bulk_transfer(ctx->dev, ctx->endp_up,
|
||||
rdbuf,
|
||||
READBACK_LEN,
|
||||
&num,
|
||||
5000);
|
||||
if (ret < 0 || num < (int)sizeof(rdbuf)) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, (int)sizeof(rdbuf), ctx->endp_up);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = read_data(ctx->dev, ctx->endp_up,
|
||||
rdbuf, READBACK_LEN, &num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (num < (int)sizeof(rdbuf)) {
|
||||
ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(rdbuf));
|
||||
return 4;
|
||||
}
|
||||
|
||||
|
@ -450,32 +433,23 @@ static int kodak605_set_tonecurve(struct kodak605_ctx *ctx, char *fname)
|
|||
return -1;
|
||||
|
||||
/* Get response back */
|
||||
ret = libusb_bulk_transfer(dev, endp_up,
|
||||
respbuf,
|
||||
sizeof(respbuf),
|
||||
&num,
|
||||
5000);
|
||||
|
||||
if (ret < 0 || (num != 10)) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, (int)sizeof(respbuf), endp_up);
|
||||
ret = read_data(dev, endp_up,
|
||||
respbuf, sizeof(respbuf), &num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (num != 10) {
|
||||
ERROR("Short Read! (%d/%d)\n", num, 10);
|
||||
return 4;
|
||||
}
|
||||
|
||||
// XXX parse the response?
|
||||
|
||||
ret = libusb_bulk_transfer(dev, endp_up,
|
||||
(uint8_t*) data,
|
||||
sizeof(respbuf),
|
||||
&num,
|
||||
5000);
|
||||
if (ret < 0 || (num != sizeof(data))) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, (int)sizeof(respbuf), endp_up);
|
||||
return ret;
|
||||
}
|
||||
/* Send the data over! */
|
||||
ret = send_data(dev, endp_up,
|
||||
(uint8_t*)data, sizeof(data));
|
||||
|
||||
/* We're done */
|
||||
free(data);
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
@ -507,7 +481,7 @@ static int kodak605_cmdline_arg(void *vctx, int run, char *arg1, char *arg2)
|
|||
/* Exported */
|
||||
struct dyesub_backend kodak605_backend = {
|
||||
.name = "Kodak 605",
|
||||
.version = "0.10",
|
||||
.version = "0.12",
|
||||
.uri_prefix = "kodak605",
|
||||
.cmdline_usage = kodak605_cmdline,
|
||||
.cmdline_arg = kodak605_cmdline_arg,
|
||||
|
|
|
@ -116,16 +116,16 @@ static int kodak6800_get_tonecurve(struct kodak6800_ctx *ctx, char *fname)
|
|||
|
||||
if ((ret = send_data(dev, endp_down,
|
||||
cmdbuf, 16)))
|
||||
return -1;
|
||||
|
||||
ret = libusb_bulk_transfer(dev, endp_up,
|
||||
respbuf,
|
||||
sizeof(respbuf),
|
||||
&num,
|
||||
5000);
|
||||
if (ret < 0 || (num != 51)) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, (int)sizeof(respbuf), endp_up);
|
||||
return ret;
|
||||
|
||||
ret = read_data(dev, endp_up,
|
||||
respbuf, sizeof(respbuf), &num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (num != 51) {
|
||||
ERROR("Short read! (%d/%d)\n", num, 51);
|
||||
return 4;
|
||||
}
|
||||
|
||||
/* Then we can poll the data */
|
||||
|
@ -145,15 +145,14 @@ static int kodak6800_get_tonecurve(struct kodak6800_ctx *ctx, char *fname)
|
|||
cmdbuf, 11)))
|
||||
return -1;
|
||||
|
||||
|
||||
ret = libusb_bulk_transfer(dev, endp_up,
|
||||
respbuf,
|
||||
sizeof(respbuf),
|
||||
&num,
|
||||
5000);
|
||||
if (ret < 0 || (num != 64)) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, (int)sizeof(respbuf), endp_up);
|
||||
ret = read_data(dev, endp_up,
|
||||
respbuf, sizeof(respbuf), &num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (num != 64) {
|
||||
ERROR("Short read! (%d/%d)\n", num, 51);
|
||||
return 4;
|
||||
}
|
||||
|
||||
/* Copy into buffer */
|
||||
|
@ -232,14 +231,14 @@ static int kodak6800_set_tonecurve(struct kodak6800_ctx *ctx, char *fname)
|
|||
cmdbuf, 16)))
|
||||
return -1;
|
||||
|
||||
ret = libusb_bulk_transfer(dev, endp_up,
|
||||
respbuf,
|
||||
sizeof(respbuf),
|
||||
&num,
|
||||
5000);
|
||||
if (ret < 0 || (num != 51)) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, (int)sizeof(respbuf), endp_up);
|
||||
ret = read_data(dev, endp_up,
|
||||
respbuf, sizeof(respbuf), &num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (num != 51) {
|
||||
ERROR("Short read! (%d/%d)\n", num, 51);
|
||||
return 4;
|
||||
}
|
||||
|
||||
ptr = (uint8_t*) data;
|
||||
|
@ -258,16 +257,16 @@ static int kodak6800_set_tonecurve(struct kodak6800_ctx *ctx, char *fname)
|
|||
cmdbuf, count+1)))
|
||||
return -1;
|
||||
|
||||
ret = libusb_bulk_transfer(dev, endp_up,
|
||||
respbuf,
|
||||
sizeof(respbuf),
|
||||
&num,
|
||||
5000);
|
||||
if (ret < 0 || (num != 51)) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, (int)sizeof(respbuf), endp_up);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = read_data(dev, endp_up,
|
||||
respbuf, sizeof(respbuf), &num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (num != 51) {
|
||||
ERROR("Short read! (%d/%d)\n", num, 51);
|
||||
return 4;
|
||||
}
|
||||
};
|
||||
|
||||
/* We're done */
|
||||
|
@ -396,7 +395,7 @@ static int kodak6800_main_loop(void *vctx, int copies) {
|
|||
uint8_t cmdbuf[CMDBUF_LEN];
|
||||
|
||||
int last_state = -1, state = S_IDLE;
|
||||
int i, num, ret;
|
||||
int num, ret;
|
||||
int pending = 0;
|
||||
|
||||
if (!ctx)
|
||||
|
@ -404,7 +403,8 @@ static int kodak6800_main_loop(void *vctx, int copies) {
|
|||
|
||||
top:
|
||||
if (state != last_state) {
|
||||
DEBUG("last_state %d new %d\n", last_state, state);
|
||||
if (dyesub_debug)
|
||||
DEBUG("last_state %d new %d\n", last_state, state);
|
||||
}
|
||||
|
||||
if (pending)
|
||||
|
@ -425,17 +425,13 @@ top:
|
|||
|
||||
skip_query:
|
||||
/* Read in the printer status */
|
||||
memset(rdbuf, 0, READBACK_LEN);
|
||||
ret = libusb_bulk_transfer(ctx->dev, ctx->endp_up,
|
||||
rdbuf,
|
||||
READBACK_LEN,
|
||||
&num,
|
||||
5000);
|
||||
|
||||
if (ret < 0 || num < 51) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, READBACK_LEN, ctx->endp_up);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = read_data(ctx->dev, ctx->endp_up,
|
||||
rdbuf, READBACK_LEN, &num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (num < 51) {
|
||||
ERROR("Short read! (%d/%d)\n", num, 51);
|
||||
return 4;
|
||||
}
|
||||
|
||||
|
@ -448,11 +444,6 @@ skip_query:
|
|||
// XXX detect media type based on readback?
|
||||
|
||||
if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) {
|
||||
DEBUG("readback: ");
|
||||
for (i = 0 ; i < num ; i++) {
|
||||
DEBUG2("%02x ", rdbuf[i]);
|
||||
}
|
||||
DEBUG2("\n");
|
||||
memcpy(rdbuf2, rdbuf, READBACK_LEN);
|
||||
} else if (state == last_state) {
|
||||
sleep(1);
|
||||
|
@ -604,7 +595,7 @@ skip_query:
|
|||
/* Exported */
|
||||
struct dyesub_backend kodak6800_backend = {
|
||||
.name = "Kodak 6800/6850",
|
||||
.version = "0.25",
|
||||
.version = "0.26",
|
||||
.uri_prefix = "kodak6800",
|
||||
.cmdline_usage = kodak6800_cmdline,
|
||||
.cmdline_arg = kodak6800_cmdline_arg,
|
||||
|
|
|
@ -146,7 +146,7 @@ static int mitsu70x_main_loop(void *vctx, int copies) {
|
|||
uint8_t cmdbuf[CMDBUF_LEN];
|
||||
|
||||
int last_state = -1, state = S_IDLE;
|
||||
int i, num, ret;
|
||||
int num, ret;
|
||||
int pending = 0;
|
||||
|
||||
if (!ctx)
|
||||
|
@ -182,28 +182,17 @@ top:
|
|||
|
||||
skip_query:
|
||||
/* Read in the printer status */
|
||||
memset(rdbuf, 0, READBACK_LEN);
|
||||
ret = libusb_bulk_transfer(ctx->dev, ctx->endp_up,
|
||||
rdbuf,
|
||||
READBACK_LEN,
|
||||
&num,
|
||||
5000);
|
||||
ret = read_data(ctx->dev, ctx->endp_up,
|
||||
rdbuf, READBACK_LEN, &num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (ret < 0 || num != 26) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num, READBACK_LEN, ctx->endp_up);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
if (num != 26) {
|
||||
ERROR("Short Read! (%d/%d)\n", num, 26);
|
||||
return 4;
|
||||
}
|
||||
|
||||
if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) {
|
||||
if(dyesub_debug) {
|
||||
DEBUG("<- ");
|
||||
for (i = 0 ; i < num ; i++) {
|
||||
DEBUG2("%02x ", rdbuf[i]);
|
||||
}
|
||||
DEBUG2("\n");
|
||||
}
|
||||
memcpy(rdbuf2, rdbuf, READBACK_LEN);
|
||||
} else if (state == last_state) {
|
||||
sleep(1);
|
||||
|
@ -300,11 +289,16 @@ static int mitsu70x_get_status(struct mitsu70x_ctx *ctx)
|
|||
cmdbuf, 4)))
|
||||
return ret;
|
||||
memset(&resp, 0, sizeof(resp));
|
||||
ret = libusb_bulk_transfer(ctx->dev, ctx->endp_up,
|
||||
(uint8_t*) &resp,
|
||||
sizeof(resp),
|
||||
&num,
|
||||
5000);
|
||||
ret = read_data(ctx->dev, ctx->endp_up,
|
||||
(uint8_t*) &resp, sizeof(resp), &num);
|
||||
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
if (num != sizeof(resp)) {
|
||||
ERROR("Short Read! (%d/%d)\n", num, (int)sizeof(resp));
|
||||
return 4;
|
||||
}
|
||||
|
||||
if (dyesub_debug) {
|
||||
DEBUG("Status Dump:\n");
|
||||
for (i = 0 ; i < sizeof(resp.unk) ; i++) {
|
||||
|
@ -352,7 +346,7 @@ static int mitsu70x_cmdline_arg(void *vctx, int run, char *arg1, char *arg2)
|
|||
/* Exported */
|
||||
struct dyesub_backend mitsu70x_backend = {
|
||||
.name = "Mitsubishi CP-D70/D707",
|
||||
.version = "0.06",
|
||||
.version = "0.07",
|
||||
.uri_prefix = "mitsu70x",
|
||||
.cmdline_usage = mitsu70x_cmdline,
|
||||
.cmdline_arg = mitsu70x_cmdline_arg,
|
||||
|
|
|
@ -845,15 +845,14 @@ static int s2145_do_cmd(struct shinkos2145_ctx *ctx,
|
|||
cmd, cmdlen)))
|
||||
return (ret < 0) ? ret : -99;
|
||||
|
||||
ret = libusb_bulk_transfer(dev, endp_up,
|
||||
rdbuf,
|
||||
READBACK_LEN,
|
||||
num,
|
||||
5000);
|
||||
ret = read_data(dev, endp_up,
|
||||
rdbuf, READBACK_LEN, num);
|
||||
|
||||
if (ret < 0 || (*num < minlen)) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, *num, minlen, endp_up);
|
||||
return (ret < 0) ? ret : -99;
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
if (*num < minlen) {
|
||||
ERROR("Short read! (%d/%d))\n", *num, minlen);
|
||||
return -99;
|
||||
}
|
||||
|
||||
if (resp->result != RESULT_SUCCESS) {
|
||||
|
@ -1205,16 +1204,12 @@ static int get_tonecurve(struct shinkos2145_ctx *ctx, int type, char *fname)
|
|||
|
||||
i = 0;
|
||||
while (i < resp->total_size) {
|
||||
ret = libusb_bulk_transfer(ctx->dev, ctx->endp_up,
|
||||
data + i,
|
||||
resp->total_size * 2 - i,
|
||||
&num,
|
||||
5000);
|
||||
|
||||
if (ret < 0) {
|
||||
ERROR("Failure to receive data from printer (libusb error %d: (%d/%d from 0x%02x))\n", ret, num + i, (int)resp->total_size, ctx->endp_up);
|
||||
ret = read_data(ctx->dev, ctx->endp_up,
|
||||
data + i,
|
||||
resp->total_size * 2 - i,
|
||||
&num);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
i += num;
|
||||
}
|
||||
|
||||
|
@ -1471,7 +1466,7 @@ static int shinkos2145_read_parse(void *vctx, int data_fd) {
|
|||
static int shinkos2145_main_loop(void *vctx, int copies) {
|
||||
struct shinkos2145_ctx *ctx = vctx;
|
||||
|
||||
int i, ret, num;
|
||||
int ret, num;
|
||||
uint8_t cmdbuf[CMDBUF_LEN];
|
||||
uint8_t rdbuf2[READBACK_LEN];
|
||||
|
||||
|
@ -1501,13 +1496,6 @@ static int shinkos2145_main_loop(void *vctx, int copies) {
|
|||
}
|
||||
|
||||
if (memcmp(rdbuf, rdbuf2, READBACK_LEN)) {
|
||||
if (dyesub_debug) {
|
||||
DEBUG("<- ");
|
||||
for (i = 0 ; i < num ; i++) {
|
||||
DEBUG2("%02x ", rdbuf[i]);
|
||||
}
|
||||
DEBUG2("\n");
|
||||
}
|
||||
memcpy(rdbuf2, rdbuf, READBACK_LEN);
|
||||
|
||||
INFO("Printer Status: 0x%02x (%s)\n",
|
||||
|
@ -1663,7 +1651,7 @@ static int shinkos2145_query_serno(struct libusb_device_handle *dev, uint8_t end
|
|||
|
||||
struct dyesub_backend shinkos2145_backend = {
|
||||
.name = "Shinko/Sinfonia CHC-S2145 (S2)",
|
||||
.version = "0.24",
|
||||
.version = "0.25",
|
||||
.uri_prefix = "shinkos2145",
|
||||
.cmdline_usage = shinkos2145_cmdline,
|
||||
.cmdline_arg = shinkos2145_cmdline_arg,
|
||||
|
|
Loading…
Reference in New Issue