all: Pull the static device table out of the backend structure definition

...Now it's a separate structure referenced through a const pointer.

Personally I find this a bit uglier but I'm sick of the voliminous noise
that static analyzers generated from the way it was.
This commit is contained in:
Solomon Peachy 2024-04-05 07:50:54 -04:00
parent 23019c1558
commit 6c0efde77c
21 changed files with 302 additions and 257 deletions

View File

@ -1,7 +1,7 @@
/*
* Canon SELPHY ES/CP series CUPS backend
*
* (c) 2007-2023 Solomon Peachy <pizza@shaftnet.org>
* (c) 2007-2024 Solomon Peachy <pizza@shaftnet.org>
*
* The latest version of this program can be found at:
*
@ -1114,11 +1114,45 @@ static const char *canonselphy_prefixes[] = {
"selphyes30", "selphyes40",
NULL
};
static const struct device_id canonselphy_devices[] = {
{ 0x04a9, 0x304a, P_CP10, NULL, "canon-cp10"},
{ 0x04a9, 0x3063, P_CPGENERIC, NULL, "canon-cp100"},
{ 0x04a9, 0x307c, P_CPGENERIC, NULL, "canon-cp200"},
{ 0x04a9, 0x30bd, P_CPGENERIC, NULL, "canon-cp220"},
{ 0x04a9, 0x307d, P_CPGENERIC, NULL, "canon-cp300"},
{ 0x04a9, 0x30be, P_CPGENERIC, NULL, "canon-cp330"},
{ 0x04a9, 0x30f6, P_CPGENERIC, NULL, "canon-cp400"},
{ 0x04a9, 0x30f5, P_CPGENERIC, NULL, "canon-cp500"},
{ 0x04a9, 0x3128, P_CPGENERIC, NULL, "canon-cp510"},
{ 0x04a9, 0x3172, P_CPGENERIC, NULL, "canon-cp520"},
{ 0x04a9, 0x31b1, P_CPGENERIC, NULL, "canon-cp530"},
{ 0x04a9, 0x310b, P_CPGENERIC, NULL, "canon-cp600"},
{ 0x04a9, 0x3127, P_CPGENERIC, NULL, "canon-cp710"},
{ 0x04a9, 0x3143, P_CPGENERIC, NULL, "canon-cp720"},
{ 0x04a9, 0x3142, P_CPGENERIC, NULL, "canon-cp730"},
{ 0x04a9, 0x3171, P_CPGENERIC, NULL, "canon-cp740"},
{ 0x04a9, 0x3170, P_CPGENERIC, NULL, "canon-cp750"},
{ 0x04a9, 0x31ab, P_CPGENERIC, NULL, "canon-cp760"},
{ 0x04a9, 0x31aa, P_CPGENERIC, NULL, "canon-cp770"},
{ 0x04a9, 0x31dd, P_CPGENERIC, NULL, "canon-cp780"},
{ 0x04a9, 0x31e7, P_CP790, NULL, "canon-cp790"},
{ 0x04a9, 0x3214, P_CPGENERIC, NULL, "canon-cp800"},
{ 0x04a9, 0x3256, P_CPGENERIC, NULL, "canon-cp810"},
{ 0x04a9, 0x3255, P_CPGENERIC, NULL, "canon-cp900"},
{ 0x04a9, 0x3141, P_ES1, NULL, "canon-es1"},
{ 0x04a9, 0x3185, P_ES2_20, NULL, "canon-es2"},
{ 0x04a9, 0x3186, P_ES2_20, NULL, "canon-es20"},
{ 0x04a9, 0x31af, P_ES3_30, NULL, "canon-es3"},
{ 0x04a9, 0x31b0, P_ES3_30, NULL, "canon-es30"},
{ 0x04a9, 0x31ee, P_ES40, NULL, "canon-es40"},
{ 0, 0, 0, NULL, NULL}
};
const struct dyesub_backend canonselphy_backend = {
.name = "Canon SELPHY CP/ES (legacy)",
.version = "0.113",
.uri_prefixes = canonselphy_prefixes,
.devices = canonselphy_devices,
.cmdline_usage = canonselphy_cmdline,
.cmdline_arg = canonselphy_cmdline_arg,
.init = canonselphy_init,
@ -1127,39 +1161,6 @@ const struct dyesub_backend canonselphy_backend = {
.cleanup_job = canonselphy_cleanup_job,
.main_loop = canonselphy_main_loop,
.query_markers = canonselphy_query_markers,
.devices = {
{ 0x04a9, 0x304a, P_CP10, NULL, "canon-cp10"},
{ 0x04a9, 0x3063, P_CPGENERIC, NULL, "canon-cp100"},
{ 0x04a9, 0x307c, P_CPGENERIC, NULL, "canon-cp200"},
{ 0x04a9, 0x30bd, P_CPGENERIC, NULL, "canon-cp220"},
{ 0x04a9, 0x307d, P_CPGENERIC, NULL, "canon-cp300"},
{ 0x04a9, 0x30be, P_CPGENERIC, NULL, "canon-cp330"},
{ 0x04a9, 0x30f6, P_CPGENERIC, NULL, "canon-cp400"},
{ 0x04a9, 0x30f5, P_CPGENERIC, NULL, "canon-cp500"},
{ 0x04a9, 0x3128, P_CPGENERIC, NULL, "canon-cp510"},
{ 0x04a9, 0x3172, P_CPGENERIC, NULL, "canon-cp520"},
{ 0x04a9, 0x31b1, P_CPGENERIC, NULL, "canon-cp530"},
{ 0x04a9, 0x310b, P_CPGENERIC, NULL, "canon-cp600"},
{ 0x04a9, 0x3127, P_CPGENERIC, NULL, "canon-cp710"},
{ 0x04a9, 0x3143, P_CPGENERIC, NULL, "canon-cp720"},
{ 0x04a9, 0x3142, P_CPGENERIC, NULL, "canon-cp730"},
{ 0x04a9, 0x3171, P_CPGENERIC, NULL, "canon-cp740"},
{ 0x04a9, 0x3170, P_CPGENERIC, NULL, "canon-cp750"},
{ 0x04a9, 0x31ab, P_CPGENERIC, NULL, "canon-cp760"},
{ 0x04a9, 0x31aa, P_CPGENERIC, NULL, "canon-cp770"},
{ 0x04a9, 0x31dd, P_CPGENERIC, NULL, "canon-cp780"},
{ 0x04a9, 0x31e7, P_CP790, NULL, "canon-cp790"},
{ 0x04a9, 0x3214, P_CPGENERIC, NULL, "canon-cp800"},
{ 0x04a9, 0x3256, P_CPGENERIC, NULL, "canon-cp810"},
{ 0x04a9, 0x3255, P_CPGENERIC, NULL, "canon-cp900"},
{ 0x04a9, 0x3141, P_ES1, NULL, "canon-es1"},
{ 0x04a9, 0x3185, P_ES2_20, NULL, "canon-es2"},
{ 0x04a9, 0x3186, P_ES2_20, NULL, "canon-es20"},
{ 0x04a9, 0x31af, P_ES3_30, NULL, "canon-es3"},
{ 0x04a9, 0x31b0, P_ES3_30, NULL, "canon-es30"},
{ 0x04a9, 0x31ee, P_ES40, NULL, "canon-es40"},
{ 0, 0, 0, NULL, NULL}
}
};
/*

View File

@ -532,6 +532,16 @@ static const char *canonselphyneo_prefixes[] = {
NULL
};
static const struct device_id selphyneo_devices[] = {
{ 0x04a9, 0x327b, P_CP910, NULL, "canon-cp820"},
{ 0x04a9, 0x327a, P_CP910, NULL, "canon-cp910"},
{ 0x04a9, 0x32ae, P_CP910, NULL, "canon-cp1000"},
{ 0x04a9, 0x32b1, P_CP910, NULL, "canon-cp1200"},
{ 0x04a9, 0x32db, P_CP910, NULL, "canon-cp1300"},
{ 0x04a9, 0x3302, P_CP910, NULL, "canon-cp1500"},
{ 0, 0, 0, NULL, NULL}
};
const struct dyesub_backend canonselphyneo_backend = {
.name = "Canon SELPHY CP (new)",
.version = "0.24",
@ -544,15 +554,7 @@ const struct dyesub_backend canonselphyneo_backend = {
.read_parse = selphyneo_read_parse,
.main_loop = selphyneo_main_loop,
.query_markers = selphyneo_query_markers,
.devices = {
{ 0x04a9, 0x327b, P_CP910, NULL, "canon-cp820"},
{ 0x04a9, 0x327a, P_CP910, NULL, "canon-cp910"},
{ 0x04a9, 0x32ae, P_CP910, NULL, "canon-cp1000"},
{ 0x04a9, 0x32b1, P_CP910, NULL, "canon-cp1200"},
{ 0x04a9, 0x32db, P_CP910, NULL, "canon-cp1300"},
{ 0x04a9, 0x3302, P_CP910, NULL, "canon-cp1500"},
{ 0, 0, 0, NULL, NULL}
}
.devices = selphyneo_devices,
};
/*

View File

@ -29,7 +29,7 @@
#include <signal.h>
#include <strings.h> /* For strncasecmp */
#define BACKEND_VERSION "0.131"
#define BACKEND_VERSION "0.132"
#ifndef CORRTABLE_PATH
#ifdef PACKAGE_DATA_DIR

