| /* |
| * 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__ |