]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - cups/sidechannel.h
Stop accepting attributes in collections (Issue #5630)
[thirdparty/cups.git] / cups / sidechannel.h
index 9bdf49b7fb4908a800e0ce62e3523df0c13f3255..538b8b23629ab179d8a69649e37ab19b95f1bf8f 100644 (file)
@@ -1,32 +1,29 @@
 /*
- * "$Id: sidechannel.h 6170 2007-01-02 17:26:41Z mike $"
+ * Side-channel API definitions for CUPS.
  *
- *   Side-channel API definitions for the Common UNIX Printing System (CUPS).
+ * Copyright © 2007-2019 by Apple Inc.
+ * Copyright © 2006 by Easy Software Products.
  *
- *   Copyright 2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Easy Software Products and are protected by Federal
- *   copyright law.  Distribution and use rights are outlined in the file
- *   "LICENSE.txt" which should have been included with this file.  If this
- *   file is missing or damaged please contact Easy Software Products
- *   at:
- *
- *       Attn: CUPS Licensing Information
- *       Easy Software Products
- *       44141 Airport View Drive, Suite 204
- *       Hollywood, Maryland 20636 USA
- *
- *       Voice: (301) 373-9600
- *       EMail: cups-info@cups.org
- *         WWW: http://www.cups.org
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * Licensed under Apache License v2.0.  See the file "LICENSE" for more information.
  */
 
 #ifndef _CUPS_SIDECHANNEL_H_
 #  define _CUPS_SIDECHANNEL_H_
 
+/*
+ * Include necessary headers...
+ */
+
+#  include "versioning.h"
+#  include <sys/types.h>
+#  if defined(_WIN32) && !defined(__CUPS_SSIZE_T_DEFINED)
+#    define __CUPS_SSIZE_T_DEFINED
+#    include <stddef.h>
+/* Windows does not support the ssize_t type, so map it to long... */
+typedef long ssize_t;                  /* @private@ */
+#  endif /* _WIN32 && !__CUPS_SSIZE_T_DEFINED */
+
+
 /*
  * C++ magic...
  */
@@ -47,34 +44,54 @@ extern "C" {
  * Enumerations...
  */
 
-typedef enum                           /**** Bidirectional capabilities ****/
+enum cups_sc_bidi_e                    /**** Bidirectional capability values ****/
 {
   CUPS_SC_BIDI_NOT_SUPPORTED = 0,      /* Bidirectional I/O is not supported */
   CUPS_SC_BIDI_SUPPORTED = 1           /* Bidirectional I/O is supported */
-} cups_sc_bidi_t;
+};
+typedef enum cups_sc_bidi_e cups_sc_bidi_t;
+                                       /**** Bidirectional capabilities ****/
 
-typedef enum                           /**** Request command codes ****/
+enum cups_sc_command_e                 /**** Request command codes ****/
 {
+  CUPS_SC_CMD_NONE = 0,                        /* No command @private@ */
   CUPS_SC_CMD_SOFT_RESET = 1,          /* Do a soft reset */
   CUPS_SC_CMD_DRAIN_OUTPUT = 2,                /* Drain all pending output */
   CUPS_SC_CMD_GET_BIDI = 3,            /* Return bidirectional capabilities */
   CUPS_SC_CMD_GET_DEVICE_ID = 4,       /* Return the IEEE-1284 device ID */
-  CUPS_SC_CMD_GET_STATE = 5            /* Return the device state */
-} cups_sc_command_t;
+  CUPS_SC_CMD_GET_STATE = 5,           /* Return the device state */
+  CUPS_SC_CMD_SNMP_GET = 6,            /* Query an SNMP OID @since CUPS 1.4/macOS 10.6@ */
+  CUPS_SC_CMD_SNMP_GET_NEXT = 7,       /* Query the next SNMP OID @since CUPS 1.4/macOS 10.6@ */
+  CUPS_SC_CMD_GET_CONNECTED = 8,       /* Return whether the backend is "connected" to the printer @since CUPS 1.5/macOS 10.7@ */
+  CUPS_SC_CMD_MAX                      /* End of valid values @private@ */
+};
+typedef enum cups_sc_command_e cups_sc_command_t;
+                                       /**** Request command codes ****/
+
+enum cups_sc_connected_e               /**** Connectivity values ****/
+{
+  CUPS_SC_NOT_CONNECTED = 0,           /* Backend is not "connected" to printer */
+  CUPS_SC_CONNECTED = 1                        /* Backend is "connected" to printer */
+};
+typedef enum cups_sc_connected_e cups_sc_connected_t;
+                                       /**** Connectivity values ****/
+
 
