1 /* 2 * Copyright (c) 1995 Kenneth Stailey. All rights reserved. 3 * modified for configurable scanner support by Joachim Koenig 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. All advertising materials mentioning features or use of this software 14 * must display the following acknowledgement: 15 * This product includes software developed by Kenneth Stailey. 16 * 4. The name of the author may not be used to endorse or promote products 17 * derived from this software without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 20 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 21 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 23 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 24 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 */ 30 31 /* 32 * SCSI scanner interface description 33 */ 34 35 #ifndef _SCSI_SCANNER_H_ 36 #define _SCSI_SCANNER_H_ 37 38 /* SCSI scanner commands */ 39 #define GET_IMAGE_STATUS 0x0f 40 #define READ_BIG 0x28 41 #define WRITE_BIG 0x2a 42 #define OBJECT_POSITION 0x31 43 #define GET_BUFFER_STATUS 0x34 44 45 /* generic scanner command formats */ 46 47 struct scsi_rw_scanner { 48 #define READ 0x08 49 #define WRITE 0x0a 50 u_int8_t opcode; 51 u_int8_t byte2; 52 #define SRW_FIXED 0x01 53 u_int8_t len[3]; 54 u_int8_t control; 55 }; 56 57 struct scsi_start_stop { 58 u_int8_t opcode; 59 u_int8_t byte2; 60 u_int8_t unused[2]; 61 u_int8_t how; 62 #define SSS_STOP 0x00 63 #define SSS_START 0x01 64 #define SSS_LOEJ 0x02 65 u_int8_t control; 66 }; 67 68 struct scsi_set_window { 69 #define SET_WINDOW 0x24 /* set params of image area and windows */ 70 #define GET_WINDOW 0x25 71 u_int8_t opcode; 72 u_int8_t byte2; 73 u_int8_t reserved[4]; 74 u_int8_t len[3]; 75 u_int8_t control; 76 }; 77 78 struct scsi_window_header { 79 u_int8_t reserved[6]; 80 u_int8_t len[2]; 81 }; 82 83 struct scsi_window_data { 84 u_int8_t window_id; /* must be zero */ 85 u_int8_t res1:7; 86 u_int8_t auto_bit:1; 87 u_int8_t x_res[2]; 88 u_int8_t y_res[2]; 89 u_int8_t x_org[4]; 90 u_int8_t y_org[4]; 91 u_int8_t width[4]; 92 u_int8_t length[4]; 93 u_int8_t brightness; 94 u_int8_t threshold; 95 u_int8_t contrast; 96 u_int8_t image_comp; /* image composition (data type) */ 97 u_int8_t bits_per_pixel; 98 u_int8_t halftone_pattern[2]; 99 u_int8_t rif:1; /* reverse image format (mono negative) */ 100 u_int8_t res2:4; 101 u_int8_t pad_type:3; 102 u_int8_t bit_ordering[2]; 103 u_int8_t compression_type; 104 u_int8_t compression_arg; 105 u_int8_t res3[6]; 106 }; 107 108 /* mustek scsi commands */ 109 110 #define MUSTEK_SET_WINDOW 0x04 /* set image area and windows */ 111 #define MUSTEK_ADF 0x10 /* ADF and backtracking selection */ 112 #define MUSTEK_LUT 0x55 /* look up table download */ 113 114 #endif /* _SCSI_SCANNER_H_ */ 115