View File

@ -302,24 +302,33 @@ void dyesub_pano_split_rgb8(const uint8_t *src, uint16_t cols, uint8_t numpanels
/* Backend Functions */
struct dyesub_backend {
/* Required properties */
const char *name;
const char *version;
const char **uri_prefixes;
const struct device_id *devices;
/* Optional properties */
const uint32_t flags;
void (*cmdline_usage)(void); /* Optional */
/* Required functions */
void *(*init)(void);
int (*attach)(void *ctx, struct dyesub_connection *conn, uint8_t jobid);
void (*teardown)(void *ctx);
int (*cmdline_arg)(void *ctx, int argc, char **argv);
int (*read_parse)(void *ctx, const void **job, int data_fd, int copies);
int (*main_loop)(void *ctx, const void *job, int wait_on_return);
void (*cleanup_job)(const void *job);
/* Required if backend implemnets job combining */
void *(*combine_jobs)(const void *job1, const void *job2);
int (*job_polarity)(void *ctx);
int (*main_loop)(void *ctx, const void *job, int wait_on_return);
int (*query_serno)(struct dyesub_connection *conn, char *buf, int buf_len); /* Optional */
/* Optional stuff */
void (*teardown)(void *ctx);
void (*cmdline_usage)(void);
int (*query_serno)(struct dyesub_connection *conn, char *buf, int buf_len);
int (*query_markers)(void *ctx, struct marker **markers, int *count);
int (*query_stats)(void *ctx, struct printerstats *stats); /* Optional */
const struct device_id devices[];
int (*query_stats)(void *ctx, struct printerstats *stats);
};
/* Global data */

View File

@ -4608,10 +4608,36 @@ static const char *dnpds40_prefixes[] = {
NULL
};
static const struct device_id dnpcitizen_devices[] = {
{ 0x1343, 0x0003, P_DNP_DS40, NULL, "dnp-ds40"},
{ 0x1343, 0x0003, P_DNP_DS40, NULL, "citizen-cx"}, /* Duplicate */
{ 0x1343, 0x0004, P_DNP_DS80, NULL, "dnp-ds80"},
{ 0x1343, 0x0004, P_DNP_DS80, NULL, "citizen-cx-w"}, /* Duplicate */
{ 0x1343, 0x0004, P_DNP_DS80, NULL, "mitsubishi-cp3800dw"}, /* Duplicate */
{ 0x1343, 0x0008, P_DNP_DS80D, NULL, "dnp-ds80dx"},
{ 0x1343, 0x0005, P_DNP_DSRX1, NULL, "dnp-dsrx1"},
{ 0x1343, 0x0005, P_DNP_DSRX1, NULL, "citizen-cy"}, /* Duplicate */
{ 0x1343, 0x0005, P_DNP_DSRX1, NULL, "citizen-cy-02"}, /* Duplicate */
{ 0x1452, 0x8b01, P_DNP_DS620, NULL, "dnp-ds620"},
{ 0x1452, 0x9001, P_DNP_DS820, NULL, "dnp-ds820"},
{ 0x1452, 0x9201, P_DNP_QW410, NULL, "dnp-qw410"},
{ 0x1343, 0x0002, P_CITIZEN_CW01, NULL, "citizen-cw-01"},
{ 0x1343, 0x0002, P_CITIZEN_CW01, NULL, "citizen-op900"}, /* Duplicate */
{ 0x1343, 0x0006, P_CITIZEN_OP900II, NULL, "citizen-cw-02"},
{ 0x1343, 0x0006, P_CITIZEN_OP900II, NULL, "citizen-op900ii"}, /* Duplicate */
{ 0x1343, 0x000a, P_DNP_DS620, NULL, "citizen-cx-02"},
// { 0x1343, 0xXXXX, P_DNP_DS620, NULL, "citizen-cx-02s"},
{ 0x1343, 0x000b, P_DNP_DS820, NULL, "citizen-cx-02w"},
{ 0x1343, 0x000c, P_DNP_QW410, NULL, "citizen-cz-01"},
// { 0x04cb, 0xXXXX, P_DNP_DS620, NULL, "fujifilm-ask-400"},
{ 0, 0, 0, NULL, NULL}
};
const struct dyesub_backend dnpds40_backend = {
.name = "DNP DS-series / Citizen C-series",
.version = "0.157",
.uri_prefixes = dnpds40_prefixes,
.devices = dnpcitizen_devices,
.cmdline_usage = dnpds40_cmdline,
.cmdline_arg = dnpds40_cmdline_arg,
.init = dnpds40_init,
@ -4625,30 +4651,6 @@ const struct dyesub_backend dnpds40_backend = {
.query_stats = dnp_query_stats,
.combine_jobs = dnp_combine_jobs,
.job_polarity = dnp_job_polarity,
.devices = {
{ 0x1343, 0x0003, P_DNP_DS40, NULL, "dnp-ds40"},
{ 0x1343, 0x0003, P_DNP_DS40, NULL, "citizen-cx"}, /* Duplicate */
{ 0x1343, 0x0004, P_DNP_DS80, NULL, "dnp-ds80"},
{ 0x1343, 0x0004, P_DNP_DS80, NULL, "citizen-cx-w"}, /* Duplicate */
{ 0x1343, 0x0004, P_DNP_DS80, NULL, "mitsubishi-cp3800dw"}, /* Duplicate */
{ 0x1343, 0x0008, P_DNP_DS80D, NULL, "dnp-ds80dx"},
{ 0x1343, 0x0005, P_DNP_DSRX1, NULL, "dnp-dsrx1"},
{ 0x1343, 0x0005, P_DNP_DSRX1, NULL, "citizen-cy"}, /* Duplicate */
{ 0x1343, 0x0005, P_DNP_DSRX1, NULL, "citizen-cy-02"}, /* Duplicate */
{ 0x1452, 0x8b01, P_DNP_DS620, NULL, "dnp-ds620"},
{ 0x1452, 0x9001, P_DNP_DS820, NULL, "dnp-ds820"},
{ 0x1452, 0x9201, P_DNP_QW410, NULL, "dnp-qw410"},
{ 0x1343, 0x0002, P_CITIZEN_CW01, NULL, "citizen-cw-01"},
{ 0x1343, 0x0002, P_CITIZEN_CW01, NULL, "citizen-op900"}, /* Duplicate */
{ 0x1343, 0x0006, P_CITIZEN_OP900II, NULL, "citizen-cw-02"},
{ 0x1343, 0x0006, P_CITIZEN_OP900II, NULL, "citizen-op900ii"}, /* Duplicate */
{ 0x1343, 0x000a, P_DNP_DS620, NULL, "citizen-cx-02"},
// { 0x1343, 0xXXXX, P_DNP_DS620, NULL, "citizen-cx-02s"},
{ 0x1343, 0x000b, P_DNP_DS820, NULL, "citizen-cx-02w"},
{ 0x1343, 0x000c, P_DNP_QW410, NULL, "citizen-cz-01"},
// { 0x04cb, 0xXXXX, P_DNP_DS620, NULL, "fujifilm-ask-400"},
{ 0, 0, 0, NULL, NULL}
}
};
/* Windows spool file support */

View File

@ -3330,6 +3330,38 @@ static const char *hiti_prefixes[] = {
NULL
};
static const struct device_id hiti_devices[] = {
{ 0x0d16, 0x0309, P_HITI_CS2XX, NULL, "hiti-cs200e"},
{ 0x0d16, 0x030a, P_HITI_CS2XX, NULL, "hiti-cs220e"},
{ 0x0d16, 0x030b, P_HITI_CS2XX, NULL, "hiti-cs230e"},
{ 0x0d16, 0x030c, P_HITI_CS2XX, NULL, "hiti-cs250e"},
{ 0x0d16, 0x030d, P_HITI_CS2XX, NULL, "hiti-cs290e"},
{ 0x0d16, 0x0007, P_HITI_51X, NULL, "hiti-p510k"},
{ 0x0d16, 0x000b, P_HITI_51X, NULL, "hiti-p510l"},
{ 0x0d16, 0x000d, P_HITI_51X, NULL, "hiti-p518a"},
{ 0x0d16, 0x010e, P_HITI_51X, NULL, "hiti-p510s"},
{ 0x0d16, 0x0111, P_HITI_51X, NULL, "hiti-p510si"},
{ 0x0d16, 0x0112, P_HITI_51X, NULL, "hiti-p518s"},
{ 0x0d16, 0x0502, P_HITI_520, NULL, "hiti-p520l"},
{ 0x0d16, 0x0503, P_HITI_310, NULL, "hiti-p310l"},
{ 0x0d16, 0x050a, P_HITI_310, NULL, "hiti-p310w"},
{ 0x0d16, 0x050c, P_HITI_320, NULL, "hiti-p320w"},
{ 0x0d16, 0x0509, P_HITI_461, NULL, "hiti-p461"},
{ 0x0d16, 0x050e, P_HITI_525, NULL, "hiti-p525l"},
{ 0x0d16, 0x000f, P_HITI_530, NULL, "hiti-p530d"},
{ 0x0d16, 0x0009, P_HITI_720, NULL, "hiti-p720l"},
{ 0x0d16, 0x000a, P_HITI_720, NULL, "hiti-p728l"},
{ 0x0d16, 0x0501, P_HITI_750, NULL, "hiti-p750l"},
{ 0x0d16, 0xc000, P_HITI_51X, NULL, "yashica-yp120"},
{ 0x0d16, 0xd000, P_HITI_51X, NULL, "touchtunes-p510tt"},
{ 0, 0, 0, NULL, NULL}
/*
#define USB_PID_HITI_P110S 0x0110
#define USB_PID_HITI_X610 0x0800
*/
};
const struct dyesub_backend hiti_backend = {
.name = "HiTi Photo Printers",
.version = "0.69",
@ -3346,39 +3378,9 @@ const struct dyesub_backend hiti_backend = {
.query_markers = hiti_query_markers,
.query_stats = hiti_query_stats,
.combine_jobs = hiti_combine_jobs,
.devices = {
{ 0x0d16, 0x0309, P_HITI_CS2XX, NULL, "hiti-cs200e"},
{ 0x0d16, 0x030a, P_HITI_CS2XX, NULL, "hiti-cs220e"},
{ 0x0d16, 0x030b, P_HITI_CS2XX, NULL, "hiti-cs230e"},
{ 0x0d16, 0x030c, P_HITI_CS2XX, NULL, "hiti-cs250e"},
{ 0x0d16, 0x030d, P_HITI_CS2XX, NULL, "hiti-cs290e"},
{ 0x0d16, 0x0007, P_HITI_51X, NULL, "hiti-p510k"},
{ 0x0d16, 0x000b, P_HITI_51X, NULL, "hiti-p510l"},
{ 0x0d16, 0x000d, P_HITI_51X, NULL, "hiti-p518a"},
{ 0x0d16, 0x010e, P_HITI_51X, NULL, "hiti-p510s"},
{ 0x0d16, 0x0111, P_HITI_51X, NULL, "hiti-p510si"},
{ 0x0d16, 0x0112, P_HITI_51X, NULL, "hiti-p518s"},
{ 0x0d16, 0x0502, P_HITI_520, NULL, "hiti-p520l"},
{ 0x0d16, 0x0503, P_HITI_310, NULL, "hiti-p310l"},
{ 0x0d16, 0x050a, P_HITI_310, NULL, "hiti-p310w"},
{ 0x0d16, 0x050c, P_HITI_320, NULL, "hiti-p320w"},
{ 0x0d16, 0x0509, P_HITI_461, NULL, "hiti-p461"},
{ 0x0d16, 0x050e, P_HITI_525, NULL, "hiti-p525l"},
{ 0x0d16, 0x000f, P_HITI_530, NULL, "hiti-p530d"},
{ 0x0d16, 0x0009, P_HITI_720, NULL, "hiti-p720l"},
{ 0x0d16, 0x000a, P_HITI_720, NULL, "hiti-p728l"},
{ 0x0d16, 0x0501, P_HITI_750, NULL, "hiti-p750l"},
{ 0x0d16, 0xc000, P_HITI_51X, NULL, "yashica-yp120"},
{ 0x0d16, 0xd000, P_HITI_51X, NULL, "touchtunes-p510tt"},
{ 0, 0, 0, NULL, NULL}
}
.devices = hiti_devices,
};
/*
#define USB_PID_HITI_P110S 0x0110
#define USB_PID_HITI_X610 0x0800
*/
/* TODO:
- Figure out 5x6, 6x5, and 6x6 prints (need 6x8 or 6x9 media!)

View File

@ -1,7 +1,7 @@
/*
* Kodak Professional 1400/805 CUPS backend
*
* (c) 2013-2021 Solomon Peachy <pizza@shaftnet.org>
* (c) 2013-2024 Solomon Peachy <pizza@shaftnet.org>
*
* The latest version of this program can be found at:
*
@ -635,10 +635,22 @@ static const char *kodak1400_prefixes[] = {
NULL,
};
static const struct device_id kodak1400_devices[] = {
{ 0x040a, 0x4022, P_KODAK_1400_805, "Kodak", "kodak-1400"},
{ 0x040a, 0x4034, P_KODAK_1400_805, "Kodak", "kodak-805"},
{ 0x06d3, 0x038b, P_KODAK_1400_805, NULL, "mitsubishi-3020d"},
{ 0x06d3, 0x038b, P_KODAK_1400_805, NULL, "mitsubishi-3020du"}, /* Duplicate */
{ 0x06d3, 0x038b, P_KODAK_1400_805, NULL, "mitsubishi-3020de"}, /* Duplicate */
{ 0x06d3, 0x03aa, P_KODAK_1400_805, NULL, "mitsubishi-3020da" },
{ 0x06d3, 0x03aa, P_KODAK_1400_805, NULL, "mitsubishi-3020dae" }, /* Duplicate */
{ 0, 0, 0, NULL, NULL}
};
const struct dyesub_backend kodak1400_backend = {
.name = "Kodak 1400/805",
.version = "0.44",
.uri_prefixes = kodak1400_prefixes,
.devices = kodak1400_devices,
.cmdline_usage = kodak1400_cmdline,
.cmdline_arg = kodak1400_cmdline_arg,
.init = kodak1400_init,
@ -647,16 +659,6 @@ const struct dyesub_backend kodak1400_backend = {
.read_parse = kodak1400_read_parse,
.main_loop = kodak1400_main_loop,
.query_markers = kodak1400_query_markers,
.devices = {
{ 0x040a, 0x4022, P_KODAK_1400_805, "Kodak", "kodak-1400"},
{ 0x040a, 0x4034, P_KODAK_1400_805, "Kodak", "kodak-805"},
{ 0x06d3, 0x038b, P_KODAK_1400_805, NULL, "mitsubishi-3020d"},
{ 0x06d3, 0x038b, P_KODAK_1400_805, NULL, "mitsubishi-3020du"}, /* Duplicate */
{ 0x06d3, 0x038b, P_KODAK_1400_805, NULL, "mitsubishi-3020de"}, /* Duplicate */
{ 0x06d3, 0x03aa, P_KODAK_1400_805, NULL, "mitsubishi-3020da" },
{ 0x06d3, 0x03aa, P_KODAK_1400_805, NULL, "mitsubishi-3020dae" }, /* Duplicate */
{ 0, 0, 0, NULL, NULL}
}
};
/* Kodak 1400/805 data format

View File

@ -945,11 +945,21 @@ static const char *kodak605_prefixes[] = {
NULL,
};
static const struct device_id kodak605_devices[] = {
{ 0x040a, 0x402e, P_KODAK_605, "Kodak", "kodak-605"}, /* Shinko CHC-S1545-5A */
{ 0x040a, 0x4035, P_KODAK_7000, "Kodak", "kodak-7000"}, /* Shinko CHC-S1645-5A */
{ 0x040a, 0x4037, P_KODAK_701X, "Kodak", "kodak-7010"}, /* Shinko CHC-S1645-5B */
{ 0x040a, 0x4038, P_KODAK_701X, "Kodak", "kodak-7015"}, /* Shinko CHC-S1645-5C */
{ 0, 0, 0, NULL, NULL}
};
/* Exported */
const struct dyesub_backend kodak605_backend = {
.name = "Kodak 605/70xx",
.version = "0.57" " (lib " LIBSINFONIA_VER ")",
.uri_prefixes = kodak605_prefixes,
.devices = kodak605_devices,
.cmdline_usage = kodak605_cmdline,
.cmdline_arg = kodak605_cmdline_arg,
.init = kodak605_init,
@ -961,13 +971,6 @@ const struct dyesub_backend kodak605_backend = {
.query_markers = kodak605_query_markers,
.query_serno = sinfonia_query_serno,
.query_stats = kodak605_query_stats,
.devices = {
{ 0x040a, 0x402e, P_KODAK_605, "Kodak", "kodak-605"}, /* Shinko CHC-S1545-5A */
{ 0x040a, 0x4035, P_KODAK_7000, "Kodak", "kodak-7000"}, /* Shinko CHC-S1645-5A */
{ 0x040a, 0x4037, P_KODAK_701X, "Kodak", "kodak-7010"}, /* Shinko CHC-S1645-5B */
{ 0x040a, 0x4038, P_KODAK_701X, "Kodak", "kodak-7015"}, /* Shinko CHC-S1645-5C */
{ 0, 0, 0, NULL, NULL}
}
};
/* Kodak 605/70xx data format

View File

@ -1060,6 +1060,12 @@ static const char *kodak6800_prefixes[] = {
NULL
};
static const struct device_id kodak6800_devices[] = {
{ 0x040a, 0x4021, P_KODAK_6800, "Kodak", "kodak-6800"}, /* Shinko CHC-S1145-5A */
{ 0x040a, 0x402b, P_KODAK_6850, "Kodak", "kodak-6850"}, /* Shinko CHC-S1145-5B */
{ 0, 0, 0, NULL, NULL}
};
/* Exported */
const struct dyesub_backend kodak6800_backend = {
.name = "Kodak 6800/6850",
@ -1075,11 +1081,7 @@ const struct dyesub_backend kodak6800_backend = {
.query_serno = kodak6800_query_serno,
.query_markers = kodak6800_query_markers,
.query_stats = kodak6800_query_stats,
.devices = {
{ 0x040a, 0x4021, P_KODAK_6800, "Kodak", "kodak-6800"}, /* Shinko CHC-S1145-5A */
{ 0x040a, 0x402b, P_KODAK_6850, "Kodak", "kodak-6850"}, /* Shinko CHC-S1145-5B */
{ 0, 0, 0, NULL, NULL}
}
.devices = kodak6800_devices,
};
/* Kodak 6800/6850 data format

View File

@ -1,7 +1,7 @@
/*
* Kodak 8800/9810 Photo Printer CUPS backend
*
* (c) 2021 Solomon Peachy <pizza@shaftnet.org>
* (c) 2021-2024 Solomon Peachy <pizza@shaftnet.org>
*
* The latest version of this program can be found at:
*
@ -917,11 +917,18 @@ static const char *kodak8800_prefixes[] = {
NULL
};
static const struct device_id kodak8800_devices[] = {
{ 0x040a, 0x4023, P_KODAK_8800, "Kodak", "kodak-8800"},
{ 0x040a, 0x4023, P_KODAK_8800, "Kodak", "kodak-9810"}, // duplicate
{ 0, 0, 0, NULL, NULL}
};
/* Exported */
const struct dyesub_backend kodak8800_backend = {
.name = "Kodak 8800/9810",
.version = "0.07",
.uri_prefixes = kodak8800_prefixes,
.devices = kodak8800_devices,
.cmdline_usage = kodak8800_cmdline,
.cmdline_arg = kodak8800_cmdline_arg,
.init = kodak8800_init,
@ -932,11 +939,6 @@ const struct dyesub_backend kodak8800_backend = {
.query_serno = kodak8800_query_serno,
.query_markers = kodak8800_query_markers,
.query_stats = kodak8800_query_stats,
.devices = {
{ 0x040a, 0x4023, P_KODAK_8800, "Kodak", "kodak-8800"},
{ 0x040a, 0x4023, P_KODAK_8800, "Kodak", "kodak-9810"}, // duplicate
{ 0, 0, 0, NULL, NULL}
}
};
/*

View File

@ -1,7 +1,7 @@
/*
* Magicard card printer family CUPS backend
*
* (c) 2017-2023 Solomon Peachy <pizza@shaftnet.org>
* (c) 2017-2024 Solomon Peachy <pizza@shaftnet.org>
*
* The latest version of this program can be found at:
*
@ -928,10 +928,20 @@ static const char *magicard_prefixes[] = {
NULL
};
static const struct device_id magicard_devices[] = {
{ 0x0c1f, 0x1800, P_MAGICARD, NULL, "magicard-tango2e"},
// { 0x0c1f, 0x1800, P_MAGICARD, NULL, "magicard-rio2e"},
{ 0x0c1f, 0x4800, P_MAGICARD, NULL, "magicard-enduro"}, // ??
{ 0x0c1f, 0x880a, P_MAGICARD, NULL, "magicard-enduroplus"}, // ??
{ 0x0c1f, 0xFFFF, P_MAGICARD, NULL, "magicard"},
{ 0, 0, 0, NULL, NULL}
};
const struct dyesub_backend magicard_backend = {
.name = "Magicard family",
.version = "0.20",
.uri_prefixes = magicard_prefixes,
.devices = magicard_devices,
.cmdline_arg = magicard_cmdline_arg,
.cmdline_usage = magicard_cmdline,
.init = magicard_init,
@ -940,18 +950,8 @@ const struct dyesub_backend magicard_backend = {
.read_parse = magicard_read_parse,
.main_loop = magicard_main_loop,
.query_markers = magicard_query_markers,
.devices = {
{ 0x0c1f, 0x1800, P_MAGICARD, NULL, "magicard-tango2e"},
// { 0x0c1f, 0x1800, P_MAGICARD, NULL, "magicard-rio2e"},
{ 0x0c1f, 0x4800, P_MAGICARD, NULL, "magicard-enduro"}, // ??
{ 0x0c1f, 0x880a, P_MAGICARD, NULL, "magicard-enduroplus"}, // ??
{ 0x0c1f, 0xFFFF, P_MAGICARD, NULL, "magicard"},
{ 0, 0, 0, NULL, NULL}
}
};
/* Magicard family Spool file format (Tango2e/Rio2e/AvalonE family)
This one was rather fun to figure out.

View File

@ -2612,12 +2612,25 @@ static const char *mitsu70x_prefixes[] = {
NULL,
};
static const struct device_id mitsu70x_devices[] = {
{ 0x06d3, 0x3b30, P_MITSU_D70X, NULL, "mitsubishi-d70dw"},
{ 0x06d3, 0x3b30, P_MITSU_D70X, NULL, "mitsubishi-d707dw"}, /* Duplicate */
{ 0x06d3, 0x3b31, P_MITSU_K60, NULL, "mitsubishi-k60dw"}, // variation type?
{ 0x06d3, 0x3b36, P_MITSU_D80, NULL, "mitsubishi-d80dw"},
{ 0x040a, 0x404f, P_KODAK_305, NULL, "kodak-305"},
{ 0x04cb, 0x5006, P_FUJI_ASK300, NULL, "fujifilm-ask-300"},
{ 0x1452, 0x8e01, P_DNP_DSX80, NULL, "dnp-ds680"},
{ 0x1452, 0x8f01, P_DNP_DSX80, NULL, "dnp-ds480"},
{ 0, 0, 0, NULL, NULL}
};
/* Exported */
const struct dyesub_backend mitsu70x_backend = {
.name = "Mitsubishi CP-D70 family",
.version = "0.112" " (lib " LIBMITSU_VER ")",
.flags = BACKEND_FLAG_DUMMYPRINT,
.uri_prefixes = mitsu70x_prefixes,
.devices = mitsu70x_devices,
.cmdline_usage = mitsu70x_cmdline,
.cmdline_arg = mitsu70x_cmdline_arg,
.init = mitsu70x_init,
@ -2631,17 +2644,6 @@ const struct dyesub_backend mitsu70x_backend = {
.query_stats = mitsu70x_query_stats,
.combine_jobs = mitsu70x_combine_jobs,
.job_polarity = mitsu70x_job_polarity,
.devices = {
{ 0x06d3, 0x3b30, P_MITSU_D70X, NULL, "mitsubishi-d70dw"},
{ 0x06d3, 0x3b30, P_MITSU_D70X, NULL, "mitsubishi-d707dw"}, /* Duplicate */
{ 0x06d3, 0x3b31, P_MITSU_K60, NULL, "mitsubishi-k60dw"}, // variation type?
{ 0x06d3, 0x3b36, P_MITSU_D80, NULL, "mitsubishi-d80dw"},
{ 0x040a, 0x404f, P_KODAK_305, NULL, "kodak-305"},
{ 0x04cb, 0x5006, P_FUJI_ASK300, NULL, "fujifilm-ask-300"},
{ 0x1452, 0x8e01, P_DNP_DSX80, NULL, "dnp-ds680"},
{ 0x1452, 0x8f01, P_DNP_DSX80, NULL, "dnp-ds480"},
{ 0, 0, 0, NULL, NULL}
}
};
/* Mitsubish CP-D70DW/D707DW/K60DW-S/D80DW, Kodak 305, Fujifilm ASK-300

View File

@ -1639,11 +1639,42 @@ static const char *mitsu9550_prefixes[] = {
NULL
};
static const struct device_id mitsu9550_devices[] = {
// { 0x06d3, 0x0380, P_MITSU_9550, NULL, "mitsubishi-8000d"},
// { 0x06d3, 0x0381, P_MITSU_9550, NULL, "mitsubishi-770d"},
// { 0x06d3, 0x0385, P_MITSU_9550, NULL, "mitsubishi-900d"},
// { 0x06d3, 0x0387, P_MITSU_9550, NULL, "mitsubishi-980d"},
// { 0x06d3, 0x038b, P_MITSU_CP3020, NULL, "mitsubishi-cp3020d"},
// { 0x06d3, 0x038c, P_MITSU_9550, NULL, "mitsubishi-900did"},
{ 0x06d3, 0x0395, P_MITSU_9550, NULL, "mitsubishi-9000dw"}, // XXX -am instead?
{ 0x06d3, 0x0393, P_MITSU_9550, NULL, "mitsubishi-9500dw"},
{ 0x06d3, 0x0394, P_MITSU_9550, NULL, "mitsubishi-9000dw"},
{ 0x06d3, 0x039e, P_MITSU_9500S, NULL, "mitsubishi-9500dw-s"},
{ 0x06d3, 0x03a1, P_MITSU_9550, NULL, "mitsubishi-9550dw"},
{ 0x06d3, 0x03a1, P_MITSU_9550, NULL, "mitsubishi-9550d"}, /* Duplicate */
{ 0x06d3, 0x03a5, P_MITSU_9550S, NULL, "mitsubishi-9550dw-s"}, // or DZ/DZS/DZU
{ 0x06d3, 0x03a5, P_MITSU_9550S, NULL, "mitsubishi-9550dz"}, /* Duplicate */
{ 0x06d3, 0x03a6, P_MITSU_9600S, NULL, "mitsubishi-9600dw-s"},
{ 0x06d3, 0x03a9, P_MITSU_9600, NULL, "mitsubishi-9600dw"},
// { 0x06d3, 0x03aa, P_MITSU_CP3020, NULL, "mitsubishi-cp3020da"},
{ 0x06d3, 0x03ab, P_MITSU_CP30D, NULL, "mitsubishi-cp30dw"},
{ 0x06d3, 0x03ad, P_MITSU_9800, NULL, "mitsubishi-9800dw"},
{ 0x06d3, 0x03ad, P_MITSU_9800, NULL, "mitsubishi-9800d"}, /* Duplicate */
{ 0x06d3, 0x03ae, P_MITSU_9800S, NULL, "mitsubishi-9800dw-s"},
{ 0x06d3, 0x03ae, P_MITSU_9800S, NULL, "mitsubishi-9800dz"}, /* Duplicate */
{ 0x06d3, 0x3b20, P_MITSU_9820S, NULL, "mitsubishi-9820dw-ag"},
{ 0x06d3, 0x3b21, P_MITSU_9810, NULL, "mitsubishi-9810dw"},
{ 0x06d3, 0x3b21, P_MITSU_9810, NULL, "mitsubishi-9810d"}, /* Duplicate */
// { 0x06d3, 0x3b2f, P_MITSU_9810, NULL, "mitsubishi-ls9820a"},
{ 0, 0, 0, NULL, NULL}
};
/* Exported */
const struct dyesub_backend mitsu9550_backend = {
.name = "Mitsubishi CP9xxx family",
.version = "0.71" " (lib " LIBMITSU_VER ")",
.uri_prefixes = mitsu9550_prefixes,
.devices = mitsu9550_devices,
.cmdline_usage = mitsu9550_cmdline,
.cmdline_arg = mitsu9550_cmdline_arg,
.init = mitsu9550_init,
@ -1654,35 +1685,6 @@ const struct dyesub_backend mitsu9550_backend = {
.main_loop = mitsu9550_main_loop,
.query_serno = mitsu9550_query_serno,
.query_markers = mitsu9550_query_markers,
.devices = {
// { 0x06d3, 0x0380, P_MITSU_9550, NULL, "mitsubishi-8000d"},
// { 0x06d3, 0x0381, P_MITSU_9550, NULL, "mitsubishi-770d"},
// { 0x06d3, 0x0385, P_MITSU_9550, NULL, "mitsubishi-900d"},
// { 0x06d3, 0x0387, P_MITSU_9550, NULL, "mitsubishi-980d"},
// { 0x06d3, 0x038b, P_MITSU_CP3020, NULL, "mitsubishi-cp3020d"},
// { 0x06d3, 0x038c, P_MITSU_9550, NULL, "mitsubishi-900did"},
{ 0x06d3, 0x0395, P_MITSU_9550, NULL, "mitsubishi-9000dw"}, // XXX -am instead?
{ 0x06d3, 0x0393, P_MITSU_9550, NULL, "mitsubishi-9500dw"},
{ 0x06d3, 0x0394, P_MITSU_9550, NULL, "mitsubishi-9000dw"},
{ 0x06d3, 0x039e, P_MITSU_9500S, NULL, "mitsubishi-9500dw-s"},
{ 0x06d3, 0x03a1, P_MITSU_9550, NULL, "mitsubishi-9550dw"},
{ 0x06d3, 0x03a1, P_MITSU_9550, NULL, "mitsubishi-9550d"}, /* Duplicate */
{ 0x06d3, 0x03a5, P_MITSU_9550S, NULL, "mitsubishi-9550dw-s"}, // or DZ/DZS/DZU
{ 0x06d3, 0x03a5, P_MITSU_9550S, NULL, "mitsubishi-9550dz"}, /* Duplicate */
{ 0x06d3, 0x03a6, P_MITSU_9600S, NULL, "mitsubishi-9600dw-s"},
{ 0x06d3, 0x03a9, P_MITSU_9600, NULL, "mitsubishi-9600dw"},
// { 0x06d3, 0x03aa, P_MITSU_CP3020, NULL, "mitsubishi-cp3020da"},
{ 0x06d3, 0x03ab, P_MITSU_CP30D, NULL, "mitsubishi-cp30dw"},
{ 0x06d3, 0x03ad, P_MITSU_9800, NULL, "mitsubishi-9800dw"},
{ 0x06d3, 0x03ad, P_MITSU_9800, NULL, "mitsubishi-9800d"}, /* Duplicate */
{ 0x06d3, 0x03ae, P_MITSU_9800S, NULL, "mitsubishi-9800dw-s"},
{ 0x06d3, 0x03ae, P_MITSU_9800S, NULL, "mitsubishi-9800dz"}, /* Duplicate */
{ 0x06d3, 0x3b20, P_MITSU_9820S, NULL, "mitsubishi-9820dw-ag"},
{ 0x06d3, 0x3b21, P_MITSU_9810, NULL, "mitsubishi-9810dw"},
{ 0x06d3, 0x3b21, P_MITSU_9810, NULL, "mitsubishi-9810d"}, /* Duplicate */
// { 0x06d3, 0x3b2f, P_MITSU_9810, NULL, "mitsubishi-ls9820a"},
{ 0, 0, 0, NULL, NULL}
}
};
/* Mitsubish CP-30/9500/9550/9600/9800/9810/9820 spool format:

View File

@ -2642,12 +2642,22 @@ static const char *mitsud90_prefixes[] = {
NULL
};
static const struct device_id mitsud90_devices[] = {
{ 0x06d3, 0x3b60, P_MITSU_D90, NULL, "mitsubishi-d90dw"},
{ 0x06d3, 0x3b80, P_MITSU_M1, NULL, "mitsubishi-cpm1"},
{ 0x06d3, 0x3b80, P_MITSU_M1, NULL, "mitsubishi-cpm15"}, // Duplicate for the M15
{ 0x06d3, 0x3b50, P_MITSU_W5000, NULL, "mitsubishi-cpw5000"},
// { 0x04cb, 0x1234, P_FUJI_ASK500, NULL, "fujifilm-ask500"},
{ 0, 0, 0, NULL, NULL}
};
/* Exported */
const struct dyesub_backend mitsud90_backend = {
.name = "Mitsubishi CP-D90/CP-M1/CP-W5000",
.version = "0.51" " (lib " LIBMITSU_VER ")",
.flags = BACKEND_FLAG_DUMMYPRINT,
.uri_prefixes = mitsud90_prefixes,
.devices = mitsud90_devices,
.cmdline_arg = mitsud90_cmdline_arg,
.cmdline_usage = mitsud90_cmdline,
.init = mitsud90_init,
@ -2659,14 +2669,6 @@ const struct dyesub_backend mitsud90_backend = {
.query_serno = mitsud90_query_serno,
.query_markers = mitsud90_query_markers,
.query_stats = mitsud90_query_stats,
.devices = {
{ 0x06d3, 0x3b60, P_MITSU_D90, NULL, "mitsubishi-d90dw"},
{ 0x06d3, 0x3b80, P_MITSU_M1, NULL, "mitsubishi-cpm1"},
{ 0x06d3, 0x3b80, P_MITSU_M1, NULL, "mitsubishi-cpm15"}, // Duplicate for the M15
{ 0x06d3, 0x3b50, P_MITSU_W5000, NULL, "mitsubishi-cpw5000"},
// { 0x04cb, 0x1234, P_FUJI_ASK500, NULL, "fujifilm-ask500"},
{ 0, 0, 0, NULL, NULL}
}
};
/* ToDo:

View File

@ -1,7 +1,7 @@
/*
* Mitsubishi P93D/P95D Monochrome Thermal Photo Printer CUPS backend
*
* (c) 2016-2021 Solomon Peachy <pizza@shaftnet.org>
* (c) 2016-2024 Solomon Peachy <pizza@shaftnet.org>
*
* Development of this backend was sponsored by:
*
@ -604,11 +604,18 @@ static const char *mitsup95d_prefixes[] = {
NULL
};
static const struct device_id mitsup95d_devices[] = {
{ 0x06d3, 0x0398, P_MITSU_P93D, NULL, "mitsubishi-p93d"},
{ 0x06d3, 0x3b10, P_MITSU_P95D, NULL, "mitsubishi-p95d"},
{ 0, 0, 0, NULL, NULL}
};
/* Exported */
const struct dyesub_backend mitsup95d_backend = {
.name = "Mitsubishi P93D/P95D",
.version = "0.16",
.uri_prefixes = mitsup95d_prefixes,
.devices = mitsup95d_devices,
.cmdline_arg = mitsup95d_cmdline_arg,
.cmdline_usage = mitsup95d_cmdline,
.init = mitsup95d_init,
@ -617,11 +624,6 @@ const struct dyesub_backend mitsup95d_backend = {
.read_parse = mitsup95d_read_parse,
.main_loop = mitsup95d_main_loop,
.query_markers = mitsup95d_query_markers,
.devices = {
{ 0x06d3, 0x0398, P_MITSU_P93D, NULL, "mitsubishi-p93d"},
{ 0x06d3, 0x3b10, P_MITSU_P95D, NULL, "mitsubishi-p95d"},
{ 0, 0, 0, NULL, NULL}
}
};
/*****************************************************

View File

@ -1279,10 +1279,17 @@ static const char *shinkos1245_prefixes[] = {
NULL
};
static const struct device_id shinkos1245_devices[] = {
{ 0x10ce, 0x0007, P_SHINKO_S1245, NULL, "shinko-chcs1245"},
{ 0x10ce, 0x0007, P_SHINKO_S1245, NULL, "sinfonia-chcs1245"}, /* Duplicate */
{ 0, 0, 0, NULL, NULL}
};
const struct dyesub_backend shinkos1245_backend = {
.name = "Shinko/Sinfonia CHC-S1245/E1",
.version = "0.35" " (lib " LIBSINFONIA_VER ")",
.uri_prefixes = shinkos1245_prefixes,
.devices = shinkos1245_devices,
.cmdline_usage = shinkos1245_cmdline,
.cmdline_arg = shinkos1245_cmdline_arg,
.init = shinkos1245_init,
@ -1293,11 +1300,6 @@ const struct dyesub_backend shinkos1245_backend = {
.query_serno = shinkos1245_query_serno,
.query_markers = shinkos1245_query_markers,
.query_stats = shinkos1245_query_stats,
.devices = {
{ 0x10ce, 0x0007, P_SHINKO_S1245, NULL, "shinko-chcs1245"},
{ 0x10ce, 0x0007, P_SHINKO_S1245, NULL, "sinfonia-chcs1245"}, /* Duplicate */
{ 0, 0, 0, NULL, NULL}
}
};
/* CHC-S1245 data format

View File

@ -1220,10 +1220,19 @@ static const char *shinkos2145_prefixes[] = {
NULL
};
static const struct device_id shinkos2145_devices[] = {
{ 0x10ce, 0x000e, P_SHINKO_S2145, NULL, "shinko-chcs2145"},
{ 0x10ce, 0x000e, P_SHINKO_S2145, NULL, "sinfonia-chcs2145"}, /* Duplicate */
{ 0x10ce, 0x0011, P_SHINKO_S2145, NULL, "olmec-op1000"},
// { 0x0d16, 0xXXXX, P_SHINKO_S2145, NULL, "hiti-p710l"},
{ 0, 0, 0, NULL, NULL}
};
const struct dyesub_backend shinkos2145_backend = {
.name = "Shinko/Sinfonia CHC-S2145/S2",
.version = "0.68" " (lib " LIBSINFONIA_VER ")",
.uri_prefixes = shinkos2145_prefixes,
.devices = shinkos2145_devices,
.cmdline_usage = shinkos2145_cmdline,
.cmdline_arg = shinkos2145_cmdline_arg,
.init = shinkos2145_init,
@ -1234,13 +1243,6 @@ const struct dyesub_backend shinkos2145_backend = {
.query_serno = shinkos2145_query_serno,
.query_markers = shinkos2145_query_markers,
.query_stats = shinkos2145_query_stats,
.devices = {
{ 0x10ce, 0x000e, P_SHINKO_S2145, NULL, "shinko-chcs2145"},
{ 0x10ce, 0x000e, P_SHINKO_S2145, NULL, "sinfonia-chcs2145"}, /* Duplicate */
{ 0x10ce, 0x0011, P_SHINKO_S2145, NULL, "olmec-op1000"},
// { 0x0d16, 0xXXXX, P_SHINKO_S2145, NULL, "hiti-p710l"},
{ 0, 0, 0, NULL, NULL}
}
};
/* CHC-S2145 data format

View File

@ -1956,10 +1956,22 @@ static const char *shinkos6145_prefixes[] = {
NULL
};
static const struct device_id shinkos6145_devices[] = {
{ 0x10ce, 0x0019, P_SHINKO_S6145, NULL, "sinfonia-chcs6145"},
{ 0x10ce, 0x0019, P_SHINKO_S6145, NULL, "shinko-chcs6145"}, /* Duplicate */
{ 0x10ce, 0x001e, P_SHINKO_S6145D, NULL, "ciaat-brava-21"},
{ 0x10ce, 0x0039, P_SHINKO_S2245, NULL, "sinfonia-chcs2245"},
{ 0x29cc, 0x0003, P_KODAK_6900, NULL, "kodak-6900"}, /* aka CHC-S2245-6A */
{ 0x29cc, 0x0004, P_KODAK_6900, NULL, "kodak-6950"}, /* aka CHC-S2245-6C */
{ 0x0d16, 0x0010, P_SHINKO_S2245, NULL, "hiti-m610"}, /* aka CHC-S2245-5F */
{ 0, 0, 0, NULL, NULL}
};
const struct dyesub_backend shinkos6145_backend = {
.name = "Shinko/Sinfonia CHC-S6145/CS2/S2245/S3",
.version = "0.50" " (lib " LIBSINFONIA_VER ")",
.uri_prefixes = shinkos6145_prefixes,
.devices = shinkos6145_devices,
.cmdline_usage = shinkos6145_cmdline,
.cmdline_arg = shinkos6145_cmdline_arg,
.init = shinkos6145_init,
@ -1972,16 +1984,6 @@ const struct dyesub_backend shinkos6145_backend = {
.query_markers = shinkos6145_query_markers,
.query_stats = shinkos6145_query_stats,
.combine_jobs = shinkos6145_combine_jobs,
.devices = {
{ 0x10ce, 0x0019, P_SHINKO_S6145, NULL, "sinfonia-chcs6145"},
{ 0x10ce, 0x0019, P_SHINKO_S6145, NULL, "shinko-chcs6145"}, /* Duplicate */
{ 0x10ce, 0x001e, P_SHINKO_S6145D, NULL, "ciaat-brava-21"},
{ 0x10ce, 0x0039, P_SHINKO_S2245, NULL, "sinfonia-chcs2245"},
{ 0x29cc, 0x0003, P_KODAK_6900, NULL, "kodak-6900"}, /* aka CHC-S2245-6A */
{ 0x29cc, 0x0004, P_KODAK_6900, NULL, "kodak-6950"}, /* aka CHC-S2245-6C */
{ 0x0d16, 0x0010, P_SHINKO_S2245, NULL, "hiti-m610"}, /* aka CHC-S2245-5F */
{ 0, 0, 0, NULL, NULL}
}
};
/* CHC-S6145 spool file format

View File

@ -1,7 +1,7 @@
/*
* Shinko/Sinfonia CHC-S6245 CUPS backend
*
* (c) 2015-2023 Solomon Peachy <pizza@shaftnet.org>
* (c) 2015-2024 Solomon Peachy <pizza@shaftnet.org>
*
* Low-level documentation was provided by Sinfonia, Inc. Thank you!
*
@ -1465,6 +1465,14 @@ static const char *shinkos6245_prefixes[] = {
NULL
};
static const struct device_id shinkos6245_devices[] = {
{ 0x10ce, 0x001d, P_SHINKO_S6245, NULL, "sinfonia-chcs6245"},
{ 0x10ce, 0x001d, P_SHINKO_S6245, NULL, "shinko-chcs6245"}, /* Duplicate */
{ 0x0d16, 0x000e, P_HITI_910, NULL, "hiti-p910l"}, /* aka CHC-S6245-5B */
{ 0x040a, 0x404d, P_KODAK_8810, NULL, "kodak-8810"}, /* aka CHC-S1845-5A */
{ 0, 0, 0, NULL, NULL}
};
const struct dyesub_backend shinkos6245_backend = {
.name = "Sinfonia CHC-S6245 / Kodak 8810",
.version = "0.43" " (lib " LIBSINFONIA_VER ")",
@ -1479,13 +1487,7 @@ const struct dyesub_backend shinkos6245_backend = {
.query_serno = sinfonia_query_serno,
.query_markers = shinkos6245_query_markers,
.query_stats = shinkos6245_query_stats,
.devices = {
{ 0x10ce, 0x001d, P_SHINKO_S6245, NULL, "sinfonia-chcs6245"},
{ 0x10ce, 0x001d, P_SHINKO_S6245, NULL, "shinko-chcs6245"}, /* Duplicate */
{ 0x0d16, 0x000e, P_HITI_910, NULL, "hiti-p910l"}, /* aka CHC-S6245-5B */
{ 0x040a, 0x404d, P_KODAK_8810, NULL, "kodak-8810"}, /* aka CHC-S1845-5A */
{ 0, 0, 0, NULL, NULL}
}
.devices = shinkos6245_devices,
};
/* CHC-S6245 data format

View File

@ -981,10 +981,29 @@ static const char *sonyupd_prefixes[] = {
NULL
};
static const struct device_id sonyupd_devices[] = {
{ 0x054c, 0x0049, P_SONY_UPD895, NULL, "sony-upd895"},
{ 0x054c, 0x01e7, P_SONY_UPD897, NULL, "sony-upd897"},
{ 0x054c, 0x01e8, P_SONY_UPDR150, NULL, "sony-updr150"},
{ 0x054c, 0x0226, P_SONY_UPCR10, NULL, "sony-upcr10l"},
{ 0x054c, 0x02d4, P_SONY_UPCR10, NULL, "sony-upcx1"},
{ 0x054c, 0x035f, P_SONY_UPDR150, NULL, "sony-updr200"},
{ 0x054c, 0x068c, P_SONY_UPD711, NULL, "sony-upd711"},
{ 0x07ce, 0xc007, P_NDC, NULL, "ndc-dpb-4000"},
{ 0x07ce, 0xc007, P_NDC, NULL, "fujifilm-ask-4000"},
// DNP Q8?
{ 0x07ce, 0xc009, P_NDC, NULL, "ndc-dpb-6000"},
{ 0x07ce, 0xc009, P_NDC, NULL, "fujifilm-ask-2000"}, // duplicate, has different IEEE1284
{ 0x07ce, 0xc010, P_NDC, NULL, "ndc-dpb-7000"},
{ 0x07ce, 0xc011, P_NDC, NULL, "fujifilm-ask-2500"},
{ 0, 0, 0, NULL, NULL}
};
const struct dyesub_backend sonyupd_backend = {
.name = "Sony UP-D",
.version = "0.55",
.uri_prefixes = sonyupd_prefixes,
.devices = sonyupd_devices,
.cmdline_arg = upd_cmdline_arg,
.cmdline_usage = upd_cmdline,
.init = upd_init,
@ -993,23 +1012,6 @@ const struct dyesub_backend sonyupd_backend = {
.read_parse = upd_read_parse,
.main_loop = upd_main_loop,
.query_markers = upd_query_markers,
.devices = {
{ 0x054c, 0x0049, P_SONY_UPD895, NULL, "sony-upd895"},
{ 0x054c, 0x01e7, P_SONY_UPD897, NULL, "sony-upd897"},
{ 0x054c, 0x01e8, P_SONY_UPDR150, NULL, "sony-updr150"},
{ 0x054c, 0x0226, P_SONY_UPCR10, NULL, "sony-upcr10l"},
{ 0x054c, 0x02d4, P_SONY_UPCR10, NULL, "sony-upcx1"},
{ 0x054c, 0x035f, P_SONY_UPDR150, NULL, "sony-updr200"},
{ 0x054c, 0x068c, P_SONY_UPD711, NULL, "sony-upd711"},
{ 0x07ce, 0xc007, P_NDC, NULL, "ndc-dpb-4000"},
{ 0x07ce, 0xc007, P_NDC, NULL, "fujifilm-ask-4000"},
// DNP Q8?
{ 0x07ce, 0xc009, P_NDC, NULL, "ndc-dpb-6000"},
{ 0x07ce, 0xc009, P_NDC, NULL, "fujifilm-ask-2000"}, // duplicate, has different IEEE1284
{ 0x07ce, 0xc010, P_NDC, NULL, "ndc-dpb-7000"},
{ 0x07ce, 0xc011, P_NDC, NULL, "fujifilm-ask-2500"},
{ 0, 0, 0, NULL, NULL}
}
};
/* Sony spool file format

View File

@ -696,11 +696,24 @@ static const char *sonyupdneo_prefixes[] = {
NULL
};
static const struct device_id sonyupdneo_devices[] = {
{ 0x054c, 0x0877, P_SONY_UPD898, NULL, "sony-upd898"},
// { 0x054c, 0x589a, P_SONY_UPD898, NULL, "sony-upd898"}, // ???
{ 0x054c, 0xbcde, P_SONY_UPCR20L, NULL, "sony-upcr20l"}, // XXXX
{ 0x054c, 0x03c5, P_SONY_UPDR80, NULL, "sony-updr80"},
{ 0x054c, 0x03c3, P_SONY_UPDR80, NULL, "sony-updr80md"},
{ 0x054c, 0x03c4, P_SONY_UPDR80, NULL, "stryker-sdp1000"},
{ 0x054c, 0x0873, P_SONY_UP9x1, NULL, "sony-up971ad"},
// { 0x054c, 0x0873, P_SONY_UP9x1, NULL, "sony-up991ad"}, // Dupe ?
{ 0, 0, 0, NULL, NULL}
};
const struct dyesub_backend sonyupdneo_backend = {
.name = "Sony UP-D Neo",
.version = "0.19",
.flags = BACKEND_FLAG_BADISERIAL, /* UP-D898MD at least */
.uri_prefixes = sonyupdneo_prefixes,
.devices = sonyupdneo_devices,
.cmdline_arg = updneo_cmdline_arg,
.cmdline_usage = updneo_cmdline,
.init = updneo_init,
@ -710,17 +723,6 @@ const struct dyesub_backend sonyupdneo_backend = {
.main_loop = updneo_main_loop,
.query_markers = updneo_query_markers,
.query_serno = updneo_query_serno,
.devices = {
{ 0x054c, 0x0877, P_SONY_UPD898, NULL, "sony-upd898"},
// { 0x054c, 0x589a, P_SONY_UPD898, NULL, "sony-upd898"}, // ???
{ 0x054c, 0xbcde, P_SONY_UPCR20L, NULL, "sony-upcr20l"}, // XXXX
{ 0x054c, 0x03c5, P_SONY_UPDR80, NULL, "sony-updr80"},
{ 0x054c, 0x03c3, P_SONY_UPDR80, NULL, "sony-updr80md"},
{ 0x054c, 0x03c4, P_SONY_UPDR80, NULL, "stryker-sdp1000"},
{ 0x054c, 0x0873, P_SONY_UP9x1, NULL, "sony-up971ad"},
// { 0x054c, 0x0873, P_SONY_UP9x1, NULL, "sony-up991ad"}, // Dupe ?
{ 0, 0, 0, NULL, NULL}
}
};
/* Sony UP-D (new) printer spool format