blob: b1449bcb97769abea1e320e83040fe7b4f4a7c8f [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
* Copyright (C) 2016 Mopria Alliance, Inc.
* Copyright (C) 2013 Hewlett-Packard Development Company, L.P.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __WPRINT_STATUS_TYPES_H__
#define __WPRINT_STATUS_TYPES_H__
#define LONG_ONE ((unsigned long long) 1)
#define PRINTER_IDLE_BIT (1 << 31)
#define PRINTER_IS_IDLE(X) ((X) << PRINT_STATUS_MAX_STATE)
#define PRINTER_STATUS_MASK(X) ((X) & (PRINTER_IDLE_BIT - 1))
#define BLOCKED_REASON_UNABLE_TO_CONNECT (1 << PRINT_STATUS_UNABLE_TO_CONNECT)
#define BLOCKED_REASONS_PRINTER_BUSY (1 << PRINT_STATUS_BUSY)
#define BLOCKED_REASONS_CANCELLED (1 << PRINT_STATUS_CANCELLED)
#define BLOCKED_REASON_OUT_OF_PAPER (1 << PRINT_STATUS_OUT_OF_PAPER)
#define BLOCKED_REASON_OUT_OF_INK (1 << PRINT_STATUS_OUT_OF_INK)
#define BLOCKED_REASON_OUT_OF_TONER (1 << PRINT_STATUS_OUT_OF_TONER)
#define BLOCKED_REASON_JAMMED (1 << PRINT_STATUS_JAMMED)
#define BLOCKED_REASON_DOOR_OPEN (1 << PRINT_STATUS_DOOR_OPEN)
#define BLOCKED_REASON_SVC_REQUEST (1 << PRINT_STATUS_SVC_REQUEST)
#define BLOCKED_REASON_LOW_ON_INK (1 << PRINT_STATUS_LOW_ON_INK)
#define BLOCKED_REASON_LOW_ON_TONER (1 << PRINT_STATUS_LOW_ON_TONER)
#define BLOCKED_REASON_UNKNOWN (1 << PRINT_STATUS_UNKNOWN)
#define BLOCKED_REASON_BUSY (1 << PRINT_STATUS_PRINTING)
#define BLOCKED_REASON_IDLE (1 << PRINT_STATUS_IDLE)
#define BLOCKED_REASON_CANCELLED (1 << PRINT_STATUS_CANCELLED)
#define BLOCKED_REASON_PRINT_STATUS_VERY_LOW_ON_INK (1 << PRINT_STATUS_VERY_LOW_ON_INK)
#define BLOCKED_REASON_PARTIAL_CANCEL (1 << PRINT_STATUS_PARTIAL_CANCEL)
#define BLOCKED_REASON_PAUSED (LONG_ONE << PRINT_STATUS_PAUSED)
#define BLOCKED_REASON_STOPPED (LONG_ONE << PRINT_STATUS_STOPPED)
#define BLOCKED_REASON_INPUT_CANNOT_FEED_SIZE_SELECTED \
(LONG_ONE << PRINT_STATUS_INPUT_CANNOT_FEED_SIZE_SELECTED)
#define BLOCKED_REASON_INTERLOCK_ERROR (LONG_ONE << PRINT_STATUS_INTERLOCK_ERROR)
#define BLOCKED_REASON_OUTPUT_MAILBOX_SELECT_FAILURE \
(LONG_ONE << PRINT_STATUS_OUTPUT_MAILBOX_SELECT_FAILURE)
#define BLOCKED_REASON_OUTPUT_TRAY_MISSING (LONG_ONE << PRINT_STATUS_OUTPUT_TRAY_MISSING)
#define BLOCKED_REASON_BANDER_ERROR (LONG_ONE << PRINT_STATUS_BANDER_ERROR)
#define BLOCKED_REASON_BINDER_ERROR (LONG_ONE << PRINT_STATUS_BINDER_ERROR)
#define BLOCKED_REASON_POWER_ERROR (LONG_ONE << PRINT_STATUS_POWER_ERROR)
#define BLOCKED_REASON_CLEANER_ERROR (LONG_ONE << PRINT_STATUS_CLEANER_ERROR)
#define BLOCKED_REASON_DIE_CUTTER_ERROR (LONG_ONE << PRINT_STATUS_DIE_CUTTER_ERROR)
#define BLOCKED_REASON_FOLDER_ERROR (LONG_ONE << PRINT_STATUS_FOLDER_ERROR)
#define BLOCKED_REASON_IMPRINTER_ERROR (LONG_ONE << PRINT_STATUS_IMPRINTER_ERROR)
#define BLOCKED_REASON_INPUT_TRAY_ERROR (LONG_ONE << PRINT_STATUS_INPUT_TRAY_ERROR)
#define BLOCKED_REASON_INSERTER_ERROR (LONG_ONE << PRINT_STATUS_INSERTER_ERROR)
#define BLOCKED_REASON_INTERPRETER_ERROR (LONG_ONE << PRINT_STATUS_INTERPRETER_ERROR)
#define BLOCKED_REASON_MAKE_ENVELOPE_ERROR (LONG_ONE << PRINT_STATUS_MAKE_ENVELOPE_ERROR)
#define BLOCKED_REASON_MARKER_ERROR (LONG_ONE << PRINT_STATUS_MARKER_ERROR)
#define BLOCKED_REASON_MEDIA_ERROR (LONG_ONE << PRINT_STATUS_MEDIA_ERROR)
#define BLOCKED_REASON_PERFORATER_ERROR (LONG_ONE << PRINT_STATUS_PERFORATER_ERROR)
#define BLOCKED_REASON_PUNCHER_ERROR (LONG_ONE << PRINT_STATUS_PUNCHER_ERROR)
#define BLOCKED_REASON_SEPARATION_CUTTER_ERROR (LONG_ONE << PRINT_STATUS_SEPARATION_CUTTER_ERROR)
#define BLOCKED_REASON_SHEET_ROTATOR_ERROR (LONG_ONE << PRINT_STATUS_SHEET_ROTATOR_ERROR)
#define BLOCKED_REASON_SLITTER_ERROR (LONG_ONE << PRINT_STATUS_SLITTER_ERROR)
#define BLOCKED_REASON_STACKER_ERROR (LONG_ONE << PRINT_STATUS_STACKER_ERROR)
#define BLOCKED_REASON_STAPLER_ERROR (LONG_ONE << PRINT_STATUS_STAPLER_ERROR)
#define BLOCKED_REASON_STITCHER_ERROR (LONG_ONE << PRINT_STATUS_STITCHER_ERROR)
#define BLOCKED_REASON_SUBUNIT_ERROR (LONG_ONE << PRINT_STATUS_SUBUNIT_ERROR)
#define BLOCKED_REASON_TRIMMER_ERROR (LONG_ONE << PRINT_STATUS_TRIMMER_ERROR)
#define BLOCKED_REASON_WRAPPER_ERROR (LONG_ONE << PRINT_STATUS_WRAPPER_ERROR)
#define BLOCKED_REASON_CLIENT_ERROR (LONG_ONE << PRINT_STATUS_CLIENT_ERROR)
#define BLOCKED_REASON_SERVER_ERROR (LONG_ONE << PRINT_STATUS_SERVER_ERROR)
#define BLOCKED_REASON_ALERT_REMOVAL_OF_BINARY_CHANGE_ENTRY \
(LONG_ONE << PRINT_STATUS_ALERT_REMOVAL_OF_BINARY_CHANGE_ENTRY)
#define BLOCKED_REASON_CONFIGURATION_CHANGED (LONG_ONE << PRINT_STATUS_CONFIGURATION_CHANGED)
#define BLOCKED_REASON_CONNECTING_TO_DEVICE (LONG_ONE << PRINT_STATUS_CONNECTING_TO_DEVICE)
#define BLOCKED_REASON_STATE_DEACTIVATED (LONG_ONE << PRINT_STATUS_STATE_DEACTIVATED)
#define BLOCKED_REASON_DEVELOPER_ERROR (LONG_ONE << PRINT_STATUS_DEVELOPER_ERROR)
#define BLOCKED_REASON_HOLD_NEW_JOBS (LONG_ONE << PRINT_STATUS_HOLD_NEW_JOBS)
#define BLOCKED_REASON_OPC_LIFE_OVER (LONG_ONE << PRINT_STATUS_OPC_LIFE_OVER)
#define BLOCKED_REASON_SPOOL_AREA_FULL (LONG_ONE << PRINT_STATUS_SPOOL_AREA_FULL)
#define BLOCKED_REASON_TIMED_OUT (LONG_ONE << PRINT_STATUS_TIMED_OUT)
#define BLOCKED_REASON_SHUTDOWN (LONG_ONE << PRINT_STATUS_SHUTDOWN)
#define BLOCKED_REASON_PRINTER_MANUAL_RESET (LONG_ONE << PRINT_STATUS_PRINTER_MANUAL_RESET)
#define BLOCKED_REASON_PRINTER_NMS_RESET (LONG_ONE << PRINT_STATUS_PRINTER_NMS_RESET)
#define JOB_FAIL_REASON_UNABLE_TO_CONNECT (LONG_ONE << IPP_JOB_STATE_REASON_UNABLE_TO_CONNECT)
#define JOB_CANCEL_REASON_JOB_CANCELED_BY_USER \
(LONG_ONE << IPP_JOB_STATE_REASON_JOB_CANCELED_BY_USER)
#define JOB_CANCEL_REASON_JOB_CANCELED_AT_DEVICE \
(LONG_ONE << IPP_JOB_STATE_REASON_JOB_CANCELED_AT_DEVICE)
#define JOB_FAIL_REASON_ABORTED_BY_SYSTEM (LONG_ONE << IPP_JOB_STATE_REASON_ABORTED_BY_SYSTEM)
#define JOB_FAIL_REASON_UNSUPPORTED_COMPRESSION \
(LONG_ONE << IPP_JOB_STATE_REASON_UNSUPPORTED_COMPRESSION)
#define JOB_FAIL_REASON_COMPRESSION_ERROR (LONG_ONE << IPP_JOB_STATE_REASON_COMPRESSION_ERROR)
#define JOB_FAIL_REASON_UNSUPPORTED_DOCUMENT_FORMAT \
(LONG_ONE << IPP_JOB_STATE_REASON_UNSUPPORTED_DOCUMENT_FORMAT)
#define JOB_FAIL_REASON_DOCUMENT_FORMAT_ERROR \
(LONG_ONE << IPP_JOB_STATE_REASON_DOCUMENT_FORMAT_ERROR)
#define JOB_FAIL_REASON_SERVICE_OFFLINE (LONG_ONE << IPP_JOB_STATE_REASON_SERVICE_OFFLINE)
#define JOB_FAIL_REASON_DOCUMENT_PASSWORD_ERROR \
(LONG_ONE << IPP_JOB_STATE_REASON_DOCUMENT_PASSWORD_ERROR)
#define JOB_FAIL_REASON_DOCUMENT_PERMISSION_ERROR \
(LONG_ONE << IPP_JOB_STATE_REASON_DOCUMENT_PERMISSION_ERROR)
#define JOB_FAIL_REASON_DOCUMENT_SECURITY_ERROR \
(LONG_ONE << IPP_JOB_STATE_REASON_DOCUMENT_SECURITY_ERROR)
#define JOB_FAIL_REASON_DOCUMENT_UNPRINTABLE_ERROR \
(LONG_ONE << IPP_JOB_STATE_REASON_DOCUMENT_UNPRINTABLE_ERROR)
#define JOB_FAIL_REASON_DOCUMENT_ACCESS_ERROR \
(LONG_ONE << IPP_JOB_STATE_REASON_DOCUMENT_ACCESS_ERROR)
#define JOB_FAIL_REASON_SUBMISSION_INTERRUPTED \
(LONG_ONE << IPP_JOB_STATE_REASON_SUBMISSION_INTERRUPTED)
#define JOB_FAIL_REASON_AUTHORIZATION_FAILED \
(LONG_ONE << IPP_JOB_STATE_REASON_AUTHORIZATION_FAILED)
#define JOB_FAIL_REASON_ACCOUNT_CLOSED (LONG_ONE << IPP_JOB_STATE_REASON_ACCOUNT_CLOSED)
#define JOB_FAIL_REASON_ACCOUNT_INFO_NEEDED (LONG_ONE << IPP_JOB_STATE_REASON_ACCOUNT_INFO_NEEDED)
#define JOB_FAIL_REASON_ACCOUNT_LIMIT_REACHED \
(LONG_ONE << IPP_JOB_STATE_REASON_ACCOUNT_LIMIT_REACHED)
/*
* Enumeration for printer statuses
*/
typedef enum {
PRINT_STATUS_INITIALIZING,
PRINT_STATUS_SHUTTING_DOWN,
PRINT_STATUS_UNABLE_TO_CONNECT,
PRINT_STATUS_UNKNOWN,
PRINT_STATUS_OFFLINE,
PRINT_STATUS_BUSY,
PRINT_STATUS_CANCELLED,
PRINT_STATUS_IDLE,
PRINT_STATUS_PRINTING,
PRINT_STATUS_JAMMED,
PRINT_STATUS_OUT_OF_PAPER,
PRINT_STATUS_OUT_OF_INK,
PRINT_STATUS_OUT_OF_TONER,
PRINT_STATUS_DOOR_OPEN,
PRINT_STATUS_SVC_REQUEST,
PRINT_STATUS_PAUSED,
PRINT_STATUS_STOPPED,
PRINT_STATUS_LOW_ON_INK,
PRINT_STATUS_LOW_ON_TONER,
PRINT_STATUS_VERY_LOW_ON_INK,
PRINT_STATUS_PARTIAL_CANCEL,
PRINT_STATUS_INPUT_CANNOT_FEED_SIZE_SELECTED,
PRINT_STATUS_INTERLOCK_ERROR,
PRINT_STATUS_OUTPUT_MAILBOX_SELECT_FAILURE,
PRINT_STATUS_OUTPUT_TRAY_MISSING,
PRINT_STATUS_BANDER_ERROR,
PRINT_STATUS_BINDER_ERROR,
PRINT_STATUS_POWER_ERROR,
PRINT_STATUS_CLEANER_ERROR,
PRINT_STATUS_DIE_CUTTER_ERROR,
PRINT_STATUS_FOLDER_ERROR,
PRINT_STATUS_IMPRINTER_ERROR,
PRINT_STATUS_INPUT_TRAY_ERROR,
PRINT_STATUS_INSERTER_ERROR,
PRINT_STATUS_INTERPRETER_ERROR,
PRINT_STATUS_MAKE_ENVELOPE_ERROR,
PRINT_STATUS_MARKER_ERROR,
PRINT_STATUS_MEDIA_ERROR,
PRINT_STATUS_PERFORATER_ERROR,
PRINT_STATUS_PUNCHER_ERROR,
PRINT_STATUS_SEPARATION_CUTTER_ERROR,
PRINT_STATUS_SHEET_ROTATOR_ERROR,
PRINT_STATUS_SLITTER_ERROR,
PRINT_STATUS_STACKER_ERROR,
PRINT_STATUS_STAPLER_ERROR,
PRINT_STATUS_STITCHER_ERROR,
PRINT_STATUS_SUBUNIT_ERROR,
PRINT_STATUS_TRIMMER_ERROR,
PRINT_STATUS_WRAPPER_ERROR,
PRINT_STATUS_CLIENT_ERROR,
PRINT_STATUS_SERVER_ERROR,
PRINT_STATUS_ALERT_REMOVAL_OF_BINARY_CHANGE_ENTRY,
PRINT_STATUS_CONFIGURATION_CHANGED,
PRINT_STATUS_CONNECTING_TO_DEVICE,
PRINT_STATUS_STATE_DEACTIVATED,
PRINT_STATUS_DEVELOPER_ERROR,
PRINT_STATUS_HOLD_NEW_JOBS,
PRINT_STATUS_OPC_LIFE_OVER,
PRINT_STATUS_SPOOL_AREA_FULL,
PRINT_STATUS_TIMED_OUT,
PRINT_STATUS_SHUTDOWN,
PRINT_STATUS_PRINTER_MANUAL_RESET,
PRINT_STATUS_PRINTER_NMS_RESET,
PRINT_STATUS_MAX_STATE // Add new entries above this line.
} print_status_t;
/*
* Structure for handling printer status
*/
typedef struct printer_state_dyn_s {
// Printer state (idle, printing, service request, unknown)
print_status_t printer_status;
// all current print status events
print_status_t printer_reasons[PRINT_STATUS_MAX_STATE + 1];
} printer_state_dyn_t;
typedef enum {
IPP_JOB_STATE_UNABLE_TO_CONNECT,
IPP_JOB_STATE_UNKNOWN,
IPP_JOB_STATE_PENDING,
IPP_JOB_STATE_PENDING_HELD,
IPP_JOB_STATE_PROCESSING,
IPP_JOB_STATE_PROCESSING_STOPPED,
IPP_JOB_STATE_CANCELED,
IPP_JOB_STATE_ABORTED,
IPP_JOB_STATE_COMPLETED,
IPP_JOB_STATE_MAX_STATE, // Add new entries above this line.
} job_state_t;
typedef enum {
IPP_JOB_STATE_REASON_UNKNOWN,
IPP_JOB_STATE_REASON_UNABLE_TO_CONNECT,
IPP_JOB_STATE_REASON_JOB_CANCELED_BY_USER,
IPP_JOB_STATE_REASON_JOB_CANCELED_AT_DEVICE,
IPP_JOB_STATE_REASON_ABORTED_BY_SYSTEM,
IPP_JOB_STATE_REASON_UNSUPPORTED_COMPRESSION,
IPP_JOB_STATE_REASON_COMPRESSION_ERROR,
IPP_JOB_STATE_REASON_UNSUPPORTED_DOCUMENT_FORMAT,
IPP_JOB_STATE_REASON_DOCUMENT_FORMAT_ERROR,
IPP_JOB_STATE_REASON_SERVICE_OFFLINE,
IPP_JOB_STATE_REASON_DOCUMENT_PASSWORD_ERROR,
IPP_JOB_STATE_REASON_DOCUMENT_PERMISSION_ERROR,
IPP_JOB_STATE_REASON_DOCUMENT_SECURITY_ERROR,
IPP_JOB_STATE_REASON_DOCUMENT_UNPRINTABLE_ERROR,
IPP_JOB_STATE_REASON_DOCUMENT_ACCESS_ERROR,
IPP_JOB_STATE_REASON_SUBMISSION_INTERRUPTED,
IPP_JOB_STATE_REASON_AUTHORIZATION_FAILED,
IPP_JOB_STATE_REASON_ACCOUNT_CLOSED,
IPP_JOB_STATE_REASON_ACCOUNT_INFO_NEEDED,
IPP_JOB_STATE_REASON_ACCOUNT_LIMIT_REACHED,
IPP_JOB_STATE_REASON_MAX_VALUE, // Add new entries above this line.
} job_state_reason_t;
typedef struct job_state_dyn_s
{
job_state_t job_state;
// all current job state reasons
job_state_reason_t job_state_reasons[IPP_JOB_STATE_REASON_MAX_VALUE + 1];
} job_state_dyn_t;
#endif // __WPRINT_STATUS_TYPES_H__