1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * Copyright (C) 2016 Mopria Alliance, Inc. 4 * Copyright (C) 2013 Hewlett-Packard Development Company, L.P. 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 #ifndef __IFC_PRINT_JOB_H__ 19 #define __IFC_PRINT_JOB_H__ 20 21 #include "lib_wprint.h" 22 #include "ifc_wprint.h" 23 24 /* 25 * Interface for handling jobs 26 */ 27 typedef struct ifc_print_job_st { 28 /* 29 * Initializes print job handle with given connection params. 30 */ 31 status_t (*init)(const struct ifc_print_job_st *this_p, const char *printer_address, int port, 32 const char *printer_uri); 33 34 /* 35 * Validates job and connection params, updating parameters as necessary. 36 */ 37 status_t (*validate_job)(const struct ifc_print_job_st *this_p, 38 wprint_job_params_t *job_params); 39 40 /* 41 * Start a print job with given params 42 */ 43 status_t (*start_job)(const struct ifc_print_job_st *this_p, 44 const wprint_job_params_t *job_params); 45 46 /* 47 * Sends data to the ip address set on initialization, returning the amount of data 48 * written or -1 for an error. 49 */ 50 int (*send_data)(const struct ifc_print_job_st *this_p, const char *buffer, 51 size_t bufferLength); 52 53 /* 54 * Returns print job status 55 */ 56 status_t (*check_status)(const struct ifc_print_job_st *this_p); 57 58 /* 59 * Ends a print job 60 */ 61 status_t (*end_job)(const struct ifc_print_job_st *this_p); 62 63 /* 64 * Destroys a print job handle 65 */ 66 void (*destroy)(const struct ifc_print_job_st *this_p); 67 68 /* 69 * Enable a timeout for a print job 70 */ 71 void (*enable_timeout)(const struct ifc_print_job_st *this_p, 72 int enable); 73 } ifc_print_job_t; 74 75 /* 76 * Connect to a printer with a given protocol. Returns a job handle. 77 */ 78 const ifc_print_job_t *printer_connect(int port_num); 79 80 /* 81 * Opens a socket to printer:port and returns it. 82 */ 83 int wConnect(const char *printer_addr, int port_num, long int timeout_msec); 84 85 #endif // __IFC_PRINT_JOB_H__