mitsu: Enhance media type reporting to handle per-model variations

This commit is contained in:
Solomon Peachy 2020-02-28 23:24:28 -05:00
parent 7a985c2697
commit a486a91dfb
4 changed files with 60 additions and 40 deletions

View file

@ -220,45 +220,65 @@ const char *mitsu_temperatures(uint8_t temp)
return "Unknown Temperature Status";
}
const char *mitsu_media_types(uint8_t brand, uint8_t type)
const char *mitsu_media_types(int printer, uint8_t brand, uint8_t type)
{
if (brand == 0xff && type == 0x01)
return "CK-D735 (3.5x5)";
else if (brand == 0xff && type == 0x02)
return "CK-D746 (4x6)";
else if (brand == 0xff && type == 0x04)
return "CK-D757 (5x7)";
else if (brand == 0xff && type == 0x05)
return "CK-D769 (6x9)";
else if (brand == 0xff && type == 0x0f)
return "CK-D768/CK-D868 (6x8)";
else if (brand == 0x6c && type == 0x84)
return "Kodak 5R (5x7)";
else if (brand == 0x6c && type == 0x8f)
return "Kodak 6R (6x8)";
else if (brand == 0x61 && type == 0x84)
return "CK-K57R (5x7)";
else if (brand == 0x61 && type == 0x8f)
return "CK-K76R (6x8)";
else if (brand == 0x7a && type == 0x01)
return "RL-CF900 (3.5x5)";
else if (brand == 0x7a && type == 0x02)
return "RK-CF800/4R (4x6)";
else if (brand == 0x7a && type == 0x04)
return "R2L-CF460/5R (5x7)";
else if (brand == 0x7a && type == 0x0f)
return "R68-CF400/6R (6x8)";
else
return "Unknown";
UNUSED(printer);
if (brand == 0xff) { /* Mitsubishi */
if (printer == P_MITSU_M1) {
if (type == 0x02)
return "CK-M46S (4x6)";
else if (type == 0x04)
return "CK-M57S (5x7)";
else if (type == 0x0f)
return "CK-M68S (6x8)";
} else if (printer == P_MITSU_D80) {
if (type == 0x0f)
return "CK-D868 (6x8)";
} else if (printer == P_MITSU_D90) {
if (type == 0x0f)
return "CK-D768/CK-D868 (6x8)";
}
/* Mitsu D70, and D90 fallthrough */
if (type == 0x01)
return "CK-D735 (3.5x5)";
else if (type == 0x02)
return "CK-D746 (4x6)";
else if (type == 0x04)
return "CK-D757 (5x7)";
else if (type == 0x05)
return "CK-D769 (6x9)";
else if (type == 0x0f)
return "CK-D768 (6x8)";
} else if (brand == 0x61) { /* Mitsubishi (K60 series) */
if (type == 0x84)
return "CK-K57R (5x7)";
else if (type == 0x8f)
return "CK-K76R (6x8)";
} else if (brand == 0x6c) { /* Kodak */
if (type == 0x84)
return "Kodak 5R (5x7)";
else if (type == 0x8f)
return "Kodak 6R (6x8)";
} else if (brand == 0x7a) { /* Fujifilm*/
if (type == 0x01)
return "RL-CF900 (3.5x5)";
else if (type == 0x02)
return "RK-CF800/4R (4x6)";
else if (type == 0x04)
return "R2L-CF460/5R (5x7)";
else if (type == 0x0f)
return "R68-CF400/6R (6x8)";
}
return "Unknown";
// Also CK-D715, CK-D718, CK-D720, CK-D723 (4x6,5x8,6x8,6x9) for D70-S model
// CK-D746-U for D70-U model
// CK-D820 (6x8) for D80-S model
// D90 can use _all_ of these types except for the -U!
// CK-M57S (5x7 for M1)
// CK-M68S (6x8 for M1)
// CK-M46S (6x4 for M1)
// CK-M15S (6x4 for M15)
// CK-M18S (5x7 for M15)
// CK-M20S (6x8 for M15)

View file

@ -71,7 +71,7 @@ typedef void (*CP98xx_DestroyDataFN)(const struct mitsu98xx_data *data);
#define REQUIRED_LIB_APIVERSION 5
#define LIBMITSU_VER "0.04"
#define LIBMITSU_VER "0.05"
/* Image processing library function prototypes */
#define LIB_NAME_RE "libMitsuD70ImageReProcess" DLL_SUFFIX
@ -112,4 +112,4 @@ int mitsu_readlamdata(const char *fname, uint16_t lamstride,
#define TEMPERATURE_COOLING 0x80
const char *mitsu_temperatures(uint8_t temp);
const char *mitsu_media_types(uint8_t brand, uint8_t type);
const char *mitsu_media_types(int printer, uint8_t brand, uint8_t type);

View file

@ -639,7 +639,7 @@ static int mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, int typ
/* Set up markers */
ctx->marker[0].color = "#00FFFF#FF00FF#FFFF00";
ctx->marker[0].name = mitsu_media_types(resp.lower.media_brand, resp.lower.media_type);
ctx->marker[0].name = mitsu_media_types(ctx->type, resp.lower.media_brand, resp.lower.media_type);
ctx->marker[0].numtype = resp.lower.media_type;
ctx->marker[0].levelmax = be16_to_cpu(resp.lower.capacity);
ctx->marker[0].levelnow = be16_to_cpu(resp.lower.remain);
@ -647,7 +647,7 @@ static int mitsu70x_attach(void *vctx, struct libusb_device_handle *dev, int typ
if (ctx->num_decks == 2) {
ctx->marker[1].color = "#00FFFF#FF00FF#FFFF00";
ctx->marker[1].name = mitsu_media_types(resp.upper.media_brand, resp.upper.media_type);
ctx->marker[1].name = mitsu_media_types(ctx->type, resp.upper.media_brand, resp.upper.media_type);
ctx->marker[1].numtype = resp.upper.media_type;
ctx->marker[1].levelmax = be16_to_cpu(resp.upper.capacity);
ctx->marker[1].levelnow = be16_to_cpu(resp.upper.remain);
@ -2020,7 +2020,7 @@ static void mitsu70x_dump_printerstatus(struct mitsu70x_ctx *ctx,
INFO("Lower Mechanical Status: %s\n",
mitsu70x_mechastatus(resp->lower.mecha_status));
INFO("Lower Media Type: %s (%02x/%02x)\n",
mitsu_media_types(resp->lower.media_brand, resp->lower.media_type),
mitsu_media_types(ctx->type, resp->lower.media_brand, resp->lower.media_type),
resp->lower.media_brand,
resp->lower.media_type);
INFO("Lower Prints Remaining: %03d/%03d\n",
@ -2042,7 +2042,7 @@ static void mitsu70x_dump_printerstatus(struct mitsu70x_ctx *ctx,
INFO("Upper Mechanical Status: %s\n",
mitsu70x_mechastatus(resp->upper.mecha_status));
INFO("Upper Media Type: %s (%02x/%02x)\n",
mitsu_media_types(resp->upper.media_brand, resp->upper.media_type),
mitsu_media_types(ctx->type, resp->upper.media_brand, resp->upper.media_type),
resp->upper.media_brand,
resp->upper.media_type);
INFO("Upper Prints Remaining: %03d/%03d\n",

View file

@ -606,7 +606,7 @@ static int mitsud90_attach(void *vctx, struct libusb_device_handle *dev, int typ
ctx->marker.color = "#00FFFF#FF00FF#FFFF00";
ctx->marker.numtype = resp.media.type;
ctx->marker.name = mitsu_media_types(resp.media.brand, resp.media.type);
ctx->marker.name = mitsu_media_types(ctx->type, resp.media.brand, resp.media.type);
ctx->marker.levelmax = be16_to_cpu(resp.media.capacity);
ctx->marker.levelnow = be16_to_cpu(resp.media.remain);
@ -1101,7 +1101,7 @@ static int mitsud90_get_media(struct mitsud90_ctx *ctx)
return CUPS_BACKEND_FAILED;
INFO("Media Type: %s (%02x/%02x)\n",
mitsu_media_types(resp.media.brand, resp.media.type),
mitsu_media_types(ctx->type, resp.media.brand, resp.media.type),
resp.media.brand,
resp.media.type);
INFO("Prints Remaining: %03d/%03d\n",