kopia lustrzana https://gitlab.com/sane-project/backends
add new hs2p backend for ricoh is450 series scanners
rodzic
3f857c4c82
commit
dc61dc4471
1
AUTHORS
1
AUTHORS
|
@ -48,6 +48,7 @@ Backends:
|
|||
Frank Zago, Henning Geinitz (*)
|
||||
hp5400: Martijn van Oosterhout, Thomas Soumarmon (*)
|
||||
hp5590: Ilia Sotnikov (*)
|
||||
hs2p: Jeremy Johnson
|
||||
ibm: M.F., Henning Geinitz (*)
|
||||
leo: Frank Zago (*)
|
||||
lexmark: Fred Odendaal (*)
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2008-01-02 m. allan noah <kitno455 a t gmail d o t com>
|
||||
* AUTHORS, configure, configure.in, backend/Makefile.in,
|
||||
backend/dll.conf.in, backend/hs2p-saneopts.h,
|
||||
backend/hs2p-scsi.c, backend/hs2p-scsi.h, backend/hs2p.c
|
||||
backend/hs2p.conf.in, backend/hs2p.h doc/Makefile.in,
|
||||
doc/sane-hs2p.man, doc/sane.man, doc/descriptions/hs2p.desc:
|
||||
add hs2p backend for jazz_johnson a t verizon d o t net
|
||||
|
||||
2007-12-29 m. allan noah <kitno455 a t gmail d o t com>
|
||||
* backend/epjitsu.c: let io_error fall thru usb command function
|
||||
* backend/epjitsu.conf.in: use @DATADIR@ for holding firmware
|
||||
|
|
|
@ -124,6 +124,7 @@ DISTFILES = abaton.c abaton.conf.in abaton.h agfafocus.c agfafocus.conf.in \
|
|||
hp5400.c hp5400.h hp5400.conf.in hp5400_debug.c hp5400_debug.h \
|
||||
hp5400_internal.c hp5400_internal.h hp5400_xfer.h \
|
||||
hp5400_sane.c hp5400_sanei.c hp5400_sanei.h \
|
||||
hs2p.c hs2p.conf.in hs2p-scsi.c hs2p.h hs2p-scsi.h hs2p-saneopts.h \
|
||||
ibm.c ibm.conf.in ibm.h ibm-scsi.c \
|
||||
leo.c leo.h leo.conf.in \
|
||||
lexmark.c lexmark_low.c lexmark_sensors.c lexmark_devices.c lexmark.h \
|
||||
|
@ -420,6 +421,9 @@ libsane-hp4200.la: ../sanei/sanei_usb.lo
|
|||
libsane-hp4200.la: ../sanei/sanei_pv8630.lo
|
||||
libsane-hp5400.la: ../sanei/sanei_usb.lo
|
||||
libsane-hp5590.la: ../sanei/sanei_usb.lo
|
||||
libsane-hs2p.la: ../sanei/sanei_scsi.lo
|
||||
libsane-hs2p.la: ../sanei/sanei_config2.lo
|
||||
libsane-hs2p.la: ../sanei/sanei_constrain_value.lo
|
||||
libsane-ibm.la: ../sanei/sanei_scsi.lo
|
||||
libsane-ibm.la: ../sanei/sanei_config2.lo
|
||||
libsane-ibm.la: ../sanei/sanei_constrain_value.lo
|
||||
|
|
|
@ -33,6 +33,7 @@ hp3500
|
|||
hp4200
|
||||
hp5400
|
||||
hp5590
|
||||
hs2p
|
||||
ibm
|
||||
leo
|
||||
lexmark
|
||||
|
|
|
@ -0,0 +1,336 @@
|
|||
/* sane - Scanner Access Now Easy.
|
||||
Copyright (C) 2007 Jeremy Johnson
|
||||
This file is part of a SANE backend for Ricoh IS450
|
||||
and IS420 family of HS2P Scanners using the SCSI controller.
|
||||
|
||||
This file is part of the SANE package.
|
||||
|
||||
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. */
|
||||
|
||||
|
||||
#define SANE_NAME_INQUIRY "inquiry"
|
||||
#define SANE_TITLE_INQUIRY "Inquiry Data"
|
||||
#define SANE_DESC_INQUIRY "Displays scanner inquiry data"
|
||||
|
||||
#define SANE_TITLE_SCAN_MODE_GROUP "Scan Mode"
|
||||
#define SANE_TITLE_GEOMETRY_GROUP "Geometry"
|
||||
#define SANE_TITLE_FEEDER_GROUP "Feeder"
|
||||
|
||||
#define SANE_TITLE_ENHANCEMENT_GROUP "Enhancement"
|
||||
#define SANE_TITLE_ICON_GROUP "Icon"
|
||||
#define SANE_TITLE_BARCODE_GROUP "Barcode"
|
||||
|
||||
#define SANE_TITLE_MISCELLANEOUS_GROUP "Miscellaneous"
|
||||
|
||||
#define SANE_NAME_AUTOBORDER "autoborder"
|
||||
#define SANE_TITLE_AUTOBORDER "Autoborder"
|
||||
#define SANE_DESC_AUTOBORDER "Enable Automatic Border Detection"
|
||||
|
||||
#define SANE_NAME_COMPRESSION "compression"
|
||||
#define SANE_TITLE_COMPRESSION "Data Compression"
|
||||
#define SANE_DESC_COMPRESSION "Sets the compression mode of the scanner"
|
||||
|
||||
#define SANE_NAME_ROTATION "rotation"
|
||||
#define SANE_TITLE_ROTATION "Page Rotation"
|
||||
#define SANE_DESC_ROTATION "Sets the page rotation mode of the scanner"
|
||||
|
||||
#define SANE_NAME_DESKEW "deskew"
|
||||
#define SANE_TITLE_DESKEW "Page Deskew"
|
||||
#define SANE_DESC_DESKEW "Enable Deskew Mode"
|
||||
|
||||
#define SANE_NAME_TIMEOUT_ADF "timeout-adf"
|
||||
#define SANE_TITLE_TIMEOUT_ADF "ADF Timeout"
|
||||
#define SANE_DESC_TIMEOUT_ADF "Sets the timeout in seconds for the ADF"
|
||||
|
||||
#define SANE_NAME_TIMEOUT_MANUAL "timeout-manual"
|
||||
#define SANE_TITLE_TIMEOUT_MANUAL "Manual Timeout"
|
||||
#define SANE_DESC_TIMEOUT_MANUAL "Sets the timeout in seconds for manual feeder"
|
||||
|
||||
#define SANE_NAME_BATCH "batch"
|
||||
#define SANE_TITLE_BATCH "Batch"
|
||||
#define SANE_DESC_BATCH "Enable Batch Mode"
|
||||
|
||||
#define SANE_NAME_CHECK_ADF "check-adf"
|
||||
#define SANE_TITLE_CHECK_ADF "Check ADF"
|
||||
#define SANE_DESC_CHECK_ADF "Check ADF Status prior to starting scan"
|
||||
|
||||
#define SANE_NAME_PREFEED "prefeed"
|
||||
#define SANE_TITLE_PREFEED "Prefeed"
|
||||
#define SANE_DESC_PREFEED "Prefeed"
|
||||
|
||||
#define SANE_NAME_DUPLEX "duplex"
|
||||
#define SANE_TITLE_DUPLEX "Duplex"
|
||||
#define SANE_DESC_DUPLEX "Enable Duplex (Dual-Sided) Scanning"
|
||||
|
||||
#define SANE_NAME_ENDORSER "endorser"
|
||||
#define SANE_TITLE_ENDORSER "Endorser"
|
||||
#define SANE_DESC_ENDORSER "Print up to 19 character string on each sheet"
|
||||
|
||||
#define SANE_NAME_ENDORSER_STRING "endorser-string"
|
||||
#define SANE_TITLE_ENDORSER_STRING "Endorser String"
|
||||
#define SANE_DESC_ENDORSER_STRING "valid characters: [0-9][ :#`'-./][A-Z][a-z]"
|
||||
|
||||
#define SANE_NAME_BARCODE_SEARCH_COUNT "barcode-search-count"
|
||||
#define SANE_TITLE_BARCODE_SEARCH_COUNT "Barcode Search Count"
|
||||
#define SANE_DESC_BARCODE_SEARCH_COUNT "Number of barcodes to search for in the scanned image"
|
||||
|
||||
#define SANE_NAME_BARCODE_HMIN "barcode-hmin"
|
||||
#define SANE_TITLE_BARCODE_HMIN "Barcode Minimum Height"
|
||||
#define SANE_DESC_BARCODE_HMIN "Sets the Barcode Minimun Height (larger values increase recognition speed)"
|
||||
|
||||
#define SANE_NAME_BARCODE_SEARCH_MODE "barcode-search-mode"
|
||||
#define SANE_TITLE_BARCODE_SEARCH_MODE "Barcode Search Mode"
|
||||
#define SANE_DESC_BARCODE_SEARCH_MODE "Chooses the orientation of barcodes to be searched"
|
||||
|
||||
#define SANE_NAME_BARCODE_SEARCH_TIMEOUT "barcode-search-timeout"
|
||||
#define SANE_TITLE_BARCODE_SEARCH_TIMEOUT "Barcode Search Timeout"
|
||||
#define SANE_DESC_BARCODE_SEARCH_TIMEOUT "Sets the timeout for barcode searching"
|
||||
|
||||
#define SANE_NAME_BARCODE_SEARCH_BAR "barcode-search-bar"
|
||||
#define SANE_TITLE_BARCODE_SEARCH_BAR "Barcode Search Bar"
|
||||
#define SANE_DESC_BARCODE_SEARCH_BAR "Specifies the barcode type to search for"
|
||||
|
||||
#define SANE_NAME_SECTION "section"
|
||||
#define SANE_TITLE_SECTION "Image/Barcode Search Sections"
|
||||
#define SANE_DESC_SECTION "Specifies an image section and/or a barcode search region"
|
||||
|
||||
#define SANE_NAME_BARCODE_RELMAX "barcode-relmax"
|
||||
#define SANE_TITLE_BARCODE_RELMAX "Barcode RelMax"
|
||||
#define SANE_DESC_BARCODE_RELMAX "Specifies the maximum relation from the widest to the smallest bar"
|
||||
|
||||
#define SANE_NAME_BARCODE_BARMIN "barcode-barmin"
|
||||
#define SANE_TITLE_BARCODE_BARMIN "Barcode Bar Minimum"
|
||||
#define SANE_DESC_BARCODE_BARMIN "Specifies the minimum number of bars in Bar/Patch code"
|
||||
|
||||
#define SANE_NAME_BARCODE_BARMAX "barcode-barmax"
|
||||
#define SANE_TITLE_BARCODE_BARMAX "Barcode Bar Maximum"
|
||||
#define SANE_DESC_BARCODE_BARMAX "Specifies the maximum number of bars in a Bar/Patch code"
|
||||
|
||||
#define SANE_NAME_BARCODE_CONTRAST "barcode-contrast"
|
||||
#define SANE_TITLE_BARCODE_CONTRAST "Barcode Contrast"
|
||||
#define SANE_DESC_BARCODE_CONTRAST "Specifies the image contrast used in decoding. Use higher values when " \
|
||||
"there are more white pixels in the code"
|
||||
|
||||
#define SANE_NAME_BARCODE_PATCHMODE "barcode-patchmode"
|
||||
#define SANE_TITLE_BARCODE_PATCHMODE "Barcode Patch Mode"
|
||||
#define SANE_DESC_BARCODE_PATCHMODE "Controls Patch Code detection."
|
||||
|
||||
#define SANE_NAME_SCAN_WAIT_MODE "scan-wait-mode"
|
||||
#define SANE_TITLE_SCAN_WAIT_MODE "Scan Wait Mode "
|
||||
#define SANE_DESC_SCAN_WAIT_MODE "Enables the scanner's start button"
|
||||
|
||||
#define SANE_NAME_ACE_FUNCTION "ace-function"
|
||||
#define SANE_TITLE_ACE_FUNCTION "ACE Function"
|
||||
#define SANE_DESC_ACE_FUNCTION "ACE Function"
|
||||
|
||||
#define SANE_NAME_ACE_SENSITIVITY "ace-sensitivity"
|
||||
#define SANE_TITLE_ACE_SENSITIVITY "ACE Sensitivity"
|
||||
#define SANE_DESC_ACE_SENSITIVITY "ACE Sensitivity"
|
||||
|
||||
#define SANE_NAME_ICON_WIDTH "icon-width"
|
||||
#define SANE_TITLE_ICON_WIDTH "Icon Width"
|
||||
#define SANE_DESC_ICON_WIDTH "Width of icon (thumbnail) image in pixels"
|
||||
|
||||
#define SANE_NAME_ICON_LENGTH "icon-length"
|
||||
#define SANE_TITLE_ICON_LENGTH "Icon Length"
|
||||
#define SANE_DESC_ICON_LENGTH "Length of icon (thumbnail) image in pixels"
|
||||
|
||||
#define SANE_NAME_PAPER_SIZE "paper-size"
|
||||
#define SANE_TITLE_PAPER_SIZE "Paper Size"
|
||||
#define SANE_DESC_PAPER_SIZE "Specify the scan window geometry by specifying the paper size " \
|
||||
"of the documents to be scanned"
|
||||
|
||||
#define SANE_NAME_PADDING "padding"
|
||||
#define SANE_TITLE_PADDING "Padding"
|
||||
#define SANE_DESC_PADDING "Pad if media length is less than requested"
|
||||
|
||||
#define SANE_NAME_AUTO_SIZE "auto-size"
|
||||
#define SANE_TITLE_AUTO_SIZE "Auto Size"
|
||||
#define SANE_DESC_AUTO_SIZE "Automatic Paper Size Determination"
|
||||
|
||||
#define SANE_NAME_BINARYFILTER "binary-filter"
|
||||
#define SANE_TITLE_BINARYFILTER "Binary Filter"
|
||||
#define SANE_DESC_BINARYFILTER "Binary Filter"
|
||||
|
||||
#define SANE_NAME_SMOOTHING "smoothing"
|
||||
#define SANE_TITLE_SMOOTHING "Smoothing"
|
||||
#define SANE_DESC_SMOOTHING "Binary Smoothing Filter"
|
||||
|
||||
#define SANE_NAME_NOISEREMOVAL "noise-removal"
|
||||
#define SANE_TITLE_NOISEREMOVAL "Noise Removal"
|
||||
#define SANE_DESC_NOISEREMOVAL "Binary Noise Removal Filter"
|
||||
|
||||
#define SANE_NAME_NOISEMATRIX "noise-removal-matrix"
|
||||
#define SANE_TITLE_NOISEMATRIX "Noise Removal Matrix"
|
||||
#define SANE_DESC_NOISEMATRIX "Noise Removal Matrix"
|
||||
|
||||
#define SANE_NAME_GRAYFILTER "gray-filter"
|
||||
#define SANE_TITLE_GRAYFILTER "Gray Filter"
|
||||
#define SANE_DESC_GRAYFILTER "Gray Filter"
|
||||
|
||||
#define SANE_NAME_HALFTONE_CODE "halftone-type"
|
||||
#define SANE_TITLE_HALFTONE_CODE "Halftone Type"
|
||||
#define SANE_DESC_HALFTONE_CODE "Dither or Error Diffusion"
|
||||
|
||||
/*
|
||||
#define SANE_NAME_HALFTONE_PATTERN "pattern"
|
||||
#define SANE_TITLE_HALFTONE_PATTERN "Pattern"
|
||||
#define SANE_DESC_HALFTONE_PATTERN "10 built-in halftone patterns + 2 user patterns"
|
||||
*/
|
||||
|
||||
#define SANE_NAME_ERRORDIFFUSION "error-diffusion"
|
||||
#define SANE_TITLE_ERRORDIFFUSION "Error Diffusion"
|
||||
#define SANE_DESC_ERRORDIFFUSION "Useful for documents with both text and images"
|
||||
|
||||
/*
|
||||
#define SANE_NAME_HALFTONE "halftone"
|
||||
#define SANE_TITLE_HALFTONE "Halftone"
|
||||
#define SANE_DESC_HALFTONE "Choose a dither pattern or error diffusion"
|
||||
|
||||
#define SANE_NAME_NEGATIVE "negative image"
|
||||
#define SANE_TITLE_NEGATIVE "Negative Image"
|
||||
#define SANE_DESC_NEGATIVE "Reverse Image Format"
|
||||
|
||||
#define SANE_NAME_BRIGHTNESS "brightness"
|
||||
#define SANE_TITLE_BRIGHTNESS "Brightness"
|
||||
#define SANE_DESC_BRIGHTNESS "Brightness"
|
||||
|
||||
#define SANE_NAME_THRESHOLD "threshold"
|
||||
#define SANE_TITLE_THRESHOLD "Threshold"
|
||||
#define SANE_DESC_THRESHOLD "Threshold"
|
||||
*/
|
||||
|
||||
#define SANE_NAME_GAMMA "gamma"
|
||||
#define SANE_TITLE_GAMMA "Gamma"
|
||||
#define SANE_DESC_GAMMA "Gamma Correction"
|
||||
|
||||
#define SANE_NAME_AUTOSEP "auto-separation"
|
||||
#define SANE_TITLE_AUTOSEP "Automatic Separation"
|
||||
#define SANE_DESC_AUTOSEP "Automatic Separation"
|
||||
|
||||
#define SANE_NAME_AUTOBIN "auto-binarization"
|
||||
#define SANE_TITLE_AUTOBIN "Automatic Binarization"
|
||||
#define SANE_DESC_AUTOBIN "Automatic Binarization"
|
||||
|
||||
#define SANE_NAME_WHITE_BALANCE "white-balance"
|
||||
#define SANE_TITLE_WHITE_BALANCE "White Balance"
|
||||
#define SANE_DESC_WHITE_BALANCE "White Balance"
|
||||
|
||||
#define SANE_NAME_PADDING_TYPE "padding-type"
|
||||
#define SANE_TITLE_PADDING_TYPE "Padding Type"
|
||||
#define SANE_DESC_PADDING_TYPE "Padding Type"
|
||||
|
||||
#define SANE_NAME_BITORDER "bit-order"
|
||||
#define SANE_TITLE_BITORDER "Bit Order"
|
||||
#define SANE_DESC_BITORDER "Bit Order"
|
||||
|
||||
#define SANE_NAME_SELF_DIAGNOSTICS "self-diagnostics"
|
||||
#define SANE_TITLE_SELF_DIAGNOSTICS "Self Diagnostics"
|
||||
#define SANE_DESC_SELF_DIAGNOSTICS "Self Diagnostics"
|
||||
|
||||
#define SANE_NAME_OPTICAL_ADJUSTMENT "optical-adjustment"
|
||||
#define SANE_TITLE_OPTICAL_ADJUSTMENT "Optical Adjustment"
|
||||
#define SANE_DESC_OPTICAL_ADJUSTMENT "Optical Adjustment"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
OPT_NUM_OPTS = 0,
|
||||
|
||||
OPT_MODE_GROUP,
|
||||
OPT_INQUIRY, /* inquiry string */
|
||||
OPT_PREVIEW,
|
||||
OPT_SCAN_MODE, /* scan mode */
|
||||
OPT_RESOLUTION,
|
||||
OPT_X_RESOLUTION,
|
||||
OPT_Y_RESOLUTION,
|
||||
OPT_COMPRESSION, /* hardware compression */
|
||||
|
||||
OPT_GEOMETRY_GROUP,
|
||||
/*OPT_AUTOBORDER, automatic border detection */
|
||||
/*OPT_ROTATION, hardware rotation */
|
||||
/*OPT_DESKEW, hardware deskew */
|
||||
OPT_PAPER_SIZE, /* paper size */
|
||||
OPT_TL_X, /* top-left x */
|
||||
OPT_TL_Y, /* top-left y */
|
||||
OPT_BR_X, /* bottom-right x */
|
||||
OPT_BR_Y, /* bottom-right y */
|
||||
OPT_PADDING, /* Pad to requested length */
|
||||
OPT_AUTO_SIZE, /* Automatic Size Recognition */
|
||||
|
||||
OPT_FEEDER_GROUP,
|
||||
OPT_SCAN_SOURCE, /* scan source (eg. Flatbed, ADF) */
|
||||
OPT_DUPLEX, /* scan both sides of the page */
|
||||
OPT_SCAN_WAIT_MODE, /* Enables the scanner's Start Button */
|
||||
OPT_PREFEED,
|
||||
OPT_ENDORSER, /* Endorser (off,on) */
|
||||
OPT_ENDORSER_STRING, /* Endorser String */
|
||||
/*OPT_BATCH, scan in batch mode */
|
||||
/*OPT_TIMEOUT_MANUAL, timeout in seconds with manual feed */
|
||||
/*OPT_TIMEOUT_ADF, timeout in seconds with ADF */
|
||||
/*OPT_CHECK_ADF, check for page in ADF before scanning */
|
||||
|
||||
OPT_ENHANCEMENT_GROUP,
|
||||
/* OPT_ACE_FUNCTION,
|
||||
OPT_ACE_SENSITIVITY, */
|
||||
OPT_BRIGHTNESS, /* Brightness */
|
||||
OPT_THRESHOLD, /* Threshold */
|
||||
OPT_CONTRAST, /* Contrast */
|
||||
OPT_NEGATIVE, /* Negative (reverse image) */
|
||||
OPT_GAMMA, /* Gamma Correction */
|
||||
OPT_CUSTOM_GAMMA,
|
||||
OPT_GAMMA_VECTOR_GRAY,
|
||||
OPT_HALFTONE_CODE, /* Halftone Code */
|
||||
OPT_HALFTONE_PATTERN, /* Halftone Pattern */
|
||||
OPT_GRAYFILTER, /* MRIF */
|
||||
OPT_SMOOTHING, /* Smoothing */
|
||||
OPT_NOISEREMOVAL, /* Noise Removal */
|
||||
OPT_AUTOSEP, /* Auto Separation */
|
||||
OPT_AUTOBIN, /* Auto Binarization */
|
||||
OPT_WHITE_BALANCE,
|
||||
|
||||
OPT_MISCELLANEOUS_GROUP,
|
||||
OPT_PADDING_TYPE,
|
||||
/*OPT_BITORDER, */
|
||||
OPT_SELF_DIAGNOSTICS,
|
||||
OPT_OPTICAL_ADJUSTMENT,
|
||||
/*
|
||||
OPT_PARITION_FUNCTION
|
||||
OPT_SECTION
|
||||
*/
|
||||
|
||||
NUM_OPTIONS /* must come last: */
|
||||
} HS2P_Option;
|
Plik diff jest za duży
Load Diff
Plik diff jest za duży
Load Diff
Plik diff jest za duży
Load Diff
|
@ -0,0 +1,2 @@
|
|||
scsi RICOH
|
||||
/dev/scanner
|
|
@ -0,0 +1,465 @@
|
|||
/* sane - Scanner Access Now Easy.
|
||||
Copyright (C) 2007 Jeremy Johnson
|
||||
This file is part of a SANE backend for Ricoh IS450
|
||||
and IS420 family of HS2P Scanners using the SCSI controller.
|
||||
|
||||
This file is part of the SANE package.
|
||||
|
||||
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. */
|
||||
|
||||
#ifndef HS2P_H
|
||||
#define HS2P_H 1
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sane/config.h>
|
||||
|
||||
#include "hs2p-scsi.h"
|
||||
#include "hs2p-saneopts.h"
|
||||
|
||||
#define HS2P_CONFIG_FILE "hs2p.conf"
|
||||
|
||||
#define DBG_error0 0
|
||||
#define DBG_error 1
|
||||
#define DBG_sense 2
|
||||
#define DBG_warning 3
|
||||
#define DBG_inquiry 4
|
||||
#define DBG_info 5
|
||||
#define DBG_info2 6
|
||||
#define DBG_proc 7
|
||||
#define DBG_read 8
|
||||
#define DBG_sane_init 10
|
||||
#define DBG_sane_proc 11
|
||||
#define DBG_sane_info 12
|
||||
#define DBG_sane_option 13
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *mfg;
|
||||
const char *model;
|
||||
} HS2P_HWEntry;
|
||||
|
||||
enum media
|
||||
{ FLATBED = 0x00, SIMPLEX, DUPLEX };
|
||||
typedef struct
|
||||
{
|
||||
SANE_Range xres_range;
|
||||
SANE_Range yres_range;
|
||||
SANE_Range x_range;
|
||||
SANE_Range y_range;
|
||||
|
||||
SANE_Int window_width;
|
||||
SANE_Int window_height;
|
||||
|
||||
SANE_Range brightness_range;
|
||||
SANE_Range contrast_range;
|
||||
SANE_Range threshold_range;
|
||||
|
||||
char inquiry_data[256];
|
||||
|
||||
SANE_Byte max_win_sections; /* Number of supported window subsections
|
||||
IS450 supports max of 4 sections
|
||||
IS420 supports max of 6 sections
|
||||
*/
|
||||
|
||||
/* Defaults */
|
||||
SANE_Int default_res;
|
||||
SANE_Int default_xres;
|
||||
SANE_Int default_yres;
|
||||
SANE_Int default_imagecomposition; /* [lineart], halftone, grayscale, color */
|
||||
SANE_Int default_media; /* [flatbed], simplex, duplex */
|
||||
SANE_Int default_paper_size; /* [letter], legal, ledger, ... */
|
||||
SANE_Int default_brightness;
|
||||
SANE_Int default_contrast;
|
||||
SANE_Int default_gamma; /* Normal, Soft, Sharp, Linear, User */
|
||||
SANE_Bool default_adf;
|
||||
SANE_Bool default_duplex;
|
||||
/*
|
||||
SANE_Bool default_border;
|
||||
SANE_Bool default_batch;
|
||||
SANE_Bool default_deskew;
|
||||
SANE_Bool default_check_adf;
|
||||
SANE_Int default_timeout_adf;
|
||||
SANE_Int default_timeout_manual;
|
||||
SANE_Bool default_control_panel;
|
||||
*/
|
||||
|
||||
/* Mode Page Parameters */
|
||||
MP_CXN cxn; /* hdr + Connection Parameters */
|
||||
|
||||
SANE_Int bmu;
|
||||
SANE_Int mud;
|
||||
SANE_Int white_balance; /* 00H Relative, 01H Absolute; power on default is relative */
|
||||
/* Lamp Timer not supported */
|
||||
SANE_Int adf_control; /* 00H None, 01H Book, 01H Simplex, 02H Duplex */
|
||||
SANE_Int adf_mode_control; /* bit2: prefeed mode invalid: "0" : valid "1" */
|
||||
/* Medium Wait Timer not supported */
|
||||
SANE_Int endorser_control; /* Default Off when power on */
|
||||
SANE_Char endorser_string[20];
|
||||
SANE_Bool scan_wait_mode; /* wait for operator panel start button to be pressed */
|
||||
SANE_Bool service_mode; /* power on default self_diagnostics 00H; 01H optical_adjustment */
|
||||
|
||||
/* standard information: EVPD bit is 0 */
|
||||
SANE_Byte devtype; /* devtype[6]="scanner" */
|
||||
SANE_Char vendor[9]; /* model name 8+1 */
|
||||
SANE_Char product[17]; /* product name 16+1 */
|
||||
SANE_Char revision[5]; /* revision 4+1 */
|
||||
|
||||
/* VPD information: EVPD bit is 1, Page Code=C0H */
|
||||
/* adf_id: 0: No ADF
|
||||
* 1: Single-sided ADF
|
||||
* 2: Double-sided ADF
|
||||
* 3: ARDF (Reverse double-sided ADF)
|
||||
* 4: Reserved
|
||||
*/
|
||||
|
||||
SANE_Bool hasADF; /* If YES; can either be one of Simplex,Duplex,ARDF */
|
||||
SANE_Bool hasSimplex;
|
||||
SANE_Bool hasDuplex;
|
||||
SANE_Bool hasARDF;
|
||||
|
||||
SANE_Bool hasEndorser;
|
||||
|
||||
SANE_Bool hasIPU;
|
||||
SANE_Bool hasXBD;
|
||||
|
||||
/* VPD Image Composition */
|
||||
SANE_Bool supports_lineart;
|
||||
SANE_Bool supports_dithering;
|
||||
SANE_Bool supports_errordiffusion;
|
||||
SANE_Bool supports_color;
|
||||
SANE_Bool supports_4bitgray;
|
||||
SANE_Bool supports_8bitgray;
|
||||
|
||||
/* VPD Image Data Processing ACE (supported for IS420) */
|
||||
SANE_Bool supports_whiteframing;
|
||||
SANE_Bool supports_blackframing;
|
||||
SANE_Bool supports_edgeextraction;
|
||||
SANE_Bool supports_noiseremoval; /* supported for IS450 if IPU installed */
|
||||
SANE_Bool supports_smoothing; /* supported for IS450 if IPU installed */
|
||||
SANE_Bool supports_linebolding;
|
||||
|
||||
/* VPD Compression (not supported for IS450) */
|
||||
SANE_Bool supports_MH;
|
||||
SANE_Bool supports_MR;
|
||||
SANE_Bool supports_MMR;
|
||||
SANE_Bool supports_MHB;
|
||||
|
||||
/* VPD Marker Recognition (not supported for IS450) */
|
||||
SANE_Bool supports_markerrecognition;
|
||||
|
||||
/* VPD Size Recognition (supported for IS450 if IPU installed) */
|
||||
SANE_Bool supports_sizerecognition;
|
||||
|
||||
/* VPD X Maximum Output Pixel: IS450:4960 IS420:4880 */
|
||||
SANE_Int xmaxoutputpixels;
|
||||
|
||||
/* jis information VPD IDENTIFIER Page Code F0H */
|
||||
SANE_Int resBasicX; /* basic X resolution */
|
||||
SANE_Int resBasicY; /* basic Y resolution */
|
||||
SANE_Int resXstep; /* resolution step in main scan direction */
|
||||
SANE_Int resYstep; /* resolution step in sub scan direction */
|
||||
SANE_Int resMaxX; /* maximum X resolution */
|
||||
SANE_Int resMaxY; /* maximum Y resolution */
|
||||
SANE_Int resMinX; /* minimum X resolution */
|
||||
SANE_Int resMinY; /* minimum Y resolution */
|
||||
SANE_Int resStdList[16 + 1]; /* list of available standard resolutions (first slot is the length) */
|
||||
SANE_Int winWidth; /* length of window (in BasicX res DPI) */
|
||||
SANE_Int winHeight; /* height of window (in BasicY res DPI) */
|
||||
/* jis.functions duplicates vpd.imagecomposition lineart/dither/grayscale */
|
||||
SANE_Bool overflow_support;
|
||||
SANE_Bool lineart_support;
|
||||
SANE_Bool dither_support;
|
||||
SANE_Bool grayscale_support;
|
||||
|
||||
} HS2P_Info;
|
||||
|
||||
typedef struct HS2P_Device
|
||||
{
|
||||
struct HS2P_Device *next;
|
||||
SANE_Device sane;
|
||||
HS2P_Info info;
|
||||
} HS2P_Device;
|
||||
|
||||
#define GAMMA_LENGTH 256
|
||||
typedef struct HS2P_Scanner
|
||||
{
|
||||
/* all the state needed to define a scan request: */
|
||||
struct HS2P_Scanner *next; /* linked list for housekeeping */
|
||||
int fd; /* SCSI filedescriptor */
|
||||
|
||||
/* SANE option descriptors and values */
|
||||
SANE_Option_Descriptor opt[NUM_OPTIONS];
|
||||
Option_Value val[NUM_OPTIONS];
|
||||
SANE_Parameters params; /* SANE image parameters */
|
||||
/* additional values that don't fit into Option_Value representation */
|
||||
SANE_Word gamma_table[GAMMA_LENGTH]; /* Custom Gray Gamma Table */
|
||||
|
||||
/* state information - not options */
|
||||
|
||||
/* scanner dependent/low-level state: */
|
||||
HS2P_Device *hw;
|
||||
|
||||
SANE_Int bmu; /* Basic Measurement Unit */
|
||||
SANE_Int mud; /* Measurement Unit Divisor */
|
||||
SANE_Byte image_composition; /* LINEART, HALFTONE, GRAYSCALE */
|
||||
SANE_Byte bpp; /* 1,4,6,or 8 Bits Per Pixel */
|
||||
|
||||
|
||||
u_long InvalidBytes;
|
||||
size_t bytes_to_read;
|
||||
SANE_Bool cancelled;
|
||||
/*SANE_Bool backpage; */
|
||||
SANE_Bool scanning;
|
||||
SANE_Bool another_side;
|
||||
} HS2P_Scanner;
|
||||
|
||||
static const SANE_Range u8_range = {
|
||||
0, /* minimum */
|
||||
255, /* maximum */
|
||||
0 /* quantization */
|
||||
};
|
||||
static const SANE_Range u16_range = {
|
||||
0, /* minimum */
|
||||
65535, /* maximum */
|
||||
0 /* quantization */
|
||||
};
|
||||
|
||||
#define SM_LINEART "Lineart B/W"
|
||||
#define SM_HALFTONE "Halftone"
|
||||
#define SM_DITHER "Dither"
|
||||
#define SM_ERRORDIFFUSION "Error Diffusion"
|
||||
#define SM_COLOR "Color"
|
||||
#define SM_4BITGRAY "4-Bit Gray"
|
||||
#define SM_6BITGRAY "6-Bit Gray"
|
||||
#define SM_8BITGRAY "8-Bit Gray"
|
||||
static SANE_String scan_mode_list[9];
|
||||
enum
|
||||
{ FB, ADF };
|
||||
static SANE_String_Const scan_source_list[] = {
|
||||
"FB", /* Flatbed */
|
||||
"ADF", /* Automatic Document Feeder */
|
||||
NULL
|
||||
};
|
||||
static SANE_String compression_list[6]; /* "none", "g31d MH", "g32d MR", "g42d MMR", "MH byte boundary", NULL} */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
SANE_String name;
|
||||
double width, length; /* paper dimensions in mm */
|
||||
} HS2P_Paper;
|
||||
/* list of support paper sizes */
|
||||
/* 'custom' MUST be item 0; otherwise a width or length of 0 indicates
|
||||
* the maximum value supported by the scanner
|
||||
*/
|
||||
static const HS2P_Paper paper_sizes[] = { /* Name, Width, Height in mm */
|
||||
{"Custom", 0.0, 0.0},
|
||||
{"Letter", 215.9, 279.4},
|
||||
{"Legal", 215.9, 355.6},
|
||||
{"Ledger", 279.4, 431.8},
|
||||
{"A3", 297, 420},
|
||||
{"A4", 210, 297},
|
||||
{"A4R", 297, 210},
|
||||
{"A5", 148.5, 210},
|
||||
{"A5R", 210, 148.5},
|
||||
{"A6", 105, 148.5},
|
||||
{"B4", 250, 353},
|
||||
{"B5", 182, 257},
|
||||
{"Full", 0.0, 0.0},
|
||||
};
|
||||
|
||||
/* MUST be kept in sync with paper_sizes */
|
||||
static SANE_String_Const paper_list[] = {
|
||||
"Custom",
|
||||
"Letter",
|
||||
"Legal",
|
||||
"Ledger",
|
||||
"A3",
|
||||
"A4", "A4R",
|
||||
"A5", "A5R",
|
||||
"A6",
|
||||
"B4",
|
||||
"B5",
|
||||
"Full",
|
||||
NULL /* (not the same as "") sentinel */
|
||||
};
|
||||
|
||||
#if 0
|
||||
static /* inline */ int _is_host_little_endian (void);
|
||||
static /* inline */ int
|
||||
_is_host_little_endian ()
|
||||
{
|
||||
SANE_Int val = 255;
|
||||
unsigned char *firstbyte = (unsigned char *) &val;
|
||||
|
||||
return (*firstbyte == 255) ? SANE_TRUE : SANE_FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
static /* inline */ void
|
||||
_lto2b (u_long val, SANE_Byte * bytes)
|
||||
{
|
||||
bytes[0] = (val >> 8) & 0xff;
|
||||
bytes[1] = val & 0xff;
|
||||
}
|
||||
|
||||
static /* inline */ void
|
||||
_lto3b (u_long val, SANE_Byte * bytes)
|
||||
{
|
||||
bytes[0] = (val >> 16) & 0xff;
|
||||
bytes[1] = (val >> 8) & 0xff;
|
||||
bytes[2] = val & 0xff;
|
||||
}
|
||||
|
||||
static /* inline */ void
|
||||
_lto4b (u_long val, SANE_Byte * bytes)
|
||||
{
|
||||
bytes[0] = (val >> 24) & 0xff;
|
||||
bytes[1] = (val >> 16) & 0xff;
|
||||
bytes[2] = (val >> 8) & 0xff;
|
||||
bytes[3] = val & 0xff;
|
||||
}
|
||||
|
||||
static /* inline */ u_long
|
||||
_2btol (SANE_Byte * bytes)
|
||||
{
|
||||
u_long rv;
|
||||
|
||||
rv = (bytes[0] << 8) | bytes[1];
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
static /* inline */ u_long
|
||||
_4btol (SANE_Byte * bytes)
|
||||
{
|
||||
u_long rv;
|
||||
|
||||
rv = (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3];
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
/*
|
||||
static inline SANE_Int
|
||||
_2btol(SANE_Byte *bytes)
|
||||
{
|
||||
SANE_Int rv;
|
||||
|
||||
rv = (bytes[0] << 8) |
|
||||
bytes[1];
|
||||
return (rv);
|
||||
}
|
||||
*/
|
||||
static inline SANE_Int
|
||||
_3btol (SANE_Byte * bytes)
|
||||
{
|
||||
SANE_Int rv;
|
||||
|
||||
rv = (bytes[0] << 16) | (bytes[1] << 8) | bytes[2];
|
||||
return (rv);
|
||||
}
|
||||
|
||||
/*
|
||||
static inline SANE_Int
|
||||
_4btol(SANE_Byte *bytes)
|
||||
{
|
||||
SANE_Int rv;
|
||||
|
||||
rv = (bytes[0] << 24) |
|
||||
(bytes[1] << 16) |
|
||||
(bytes[2] << 8) |
|
||||
bytes[3];
|
||||
return (rv);
|
||||
}
|
||||
*/
|
||||
enum adf_ret_bytes
|
||||
{ ADF_SELECTION = 2, ADF_MODE_CONTROL, MEDIUM_WAIT_TIMER };
|
||||
|
||||
#define get_paddingtype_id(s) (get_list_index( paddingtype_list, (char *)(s) ))
|
||||
#define get_paddingtype_val(i) (paddingtype[ get_paddingtype_id( (i) ) ].val)
|
||||
#define get_paddingtype_strndx(v) (get_val_id_strndx(&paddingtype[0], NELEMS(paddingtype), (v)))
|
||||
|
||||
#define get_halftone_code_id(s) (get_list_index( halftone_code, (char *)(s) ))
|
||||
#define get_halftone_code_val(i) (halftone[get_halftone_code_id( (i) ) ].val)
|
||||
|
||||
#define get_halftone_pattern_id(s) (get_list_index( halftone_pattern_list, (char *)(s) ))
|
||||
#define get_halftone_pattern_val(i) (halftone[get_halftone_pattern_id( (i) ) ].val)
|
||||
|
||||
#define get_auto_binarization_id(s) (get_list_index( auto_binarization_list, (char *)(s) ))
|
||||
#define get_auto_binarization_val(i) (auto_binarization[ get_auto_binarization_id( (i) ) ].val)
|
||||
|
||||
#define get_auto_separation_id(s) (get_list_index( auto_separation_list, (char *)(s) ))
|
||||
#define get_auto_separation_val(i) (auto_separation[ get_auto_separation_id( (i) ) ].val)
|
||||
|
||||
#define get_noisematrix_id(s) (get_list_index( noisematrix_list, (char *)(s) ))
|
||||
#define get_noisematrix_val(i) (noisematrix[ get_noisematrix_id( (i) ) ].val)
|
||||
|
||||
#define get_grayfilter_id(s) (get_list_index( grayfilter_list, (char *)(s) ))
|
||||
#define get_grayfilter_val(i) (grayfilter[ get_grayfilter_id( (i) ) ].val)
|
||||
|
||||
#define get_paper_id(s) (get_list_index( paper_list, (char *)(s) ))
|
||||
#define get_compression_id(s) (get_list_index( (const char **)compression_list, (char *)(s) ))
|
||||
#define get_scan_source_id(s) (get_list_index( (const char **)scan_source_list, (char *)(s) ))
|
||||
|
||||
#define reserve_unit(fd) (unit_cmd((fd),HS2P_SCSI_RESERVE_UNIT))
|
||||
#define release_unit(fd) (unit_cmd((fd),HS2P_SCSI_RELEASE_UNIT))
|
||||
|
||||
#define GET SANE_TRUE
|
||||
#define SET SANE_FALSE
|
||||
|
||||
#define get_endorser_control(fd,val) (endorser_control( (fd), (val), GET ))
|
||||
#define set_endorser_control(fd,val) (endorser_control( (fd), (val), SET ))
|
||||
|
||||
#define get_connection_parameters(fd,parm) (connection_parameters( (fd), (parm), GET ))
|
||||
#define set_connection_parameters(fd,parm) (connection_parameters( (fd), (parm), SET ))
|
||||
|
||||
#define get_adf_control(fd, a, b, c) (adf_control( (fd), GET, (a), (b), (c) ))
|
||||
#define set_adf_control(fd, a, b, c) (adf_control( (fd), SET, (a), (b), (c) ))
|
||||
|
||||
#define RELATIVE_WHITE 0x00
|
||||
#define ABSOLUTE_WHITE 0x01
|
||||
#define get_white_balance(fd,val) (white_balance( (fd), (val), GET ))
|
||||
#define set_white_balance(fd,val) (white_balance( (fd), (val), SET ))
|
||||
|
||||
#define get_scan_wait_mode(fd) (scan_wait_mode( (fd), 0, GET ))
|
||||
#define set_scan_wait_mode(fd,val) (scan_wait_mode( (fd), (val), SET ))
|
||||
|
||||
#define get_service_mode(fd) (service_mode( (fd), 0, GET ))
|
||||
#define set_service_mode(fd,val) (service_mode( (fd), (val), SET ))
|
||||
|
||||
|
||||
#endif /* HS2P_H */
|
|
@ -27049,7 +27049,7 @@ echo "$as_me: Manually selected backends: ${BACKENDS}" >&6;}
|
|||
microtek2 mustek mustek_usb nec pie pixma plustek \
|
||||
ricoh s9036 sceptre sharp \
|
||||
sp15c st400 tamarack test teco1 teco2 teco3 umax umax_pp umax1220u \
|
||||
artec_eplus48u ma1509 ibm hp5400 u12 snapscan niash sm3840 hp4200 \
|
||||
artec_eplus48u ma1509 ibm hs2p hp5400 u12 snapscan niash sm3840 hp4200 \
|
||||
sm3600 hp3500 stv680 epson2 hp5590 hp3900"
|
||||
|
||||
case "$host_os" in
|
||||
|
|
|
@ -366,7 +366,7 @@ else
|
|||
microtek2 mustek mustek_usb nec pie pixma plustek \
|
||||
ricoh s9036 sceptre sharp \
|
||||
sp15c st400 tamarack test teco1 teco2 teco3 umax umax_pp umax1220u \
|
||||
artec_eplus48u ma1509 ibm hp5400 u12 snapscan niash sm3840 hp4200 \
|
||||
artec_eplus48u ma1509 ibm hs2p hp5400 u12 snapscan niash sm3840 hp4200 \
|
||||
sm3600 hp3500 stv680 epson2 hp5590 hp3900"
|
||||
|
||||
case "$host_os" in
|
||||
|
|
|
@ -54,7 +54,7 @@ SECT5 = sane-abaton.5 sane-agfafocus.5 sane-apple.5 sane-as6e.5 sane-dll.5 \
|
|||
sane-ma1509.5 sane-ibm.5 sane-hp5400.5 sane-plustek_pp.5 sane-u12.5 \
|
||||
sane-niash.5 sane-sm3840.5 sane-genesys.5 sane-hp4200.5 \
|
||||
sane-mustek_usb2.5 sane-hp3500.5 sane-pixma.5 sane-stv680.5 \
|
||||
sane-hp5590.5 sane-cardscan.5 sane-hp3900.5 sane-epjitsu.5
|
||||
sane-hp5590.5 sane-cardscan.5 sane-hp3900.5 sane-epjitsu.5 sane-hs2p.5
|
||||
SECT7 = sane.7
|
||||
SECT8 = saned.8
|
||||
MANPAGES = $(SECT1) $(SECT5) $(SECT7) $(SECT8)
|
||||
|
@ -112,7 +112,7 @@ DISTFILES = Makefile.in backend-writing.txt descriptions.txt \
|
|||
sane-ma1509.man sane-ibm.man sane-hp5400.man sane-plustek_pp.man \
|
||||
sane-u12.man sane-niash.man sane-sm3840.man sane-genesys.man sane-hp4200.man \
|
||||
sane-mustek_usb2.man sane-hp3500.man sane-pixma.man sane-stv680.man \
|
||||
sane-hp5590.man sane-cardscan.man sane-hp3900.man sane-epjitsu.man
|
||||
sane-hp5590.man sane-cardscan.man sane-hp3900.man sane-epjitsu.man sane-hs2p.man
|
||||
|
||||
.PHONY: all clean depend dist distclean html html-man install \
|
||||
sane-html uninstall
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
; SANE Backend specification file
|
||||
;
|
||||
; It's basically emacs-lisp --- so ";" indicates comment to end of line.
|
||||
; All syntactic elements are keyword tokens, followed by a string or
|
||||
; keyword argument, as specified.
|
||||
;
|
||||
; ":backend" *must* be specified.
|
||||
; All other information is optional (but what good is the file without it?).
|
||||
;
|
||||
|
||||
:backend "hs2p" ; name of backend
|
||||
:url "http://www.acjlaw.net:8080/~jeremy/Ricoh/"
|
||||
:version "1.00" ; version of backend
|
||||
;
|
||||
:manpage "sane-hs2p" ; name of manpage (if it exists)
|
||||
:comment "This backend has been tested with the IS450DE (Duplex/Endorser). All major functions necessary for scanning are supported. This backend should work with all Ricoh scanners in the IS450 family as well as the IS420 series, but the IS420 has not yet been tested. Features provided by the optional Image Processing Unit (IPU) are not yet integrated into the backend, as my scanner lacks the IPU."
|
||||
|
||||
:devicetype :scanner
|
||||
|
||||
:mfg "Ricoh" ; name a manufacturer
|
||||
:url "http://www.ricoh.com/"
|
||||
|
||||
:model "IS450" ; name models for above-specified mfg.
|
||||
:interface "SCSI"
|
||||
:status :complete
|
||||
:comment "All major scanning-related features are supported (except for IPU). Certain non-scanning features, such as those related to scanner maintenance, are not supported. Such features would be better implemented in a separate stand-alone tool. For instance, if you replace the ADF Unit, you must recalibrate the scanner optics using a Ricoh Test Sheet and reset the E^2PROM registers. Reports are welcome."
|
||||
|
||||
:mfg "Ricoh" ; name a manufacturer
|
||||
:model "IS-410"
|
||||
:interface "SCSI"
|
||||
:status :untested
|
||||
:comment "Untested, please report!"
|
||||
|
||||
:model "IS-420"
|
||||
:interface "SCSI"
|
||||
:status :untested
|
||||
:comment "Untested, please report!"
|
||||
|
||||
:model "IS-430"
|
||||
:interface "SCSI"
|
||||
:status :untested
|
||||
:comment "Untested, please report!"
|
|
@ -0,0 +1,120 @@
|
|||
.TH sane-hs2p 5 "01 Nov 2007" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
|
||||
.IX sane-hs2p
|
||||
.SH NAME
|
||||
sane-hs2p \- SANE backend for Ricoh SCSI flatbed/ADF scanners
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
.B sane-hs2p
|
||||
library implements a SANE (Scanner Access Now Easy) backend that provides
|
||||
access to the Ricoh IS450 family of scanners. Should also work with the IS420,
|
||||
IS410, and IS430 scanners, but these are untested.
|
||||
Please contact the maintainer or the sane-devel mailing list if you own such a scanner.
|
||||
.PP
|
||||
This backend is alpha-quality. It may have bugs and some scanners haven't been
|
||||
tested at all. Be careful and pull the plug if the scanner causes unusual
|
||||
noise.
|
||||
|
||||
.SH "DEVICE NAMES"
|
||||
This backend expects device names of the form:
|
||||
.PP
|
||||
.RS
|
||||
.I special
|
||||
.RE
|
||||
.PP
|
||||
Where
|
||||
.I special
|
||||
is either the path-name for the special device that corresponds to a SCSI
|
||||
scanner. The program
|
||||
.I sane-find-scanner
|
||||
helps to find out the correct device. Under Linux, such a device name could be
|
||||
.I /dev/sg0
|
||||
or
|
||||
.IR /dev/sga ,
|
||||
for example. See
|
||||
.BR sane-scsi (5)
|
||||
for details.
|
||||
|
||||
.SH CONFIGURATION
|
||||
The contents of the
|
||||
.I hs2p.conf
|
||||
file is a list of device names that correspond to SCSI
|
||||
scanners. Empty lines and lines starting with a hash mark (#) are
|
||||
ignored. See
|
||||
.BR sane-scsi (5)
|
||||
on details of what constitutes a valid device name.
|
||||
|
||||
.SH FILES
|
||||
.TP
|
||||
.I @CONFIGDIR@/hs2p.conf
|
||||
The backend configuration file (see also description of
|
||||
.B SANE_CONFIG_DIR
|
||||
below).
|
||||
.TP
|
||||
.I @LIBDIR@/libsane-hs2p.a
|
||||
The static library implementing this backend.
|
||||
.TP
|
||||
.I @LIBDIR@/libsane-hs2p.so
|
||||
The shared library implementing this backend (present on systems that
|
||||
support dynamic loading).
|
||||
.SH ENVIRONMENT
|
||||
.TP
|
||||
.B SANE_CONFIG_DIR
|
||||
This environment variable specifies the list of directories that may
|
||||
contain the configuration file. Under UNIX, the directories are
|
||||
separated by a colon (`:'), under OS/2, they are separated by a
|
||||
semi-colon (`;'). If this variable is not set, the configuration file
|
||||
is searched in two default directories: first, the current working
|
||||
directory (".") and then in @CONFIGDIR@. If the value of the
|
||||
environment variable ends with the directory separator character, then
|
||||
the default directories are searched after the explicitly specified
|
||||
directories. For example, setting
|
||||
.B SANE_CONFIG_DIR
|
||||
to "/tmp/config:" would result in directories "tmp/config", ".", and
|
||||
"@CONFIGDIR@" being searched (in this order).
|
||||
.TP
|
||||
.B SANE_DEBUG_HS2P
|
||||
If the library was compiled with debug support enabled, this
|
||||
environment variable controls the debug level for this backend.
|
||||
A value of 255 prints all debug output. Smaller values reduce verbosity.
|
||||
|
||||
.SH CURRENT STATUS
|
||||
The hs2p backend is now in version 1.00. All major scanning-related features
|
||||
are supported, except for those features requiring the optional IPU. Scanning
|
||||
from the flatbed or ADF (either simplex or duplex) is supported. Lineart,
|
||||
halftone, 4-bit gray, and 8-bit gray are supported. Pre-set gamma tables and
|
||||
halftone patterns are supported, as well as brightness, threshold, contrast.
|
||||
Also supported is scan wait mode, binary and gray filtering, negative scanning,
|
||||
and absolute or relative white setting. Printing with the optional endorser
|
||||
also is supported.
|
||||
|
||||
.SH PLANNED FUNCTIONALITY
|
||||
This scanner can scan from the ADF in continuous simplex mode.
|
||||
Surprisingly, many scanners scan an entire document from the ADF
|
||||
into memory before ejecting the sheet. Thus if the document is too
|
||||
long, the scanner cannot hold the entire image data in memory.
|
||||
But if the scanner would send its image data when its memory got full,
|
||||
and then read the next buffer's worth of data, continuous scanning
|
||||
could be achieved.
|
||||
|
||||
.SH MISSING FUNCTIONALITY
|
||||
The SCSI commands for uploading (2AH) or downloading (28H)
|
||||
custom halftone patterns (02H) and gamma vectors (03H) should work,
|
||||
but require implementing the SANE Option-Value code to allow the
|
||||
user to create the tables to be uploaded to the scanner. No support
|
||||
for Maintenance Data (80H) is planned as this functionality is more
|
||||
suited to a stand-alone utility to be used by a technician when
|
||||
replacing the lamp or ADF unit. Nor is support for reading or changing
|
||||
IPU (93H) paramters and adjustments planned, since my IS450 lacks
|
||||
such a unit. The 31-byte Auto Photo/Letter struct and 21-byte Dynamic
|
||||
threshold struct are documented in the hs2p-scsi.h file should someone
|
||||
wish to use their IPU for image data processing.
|
||||
|
||||
.SH "SEE ALSO"
|
||||
.BR sane (7),
|
||||
.BR sane-find-scanner (1),
|
||||
.BR sane-scsi (5),
|
||||
|
||||
.SH AUTHOR
|
||||
jeremy <jeremy@acjlaw.net>
|
||||
.br
|
||||
Maintained by Jeremy Johnson <jeremy@acjlaw.net>
|
|
@ -300,6 +300,11 @@ The SANE backend for the Hewlett-Packard ScanJet 54XXC series. See
|
|||
.BR sane-hp5400 (5)
|
||||
for details.
|
||||
.TP
|
||||
.B hs2p
|
||||
The SANE backend for the Ricoh IS450 family of SCSI scanners. See
|
||||
.BR sane-hs2p (5)
|
||||
for details.
|
||||
.TP
|
||||
.B ibm
|
||||
The SANE backend for some IBM and Ricoh SCSI scanners. See
|
||||
.BR sane-ibm (5)
|
||||
|
|
Ładowanie…
Reference in New Issue