DNP: Placeholder for the QW410 1.10 firmware features

Adds support for 4x4.5, 4.5x3, 4.5x4" prints.  Not sure of the details.
This commit is contained in:
Solomon Peachy 2022-09-28 15:33:13 -04:00
parent 9c93ee1091
commit 9420bef7e1
1 changed files with 17 additions and 0 deletions

View File

@ -108,6 +108,7 @@ struct dnpds40_ctx {
int supports_2x6;
int supports_3x5x2;
int supports_a4x6;
int supports_45_34;
int supports_matte;
int supports_finematte;
int supports_luster;
@ -185,8 +186,11 @@ struct dnpds40_cmd {
#define MULTICUT_A4x5X2 43
#define MULTICUT_4x4 47
// #define MULTICUT_4x4_5 XXX
#define MULTICUT_4x6 48
#define MULTICUT_4x8 49
// #define MULTICUT_4_5x3 XXX
// #define MULTICUT_4_5x4 XXX
#define MULTICUT_4_5x4_5 50
#define MULTICUT_4_5x6 51
#define MULTICUT_4_5x8 52
@ -1059,6 +1063,8 @@ static int dnpds40_attach(void *vctx, struct dyesub_connection *conn, uint8_t jo
ctx->supports_mediaoffset = 1;
ctx->supports_mediaclassrfid = 1;
ctx->supports_systime = 1;
if (FW_VER_CHECK(1,10))
ctx->supports_45_34 = 1;
break;
default:
ERROR("Unknown printer type %d\n", ctx->conn->type);
@ -1883,6 +1889,7 @@ parsed:
case 151: // 4x8, QW410
if (job->multicut != MULTICUT_4x4 &&
job->multicut != MULTICUT_4x6 &&
// XXX job->multicut != MULTICUT_4x4_5 &&
job->multicut != MULTICUT_4x8) {
ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, job->multicut);
dnpds40_cleanup_job(job);
@ -1891,6 +1898,8 @@ parsed:
break;
case 160: // 4.5x6, QW410
if (job->multicut != MULTICUT_4_5x4_5 &&
// XXX job->multicut != MULTICUT_4_5x4 &&
// XXX job->multicut != MULTICUT_4_5x3 &&
job->multicut != MULTICUT_4_5x6) {
ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, job->multicut);
dnpds40_cleanup_job(job);
@ -2053,6 +2062,14 @@ parsed:
dnpds40_cleanup_job(job);
return CUPS_BACKEND_CANCEL;
}
#if 0 // XXX
if (!ctx->supports_45_34 &&
(job->multicut == MULTICUT_45_3 || job->multicut == MULTICUT_45_4 || job->multicut == MULTICUT_45_4)) {
ERROR("Printer does not support 4.5x3, 4.5x4, or 4x4.5 prints, aborting!\n");
dnpds40_cleanup_job(job);
return CUPS_BACKEND_CANCEL;
}
#endif
if (job->multicut == MULTICUT_6x9 && !ctx->supports_6x9) {
ERROR("Printer does not support 6x9 prints, aborting!\n");