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