Revert manifest to default one
[external/cups.git] / backend / backend-private.h
1 /*
2  * "$Id: backend-private.h 10064 2011-10-07 21:41:07Z mike $"
3  *
4  *   Backend support definitions for CUPS.
5  *
6  *   Copyright 2007-2011 by Apple Inc.
7  *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
8  *
9  *   These coded instructions, statements, and computer programs are the
10  *   property of Apple Inc. and are protected by Federal copyright
11  *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
12  *   "LICENSE" which should have been included with this file.  If this
13  *   file is missing or damaged, see the license at "http://www.cups.org/".
14  *
15  *   This file is subject to the Apple OS-Developed Software exception.
16  */
17
18 #ifndef _CUPS_BACKEND_PRIVATE_H_
19 #  define _CUPS_BACKEND_PRIVATE_H_
20
21
22 /*
23  * Include necessary headers.
24  */
25
26 #  include <cups/cups-private.h>
27 #  include <cups/snmp-private.h>
28 #  include <cups/backend.h>
29 #  include <cups/sidechannel.h>
30 #  include <signal.h>
31
32 #  ifdef __linux
33 #    include <sys/ioctl.h>
34 #    include <linux/lp.h>
35 #    define IOCNR_GET_DEVICE_ID         1
36 #    define LPIOC_GET_DEVICE_ID(len)    _IOC(_IOC_READ, 'P', IOCNR_GET_DEVICE_ID, len)
37 #    include <linux/parport.h>
38 #    include <linux/ppdev.h>
39 #    include <unistd.h>
40 #    include <fcntl.h>
41 #  endif /* __linux */
42
43 #  ifdef __sun
44 #    ifdef __sparc
45 #      include <sys/ecppio.h>
46 #    else
47 #      include <sys/ioccom.h>
48 #      include <sys/ecppsys.h>
49 #    endif /* __sparc */
50 #  endif /* __sun */
51
52
53 /*
54  * C++ magic...
55  */
56
57 #  ifdef __cplusplus
58 extern "C" {
59 #  endif /* __cplusplus */
60
61
62 /*
63  * OID constants...
64  */
65
66 /* Host MIB */
67 #define CUPS_OID_mib2                           1,3,6,1,2,1
68
69 #define CUPS_OID_system                         CUPS_OID_mib2,1
70 #define CUPS_OID_sysLocation                    CUPS_OID_system,6
71
72 #define CUPS_OID_host                           CUPS_OID_mib2,25
73
74 #define CUPS_OID_hrSystem                       CUPS_OID_host,1
75
76 #define CUPS_OID_hrStorage                      CUPS_OID_host,2
77
78 #define CUPS_OID_hrDevice                       CUPS_OID_host,3
79 #define CUPS_OID_hrDeviceTable                  CUPS_OID_hrDevice,2
80 #define CUPS_OID_hrDeviceEntry                  CUPS_OID_hrDeviceTable,1
81 #define CUPS_OID_hrDeviceIndex                  CUPS_OID_hrDeviceEntry,1
82 #define CUPS_OID_hrDeviceType                   CUPS_OID_hrDeviceEntry,2
83 #define CUPS_OID_hrDeviceDescr                  CUPS_OID_hrDeviceEntry,3
84
85 #define CUPS_OID_hrPrinterTable                 CUPS_OID_hrDevice,5
86 #define CUPS_OID_hrPrinterEntry                 CUPS_OID_hrPrinterTable,1
87 #define CUPS_OID_hrPrinterStatus                CUPS_OID_hrPrinterEntry,1
88 #define CUPS_OID_hrPrinterDetectedErrorState    CUPS_OID_hrPrinterEntry,2
89
90 /* Printer MIB */
91 #define CUPS_OID_printmib                       CUPS_OID_mib2,43
92
93 #define CUPS_OID_prtGeneral                     CUPS_OID_printmib,5
94 #define CUPS_OID_prtGeneralTable                CUPS_OID_prtGeneral,1
95 #define CUPS_OID_prtGeneralEntry                CUPS_OID_prtGeneralTable,1
96 #define CUPS_OID_prtGeneralCurrentLocalization  CUPS_OID_prtGeneralEntry,2
97 #define CUPS_OID_prtGeneralPrinterName          CUPS_OID_prtGeneralEntry,16
98 #define CUPS_OID_prtGeneralSerialNumber         CUPS_OID_prtGeneralEntry,17
99
100 #define CUPS_OID_prtCover                       CUPS_OID_printmib,6
101 #define CUPS_OID_prtCoverTable                  CUPS_OID_prtCover,1
102 #define CUPS_OID_prtCoverEntry                  CUPS_OID_prtCoverTable,1
103 #define CUPS_OID_prtCoverDescription            CUPS_OID_prtCoverEntry,2
104 #define CUPS_OID_prtCoverStatus                 CUPS_OID_prtCoverEntry,3
105
106 #define CUPS_OID_prtLocalization                CUPS_OID_printmib,7
107 #define CUPS_OID_prtLocalizationTable           CUPS_OID_prtLocalization,1
108 #define CUPS_OID_prtLocalizationEntry           CUPS_OID_prtLocalizationTable,1
109 #define CUPS_OID_prtLocalizationCharacterSet    CUPS_OID_prtLocalizationEntry,4
110
111 #define CUPS_OID_prtMarker                      CUPS_OID_printmib,10
112 #define CUPS_OID_prtMarkerTable                 CUPS_OID_prtMarker,2
113 #define CUPS_OID_prtMarkerEntry                 CUPS_OID_prtMarkerTable,1
114 #define CUPS_OID_prtMarkerLifeCount             CUPS_OID_prtMarkerEntry,4
115
116 #define CUPS_OID_prtMarkerSupplies              CUPS_OID_printmib,11
117 #define CUPS_OID_prtMarkerSuppliesTable         CUPS_OID_prtMarkerSupplies,1
118 #define CUPS_OID_prtMarkerSuppliesEntry         CUPS_OID_prtMarkerSuppliesTable,1
119 #define CUPS_OID_prtMarkerSuppliesIndex         CUPS_OID_prtMarkerSuppliesEntry,1
120 #define CUPS_OID_prtMarkerSuppliesMarkerIndex   CUPS_OID_prtMarkerSuppliesEntry,2
121 #define CUPS_OID_prtMarkerSuppliesColorantIndex CUPS_OID_prtMarkerSuppliesEntry,3
122 #define CUPS_OID_prtMarkerSuppliesClass         CUPS_OID_prtMarkerSuppliesEntry,4
123 #define CUPS_OID_prtMarkerSuppliesType          CUPS_OID_prtMarkerSuppliesEntry,5
124 #define CUPS_OID_prtMarkerSuppliesDescription   CUPS_OID_prtMarkerSuppliesEntry,6
125 #define CUPS_OID_prtMarkerSuppliesSupplyUnit    CUPS_OID_prtMarkerSuppliesEntry,7
126 #define CUPS_OID_prtMarkerSuppliesMaxCapacity   CUPS_OID_prtMarkerSuppliesEntry,8
127 #define CUPS_OID_prtMarkerSuppliesLevel         CUPS_OID_prtMarkerSuppliesEntry,9
128
129 #define CUPS_OID_prtMarkerColorant              CUPS_OID_printmib,12
130 #define CUPS_OID_prtMarkerColorantTable         CUPS_OID_prtMarkerColorant,1
131 #define CUPS_OID_prtMarkerColorantEntry         CUPS_OID_prtMarkerColorantTable,1
132 #define CUPS_OID_prtMarkerColorantIndex         CUPS_OID_prtMarkerColorantEntry,1
133 #define CUPS_OID_prtMarkerColorantMarkerIndex   CUPS_OID_prtMarkerColorantEntry,2
134 #define CUPS_OID_prtMarkerColorantRole          CUPS_OID_prtMarkerColorantEntry,3
135 #define CUPS_OID_prtMarkerColorantValue         CUPS_OID_prtMarkerColorantEntry,4
136 #define CUPS_OID_prtMarkerColorantTonality      CUPS_OID_prtMarkerColorantEntry,5
137
138 #define CUPS_OID_prtInterpreter                 CUPS_OID_printmib,15
139 #define CUPS_OID_prtInterpreterTable            CUPS_OID_prtInterpreter,1
140 #define CUPS_OID_prtInterpreterEntry            CUPS_OID_prtInterpreterTable,1
141 #define CUPS_OID_prtInterpreterLangFamily       CUPS_OID_prtInterpreterEntry,2
142 #define CUPS_OID_prtInterpreterLangLevel        CUPS_OID_prtInterpreterEntry,3
143
144 /* Printer Port Monitor MIB */
145 #define CUPS_OID_enterprises                    1,3,6,1,4,1
146 #define CUPS_OID_pwg                            CUPS_OID_enterprises,2699,1
147 #define CUPS_OID_ppmMIB                         CUPS_OID_pwg,2
148 #define CUPS_OID_ppmMIBObjects                  CUPS_OID_ppmMIB,1
149
150 #define CUPS_OID_ppmGeneral                     CUPS_OID_ppmMIBObjects,1
151
152 #define CUPS_OID_ppmPrinter                     CUPS_OID_ppmMIBObjects,2
153 #define CUPS_OID_ppmPrinterTable                CUPS_OID_ppmPrinter,1
154 #define CUPS_OID_ppmPrinterEntry                CUPS_OID_ppmPrinterTable,1
155 #define CUPS_OID_ppmPrinterIndex                CUPS_OID_ppmPrinterEntry,1
156 #define CUPS_OID_ppmPrinterName                 CUPS_OID_ppmPrinterEntry,2
157 #define CUPS_OID_ppmPrinterIEEE1284DeviceId     CUPS_OID_ppmPrinterEntry,3
158 #define CUPS_OID_ppmPrinterNumberOfPorts        CUPS_OID_ppmPrinterEntry,4
159 #define CUPS_OID_ppmPrinterPreferredPortIndex   CUPS_OID_ppmPrinterEntry,5
160 #define CUPS_OID_ppmPrinterHrDeviceIndex        CUPS_OID_ppmPrinterEntry,6
161 #define CUPS_OID_ppmPrinterSnmpCommunityName    CUPS_OID_ppmPrinterEntry,7
162 #define CUPS_OID_ppmPrinterSnmpQueryEnabled     CUPS_OID_ppmPrinterEntry,8
163
164 #define CUPS_OID_ppmPort                        CUPS_OID_ppmMIBObjects,3
165 #define CUPS_OID_ppmPortTable                   CUPS_OID_ppmPort,1
166 #define CUPS_OID_ppmPortEntry                   CUPS_OID_ppmPortTable,1
167 #define CUPS_OID_ppmPortIndex                   CUPS_OID_ppmPortEntry,1
168 #define CUPS_OID_ppmPortEnabled                 CUPS_OID_ppmPortEntry,2
169 #define CUPS_OID_ppmPortName                    CUPS_OID_ppmPortEntry,3
170 #define CUPS_OID_ppmPortServiceNameOrURI        CUPS_OID_ppmPortEntry,4
171 #define CUPS_OID_ppmPortProtocolType            CUPS_OID_ppmPortEntry,5
172 #define CUPS_OID_ppmPortProtocolTargetPort      CUPS_OID_ppmPortEntry,6
173 #define CUPS_OID_ppmPortProtocolAltSourceEnabled CUPS_OID_ppmPortEntry,7
174 #define CUPS_OID_ppmPortPrtChannelIndex         CUPS_OID_ppmPortEntry,8
175 #define CUPS_OID_ppmPortLprByteCountEnabled     CUPS_OID_ppmPortEntry,9
176
177
178 /*
179  * State constants...
180  */
181
182 #define CUPS_TC_other                           1
183 #define CUPS_TC_unknown                         2
184
185 #define CUPS_TC_idle                            3
186 #define CUPS_TC_printing                        4
187 #define CUPS_TC_warmup                          5
188
189 /* These come from the hrPrinterDetectedErrorState OCTET-STRING */
190 #define CUPS_TC_lowPaper                        0x8000
191 #define CUPS_TC_noPaper                         0x4000
192 #define CUPS_TC_lowToner                        0x2000
193 #define CUPS_TC_noToner                         0x1000
194 #define CUPS_TC_doorOpen                        0x0800
195 #define CUPS_TC_jammed                          0x0400
196 #define CUPS_TC_offline                         0x0200
197 #define CUPS_TC_serviceRequested                0x0100
198 #define CUPS_TC_inputTrayMissing                0x0080
199 #define CUPS_TC_outputTrayMissing               0x0040
200 #define CUPS_TC_markerSupplyMissing             0x0020
201 #define CUPS_TC_outputNearFull                  0x0010
202 #define CUPS_TC_outputFull                      0x0008
203 #define CUPS_TC_inputTrayEmpty                  0x0004
204 #define CUPS_TC_overduePreventMaint             0x0002
205
206 #define CUPS_TC_prtCoverStatus_coverOpen        3
207 #define CUPS_TC_prtCoverStatus_coverClosed      4
208 #define CUPS_TC_prtCoverStatus_interlockOpen    5
209 #define CUPS_TC_prtCoverStatus_interlockClosed  6
210
211 #define CUPS_TC_langPCL                         3
212 #define CUPS_TC_langHPGL                        4
213 #define CUPS_TC_langPJL                         5
214 #define CUPS_TC_langPS                          6
215 #define CUPS_TC_langEscapeP                     9
216 #define CUPS_TC_langCCITT                       26
217 #define CUPS_TC_langLIPS                        39
218 #define CUPS_TC_langTIFF                        40
219 #define CUPS_TC_langPCLXL                       47
220 #define CUPS_TC_langPDF                         54
221 #define CUPS_TC_langJPEG                        61
222
223 #define CUPS_TC_supplyThatIsConsumed            3
224 #define CUPS_TC_receptacleThatIsFilled          4
225
226 #define CUPS_TC_process                         3
227 #define CUPS_TC_spot                            4
228
229 #define CUPS_TC_toner                           3
230 #define CUPS_TC_wasteToner                      4
231 #define CUPS_TC_ink                             5
232 #define CUPS_TC_inkCartridge                    6
233 #define CUPS_TC_inkRibbon                       7
234 #define CUPS_TC_wasteInk                        8
235 #define CUPS_TC_opc                             9
236 #define CUPS_TC_developer                       10
237 #define CUPS_TC_fuserOil                        11
238 #define CUPS_TC_solidWax                        12
239 #define CUPS_TC_ribbonWax                       13
240 #define CUPS_TC_wasteWax                        14
241 #define CUPS_TC_fuser                           15
242 #define CUPS_TC_coronaWire                      16
243 #define CUPS_TC_fuserOilWick                    17
244 #define CUPS_TC_cleanerUnit                     18
245 #define CUPS_TC_fuserCleaningPad                19
246 #define CUPS_TC_transferUnit                    20
247 #define CUPS_TC_tonerCartridge                  21
248 #define CUPS_TC_fuserOiler                      22
249 #define CUPS_TC_water                           23
250 #define CUPS_TC_wasteWater                      24
251 #define CUPS_TC_glueWaterAdditive               25
252 #define CUPS_TC_wastePaper                      26
253 #define CUPS_TC_bindingSupply                   27
254 #define CUPS_TC_bandingSupply                   28
255 #define CUPS_TC_stitchingWire                   29
256 #define CUPS_TC_shrinkWrap                      30
257 #define CUPS_TC_paperWrap                       31
258 #define CUPS_TC_staples                         32
259 #define CUPS_TC_inserts                         33
260 #define CUPS_TC_covers                          34
261
262 /* These come from RFC 3808 to define character sets we support */
263 /* Also see http://www.iana.org/assignments/character-sets */
264 #define CUPS_TC_csASCII                         3
265 #define CUPS_TC_csISOLatin1                     4
266 #define CUPS_TC_csShiftJIS                      17
267 #define CUPS_TC_csUTF8                          106
268 #define CUPS_TC_csUnicode                       1000 /* UCS2 BE */
269 #define CUPS_TC_csUCS4                          1001 /* UCS4 BE */
270 #define CUPS_TC_csUnicodeASCII                  1002
271 #define CUPS_TC_csUnicodeLatin1                 1003
272 #define CUPS_TC_csUTF16BE                       1013
273 #define CUPS_TC_csUTF16LE                       1014
274 #define CUPS_TC_csUTF32                         1017
275 #define CUPS_TC_csUTF32BE                       1018
276 #define CUPS_TC_csUTF32LE                       1019
277 #define CUPS_TC_csWindows31J                    2024
278
279
280 /*
281  * Types...
282  */
283
284 typedef int (*_cups_sccb_t)(int print_fd, int device_fd, int snmp_fd,
285                             http_addr_t *addr, int use_bc);
286
287
288 /*
289  * Prototypes...
290  */
291
292 extern void             backendCheckSideChannel(int snmp_fd, http_addr_t *addr);
293 extern int              backendDrainOutput(int print_fd, int device_fd);
294 extern int              backendGetDeviceID(int fd, char *device_id,
295                                            int device_id_size,
296                                            char *make_model,
297                                            int make_model_size,
298                                            const char *scheme, char *uri,
299                                            int uri_size);
300 extern int              backendGetMakeModel(const char *device_id,
301                                             char *make_model,
302                                             int make_model_size);
303 extern int              backendNetworkSideCB(int print_fd, int device_fd,
304                                              int snmp_fd, http_addr_t *addr,
305                                              int use_bc);
306 extern ssize_t          backendRunLoop(int print_fd, int device_fd, int snmp_fd,
307                                        http_addr_t *addr, int use_bc,
308                                        int update_state, _cups_sccb_t side_cb);
309 extern int              backendSNMPSupplies(int snmp_fd, http_addr_t *addr,
310                                             int *page_count,
311                                             int *printer_state);
312 extern int              backendWaitLoop(int snmp_fd, http_addr_t *addr,
313                                         int use_bc, _cups_sccb_t side_cb);
314
315
316 #  ifdef __cplusplus
317 }
318 #  endif /* __cplusplus */
319 #endif /* !_CUPS_BACKEND_PRIVATE_H_ */
320
321
322 /*
323  * End of "$Id: backend-private.h 10064 2011-10-07 21:41:07Z mike $".
324  */