kodak6800: Dump tone curve status too, and use some constants.

This commit is contained in:
Solomon Peachy 2015-08-27 21:41:47 -04:00
parent c2c423e773
commit 854b25d05a
1 changed files with 37 additions and 16 deletions

View File

@ -87,15 +87,20 @@ struct kodak68x0_status_readback {
uint8_t curve_status; /* Always seems to be 0x00 */
} __attribute__((packed));
enum {
CMD_CODE_OK = 1,
CMD_CODE_BAD = 2,
};
enum {
STATUS_PRINTING = 1,
STATUS_IDLE = 2,
};
enum {
STATUS1_STANDBY = 1,
STATUS1_ERROR = 2,
STATUS1_WAIT = 3,
STATE_STATUS1_STANDBY = 1,
STATE_STATUS1_ERROR = 2,
STATE_STATUS1_WAIT = 3,
};
#define STATE_STANDBY_STATUS2 0x0
@ -299,7 +304,7 @@ static int kodak6800_get_mediainfo(struct kodak6800_ctx *ctx, struct kodak68x0_m
return ret;
/* Validate proper response */
if (media->hdr != 0x01 ||
if (media->hdr != CMD_CODE_OK ||
media->null[0] != 0x00) {
ERROR("Unexpected response from media query!\n");
return CUPS_BACKEND_STOP;
@ -332,7 +337,7 @@ static int kodak68x0_canceljob(struct kodak6800_ctx *ctx,
return ret;
/* Validate proper response */
if (sts.hdr != 0x01) {
if (sts.hdr != CMD_CODE_OK) {
ERROR("Unexpected response from job cancel!\n");
return -99;
}
@ -344,9 +349,9 @@ static int kodak68x0_canceljob(struct kodak6800_ctx *ctx,
static char *kodak68x0_status_str(struct kodak68x0_status_readback *resp)
{
switch(resp->status1) {
case STATUS1_STANDBY:
case STATE_STATUS1_STANDBY:
return "Standby (Ready)";
case STATUS1_WAIT:
case STATE_STATUS1_WAIT:
switch (be32_to_cpu(resp->status2)) {
case WAIT_STATUS2_INIT:
return "Wait (Initializing)";
@ -361,7 +366,7 @@ static char *kodak68x0_status_str(struct kodak68x0_status_readback *resp)
default:
return "Wait (Unknown)";
}
case STATUS1_ERROR:
case STATE_STATUS1_ERROR:
switch (be32_to_cpu(resp->status2)) {
case ERROR_STATUS2_CTRL_CIRCUIT:
switch (resp->errcode) {
@ -514,6 +519,22 @@ static void kodak68x0_dump_status(struct kodak6800_ctx *ctx, struct kodak68x0_st
INFO("\tPrints: %d/%d complete\n",
be16_to_cpu(status->b2_complete), be16_to_cpu(status->b2_total));
switch (status->curve_status) {
case CURVE_TABLE_STATUS_INITIAL:
detail = "Initial/Default";
break;
case CURVE_TABLE_STATUS_USERSET:
detail = "User Stored";
break;
case CURVE_TABLE_STATUS_CURRENT:
detail = "Current";
break;
default:
detail = "Unknown";
break;
}
INFO("Tone Curve Status: %s\n", detail);
INFO("Counters:\n");
INFO("\tLifetime : %d\n", be32_to_cpu(status->lifetime));
INFO("\tThermal Head : %d\n", be32_to_cpu(status->maint));
@ -565,7 +586,7 @@ static int kodak6800_get_status(struct kodak6800_ctx *ctx,
return ret;
/* Validate proper response */
if (status->hdr != 0x01) {
if (status->hdr != CMD_CODE_OK) {
ERROR("Unexpected response from status query!\n");
return -99;
}
@ -614,7 +635,7 @@ static int kodak6800_get_tonecurve(struct kodak6800_ctx *ctx, char *fname)
&num)))
/* Validate proper response */
if (respbuf[0] != 0x01) {
if (respbuf[0] != CMD_CODE_OK) {
ERROR("Unexpected response from tonecurve query!\n");
return -99;
}
@ -735,7 +756,7 @@ static int kodak6800_set_tonecurve(struct kodak6800_ctx *ctx, char *fname)
goto done;
}
if (respbuf[0] != 0x01) {
if (respbuf[0] != CMD_CODE_OK) {
ERROR("Unexpected response from tonecurve set!\n");
return -99;
}
@ -761,7 +782,7 @@ static int kodak6800_set_tonecurve(struct kodak6800_ctx *ctx, char *fname)
ret = 4;
goto done;
}
if (respbuf[0] != 0x01) {
if (respbuf[0] != CMD_CODE_OK) {
ERROR("Unexpected response from tonecurve set!\n");
return -99;
}
@ -839,7 +860,7 @@ static int kodak6850_send_init(struct kodak6800_ctx *ctx)
return CUPS_BACKEND_FAILED;
}
if (rdbuf[0] != 0x01 ||
if (rdbuf[0] != CMD_CODE_OK ||
rdbuf[2] != 0x43) {
ERROR("Unexpected response from printer init!\n");
return CUPS_BACKEND_FAILED;
@ -1054,7 +1075,7 @@ static int kodak6800_main_loop(void *vctx, int copies) {
if (kodak6800_get_status(ctx, &status))
return CUPS_BACKEND_FAILED;
if (status.status1 == STATUS1_ERROR) {
if (status.status1 == STATE_STATUS1_ERROR) {
INFO("Printer State: %s # %02x %08x %02x\n",
kodak68x0_status_str(&status),
status.status1, be32_to_cpu(status.status2), status.errcode);
@ -1096,7 +1117,7 @@ static int kodak6800_main_loop(void *vctx, int copies) {
&num)))
return ret;
if (status.hdr != 0x01) {
if (status.hdr != CMD_CODE_OK) {
ERROR("Unexpected response from print command!\n");
return CUPS_BACKEND_FAILED;
}
@ -1113,7 +1134,7 @@ static int kodak6800_main_loop(void *vctx, int copies) {
if (kodak6800_get_status(ctx, &status))
return CUPS_BACKEND_FAILED;
if (status.status1 == STATUS1_ERROR) {
if (status.status1 == STATE_STATUS1_ERROR) {
INFO("Printer State: %s # %02x %08x %02x\n",
kodak68x0_status_str(&status),
status.status1, be32_to_cpu(status.status2), status.errcode);