/*
* 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 __IFC_PRINT_JOB_H__
#define __IFC_PRINT_JOB_H__
#include "lib_wprint.h"
#include "ifc_wprint.h"
/*
* Interface for handling jobs
*/
typedef struct ifc_print_job_st {
/*
* Initializes print job handle with given connection params.
*/
status_t (*init)(const struct ifc_print_job_st *this_p, const char *printer_address, int port,
const char *printer_uri, bool use_secure_uri);
/*
* Validates job and connection params, updating parameters as necessary.
*/
status_t (*validate_job)(const struct ifc_print_job_st *this_p,
wprint_job_params_t *job_params);
/*
* Start a print job with given params
*/
status_t (*start_job)(const struct ifc_print_job_st *this_p,
const wprint_job_params_t *job_params);
/*
* Sends data to the ip address set on initialization, returning the amount of data
* written or -1 for an error.
*/
int (*send_data)(const struct ifc_print_job_st *this_p, const char *buffer,
size_t bufferLength);
/*
* Returns print job status
*/
status_t (*check_status)(const struct ifc_print_job_st *this_p);
/*
* Ends a print job
*/
status_t (*end_job)(const struct ifc_print_job_st *this_p);
/*
* Destroys a print job handle
*/
void (*destroy)(const struct ifc_print_job_st *this_p);
/*
* Enable a timeout for a print job
*/
void (*enable_timeout)(const struct ifc_print_job_st *this_p,
int enable);
} ifc_print_job_t;
/*
* Connect to a printer with a given protocol. Returns a job handle.
*/
const ifc_print_job_t *printer_connect(int port_num);
/*
* Opens a socket to printer:port and returns it.
*/
int wConnect(const char *printer_addr, int port_num, long int timeout_msec);
#endif // __IFC_PRINT_JOB_H__