-typedef enum                           /**** Printer state bits ****/
+enum cups_sc_state_e                   /**** Printer state bits ****/
 {
-  CUPS_SC_STATE_OFFLINE = 0,           /* Device is off-line */
-  CUPS_SC_STATE_ONLINE = 1,            /* Device is on-line */
+  CUPS_SC_STATE_OFFLINE = 0,           /* Device is offline */
+  CUPS_SC_STATE_ONLINE = 1,            /* Device is online */
   CUPS_SC_STATE_BUSY = 2,              /* Device is busy */
   CUPS_SC_STATE_ERROR = 4,             /* Other error condition */
   CUPS_SC_STATE_MEDIA_LOW = 16,                /* Paper low condition */
   CUPS_SC_STATE_MEDIA_EMPTY = 32,      /* Paper out condition */
   CUPS_SC_STATE_MARKER_LOW = 64,       /* Toner/ink low condition */
   CUPS_SC_STATE_MARKER_EMPTY = 128     /* Toner/ink out condition */
-} cups_sc_state_t;
+};
+typedef enum cups_sc_state_e cups_sc_state_t;
+                                       /**** Printer state bits ****/
 
-typedef enum                           /**** Response status codes ****/
+enum cups_sc_status_e                  /**** Response status codes ****/
 {
   CUPS_SC_STATUS_NONE,                 /* No status */
   CUPS_SC_STATUS_OK,                   /* Operation succeeded */
@@ -84,24 +101,45 @@ typedef enum                               /**** Response status codes ****/
   CUPS_SC_STATUS_BAD_MESSAGE,          /* The command/response message was invalid */
   CUPS_SC_STATUS_TOO_BIG,              /* Response too big */
   CUPS_SC_STATUS_NOT_IMPLEMENTED       /* Command not implemented */
-} cups_sc_status_t;
+};
+typedef enum cups_sc_status_e cups_sc_status_t;
+                                       /**** Response status codes ****/
+
+typedef void (*cups_sc_walk_func_t)(const char *oid, const char *data,
+                                    int datalen, void *context);
+                                       /**** SNMP walk callback ****/
 
 
 /*
  * Prototypes...
  */
 
+/**** New in CUPS 1.2/macOS 10.5 ****/
+extern ssize_t         cupsBackChannelRead(char *buffer, size_t bytes,
+                                           double timeout) _CUPS_API_1_2;
+extern ssize_t         cupsBackChannelWrite(const char *buffer, size_t bytes,
+                                            double timeout) _CUPS_API_1_2;
+
+/**** New in CUPS 1.3/macOS 10.5 ****/
 extern cups_sc_status_t        cupsSideChannelDoRequest(cups_sc_command_t command,
                                                 char *data, int *datalen,
-                                                double timeout);
+                                                double timeout) _CUPS_API_1_3;
 extern int             cupsSideChannelRead(cups_sc_command_t *command,
                                            cups_sc_status_t *status,
                                            char *data, int *datalen,
-                                           double timeout);
+                                           double timeout) _CUPS_API_1_3;
 extern int             cupsSideChannelWrite(cups_sc_command_t command,
                                             cups_sc_status_t status,
                                             const char *data, int datalen,
-                                            double timeout);
+                                            double timeout) _CUPS_API_1_3;
+
+/**** New in CUPS 1.4/macOS 10.6 ****/
+extern cups_sc_status_t        cupsSideChannelSNMPGet(const char *oid, char *data,
+                                              int *datalen, double timeout)
+                                              _CUPS_API_1_4;
+extern cups_sc_status_t        cupsSideChannelSNMPWalk(const char *oid, double timeout,
+                                               cups_sc_walk_func_t cb,
+                                               void *context) _CUPS_API_1_4;
 
 
 #  ifdef __cplusplus
@@ -109,7 +147,3 @@ extern int          cupsSideChannelWrite(cups_sc_command_t command,
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_SIDECHANNEL_H_ */
-
-/*
- * End of "$Id: sidechannel.h 6170 2007-01-02 17:26:41Z mike $".
- */