cab CUPS Treiber  ---
cab_model.c
Go to the documentation of this file.
1 /******************************************************************************
2  * cab Produkttechnik GmbH & Co KG
3  * Entwicklung Etikettendrucker
4  *
5  * cab CUPS Linux Driver, cab_model.c
6  * - Implementation of additional cab specific functionality
7  *
8  * Copyright (c) 2004-2020 cab Produkttechnik GmbH, Germany
9  *
10  * Licensed under Apache License v2.0. See the file "LICENSE" for more
11  * information.
12  *
13  */
14 
15 /*****************************************************************************/
16 
17 
18 #include <stdio.h>
19 #include <string.h>
20 
21 #include "cab_model.h"
22 #include "rastertocab.h"
23 
24 
25 typedef struct {
26  int id;
27  char name[80];
28  double width;
30 
31 
32 #define CAB_PRINTER_MODEL_NUM 144
33 
34 
36 {
37  /* Product-Generation 2000 - 2005 */
38  { A3_200, "A3/200", 104.0 },
39  { A3_300, "A3/300", 108.4 },
40  { A3_2_300, "A3-2/300", 54.2 },
41  { A4_300, "A4/300", 105.6 },
42  { A4_600, "A4/600", 105.6 },
43  { A6_300, "A6/300", 162.6 },
44  { A8_300, "A8/300", 216.0 },
45  { M4_200, "M4/200", 104.0 },
46  { M4_300, "M4/300", 108.4 },
47 
48  /* Product-Generation ab 2006 */
49  { A2p_300, "A2+/300", 54.2 },
50  { A2p_600, "A2+/600", 56.9 },
51  { A4p_200, "A4+/200", 104.0 },
52  { A4p_300, "A4+/300", 105.6 },
53  { A4p_600, "A4+/600", 105.6 },
54  { A6p_200, "A6+/200", 168.0 },
55  { A6p_300, "A6+/300", 162.6 },
56  { A8p_300, "A8+/300", 216.0 },
57 
58  /* K-Models (Seit 2008) */
59  { A2p_300K, "A2+/300 K", 54.2 },
60  { A4p_200K, "A4+/200 K", 104.0 },
61  { A4p_300K, "A4+/300 K", 105.6 },
62  { A4p_600K, "A4+/600 K", 105.6 },
63 
64  /* M-Models (Seit 2008) */
65  { A4pM_300, "A4+M/300", 105.6 },
66  { A4pM_600, "A4+M/600", 105.6 },
67  { A4_3p_200, "A4.3+/200", 104.0 },
68  { A4_3p_300, "A4.3+/300", 108.4 },
69  { Mach4_200, "Mach4/200", 104.0 },
70  { Mach4_300, "Mach4/300", 105.6 },
71  { Mach4_600, "Mach4/600", 105.6 },
72 
73  /* Hermes Applicators */
74  { Hermes_A4R_300, "Hermes A4R/300", 105.6 },
75  { Hermes_A4L_300, "Hermes A4L/300", 105.6 },
76  { Hermes_A4R_600, "Hermes A4R/600", 105.6 },
77  { Hermes_A4L_600, "Hermes A4L/600", 105.6 },
78  { Hermes_A5R_300, "Hermes A5R/300", 105.6 },
79  { Hermes_A5L_300, "Hermes A5L/300", 105.6 },
80  { Hermes_A5R_600, "Hermes A5R/600", 105.6 },
81  { Hermes_A5L_600, "Hermes A5L/600", 105.6 },
82 
83  /* Product Update 2008 - Hermes A2x */
84  { Hermes_A2R_300, "Hermes A2R/300", 54.2 },
85  { Hermes_A2L_300, "Hermes A2L/300", 54.2 },
86  { Hermes_A2R_600, "Hermes A2R/600", 56.9 },
87  { Hermes_A2L_600, "Hermes A2L/600", 56.9 },
88 
89  /* PX-Models - seit 2008 */
90  { PX4R_200, "PX4R/200", 104.0 },
91  { PX4L_200, "PX4L/200", 104.0 },
92  { PX4R_300, "PX4R/300", 105.6 },
93  { PX4L_300, "PX4L/300", 105.6 },
94  { PX4R_600, "PX4R/600", 105.6 },
95  { PX4L_600, "PX4L/600", 105.6 },
96  { PX43R_200, "PX4.3R/200", 104.0 },
97  { PX43L_200, "PX4.3L/200", 104.0 },
98  { PX43R_300, "PX4.3R/300", 108.4 },
99  { PX43L_300, "PX4.3L/300", 108.4 },
100  { PX6R_200, "PX6R/200", 168.0 },
101  { PX6L_200, "PX6L/200", 168.0 },
102  { PX6R_300, "PX6R/300", 162.6 },
103  { PX6L_300, "PX6L/300", 162.6 },
104 
105  /* PX Q-Models - seit 2019/2020 */
106  { PXQ4R_300, "PX Q4R/300", 105.6 },
107  { PXQ4L_300, "PX Q4L/300", 105.6 },
108  { PXQ4R_600, "PX Q4R/600", 105.6 },
109  { PXQ4L_600, "PX Q4L/600", 105.6 },
110  { PXQ43R_200, "PX Q4.3R/200", 104.0 },
111  { PXQ43L_200, "PX Q4.3L/200", 104.0 },
112  { PXQ43R_300, "PX Q4.3R/300", 108.4 },
113  { PXQ43L_300, "PX Q4.3L/300", 108.4 },
114  { PXQ63R_200, "PX Q6.3R/200", 168.0 },
115  { PXQ63L_200, "PX Q6.3L/200", 168.0 },
116  { PXQ63R_300, "PX Q6.3R/300", 162.6 },
117  { PXQ63L_300, "PX Q6.3L/300", 162.6 },
118 
119  /* Hermes+-Models - seit 2010 */
120  { Hermesp_2R300, "Hermes+ 2R/300", 54.2 },
121  { Hermesp_2L300, "Hermes+ 2L/300", 54.2 },
122  { Hermesp_2R600, "Hermes+ 2R/600", 56.9 },
123  { Hermesp_2L600, "Hermes+ 2L/600", 56.9 },
124  { Hermesp_4R200, "Hermes+ 4R/200", 104.0 },
125  { Hermesp_4L200, "Hermes+ 4L/200", 104.0 },
126  { Hermesp_4R300, "Hermes+ 4R/300", 105.6 },
127  { Hermesp_4L300, "Hermes+ 4L/300", 105.6 },
128  { Hermesp_4R600, "Hermes+ 4R/600", 105.6 },
129  { Hermesp_4L600, "Hermes+ 4L/600", 105.6 },
130  { Hermesp_43R200, "Hermes+ 4.3R/200", 104.0 },
131  { Hermesp_43L200, "Hermes+ 4.3L/200", 104.0 },
132  { Hermesp_43R300, "Hermes+ 4.3R/300", 108.4 },
133  { Hermesp_43L300, "Hermes+ 4.3L/300", 108.4 },
134  { Hermesp_6R200, "Hermes+ 6R/200", 168.0 },
135  { Hermesp_6L200, "Hermes+ 6L/200", 168.0 },
136  { Hermesp_6R300, "Hermes+ 6R/300", 162.6 },
137  { Hermesp_6L300, "Hermes+ 6L/300", 162.6 },
138 
139  /* HERMES Q-Models - seit 2019 */
140  { HERMES_Q2R300, "HERMES Q2R/300", 56.9 },
141  { HERMES_Q2L300, "HERMES Q2L/300", 56.9 },
142  { HERMES_Q2R600, "HERMES Q2R/600", 54.1 },
143  { HERMES_Q2L600, "HERMES Q2L/600", 54.1 },
144  { HERMES_Q4R300, "HERMES Q4R/300", 105.7 },
145  { HERMES_Q4L300, "HERMES Q4L/300", 105.7 },
146  { HERMES_Q4R600, "HERMES Q4R/600", 105.7 },
147  { HERMES_Q4L600, "HERMES Q4L/600", 105.7 },
148  { HERMES_Q43R200, "HERMES Q4.3R/200", 104.0 },
149  { HERMES_Q43L200, "HERMES Q4.3L/200", 104.0 },
150  { HERMES_Q43R300, "HERMES Q4.3R/300", 108.4 },
151  { HERMES_Q43L300, "HERMES Q4.3L/300", 108.4 },
152  { HERMES_Q63R200, "HERMES Q6.3R/200", 168.0 },
153  { HERMES_Q63L200, "HERMES Q6.3L/200", 168.0 },
154  { HERMES_Q63R300, "HERMES Q6.3R/300", 162.6 },
155  { HERMES_Q63L300, "HERMES Q6.3L/300", 162.6 },
156 
157  /* EOS-Models - seit 2010 */
158  { EOS1_200, "EOS1/200", 108.0 },
159  { EOS1_300, "EOS1/300", 105.7 },
160  { EOS4_200, "EOS4/200", 108.0 },
161  { EOS4_300, "EOS4/300", 105.7 },
162 
163  /* EOS-Models - seit 2018 */
164  { EOS2_200, "EOS2/200", 108.0 },
165  { EOS2_300, "EOS2/300", 105.7 },
166  { EOS5_200, "EOS5/200", 108.0 },
167  { EOS5_300, "EOS5/300", 105.7 },
168 
169  /* SQUIX-Models - seit 2016 / 2017 */
170  { SQUIX2_300, "SQUIX 2/300", 56.9 },
171  { SQUIX2_300P, "SQUIX 2/300P", 56.9 },
172  { SQUIX2_600, "SQUIX 2/600", 54.1 },
173  { SQUIX2_600P, "SQUIX 2/600P", 54.1 },
174  { SQUIX4_300, "SQUIX 4/300", 105.7 },
175  { SQUIX4_600, "SQUIX 4/600", 105.7 },
176  { SQUIX4_300P, "SQUIX 4/300P", 105.7 },
177  { SQUIX4_600P, "SQUIX 4/600P", 105.7 },
178  { SQUIX4_300M, "SQUIX 4/300M", 105.7 },
179  { SQUIX4_600M, "SQUIX 4/600M", 105.7 },
180  { SQUIX4_300MP, "SQUIX 4/300MP", 105.7 },
181  { SQUIX4_600MP, "SQUIX 4/600MP", 105.7 },
182  { SQUIX4_300MT, "SQUIX 4/300MT", 105.7 },
183  { SQUIX4_600MT, "SQUIX 4/600MT", 105.7 },
184  { SQUIX4_300R, "SQUIX 4/300R", 105.7 },
185  { SQUIX4_600R, "SQUIX 4/600R", 105.7 },
186  { SQUIX4p_200, "SQUIX 4.3/200", 104 },
187  { SQUIX4p_200P, "SQUIX 4.3/200P", 104 },
188  { SQUIX4p_200M, "SQUIX 4.3/200M", 104 },
189  { SQUIX4p_200MP, "SQUIX 4.3/200MP", 104 },
190  { SQUIX4p_200MT, "SQUIX 4.3/200MT", 104 },
191  { SQUIX4p_200R, "SQUIX 4.3/200R", 104 },
192  { SQUIX4p_300, "SQUIX 4.3/300", 108.4 },
193  { SQUIX4p_300P, "SQUIX 4.3/300P", 108.4 },
194  { SQUIX4p_300M, "SQUIX 4.3/300M", 108.4 },
195  { SQUIX4p_300MP, "SQUIX 4.3/300MP", 108.4 },
196  { SQUIX4p_300MT, "SQUIX 4.3/300MT", 108.4 },
197  { SQUIX4p_300R, "SQUIX 4.3/300R", 108.4 },
198  { SQUIX6p_200, "SQUIX 6.3/200", 168.0 },
199  { SQUIX6p_200P, "SQUIX 6.3/200P", 168.0 },
200  { SQUIX6p_300, "SQUIX 6.3/300", 162.6 },
201  { SQUIX6p_300P, "SQUIX 6.3/300P", 162.6 },
202  { MACH4S_300, "MACH 4S/300", 105.6 },
203  { MACH4S_600, "MACH 4S/600", 105.6 },
204  { MACH4Sp_200, "MACH 4.3S/200", 104.0 },
205  { MACH4Sp_300, "MACH 4.3S/300", 108.4 }
206 };
207 
208 
209 
210 void get_printer_model_name(char *modelname, int modelnumber)
211 {
212  int i;
213 
214  for(i = 0; i < CAB_PRINTER_MODEL_NUM; i++)
215  {
216  if(cab_printer_models[i].id == modelnumber)
217  {
218  strcpy(modelname, cab_printer_models[i].name);
219  return;
220  }
221  }
222  fprintf(stderr, "ERROR: cab Printer - Unknown printer model\n");
223  strcpy(modelname, "Unknown printer model");
224 }
225 
226 
227 
229 {
230  int i;
231 
232  for(i = 0; i < CAB_PRINTER_MODEL_NUM; i++)
233  {
234  if(cab_printer_models[i].id == modelnumber)
235  {
236  return cab_printer_models[i].width;
237  }
238  }
239  fprintf(stderr, "ERROR: cab Printer - Unknown printer model\n");
240  fprintf(stderr, "ERROR: Max. printing width is 0.0 now ...\n");
241 
242  return 0.0;
243 }
#define A4_600
Definition: cab_model.h:25
#define Hermes_A5R_300
Definition: cab_model.h:72
#define Mach4_600
Definition: cab_model.h:61
#define PXQ43L_300
Definition: cab_model.h:223
#define Hermesp_2R300
Definition: cab_model.h:112
#define Hermes_A5L_600
Definition: cab_model.h:75
#define SQUIX4_600P
Definition: cab_model.h:182
#define PX4R_600
Definition: cab_model.h:96
#define A4p_600K
Definition: cab_model.h:50
#define SQUIX4p_200MT
Definition: cab_model.h:195
#define PXQ63L_200
Definition: cab_model.h:225
#define SQUIX4_300
Definition: cab_model.h:179
#define A4p_600
Definition: cab_model.h:41
#define M4_200
Definition: cab_model.h:29
#define Hermesp_4L600
Definition: cab_model.h:121
#define EOS5_300
Definition: cab_model.h:170
#define Hermes_A4L_300
Definition: cab_model.h:68
#define PXQ43L_200
Definition: cab_model.h:221
#define Hermesp_4L200
Definition: cab_model.h:117
#define EOS2_200
Definition: cab_model.h:167
#define Hermesp_43L200
Definition: cab_model.h:123
#define A8_300
Definition: cab_model.h:27
#define Mach4_200
Definition: cab_model.h:59
#define PX4R_200
Definition: cab_model.h:92
#define Hermes_A2R_600
Definition: cab_model.h:84
#define A6p_200
Definition: cab_model.h:42
#define Hermesp_4R600
Definition: cab_model.h:120
void get_printer_model_name(char *modelname, int modelnumber)
Definition: cab_model.c:210
#define HERMES_Q2R300
Definition: cab_model.h:136
#define MACH4S_600
Definition: cab_model.h:208
#define Hermes_A2L_600
Definition: cab_model.h:85
#define SQUIX2_300
Definition: cab_model.h:175
#define A2p_300K
Definition: cab_model.h:47
#define PXQ4R_300
Definition: cab_model.h:216
#define HERMES_Q43L300
Definition: cab_model.h:147
#define HERMES_Q4R300
Definition: cab_model.h:140
#define Hermesp_6R200
Definition: cab_model.h:126
#define HERMES_Q43L200
Definition: cab_model.h:145
#define SQUIX4p_300M
Definition: cab_model.h:199
#define PX43R_300
Definition: cab_model.h:100
#define SQUIX4_300M
Definition: cab_model.h:183
double get_printing_width(int modelnumber)
Definition: cab_model.c:228
#define SQUIX4p_200P
Definition: cab_model.h:192
#define A4_300
Definition: cab_model.h:24
#define SQUIX4_600
Definition: cab_model.h:180
#define A2p_300
Definition: cab_model.h:37
#define PX6R_300
Definition: cab_model.h:104
#define SQUIX4_600MT
Definition: cab_model.h:188
#define SQUIX6p_200
Definition: cab_model.h:203
#define PXQ4R_600
Definition: cab_model.h:218
#define A4_3p_200
Definition: cab_model.h:56
#define SQUIX6p_300P
Definition: cab_model.h:206
#define A4p_300K
Definition: cab_model.h:49
#define SQUIX4p_200
Definition: cab_model.h:191
#define A6p_300
Definition: cab_model.h:43
#define HERMES_Q2L300
Definition: cab_model.h:137
#define SQUIX4_300P
Definition: cab_model.h:181
#define PXQ43R_300
Definition: cab_model.h:222
#define Hermesp_6L300
Definition: cab_model.h:129
#define SQUIX4_600R
Definition: cab_model.h:190
#define HERMES_Q63R200
Definition: cab_model.h:148
#define HERMES_Q4L600
Definition: cab_model.h:143
#define PX4L_200
Definition: cab_model.h:93
#define EOS2_300
Definition: cab_model.h:168
#define PX4L_300
Definition: cab_model.h:95
#define MACH4Sp_300
Definition: cab_model.h:210
#define SQUIX6p_200P
Definition: cab_model.h:204
#define M4_300
Definition: cab_model.h:30
#define HERMES_Q2R600
Definition: cab_model.h:138
#define HERMES_Q43R200
Definition: cab_model.h:144
#define PXQ43R_200
Definition: cab_model.h:220
#define HERMES_Q63L200
Definition: cab_model.h:149
#define PXQ63L_300
Definition: cab_model.h:227
#define A4p_200K
Definition: cab_model.h:48
#define Hermesp_2R600
Definition: cab_model.h:114
#define SQUIX4_300MP
Definition: cab_model.h:185
#define EOS1_300
Definition: cab_model.h:159
#define PX6R_200
Definition: cab_model.h:102
#define MACH4S_300
Definition: cab_model.h:207
#define Hermesp_4R200
Definition: cab_model.h:116
#define EOS4_300
Definition: cab_model.h:161
#define A3_200
Definition: cab_model.h:21
#define A4pM_300
Definition: cab_model.h:53
#define SQUIX4_300R
Definition: cab_model.h:189
#define HERMES_Q63L300
Definition: cab_model.h:151
#define A4p_200
Definition: cab_model.h:39
static cab_printer_model_t cab_printer_models[CAB_PRINTER_MODEL_NUM]
Definition: cab_model.c:35
#define Hermesp_6R300
Definition: cab_model.h:128
#define PX6L_200
Definition: cab_model.h:103
#define Hermes_A4R_600
Definition: cab_model.h:69
#define PXQ63R_200
Definition: cab_model.h:224
#define PXQ4L_300
Definition: cab_model.h:217
#define MACH4Sp_200
Definition: cab_model.h:209
#define SQUIX4_600MP
Definition: cab_model.h:186
#define PXQ63R_300
Definition: cab_model.h:226
#define PX43L_300
Definition: cab_model.h:101
#define EOS4_200
Definition: cab_model.h:160
#define Hermesp_4R300
Definition: cab_model.h:118
#define Hermesp_43R300
Definition: cab_model.h:124
#define SQUIX4p_300P
Definition: cab_model.h:198
#define SQUIX2_600
Definition: cab_model.h:177
#define Hermesp_43R200
Definition: cab_model.h:122
#define A3_2_300
Definition: cab_model.h:23
#define SQUIX2_600P
Definition: cab_model.h:178
#define CAB_PRINTER_MODEL_NUM
Definition: cab_model.c:32
#define SQUIX4p_200M
Definition: cab_model.h:193
#define PX43L_200
Definition: cab_model.h:99
#define HERMES_Q2L600
Definition: cab_model.h:139
static int modelnumber
Definition: rastertocab.c:33
#define SQUIX4p_200MP
Definition: cab_model.h:194
#define SQUIX4p_200R
Definition: cab_model.h:196
#define SQUIX4p_300
Definition: cab_model.h:197
#define Hermesp_2L300
Definition: cab_model.h:113
#define SQUIX4p_300MP
Definition: cab_model.h:200
#define PXQ4L_600
Definition: cab_model.h:219
#define Hermes_A4L_600
Definition: cab_model.h:70
#define SQUIX2_300P
Definition: cab_model.h:176
#define PX4R_300
Definition: cab_model.h:94
#define Hermesp_6L200
Definition: cab_model.h:127
#define Hermes_A4R_300
Definition: cab_model.h:67
#define PX43R_200
Definition: cab_model.h:98
#define A6_300
Definition: cab_model.h:26
#define SQUIX6p_300
Definition: cab_model.h:205
#define PX6L_300
Definition: cab_model.h:105
#define PX4L_600
Definition: cab_model.h:97
#define EOS5_200
Definition: cab_model.h:169
#define Hermesp_4L300
Definition: cab_model.h:119
#define A2p_600
Definition: cab_model.h:38
#define SQUIX4p_300R
Definition: cab_model.h:202
#define HERMES_Q43R300
Definition: cab_model.h:146
#define A4pM_600
Definition: cab_model.h:54
#define SQUIX4p_300MT
Definition: cab_model.h:201
#define EOS1_200
Definition: cab_model.h:158
#define Hermes_A2R_300
Definition: cab_model.h:82
#define Hermesp_43L300
Definition: cab_model.h:125
#define HERMES_Q63R300
Definition: cab_model.h:150
#define SQUIX4_300MT
Definition: cab_model.h:187
#define A8p_300
Definition: cab_model.h:44
#define HERMES_Q4R600
Definition: cab_model.h:142
#define Hermes_A5L_300
Definition: cab_model.h:73
#define A4_3p_300
Definition: cab_model.h:57
#define A4p_300
Definition: cab_model.h:40
#define Mach4_300
Definition: cab_model.h:60
#define SQUIX4_600M
Definition: cab_model.h:184
#define Hermes_A2L_300
Definition: cab_model.h:83
#define A3_300
Definition: cab_model.h:22
#define Hermes_A5R_600
Definition: cab_model.h:74
#define Hermesp_2L600
Definition: cab_model.h:115
#define HERMES_Q4L300
Definition: cab_model.h:141