diff options
Diffstat (limited to 'backend/snapscan-usb.h')
-rw-r--r-- | backend/snapscan-usb.h | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/backend/snapscan-usb.h b/backend/snapscan-usb.h new file mode 100644 index 0000000..c222d3f --- /dev/null +++ b/backend/snapscan-usb.h @@ -0,0 +1,128 @@ +/* + Snapscan 1212U modifications for the Snapscan SANE backend + + Copyright (C) 2000 Henrik Johansson + + Henrik Johansson (henrikjo@post.urfors.se) + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, + MA 02111-1307, USA. + + As a special exception, the authors of SANE give permission for + additional uses of the libraries contained in this release of SANE. + + The exception is that, if you link a SANE library with other files + to produce an executable, this does not by itself cause the + resulting executable to be covered by the GNU General Public + License. Your use of that executable is in no way restricted on + account of linking the SANE library code into it. + + This exception does not, however, invalidate any other reasons why + the executable file might be covered by the GNU General Public + License. + + If you submit changes to SANE to the maintainers to be included in + a subsequent release, you agree by submitting the changes that + those changes may be distributed with this exception intact. + + If you write modifications of your own for SANE, it is your choice + whether to permit this exception to apply to your modifications. + If you do not wish that, delete this exception notice. + + This file implements USB equivalents to the SCSI routines used by the Snapscan + backend. +*/ + +/* $Id$ + SnapScan backend scan data sources */ + +#ifndef snapscan_usb_h +#define snapscan_usb_h + +typedef SANE_Status (*sense_handler_type)(int fd, u_char *sense_buffer, void *arg); + +static SANE_Status snapscani_usb_cmd(int fd, const void *src, size_t src_size, + void *dst, size_t * dst_size); +static SANE_Status snapscani_usb_open(const char *dev, int *fdp, + sense_handler_type, void*); +static void snapscani_usb_close(int fd); + +/* + * USB status codes + */ +#define GOOD 0x00 +#define CHECK_CONDITION 0x01 +#define CONDITION_GOOD 0x02 +#define BUSY 0x04 +#define INTERMEDIATE_GOOD 0x08 +#define INTERMEDIATE_C_GOOD 0x0a +#define RESERVATION_CONFLICT 0x0c +#define COMMAND_TERMINATED 0x11 +#define QUEUE_FULL 0x14 + +#define STATUS_MASK 0x3e + +/* + * USB transaction status + */ +#define TRANSACTION_COMPLETED 0xfb /* Scanner considers the transaction done */ +#define TRANSACTION_READ 0xf9 /* Scanner has data to deliver */ +#define TRANSACTION_WRITE 0xf8 /* Scanner is expecting more data */ + +/* + * Busy queue data structure and prototypes + */ +struct usb_busy_queue { + int fd; + void *src; + size_t src_size; + struct usb_busy_queue *next; +}; + +static struct usb_busy_queue *bqhead,*bqtail; +static int enqueue_bq(int fd,const void *src, size_t src_size); +static void dequeue_bq(void); +static int is_queueable(const char *src); + +static SANE_Status atomic_usb_cmd(int fd, const void *src, size_t src_size, + void *dst, size_t * dst_size); +static SANE_Status usb_cmd(int fd, const void *src, size_t src_size, + void *dst, size_t * dst_size); + +#endif + +/* + * $Log$ + * Revision 1.6 2003/07/26 17:16:55 oliverschwartz + * Changed licence to GPL + SANE exception for snapscan-usb.[ch] + * + * Revision 1.5 2002/04/10 21:45:53 oliverschwartz + * Removed illegal character / removed declaration of bqelements + * + * Revision 1.10 2001/12/09 23:06:45 oliverschwartz + * - use sense handler for USB if scanner reports CHECK_CONDITION + * + * Revision 1.9 2001/11/16 20:23:16 oliverschwartz + * Merge with sane-1.0.6 + * - Check USB vendor IDs to avoid hanging scanners + * - fix bug in dither matrix computation + * + * Revision 1.8 2001/09/18 15:01:07 oliverschwartz + * - Read scanner id string again after firmware upload + * to indentify correct model + * - Make firmware upload work for AGFA scanners + * - Change copyright notice + * + * */ |