kopia lustrzana https://gitlab.com/sane-project/backends
Changed version of plustek-backend to 0.38, applied some minor fixes
and updated documentatation.DEVEL_2_0_BRANCH-1
rodzic
6fd2eaab21
commit
08b6da09de
|
@ -11,6 +11,9 @@
|
|||
* 0.36 - initial version
|
||||
* 0.37 - updated scanner info list
|
||||
* removed override switches
|
||||
* 0.38 - changed the dwFlag entry in ScannerCaps and its meaning
|
||||
* changed _NO_BASE
|
||||
* fixed model list
|
||||
*
|
||||
*.............................................................................
|
||||
*
|
||||
|
@ -213,7 +216,8 @@ typedef struct {
|
|||
"12000P/96000P", \
|
||||
"9636P+/Turbo", \
|
||||
"9636T/12000T", \
|
||||
"P12" \
|
||||
"P8", \
|
||||
"P12", \
|
||||
"PT12" \
|
||||
}
|
||||
|
||||
|
@ -247,15 +251,16 @@ typedef struct {
|
|||
#define _BITS_12 0x00000003
|
||||
|
||||
/* (1.2): SCANNERINFO.dwFlag */
|
||||
#define SFLAG_ADF 0x00000001
|
||||
#define SFLAG_Calibrate 0x00000002
|
||||
#define SFLAG_MultiFunction 0x00000004 /* Keypad support */
|
||||
#define SFLAG_SheetFed 0x00000008
|
||||
#define SFLAG_HardwareMap 0x00000010
|
||||
#define SFLAG_Transparency 0x00000020 /* supports transparency */
|
||||
#define SFLAG_Negative 0x00000040 /* supports negative */
|
||||
#define SFLAG_QualityScan 0x00000080 /* has quality scan mode */
|
||||
#define SFLAG_MessageVxD 0x00000080 /* has quality scan mode */
|
||||
#define SFLAG_MULTIFUNC 0x00000001 /* is multifunction device */
|
||||
#define SFLAG_SCANNERDEV 0x00000002 /* is scannerdevice */
|
||||
#define SFLAG_FLATBED 0x00000004 /* is flatbed scanner */
|
||||
#define SFLAG_PRINTEROPT 0x00000008 /* has printer option */
|
||||
|
||||
#define SFLAG_ADF 0x00000010 /* Automatic document feeder */
|
||||
#define SFLAG_MFP 0x00000020 /* MF-Keypad support */
|
||||
#define SFLAG_SheetFed 0x00000040 /* Sheetfed support */
|
||||
#define SFLAG_TPA 0x00000080 /* has transparency adapter */
|
||||
#define SFLAG_BUTTONOPT 0x00000100 /* has buttons */
|
||||
|
||||
/*
|
||||
* (1.2.1) Provide the scanner ID. This field is valid when the wIOBase
|
||||
|
@ -265,7 +270,7 @@ typedef struct {
|
|||
#define SFLAG_IDMask 0x00f00000 /* Scanner ID */
|
||||
|
||||
/* (1.3): SCANNERINFO.wIOBase */
|
||||
#define _NO_BASE 0
|
||||
#define _NO_BASE 0xFFFF
|
||||
|
||||
/******************************************************************************
|
||||
* Section 2
|
||||
|
@ -295,6 +300,7 @@ typedef struct {
|
|||
#define SCANDEF_RightAlign 0x00008000 /* 12-bit */
|
||||
|
||||
#define SCANDEF_WindowStyle 0x00000038
|
||||
#define SCANDEF_TPA (SCANDEF_Transparency | SCANDEF_Negative)
|
||||
|
||||
/* these values will be combined with ScannerInfo.dwFlag */
|
||||
#define _SCANNER_SCANNING 0x8000000
|
||||
|
@ -354,6 +360,7 @@ typedef struct {
|
|||
/******************************************************************************
|
||||
* Section 5 - Scanmodes
|
||||
*/
|
||||
#define _ScanMode_Color 0
|
||||
#define _ScanMode_AverageOut 1 /* CCD averaged 2 pixels value for output*/
|
||||
#define _ScanMode_Mono 2 /* not color mode */
|
||||
#define _FastScanMode _ScanMode_AverageOut
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
* applied Michaels' patch to solve the sane_get_parameter problem
|
||||
* getting X-size of scan area from driver
|
||||
* applied Michaels´ patch for OPT_RESOLUTION (SANE_INFO_INEXACT stuff)
|
||||
* 0.38 - now using the information from the driver
|
||||
*
|
||||
*.............................................................................
|
||||
*
|
||||
|
@ -101,8 +102,8 @@
|
|||
#include "sane/sanei_backend.h"
|
||||
#include "sane/sanei_config.h"
|
||||
|
||||
#include "plustek.h"
|
||||
#include "plustek-share.h"
|
||||
#include "plustek.h"
|
||||
|
||||
/*********************** the debug levels ************************************/
|
||||
|
||||
|
@ -135,7 +136,7 @@ static ModeParam mode_params[] =
|
|||
{1, 16, COLOR_TRUE36},
|
||||
};
|
||||
|
||||
static ModeParam mode_9636_params[] =
|
||||
static ModeParam mode_9800x_params[] =
|
||||
{
|
||||
{0, 1, COLOR_BW},
|
||||
{0, 1, COLOR_HALFTONE},
|
||||
|
@ -154,7 +155,7 @@ static const SANE_String_Const mode_list[] =
|
|||
NULL
|
||||
};
|
||||
|
||||
static const SANE_String_Const mode_9636_list[] =
|
||||
static const SANE_String_Const mode_9800x_list[] =
|
||||
{
|
||||
"Binary",
|
||||
"Halftone",
|
||||
|
@ -274,10 +275,9 @@ static pModeParam getModeList( Plustek_Scanner *scanner )
|
|||
{
|
||||
pModeParam mp;
|
||||
|
||||
if((MODEL_OP_9636T == scanner->hw->model) ||
|
||||
(MODEL_OP_9636P == scanner->hw->model) ||
|
||||
(MODEL_OP_9636PP == scanner->hw->model)) {
|
||||
mp = mode_9636_params;
|
||||
if((_ASIC_IS_98003 == scanner->hw->caps.AsicID) ||
|
||||
(_ASIC_IS_98001 == scanner->hw->caps.AsicID)) {
|
||||
mp = mode_9800x_params;
|
||||
} else {
|
||||
mp = mode_params;
|
||||
}
|
||||
|
@ -437,7 +437,7 @@ static SANE_Status limitResolution( Plustek_Device *dev )
|
|||
* Note: the limit for the Asic 96001/3 models is limited to the
|
||||
* X-Resolution
|
||||
*/
|
||||
if( _ASIC_IS_98001 == dev->asic ) {
|
||||
if( _ASIC_IS_98001 == dev->caps.AsicID ) {
|
||||
dev->dpi_range.max = lens.rDpiY.wPhyMax;
|
||||
} else {
|
||||
dev->dpi_range.max = lens.rDpiX.wPhyMax;
|
||||
|
@ -492,10 +492,9 @@ static SANE_Status init_options( Plustek_Scanner *s )
|
|||
s->opt[OPT_MODE].size = 32;
|
||||
s->opt[OPT_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
|
||||
|
||||
if((MODEL_OP_9636T == s->hw->model) ||
|
||||
(MODEL_OP_9636P == s->hw->model) ||
|
||||
(MODEL_OP_9636PP == s->hw->model)) {
|
||||
s->opt[OPT_MODE].constraint.string_list = mode_9636_list;
|
||||
if((_ASIC_IS_98001 == s->hw->caps.AsicID) ||
|
||||
(_ASIC_IS_98003 == s->hw->caps.AsicID)) {
|
||||
s->opt[OPT_MODE].constraint.string_list = mode_9800x_list;
|
||||
} else {
|
||||
s->opt[OPT_MODE].constraint.string_list = mode_list;
|
||||
}
|
||||
|
@ -612,8 +611,10 @@ static SANE_Status init_options( Plustek_Scanner *s )
|
|||
s->opt[OPT_BR_Y].constraint.range = &s->hw->y_range;
|
||||
s->val[OPT_BR_Y].w = SANE_FIX(_DEFAULT_BRY);
|
||||
|
||||
/* CHANGE: disable some settings for the 9636T and the other models */
|
||||
if(MODEL_OP_9636T != s->hw->model) {
|
||||
/* disable extended mode list for devices without TPA */
|
||||
DBG(_DBG_SANE_INIT, "0x%08lx\n", s->hw->caps.dwFlag );
|
||||
|
||||
if( 0 == (s->hw->caps.dwFlag & SFLAG_TPA)) {
|
||||
s->opt[OPT_EXT_MODE].cap |= SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
||||
|
@ -684,12 +685,21 @@ static SANE_Status attach( const char *dev_name, Plustek_Device **devp )
|
|||
dev->sane.vendor = "Plustek";
|
||||
dev->sane.type = "flatbed scanner";
|
||||
|
||||
|
||||
/* save the info we got from the driver */
|
||||
dev->model = scaps.Model;
|
||||
dev->asic = scaps.AsicID;
|
||||
dev->max_x = scaps.wMaxExtentX*MM_PER_INCH/_MEASURE_BASE;
|
||||
dev->max_y = scaps.wMaxExtentY*MM_PER_INCH/_MEASURE_BASE;
|
||||
dev->caps = scaps;
|
||||
|
||||
DBG( _DBG_INFO, "Scanner information:\n" );
|
||||
if( dev->caps.Model <= MODEL_OP_PT12 )
|
||||
DBG( _DBG_INFO, "Model : %s\n", ModelStr[dev->caps.Model] );
|
||||
else
|
||||
DBG( _DBG_INFO, "Model : %s\n", ModelStr[0] );
|
||||
|
||||
DBG( _DBG_INFO, "Asic : 0x%02x\n", dev->caps.AsicID );
|
||||
DBG( _DBG_INFO, "Flags : 0x%08lx\n", dev->caps.dwFlag );
|
||||
DBG( _DBG_INFO, "Version: 0x%08x\n", dev->caps.Version );
|
||||
|
||||
dev->max_x = scaps.wMaxExtentX*MM_PER_INCH/_MEASURE_BASE;
|
||||
dev->max_y = scaps.wMaxExtentY*MM_PER_INCH/_MEASURE_BASE;
|
||||
|
||||
dev->res_list = (SANE_Int *) calloc(((lens.rDpiX.wMax -_DEF_DPI)/25 + 1),
|
||||
sizeof (SANE_Int)); /* one more to avoid a buffer overflow */
|
||||
|
@ -720,9 +730,9 @@ static SANE_Status attach( const char *dev_name, Plustek_Device **devp )
|
|||
|
||||
/* error, give asic # */
|
||||
if (scaps.Model > sizeof (ModelStr) / sizeof (*ModelStr)) {
|
||||
sprintf (str, "ASIC ID = 0x%x", scaps.AsicID);
|
||||
sprintf(str, "ASIC ID = 0x%x", scaps.AsicID);
|
||||
} else {
|
||||
sprintf (str, ModelStr[scaps.Model]); /* lookup model string */
|
||||
sprintf(str, ModelStr[scaps.Model]); /* lookup model string */
|
||||
}
|
||||
|
||||
dev->sane.model = str;
|
||||
|
@ -1124,10 +1134,9 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
|
|||
s->val[OPT_BR_X].w = SANE_FIX(_DEFAULT_BRX);
|
||||
s->val[OPT_BR_Y].w = SANE_FIX(_DEFAULT_BRY);
|
||||
|
||||
if((MODEL_OP_9636T == s->hw->model) ||
|
||||
(MODEL_OP_9636P == s->hw->model) ||
|
||||
(MODEL_OP_9636PP == s->hw->model)) {
|
||||
s->opt[OPT_MODE].constraint.string_list = mode_9636_list;
|
||||
if((_ASIC_IS_98001 == s->hw->caps.AsicID) ||
|
||||
(_ASIC_IS_98003 == s->hw->caps.AsicID)) {
|
||||
s->opt[OPT_MODE].constraint.string_list = mode_9800x_list;
|
||||
} else {
|
||||
s->opt[OPT_MODE].constraint.string_list = mode_list;
|
||||
}
|
||||
|
@ -1154,9 +1163,9 @@ SANE_Status sane_control_option( SANE_Handle handle, SANE_Int option,
|
|||
s->val[OPT_BR_Y].w = SANE_FIX(_DEFAULT_NEG_BRY);
|
||||
}
|
||||
|
||||
if( MODEL_OP_9636T == s->hw->model ) {
|
||||
if( s->hw->caps.dwFlag & SFLAG_TPA ) {
|
||||
s->opt[OPT_MODE].constraint.string_list =
|
||||
&mode_9636_list[_TPAModeSupportMin];
|
||||
&mode_9800x_list[_TPAModeSupportMin];
|
||||
} else {
|
||||
s->opt[OPT_MODE].constraint.string_list =
|
||||
&mode_list[_TPAModeSupportMin];
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
;
|
||||
|
||||
:backend "plustek" ; name of backend
|
||||
:version "0.37" ; version of backend
|
||||
:version "0.38" ; version of backend
|
||||
:status :stable ; :alpha, :beta, :stable, :new
|
||||
:manpage "sane-plustek" ; name of manpage (if it exists)
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
* moved fd from struct Plustek_Scanner to Plustek_Device
|
||||
* added next members to struct Plustek_Scanner and Plustek_Device
|
||||
* 0.37 - added max_x to struct Plustek_Scan
|
||||
* 0.38 - added caps to struct Plustek_Scan
|
||||
*
|
||||
*.............................................................................
|
||||
*
|
||||
|
@ -145,8 +146,6 @@ typedef struct Plustek_Device
|
|||
struct Plustek_Device *next;
|
||||
int fd; /* device handle */
|
||||
SANE_Device sane;
|
||||
SANE_Int model;
|
||||
SANE_Int asic;
|
||||
SANE_Int max_x;
|
||||
SANE_Int max_y;
|
||||
SANE_Int level;
|
||||
|
@ -155,6 +154,7 @@ typedef struct Plustek_Device
|
|||
SANE_Range y_range;
|
||||
SANE_Int *res_list;
|
||||
SANE_Int res_list_size;
|
||||
ScannerCaps caps; /* caps reported by teh driver */
|
||||
} Plustek_Device;
|
||||
|
||||
typedef union
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.TH sane-plustek 5 "10 November 2000"
|
||||
.TH sane-plustek 5 "30 November 2000"
|
||||
.IX sane-plustek
|
||||
.SH NAME
|
||||
sane-plustek - SANE backend for Plustek parallel port flatbed scanners
|
||||
|
@ -124,7 +124,7 @@ See the plustek.conf file for examples.
|
|||
.SH CONFIGURATION
|
||||
.PP
|
||||
As the driver is a loadable kernel module, it is configured
|
||||
by invoking insmod with the approriate parameters or
|
||||
by invoking insmod with the appropriate parameters or
|
||||
appending the options to the file
|
||||
.B /etc/conf.modules
|
||||
.PP
|
||||
|
|
Ładowanie…
Reference in New Issue