common: Add proper definitions for special CUPS marker levels.

And report STATE(media-empty) globally based on this.
This commit is contained in:
Solomon Peachy 2019-12-11 23:18:39 -05:00
parent b7560192b9
commit 13d62550f3
16 changed files with 42 additions and 42 deletions

View File

@ -641,7 +641,7 @@ static int canonselphy_attach(void *vctx, struct libusb_device_handle *dev, int
/* Fill out marker structure */
ctx->marker.color = "#00FFFF#FF00FF#FFFF00";
ctx->marker.levelmax = -1; /* Unknown */
ctx->marker.levelmax = CUPS_MARKER_UNAVAILABLE;
if (test_mode < TEST_MODE_NOATTACH) {
/* Read printer status. Twice. */
@ -656,9 +656,9 @@ static int canonselphy_attach(void *vctx, struct libusb_device_handle *dev, int
return CUPS_BACKEND_FAILED;
if (ctx->printer->error_detect(rdbuf))
ctx->marker.levelnow = 0; /* Out of media */
ctx->marker.levelnow = 0;
else
ctx->marker.levelnow = -3; /* Unknown but OK */
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN_OK;
ctx->marker.name = ctx->printer->pgcode_names? ctx->printer->pgcode_names(rdbuf, ctx->printer, &ctx->marker.numtype) : "Unknown";
} else {
@ -1115,7 +1115,7 @@ static int canonselphy_query_markers(void *vctx, struct marker **markers, int *c
if (ctx->printer->error_detect(rdbuf))
ctx->marker.levelnow = 0;
else
ctx->marker.levelnow = -3;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN_OK;
*markers = &ctx->marker;
*count = 1;

View File

@ -225,11 +225,11 @@ static int selphyneo_attach(void *vctx, struct libusb_device_handle *dev, int ty
ctx->marker.color = "#00FFFF#FF00FF#FFFF00";
ctx->marker.name = selphynew_pgcodes(rdback.data[6]);
ctx->marker.numtype = rdback.data[6];
ctx->marker.levelmax = -1;
ctx->marker.levelmax = CUPS_MARKER_UNAVAILABLE;
if (rdback.data[2]) {
ctx->marker.levelnow = 0;
} else {
ctx->marker.levelnow = -3;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN_OK;
}
return CUPS_BACKEND_OK;
@ -506,7 +506,7 @@ static int selphyneo_query_markers(void *vctx, struct marker **markers, int *cou
if (rdback.data[2])
ctx->marker.levelnow = 0;
else
ctx->marker.levelnow = -3;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN_OK;
*markers = &ctx->marker;
*count = 1;

View File

@ -31,7 +31,7 @@
#include <errno.h>
#include <signal.h>
#define BACKEND_VERSION "0.98"
#define BACKEND_VERSION "0.99"
#ifndef URI_PREFIX
#error "Must Define URI_PREFIX"
#endif
@ -1462,13 +1462,13 @@ minimal:
ATTR("marker-message=");
for (i = 0 ; i < marker_count; i++) {
switch (markers[i].levelnow) {
case -1:
case CUPS_MARKER_UNAVAILABLE:
DEBUG2("'\"Unable to query remaining prints on %s media\"'", markers[i].name);
break;
case -2:
case CUPS_MARKER_UNKNOWN:
DEBUG2("'\"Unknown remaining prints on %s media\"'", markers[i].name);
break;
case -3:
case CUPS_MARKER_UNKNOWN_OK:
DEBUG2("'\"One or more remaining prints on %s media\"'", markers[i].name);
break;
default:
@ -1481,6 +1481,11 @@ minimal:
DEBUG2("\n");
}
if (markers[0].levelnow == 0)
STATE("+media-empty\n");
else if (markers[0].levelnow > 0 || markers[0].levelnow == CUPS_MARKER_UNKNOWN_OK)
STATE("-media-empty\n");
/* If we're running as a CUPS backend, report the media type */
if (full && getenv("DEVICE_URI")) {
for (i = 0 ; i < marker_count ; i++) {

View File

@ -295,6 +295,10 @@ extern struct dyesub_backend BACKEND;
#define CUPS_BACKEND_RETRY 6 /* Retry later */
#define CUPS_BACKEND_RETRY_CURRENT 7 /* Retry immediately */
#define CUPS_MARKER_UNAVAILABLE -1
#define CUPS_MARKER_UNKNOWN -2
#define CUPS_MARKER_UNKNOWN_OK -3
/* Argument processing */
#define GETOPT_LIST_GLOBAL "d:DfGhv"
#define GETOPT_PROCESS_GLOBAL \

View File

@ -1225,7 +1225,7 @@ static int dnpds40_attach(void *vctx, struct libusb_device_handle *dev, int type
ctx->marker[0].name = ctx->media_text;
ctx->marker[0].numtype = ctx->media;
ctx->marker[0].levelmax = ctx->media_count_new;
ctx->marker[0].levelnow = -2;
ctx->marker[0].levelnow = CUPS_MARKER_UNKNOWN;
ctx->marker_count = 1;
if (ctx->type == P_DNP_DS80D) {
@ -1233,7 +1233,7 @@ static int dnpds40_attach(void *vctx, struct libusb_device_handle *dev, int type
ctx->marker[1].name = dnpds80_duplex_media_types(ctx->duplex_media);
ctx->marker[1].numtype = ctx->duplex_media;
ctx->marker[1].levelmax = ctx->marker[0].levelmax/2;
ctx->marker[1].levelnow = -2;
ctx->marker[1].levelnow = CUPS_MARKER_UNKNOWN;
ctx->marker_count++;
}
@ -3084,10 +3084,10 @@ static int dnpds40_query_markers(void *vctx, struct marker **markers, int *count
ctx->marker[1].levelnow = 0;
break;
case DUPLEX_UNIT_PAPER_PROTECTIVE:
ctx->marker[1].levelnow = -1;
ctx->marker[1].levelnow = CUPS_MARKER_UNAVAILABLE;
break;
case DUPLEX_UNIT_PAPER_PRESENT:
ctx->marker[1].levelnow = -3;
ctx->marker[1].levelnow = CUPS_MARKER_UNKNOWN_OK;
break;
}
}

View File

@ -301,8 +301,8 @@ static int kodak1400_attach(void *vctx, struct libusb_device_handle *dev, int ty
ctx->marker.color = "#00FFFF#FF00FF#FFFF00";
ctx->marker.name = "Unknown";
ctx->marker.numtype = -1;
ctx->marker.levelmax = -1;
ctx->marker.levelnow = -2;
ctx->marker.levelmax = CUPS_MARKER_UNAVAILABLE;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN;
return CUPS_BACKEND_OK;
}

View File

@ -397,7 +397,7 @@ static int kodak605_attach(void *vctx, struct libusb_device_handle *dev, int typ
ctx->marker.name = kodak6_mediatypes(ctx->media->type);
ctx->marker.numtype = ctx->media->type;
ctx->marker.levelmax = 100; /* Ie percentage */
ctx->marker.levelnow = -2;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN;
return CUPS_BACKEND_OK;
}

View File

@ -738,7 +738,7 @@ static int kodak6800_attach(void *vctx, struct libusb_device_handle *dev, int ty
ctx->marker.name = kodak6_mediatypes(ctx->media_type);
ctx->marker.numtype = ctx->media_type;
ctx->marker.levelmax = 100; /* Ie percentage */
ctx->marker.levelnow = -2;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN;
return CUPS_BACKEND_OK;
}

View File

@ -452,8 +452,8 @@ static int magicard_attach(void *vctx, struct libusb_device_handle *dev, int typ
ctx->marker.color = "#00FFFF#FF00FF#FFFF00"; // XXX YMCK too!
ctx->marker.name = "Unknown"; // LC1/LC3/LC6/LC8
ctx->marker.numtype = -1;
ctx->marker.levelmax = -1;
ctx->marker.levelnow = -2;
ctx->marker.levelmax = CUPS_MARKER_UNAVAILABLE;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN;
return CUPS_BACKEND_OK;
}

View File

@ -146,8 +146,8 @@ static int mitsup95d_attach(void *vctx, struct libusb_device_handle *dev, int ty
ctx->marker.color = "#000000"; /* Ie black! */
ctx->marker.name = "Unknown";
ctx->marker.numtype = -1;
ctx->marker.levelmax = -1;
ctx->marker.levelnow = -2;
ctx->marker.levelmax = CUPS_MARKER_UNAVAILABLE;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN;
return CUPS_BACKEND_OK;
}
@ -557,7 +557,7 @@ static int mitsup95d_query_markers(void *vctx, struct marker **markers, int *cou
if (mitsup95d_get_status(ctx, queryresp))
return CUPS_BACKEND_FAILED;
ctx->marker.levelnow = -3;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN_OK;
if (ctx->type == P_MITSU_P95D) {
if (queryresp[6] & 0x40) {
@ -569,13 +569,6 @@ static int mitsup95d_query_markers(void *vctx, struct marker **markers, int *cou
}
}
/* Lot state */
if (ctx->marker.levelnow)
STATE("-media-empty\n");
else
STATE("+media-empty\n");
*markers = &ctx->marker;
*count = 1;

View File

@ -977,7 +977,7 @@ static int shinkos1245_attach(void *vctx, struct libusb_device_handle *dev, int
ctx->marker.name = ctx->media_8x12 ? "8x12" : "8x10";
ctx->marker.numtype = ctx->media_8x12;
ctx->marker.levelmax = ctx->media_8x12 ? 230 : 280;
ctx->marker.levelnow = -2;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN;
return CUPS_BACKEND_OK;
}

View File

@ -890,7 +890,7 @@ static int shinkos2145_attach(void *vctx, struct libusb_device_handle *dev, int
ctx->marker.name = sinfonia_print_codes(ctx->media_code, 0);
ctx->marker.numtype = ctx->media_code;
ctx->marker.levelmax = media_prints;
ctx->marker.levelnow = -2;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN;
return CUPS_BACKEND_OK;
}

View File

@ -1049,7 +1049,7 @@ static int shinkos6145_attach(void *vctx, struct libusb_device_handle *dev, int
ctx->marker.name = print_ribbons(ctx->media.ribbon_code);
ctx->marker.numtype = ctx->media.ribbon_code;
ctx->marker.levelmax = ribbon_sizes(ctx->media.ribbon_code);
ctx->marker.levelnow = -2;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN;
return CUPS_BACKEND_OK;
}

View File

@ -1015,7 +1015,7 @@ static int shinkos6245_attach(void *vctx, struct libusb_device_handle *dev, int
ctx->marker.name = ribbon_sizes(ctx->media.ribbon_code);
ctx->marker.numtype = ctx->media.ribbon_code;
ctx->marker.levelmax = 100;
ctx->marker.levelnow = -2;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN;
return CUPS_BACKEND_OK;
}

View File

@ -121,8 +121,8 @@ static int upd_attach(void *vctx, struct libusb_device_handle *dev, int type,
ctx->marker.name = "Unknown";
ctx->marker.numtype = -1;
ctx->marker.levelmax = -1;
ctx->marker.levelnow = -2;
ctx->marker.levelmax = CUPS_MARKER_UNAVAILABLE;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN;
return CUPS_BACKEND_OK;
}
@ -583,10 +583,8 @@ static int upd_query_markers(void *vctx, struct marker **markers, int *count)
if (ctx->stsbuf.sts1 == 0x40 ||
ctx->stsbuf.sts1 == 0x08) {
ctx->marker.levelnow = 0;
STATE("+media-empty\n");
} else {
ctx->marker.levelnow = -3;
STATE("-media-empty\n");
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN_OK;
}
return CUPS_BACKEND_OK;

View File

@ -142,8 +142,8 @@ static int updneo_attach(void *vctx, struct libusb_device_handle *dev, int type,
ctx->marker.name = "Unknown";
ctx->marker.numtype = -1;
ctx->marker.levelmax = -1;
ctx->marker.levelnow = -2;
ctx->marker.levelmax = CUPS_MARKER_UNAVAILABLE;
ctx->marker.levelnow = CUPS_MARKER_UNKNOWN;
} else {
ctx->marker.color = "#00FFFF#FF00FF#FFFF00";
ctx->native_bpp = 3;