[BACK]Return to ss_mustek.h CVS log [TXT][DIR] Up to [local] / sys / scsi

Annotation of sys/scsi/ss_mustek.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: ss_mustek.h,v 1.7 2006/05/11 00:45:59 krw Exp $       */
        !             2: /*     $NetBSD: ss_mustek.h,v 1.2 1996/03/19 03:08:37 mycroft Exp $    */
        !             3:
        !             4: /*
        !             5:  * Copyright (c) 1995 Joachim Koenig-Baltes.  All rights reserved.
        !             6:  *
        !             7:  * Redistribution and use in source and binary forms, with or without
        !             8:  * modification, are permitted provided that the following conditions
        !             9:  * are met:
        !            10:  * 1. Redistributions of source code must retain the above copyright
        !            11:  *    notice, this list of conditions and the following disclaimer.
        !            12:  * 2. Redistributions in binary form must reproduce the above copyright
        !            13:  *    notice, this list of conditions and the following disclaimer in the
        !            14:  *    documentation and/or other materials provided with the distribution.
        !            15:  * 3. All advertising materials mentioning features or use of this software
        !            16:  *    must display the following acknowledgement:
        !            17:  *     This product includes software developed by Joachim Koenig-Baltes.
        !            18:  * 4. The name of the author may not be used to endorse or promote products
        !            19:  *    derived from this software without specific prior written permission.
        !            20:  *
        !            21:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            22:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            23:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            24:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            25:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            26:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            27:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        !            28:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        !            29:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
        !            30:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            31:  */
        !            32:
        !            33: #ifndef        _SS_MUSTEK_H_
        !            34: #define _SS_MUSTEK_H_ 1
        !            35:
        !            36: /*
        !            37:  * support for MUSTEK flatbed SCSI scanners MFS-06000CX and MFS-12000CX
        !            38:  * (600 and 1200 dpi horizontally resp), not conforming to the SCSI2 spec.
        !            39:  */
        !            40:
        !            41: /*
        !            42:  * Configuration section: describes the mode in which scanner is driven
        !            43:  * MUSTEK_INCH_SPEC: frame/window sizes are given in inches instead of
        !            44:  *     pixels, note: unit is 1/8th of an inch
        !            45:  * MUSTEK_WINDOWS: number of windows in a frame, up to 4 allowed,
        !            46:  *     not used yet, so set to 0
        !            47:  */
        !            48: #define MUSTEK_INCH_SPEC               /* use inches to specify sizes */
        !            49: #define MUSTEK_WINDOWS         0       /* no window support yet */
        !            50:
        !            51: /* mustek scsi commands */
        !            52: #define MUSTEK_SET_WINDOW      0x04    /* set image area and windows */
        !            53: #define MUSTEK_READ            0x08    /* read command */
        !            54: #define MUSTEK_GET_STATUS      0x0f    /* image status */
        !            55: #define MUSTEK_MODE_SELECT     0x15    /* set resolution, paper length, .. */
        !            56: #define MUSTEK_ADF             0x10    /* ADF and backtracking selection */
        !            57: #define MUSTEK_START_STOP      0x1b    /* start/stop scan */
        !            58: #define MUSTEK_LUT             0x55    /* look up table download */
        !            59:
        !            60: /* the size spec is at the same bit position in different commands */
        !            61: #define        MUSTEK_UNIT_INCHES              0x00
        !            62: #define MUSTEK_UNIT_PIXELS             0x08
        !            63: #ifdef MUSTEK_INCH_SPEC
        !            64: #define MUSTEK_UNIT_SPEC       MUSTEK_UNIT_INCHES
        !            65: #else
        !            66: #define MUSTEK_UNIT_SPEC       MUSTEK_UNIT_PIXELS
        !            67: #endif
        !            68:
        !            69: /*
        !            70:  * SCSI command formats
        !            71:  */
        !            72:
        !            73: struct mustek_set_window_cmd {
        !            74:        u_int8_t opcode;                /* 0x04 */
        !            75:        u_int8_t reserved[3];
        !            76:        u_int8_t length;                /* in bytes */
        !            77:        u_int8_t control;
        !            78: };
        !            79:
        !            80: struct mustek_window {
        !            81:        u_int8_t header;                /* unit-defines also apply */
        !            82:        u_int8_t tl_x[2];               /* LSB */
        !            83:        u_int8_t tl_y[2];
        !            84:        u_int8_t br_x[2];
        !            85:        u_int8_t br_y[2];
        !            86: };
        !            87:
        !            88: struct mustek_set_window_data {
        !            89: #define MUSTEK_LINEART_BACKGROUND      0x00
        !            90: #define MUSTEK_HALFTONE_BACKGROUND     0x01
        !            91:        struct  mustek_window frame;
        !            92: #if MUSTEK_WINDOWS >= 1
        !            93: #define MUSTEK_WINDOW_MASK     0x80
        !            94:        struct  mustek_window window1;
        !            95: #endif
        !            96: #if MUSTEK_WINDOWS >= 2
        !            97:        struct  mustek_window window2;
        !            98: #endif
        !            99: #if MUSTEK_WINDOWS >= 3
        !           100:        struct  mustek_window window3;
        !           101: #endif
        !           102: #if MUSTEK_WINDOWS >= 4
        !           103:        struct  mustek_window window4;
        !           104: #endif
        !           105: };
        !           106:
        !           107: struct mustek_read_cmd {
        !           108:        u_int8_t opcode;                /* 0x08 */
        !           109:        u_int8_t reserved;
        !           110:        u_int8_t length[3];
        !           111:        u_int8_t control;
        !           112: };
        !           113:
        !           114: struct mustek_get_status_cmd {
        !           115:        u_int8_t opcode;                /* 0x0f */
        !           116:        u_int8_t reserved[3];
        !           117:        u_int8_t length;                /* 0x06 */
        !           118:        u_int8_t control;
        !           119: };
        !           120:
        !           121: struct mustek_get_status_data {
        !           122: #define MUSTEK_READY 0
        !           123: #define MUSTEK_BUSY  -1
        !           124:        u_int8_t ready_busy;            /* 0 = ready */
        !           125:        u_int8_t bytes_per_line[2];     /* LSB */
        !           126:        u_int8_t lines[3];              /* LSB */
        !           127: };
        !           128:
        !           129: struct mustek_mode_select_cmd {
        !           130:        u_int8_t opcode;                /* 0x15 */
        !           131:        u_int8_t reserved[2];
        !           132:        u_int8_t length[2];
        !           133:        u_int8_t control;
        !           134: };
        !           135:
        !           136: /*
        !           137:  * resolution settings:
        !           138:  *   MFS06000CX:
        !           139:  *   1% : 0x01 0x02 ... 0x64
        !           140:  *           3    6 ...  300 dpi
        !           141:  *   10%: 0x1e 0x3c 0x5a 0x14 0x32 0x50 0x0a 0x28 0x46 0x64
        !           142:  *         330  360  390  420  450  480  510  540  570  600 dpi
        !           143:  *   MFS12000CX:
        !           144:  *   1% : 0x01 0x02 ... 0x64
        !           145:  *           6   12 ...  600 dpi
        !           146:  *   10%: 0x1e 0x3c 0x5a 0x14 0x32 0x50 0x0a 0x28 0x46 0x64
        !           147:  *         660  720  780  840  900  960 1020 1080 1140 1200 dpi
        !           148:  */
        !           149: struct mustek_mode_select_data {
        !           150: #define MUSTEK_MODE_MASK               0x83
        !           151: #define MUSTEK_HT_PATTERN_BUILTIN      0x00
        !           152: #define MUSTEK_HT_PATTERN_DOWNLOADED   0x10
        !           153:        u_int8_t mode;
        !           154:        u_int8_t resolution;
        !           155:        u_int8_t brightness;
        !           156:        u_int8_t contrast;
        !           157:        u_int8_t grain;                 /* 0 = 8x8, .....  5 = 2x2  */
        !           158:        u_int8_t velocity;              /* 0 = fast, ...., 4 = slow */
        !           159:        u_int8_t reserved[2];
        !           160:        u_int8_t paperlength[2];        /* LSB */
        !           161: };
        !           162:
        !           163: struct mustek_start_scan_cmd {
        !           164:        u_int8_t opcode;                /* 0x1b */
        !           165:        u_int8_t reserved[3];
        !           166: #define MUSTEK_SCAN_STOP       0x00
        !           167: #define MUSTEK_SCAN_START      0x01
        !           168: #define MUSTEK_GRAY_FILTER     0x00
        !           169: #define MUSTEK_RED_FILTER      0x08
        !           170: #define MUSTEK_GREEN_FILTER    0x10
        !           171: #define MUSTEK_BLUE_FILTER     0x18
        !           172: #define MUSTEK_GRAY_MODE       0x40
        !           173: #define MUSTEK_BIT_MODE                0x00
        !           174: #define MUSTEK_RES_STEP_1      0x00
        !           175: #define MUSTEK_RES_STEP_10     0x80
        !           176:        u_int8_t mode;
        !           177:        u_int8_t control;
        !           178: };
        !           179:
        !           180: #endif /* _SS_MUSTEK_H_ */

CVSweb