1/*
2 * "$Id: backend-private.h 11093 2013-07-03 20:48:42Z msweet $"
3 *
4 *   Backend support definitions for CUPS.
5 *
6 *   Copyright 2007-2012 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
58extern "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#define CUPS_TC_tenThousandthsOfInches		3
263#define CUPS_TC_micrometers			4
264#define CUPS_TC_impressions			7
265#define CUPS_TC_sheets				8
266#define CUPS_TC_hours				11
267#define CUPS_TC_thousandthsOfOunces		12
268#define CUPS_TC_tenthsOfGrams			13
269#define CUPS_TC_hundrethsOfFluidOunces		14
270#define CUPS_TC_tenthsOfMilliliters		15
271#define CUPS_TC_feet				16
272#define CUPS_TC_meters				17
273#define CUPS_TC_items				18
274#define CUPS_TC_percent				19
275
276/* These come from RFC 3808 to define character sets we support */
277/* Also see http://www.iana.org/assignments/character-sets */
278#define CUPS_TC_csASCII				3
279#define CUPS_TC_csISOLatin1			4
280#define CUPS_TC_csShiftJIS			17
281#define CUPS_TC_csUTF8				106
282#define CUPS_TC_csUnicode			1000 /* UCS2 BE */
283#define CUPS_TC_csUCS4				1001 /* UCS4 BE */
284#define CUPS_TC_csUnicodeASCII			1002
285#define CUPS_TC_csUnicodeLatin1			1003
286#define CUPS_TC_csUTF16BE			1013
287#define CUPS_TC_csUTF16LE			1014
288#define CUPS_TC_csUTF32				1017
289#define CUPS_TC_csUTF32BE			1018
290#define CUPS_TC_csUTF32LE			1019
291#define CUPS_TC_csWindows31J			2024
292
293
294/*
295 * Types...
296 */
297
298typedef int (*_cups_sccb_t)(int print_fd, int device_fd, int snmp_fd,
299			    http_addr_t *addr, int use_bc);
300
301
302/*
303 * Prototypes...
304 */
305
306extern void		backendCheckSideChannel(int snmp_fd, http_addr_t *addr);
307extern int		backendDrainOutput(int print_fd, int device_fd);
308extern int		backendGetDeviceID(int fd, char *device_id,
309			                   int device_id_size,
310			                   char *make_model,
311					   int make_model_size,
312					   const char *scheme, char *uri,
313					   int uri_size);
314extern int		backendGetMakeModel(const char *device_id,
315			                    char *make_model,
316				            int make_model_size);
317extern int		backendNetworkSideCB(int print_fd, int device_fd,
318			                     int snmp_fd, http_addr_t *addr,
319					     int use_bc);
320extern ssize_t		backendRunLoop(int print_fd, int device_fd, int snmp_fd,
321			               http_addr_t *addr, int use_bc,
322			               int update_state, _cups_sccb_t side_cb);
323extern int		backendSNMPSupplies(int snmp_fd, http_addr_t *addr,
324			                    int *page_count,
325					    int *printer_state);
326extern int		backendWaitLoop(int snmp_fd, http_addr_t *addr,
327			                int use_bc, _cups_sccb_t side_cb);
328
329
330#  ifdef __cplusplus
331}
332#  endif /* __cplusplus */
333#endif /* !_CUPS_BACKEND_PRIVATE_H_ */
334
335
336/*
337 * End of "$Id: backend-private.h 11093 2013-07-03 20:48:42Z msweet $".
338 */
339