xref: /aosp_15_r20/external/libcups/cups/sidechannel.h (revision 5e7646d21f1134fb0638875d812ef646c12ab91e)
1*5e7646d2SAndroid Build Coastguard Worker /*
2*5e7646d2SAndroid Build Coastguard Worker  * Side-channel API definitions for CUPS.
3*5e7646d2SAndroid Build Coastguard Worker  *
4*5e7646d2SAndroid Build Coastguard Worker  * Copyright © 2007-2019 by Apple Inc.
5*5e7646d2SAndroid Build Coastguard Worker  * Copyright © 2006 by Easy Software Products.
6*5e7646d2SAndroid Build Coastguard Worker  *
7*5e7646d2SAndroid Build Coastguard Worker  * Licensed under Apache License v2.0.  See the file "LICENSE" for more information.
8*5e7646d2SAndroid Build Coastguard Worker  */
9*5e7646d2SAndroid Build Coastguard Worker 
10*5e7646d2SAndroid Build Coastguard Worker #ifndef _CUPS_SIDECHANNEL_H_
11*5e7646d2SAndroid Build Coastguard Worker #  define _CUPS_SIDECHANNEL_H_
12*5e7646d2SAndroid Build Coastguard Worker 
13*5e7646d2SAndroid Build Coastguard Worker /*
14*5e7646d2SAndroid Build Coastguard Worker  * Include necessary headers...
15*5e7646d2SAndroid Build Coastguard Worker  */
16*5e7646d2SAndroid Build Coastguard Worker 
17*5e7646d2SAndroid Build Coastguard Worker #  include "versioning.h"
18*5e7646d2SAndroid Build Coastguard Worker #  include <sys/types.h>
19*5e7646d2SAndroid Build Coastguard Worker #  if defined(_WIN32) && !defined(__CUPS_SSIZE_T_DEFINED)
20*5e7646d2SAndroid Build Coastguard Worker #    define __CUPS_SSIZE_T_DEFINED
21*5e7646d2SAndroid Build Coastguard Worker #    include <stddef.h>
22*5e7646d2SAndroid Build Coastguard Worker /* Windows does not support the ssize_t type, so map it to long... */
23*5e7646d2SAndroid Build Coastguard Worker typedef long ssize_t;			/* @private@ */
24*5e7646d2SAndroid Build Coastguard Worker #  endif /* _WIN32 && !__CUPS_SSIZE_T_DEFINED */
25*5e7646d2SAndroid Build Coastguard Worker 
26*5e7646d2SAndroid Build Coastguard Worker 
27*5e7646d2SAndroid Build Coastguard Worker /*
28*5e7646d2SAndroid Build Coastguard Worker  * C++ magic...
29*5e7646d2SAndroid Build Coastguard Worker  */
30*5e7646d2SAndroid Build Coastguard Worker 
31*5e7646d2SAndroid Build Coastguard Worker #  ifdef __cplusplus
32*5e7646d2SAndroid Build Coastguard Worker extern "C" {
33*5e7646d2SAndroid Build Coastguard Worker #  endif /* __cplusplus */
34*5e7646d2SAndroid Build Coastguard Worker 
35*5e7646d2SAndroid Build Coastguard Worker 
36*5e7646d2SAndroid Build Coastguard Worker /*
37*5e7646d2SAndroid Build Coastguard Worker  * Constants...
38*5e7646d2SAndroid Build Coastguard Worker  */
39*5e7646d2SAndroid Build Coastguard Worker 
40*5e7646d2SAndroid Build Coastguard Worker #define CUPS_SC_FD	4		/* File descriptor for select/poll */
41*5e7646d2SAndroid Build Coastguard Worker 
42*5e7646d2SAndroid Build Coastguard Worker 
43*5e7646d2SAndroid Build Coastguard Worker /*
44*5e7646d2SAndroid Build Coastguard Worker  * Enumerations...
45*5e7646d2SAndroid Build Coastguard Worker  */
46*5e7646d2SAndroid Build Coastguard Worker 
47*5e7646d2SAndroid Build Coastguard Worker enum cups_sc_bidi_e			/**** Bidirectional capability values ****/
48*5e7646d2SAndroid Build Coastguard Worker {
49*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_BIDI_NOT_SUPPORTED = 0,	/* Bidirectional I/O is not supported */
50*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_BIDI_SUPPORTED = 1		/* Bidirectional I/O is supported */
51*5e7646d2SAndroid Build Coastguard Worker };
52*5e7646d2SAndroid Build Coastguard Worker typedef enum cups_sc_bidi_e cups_sc_bidi_t;
53*5e7646d2SAndroid Build Coastguard Worker 					/**** Bidirectional capabilities ****/
54*5e7646d2SAndroid Build Coastguard Worker 
55*5e7646d2SAndroid Build Coastguard Worker enum cups_sc_command_e			/**** Request command codes ****/
56*5e7646d2SAndroid Build Coastguard Worker {
57*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_CMD_NONE = 0,			/* No command @private@ */
58*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_CMD_SOFT_RESET = 1,		/* Do a soft reset */
59*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_CMD_DRAIN_OUTPUT = 2,		/* Drain all pending output */
60*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_CMD_GET_BIDI = 3,		/* Return bidirectional capabilities */
61*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_CMD_GET_DEVICE_ID = 4,	/* Return the IEEE-1284 device ID */
62*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_CMD_GET_STATE = 5,		/* Return the device state */
63*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_CMD_SNMP_GET = 6,		/* Query an SNMP OID @since CUPS 1.4/macOS 10.6@ */
64*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_CMD_SNMP_GET_NEXT = 7,	/* Query the next SNMP OID @since CUPS 1.4/macOS 10.6@ */
65*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_CMD_GET_CONNECTED = 8,	/* Return whether the backend is "connected" to the printer @since CUPS 1.5/macOS 10.7@ */
66*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_CMD_MAX			/* End of valid values @private@ */
67*5e7646d2SAndroid Build Coastguard Worker };
68*5e7646d2SAndroid Build Coastguard Worker typedef enum cups_sc_command_e cups_sc_command_t;
69*5e7646d2SAndroid Build Coastguard Worker 					/**** Request command codes ****/
70*5e7646d2SAndroid Build Coastguard Worker 
71*5e7646d2SAndroid Build Coastguard Worker enum cups_sc_connected_e		/**** Connectivity values ****/
72*5e7646d2SAndroid Build Coastguard Worker {
73*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_NOT_CONNECTED = 0,		/* Backend is not "connected" to printer */
74*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_CONNECTED = 1			/* Backend is "connected" to printer */
75*5e7646d2SAndroid Build Coastguard Worker };
76*5e7646d2SAndroid Build Coastguard Worker typedef enum cups_sc_connected_e cups_sc_connected_t;
77*5e7646d2SAndroid Build Coastguard Worker 					/**** Connectivity values ****/
78*5e7646d2SAndroid Build Coastguard Worker 
79*5e7646d2SAndroid Build Coastguard Worker 
80*5e7646d2SAndroid Build Coastguard Worker enum cups_sc_state_e			/**** Printer state bits ****/
81*5e7646d2SAndroid Build Coastguard Worker {
82*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATE_OFFLINE = 0,		/* Device is offline */
83*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATE_ONLINE = 1,		/* Device is online */
84*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATE_BUSY = 2,		/* Device is busy */
85*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATE_ERROR = 4,		/* Other error condition */
86*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATE_MEDIA_LOW = 16,		/* Paper low condition */
87*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATE_MEDIA_EMPTY = 32,	/* Paper out condition */
88*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATE_MARKER_LOW = 64,	/* Toner/ink low condition */
89*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATE_MARKER_EMPTY = 128	/* Toner/ink out condition */
90*5e7646d2SAndroid Build Coastguard Worker };
91*5e7646d2SAndroid Build Coastguard Worker typedef enum cups_sc_state_e cups_sc_state_t;
92*5e7646d2SAndroid Build Coastguard Worker 					/**** Printer state bits ****/
93*5e7646d2SAndroid Build Coastguard Worker 
94*5e7646d2SAndroid Build Coastguard Worker enum cups_sc_status_e			/**** Response status codes ****/
95*5e7646d2SAndroid Build Coastguard Worker {
96*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATUS_NONE,			/* No status */
97*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATUS_OK,			/* Operation succeeded */
98*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATUS_IO_ERROR,		/* An I/O error occurred */
99*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATUS_TIMEOUT,		/* The backend did not respond */
100*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATUS_NO_RESPONSE,		/* The device did not respond */
101*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATUS_BAD_MESSAGE,		/* The command/response message was invalid */
102*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATUS_TOO_BIG,		/* Response too big */
103*5e7646d2SAndroid Build Coastguard Worker   CUPS_SC_STATUS_NOT_IMPLEMENTED	/* Command not implemented */
104*5e7646d2SAndroid Build Coastguard Worker };
105*5e7646d2SAndroid Build Coastguard Worker typedef enum cups_sc_status_e cups_sc_status_t;
106*5e7646d2SAndroid Build Coastguard Worker 					/**** Response status codes ****/
107*5e7646d2SAndroid Build Coastguard Worker 
108*5e7646d2SAndroid Build Coastguard Worker typedef void (*cups_sc_walk_func_t)(const char *oid, const char *data,
109*5e7646d2SAndroid Build Coastguard Worker                                     int datalen, void *context);
110*5e7646d2SAndroid Build Coastguard Worker 					/**** SNMP walk callback ****/
111*5e7646d2SAndroid Build Coastguard Worker 
112*5e7646d2SAndroid Build Coastguard Worker 
113*5e7646d2SAndroid Build Coastguard Worker /*
114*5e7646d2SAndroid Build Coastguard Worker  * Prototypes...
115*5e7646d2SAndroid Build Coastguard Worker  */
116*5e7646d2SAndroid Build Coastguard Worker 
117*5e7646d2SAndroid Build Coastguard Worker /**** New in CUPS 1.2/macOS 10.5 ****/
118*5e7646d2SAndroid Build Coastguard Worker extern ssize_t		cupsBackChannelRead(char *buffer, size_t bytes,
119*5e7646d2SAndroid Build Coastguard Worker 			                    double timeout) _CUPS_API_1_2;
120*5e7646d2SAndroid Build Coastguard Worker extern ssize_t		cupsBackChannelWrite(const char *buffer, size_t bytes,
121*5e7646d2SAndroid Build Coastguard Worker 			                     double timeout) _CUPS_API_1_2;
122*5e7646d2SAndroid Build Coastguard Worker 
123*5e7646d2SAndroid Build Coastguard Worker /**** New in CUPS 1.3/macOS 10.5 ****/
124*5e7646d2SAndroid Build Coastguard Worker extern cups_sc_status_t	cupsSideChannelDoRequest(cups_sc_command_t command,
125*5e7646d2SAndroid Build Coastguard Worker 			                         char *data, int *datalen,
126*5e7646d2SAndroid Build Coastguard Worker 						 double timeout) _CUPS_API_1_3;
127*5e7646d2SAndroid Build Coastguard Worker extern int		cupsSideChannelRead(cups_sc_command_t *command,
128*5e7646d2SAndroid Build Coastguard Worker 			                    cups_sc_status_t *status,
129*5e7646d2SAndroid Build Coastguard Worker 					    char *data, int *datalen,
130*5e7646d2SAndroid Build Coastguard Worker 					    double timeout) _CUPS_API_1_3;
131*5e7646d2SAndroid Build Coastguard Worker extern int		cupsSideChannelWrite(cups_sc_command_t command,
132*5e7646d2SAndroid Build Coastguard Worker 			                     cups_sc_status_t status,
133*5e7646d2SAndroid Build Coastguard Worker 					     const char *data, int datalen,
134*5e7646d2SAndroid Build Coastguard Worker 					     double timeout) _CUPS_API_1_3;
135*5e7646d2SAndroid Build Coastguard Worker 
136*5e7646d2SAndroid Build Coastguard Worker /**** New in CUPS 1.4/macOS 10.6 ****/
137*5e7646d2SAndroid Build Coastguard Worker extern cups_sc_status_t	cupsSideChannelSNMPGet(const char *oid, char *data,
138*5e7646d2SAndroid Build Coastguard Worker 			                       int *datalen, double timeout)
139*5e7646d2SAndroid Build Coastguard Worker 					       _CUPS_API_1_4;
140*5e7646d2SAndroid Build Coastguard Worker extern cups_sc_status_t	cupsSideChannelSNMPWalk(const char *oid, double timeout,
141*5e7646d2SAndroid Build Coastguard Worker 						cups_sc_walk_func_t cb,
142*5e7646d2SAndroid Build Coastguard Worker 						void *context) _CUPS_API_1_4;
143*5e7646d2SAndroid Build Coastguard Worker 
144*5e7646d2SAndroid Build Coastguard Worker 
145*5e7646d2SAndroid Build Coastguard Worker #  ifdef __cplusplus
146*5e7646d2SAndroid Build Coastguard Worker }
147*5e7646d2SAndroid Build Coastguard Worker #  endif /* __cplusplus */
148*5e7646d2SAndroid Build Coastguard Worker 
149*5e7646d2SAndroid Build Coastguard Worker #endif /* !_CUPS_SIDECHANNEL_H_ */
150