[BACK]Return to README.ss CVS log [TXT][DIR] Up to [local] / sys / scsi

Annotation of sys/scsi/README.ss, Revision 1.1

1.1     ! nbrk        1: $OpenBSD: README.ss,v 1.6 1997/03/11 15:46:01 kstailey Exp $
        !             2:
        !             3: If you think SCSI tape drives are quirky you haven't seen anything.
        !             4:
        !             5: There are many SCSI scanners that don't use the SCSI Scanner protocol with
        !             6: CDB's like SET_WINDOW.  Instead they send Esc-code sequences over the SCSI
        !             7: bus using the READ and WRITE operations.  True brain death at its finest.
        !             8: The HP ScanJet, the Sharp JX-600S and the Epson ES-300C are among these.
        !             9:
        !            10: Ricoh, UMAX, Mustek, Fujitsu, Microtek on the other hand all try to use the
        !            11: SCSI scanner protocol, but scanning, unlike reading a block from a disk, is
        !            12: a multi-step operation.  Certain steps must be performed in sequence and
        !            13: the protocol does not define this.  In addition vendors are permitted by
        !            14: the SCSI spec. to have unique additional features that the spec. does not
        !            15: fully define.  Last but not least vendors make mistakes in implementing the
        !            16: spec.
        !            17:
        !            18: My SCSI scanner driver architecture is designed to support scanners
        !            19: two ways.
        !            20:
        !            21: The first way is used if a scanner uses CDB's like SET_WINDOW. The driver
        !            22: code should be in ss.c and quirk tables and sequence strings etc. can
        !            23: battle it out.  This part is not fully implemented yet.  Work is being done
        !            24: on it from time to time.
        !            25:
        !            26: The other way is used when the driver is used with an Esc-code-over-SCSI
        !            27: case like a ScanJet it installs an "operations switch" so that parts of the
        !            28: code in ss.c can be bypassed.  This feature is implemented for ScanJets.
        !            29: Currently some Mustek scanners use this approach, as the Mustek scanners
        !            30: use MODE_SELECT and not SET_WINDOW to send parameter data.  However it is
        !            31: possible that too much code was farmed out to ss_mustek.c; it may be that
        !            32: common code for ssread() in ss.c could be used.
        !            33:
        !            34: Other Considerations
        !            35:
        !            36: SCSI disconnect is missing from many scanners.  Sucks huh?  A slow
        !            37: peripheral that also monopolizes the bus.  This means that if your
        !            38: scanner does not support disconnect you need a second SCSI controller
        !            39: for it since access of the controller by any other devices will be
        !            40: locked out while you are scanning.  Scanners that do this include
        !            41: MUSTEK flatbed scanners MFS 06000CX and MFS 12000CX, UMAX UC-630 &
        !            42: UG-630.  Over time, as multi-tasking becomes more important to
        !            43: commoners^H^H^H^H^H^H^H^H^HWindoze users, scanner vendors often supply
        !            44: new ROMs that can do disconnect.
        !            45:
        !            46: The image data from the scanner driver is currently supposed to resemble
        !            47: headerless PBM "rawbits".  Depending on this is probably a bad idea
        !            48: especially because it cannot always be attained.  The Fujutisu M3096G
        !            49: grayscale data is photo-negative with repect to PBM and this cannot be
        !            50: changed.  It would be better to extend the ioctl() interface to be able
        !            51: to describe the kind of data that is available.
        !            52:
        !            53: Halftone control of scanners is missing, save for one pre-defined
        !            54: selection.  This also should be in the ioctl() interface.
        !            55:
        !            56: Basic workflow for scanning
        !            57:
        !            58: 1. Open driver.
        !            59: 2. ioctl to get parameters (this fills in default values and generally makes
        !            60:    step 3 easier.)
        !            61: 3. Modify parameters.
        !            62: 4. ioctl to set parameters.
        !            63: 5. ioctl to get data size (same as step 2, but values will be different if
        !            64:    the image size, resolution, or image data type was set.)
        !            65: 6. Read data based on size from scanner retrieved in step 5 (the driver
        !            66:    delivers an EOF if you overread.)
        !            67: 7. Close driver (or use ioctl to reset it so you can scan again.)

CVSweb