#ifndef _CUPS_SIDECHANNEL_H_
# define _CUPS_SIDECHANNEL_H_
# include "versioning.h"
# include <sys/types.h>
# if defined(_WIN32) && !defined(__CUPS_SSIZE_T_DEFINED)
# define __CUPS_SSIZE_T_DEFINED
# include <stddef.h>
typedef long ssize_t;
# endif
# ifdef __cplusplus
extern "C" {
# endif
#define CUPS_SC_FD 4
enum cups_sc_bidi_e
{
CUPS_SC_BIDI_NOT_SUPPORTED = 0,
CUPS_SC_BIDI_SUPPORTED = 1
};
typedef enum cups_sc_bidi_e cups_sc_bidi_t;
enum cups_sc_command_e
{
CUPS_SC_CMD_NONE = 0,
CUPS_SC_CMD_SOFT_RESET = 1,
CUPS_SC_CMD_DRAIN_OUTPUT = 2,
CUPS_SC_CMD_GET_BIDI = 3,
CUPS_SC_CMD_GET_DEVICE_ID = 4,
CUPS_SC_CMD_GET_STATE = 5,
CUPS_SC_CMD_SNMP_GET = 6,
CUPS_SC_CMD_SNMP_GET_NEXT = 7,
CUPS_SC_CMD_GET_CONNECTED = 8,
CUPS_SC_CMD_MAX
};
typedef enum cups_sc_command_e cups_sc_command_t;
enum cups_sc_connected_e
{
CUPS_SC_NOT_CONNECTED = 0,
CUPS_SC_CONNECTED = 1
};
typedef enum cups_sc_connected_e cups_sc_connected_t;
enum cups_sc_state_e
{
CUPS_SC_STATE_OFFLINE = 0,
CUPS_SC_STATE_ONLINE = 1,
CUPS_SC_STATE_BUSY = 2,
CUPS_SC_STATE_ERROR = 4,
CUPS_SC_STATE_MEDIA_LOW = 16,
CUPS_SC_STATE_MEDIA_EMPTY = 32,
CUPS_SC_STATE_MARKER_LOW = 64,
CUPS_SC_STATE_MARKER_EMPTY = 128
};
typedef enum cups_sc_state_e cups_sc_state_t;
enum cups_sc_status_e
{
CUPS_SC_STATUS_NONE,
CUPS_SC_STATUS_OK,
CUPS_SC_STATUS_IO_ERROR,
CUPS_SC_STATUS_TIMEOUT,
CUPS_SC_STATUS_NO_RESPONSE,
CUPS_SC_STATUS_BAD_MESSAGE,
CUPS_SC_STATUS_TOO_BIG,
CUPS_SC_STATUS_NOT_IMPLEMENTED
};
typedef enum cups_sc_status_e cups_sc_status_t;
typedef void (*cups_sc_walk_func_t)(const char *oid, const char *data,
int datalen, void *context);
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;
extern cups_sc_status_t cupsSideChannelDoRequest(cups_sc_command_t command,
char *data, int *datalen,
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) _CUPS_API_1_3;
extern int cupsSideChannelWrite(cups_sc_command_t command,
cups_sc_status_t status,
const char *data, int datalen,
double timeout) _CUPS_API_1_3;
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
}
# endif
#endif