Changed version of plustek-backend to 0.38, applied some minor fixes

and updated documentatation.
DEVEL_2_0_BRANCH-1
Gerhard Jaeger 2000-11-30 09:07:52 +00:00
rodzic 6fd2eaab21
commit 08b6da09de
5 zmienionych plików z 59 dodań i 43 usunięć

Wyświetl plik

@ -11,6 +11,9 @@
* 0.36 - initial version * 0.36 - initial version
* 0.37 - updated scanner info list * 0.37 - updated scanner info list
* removed override switches * 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", \ "12000P/96000P", \
"9636P+/Turbo", \ "9636P+/Turbo", \
"9636T/12000T", \ "9636T/12000T", \
"P12" \ "P8", \
"P12", \
"PT12" \ "PT12" \
} }
@ -247,15 +251,16 @@ typedef struct {
#define _BITS_12 0x00000003 #define _BITS_12 0x00000003
/* (1.2): SCANNERINFO.dwFlag */ /* (1.2): SCANNERINFO.dwFlag */
#define SFLAG_ADF 0x00000001 #define SFLAG_MULTIFUNC 0x00000001 /* is multifunction device */
#define SFLAG_Calibrate 0x00000002 #define SFLAG_SCANNERDEV 0x00000002 /* is scannerdevice */
#define SFLAG_MultiFunction 0x00000004 /* Keypad support */ #define SFLAG_FLATBED 0x00000004 /* is flatbed scanner */
#define SFLAG_SheetFed 0x00000008 #define SFLAG_PRINTEROPT 0x00000008 /* has printer option */
#define SFLAG_HardwareMap 0x00000010
#define SFLAG_Transparency 0x00000020 /* supports transparency */ #define SFLAG_ADF 0x00000010 /* Automatic document feeder */
#define SFLAG_Negative 0x00000040 /* supports negative */ #define SFLAG_MFP 0x00000020 /* MF-Keypad support */
#define SFLAG_QualityScan 0x00000080 /* has quality scan mode */ #define SFLAG_SheetFed 0x00000040 /* Sheetfed support */
#define SFLAG_MessageVxD 0x00000080 /* has quality scan mode */ #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 * (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 */ #define SFLAG_IDMask 0x00f00000 /* Scanner ID */
/* (1.3): SCANNERINFO.wIOBase */ /* (1.3): SCANNERINFO.wIOBase */
#define _NO_BASE 0 #define _NO_BASE 0xFFFF
/****************************************************************************** /******************************************************************************
* Section 2 * Section 2
@ -295,6 +300,7 @@ typedef struct {
#define SCANDEF_RightAlign 0x00008000 /* 12-bit */ #define SCANDEF_RightAlign 0x00008000 /* 12-bit */
#define SCANDEF_WindowStyle 0x00000038 #define SCANDEF_WindowStyle 0x00000038
#define SCANDEF_TPA (SCANDEF_Transparency | SCANDEF_Negative)
/* these values will be combined with ScannerInfo.dwFlag */ /* these values will be combined with ScannerInfo.dwFlag */
#define _SCANNER_SCANNING 0x8000000 #define _SCANNER_SCANNING 0x8000000
@ -354,6 +360,7 @@ typedef struct {
/****************************************************************************** /******************************************************************************
* Section 5 - Scanmodes * Section 5 - Scanmodes
*/ */
#define _ScanMode_Color 0
#define _ScanMode_AverageOut 1 /* CCD averaged 2 pixels value for output*/ #define _ScanMode_AverageOut 1 /* CCD averaged 2 pixels value for output*/
#define _ScanMode_Mono 2 /* not color mode */ #define _ScanMode_Mono 2 /* not color mode */
#define _FastScanMode _ScanMode_AverageOut #define _FastScanMode _ScanMode_AverageOut

Wyświetl plik

@ -32,6 +32,7 @@
* applied Michaels' patch to solve the sane_get_parameter problem * applied Michaels' patch to solve the sane_get_parameter problem
* getting X-size of scan area from driver * getting X-size of scan area from driver
* applied Michaels´ patch for OPT_RESOLUTION (SANE_INFO_INEXACT stuff) * 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_backend.h"
#include "sane/sanei_config.h" #include "sane/sanei_config.h"
#include "plustek.h"
#include "plustek-share.h" #include "plustek-share.h"
#include "plustek.h"
/*********************** the debug levels ************************************/ /*********************** the debug levels ************************************/
@ -135,7 +136,7 @@ static ModeParam mode_params[] =
{1, 16, COLOR_TRUE36}, {1, 16, COLOR_TRUE36},
}; };
static ModeParam mode_9636_params[] = static ModeParam mode_9800x_params[] =
{ {
{0, 1, COLOR_BW}, {0, 1, COLOR_BW},
{0, 1, COLOR_HALFTONE}, {0, 1, COLOR_HALFTONE},
@ -154,7 +155,7 @@ static const SANE_String_Const mode_list[] =
NULL NULL
}; };
static const SANE_String_Const mode_9636_list[] = static const SANE_String_Const mode_9800x_list[] =
{ {
"Binary", "Binary",
"Halftone", "Halftone",
@ -274,10 +275,9 @@ static pModeParam getModeList( Plustek_Scanner *scanner )
{ {
pModeParam mp; pModeParam mp;
if((MODEL_OP_9636T == scanner->hw->model) || if((_ASIC_IS_98003 == scanner->hw->caps.AsicID) ||
(MODEL_OP_9636P == scanner->hw->model) || (_ASIC_IS_98001 == scanner->hw->caps.AsicID)) {
(MODEL_OP_9636PP == scanner->hw->model)) { mp = mode_9800x_params;
mp = mode_9636_params;
} else { } else {
mp = mode_params; 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 * Note: the limit for the Asic 96001/3 models is limited to the
* X-Resolution * X-Resolution
*/ */
if( _ASIC_IS_98001 == dev->asic ) { if( _ASIC_IS_98001 == dev->caps.AsicID ) {
dev->dpi_range.max = lens.rDpiY.wPhyMax; dev->dpi_range.max = lens.rDpiY.wPhyMax;
} else { } else {
dev->dpi_range.max = lens.rDpiX.wPhyMax; 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].size = 32;
s->opt[OPT_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST; s->opt[OPT_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
if((MODEL_OP_9636T == s->hw->model) || if((_ASIC_IS_98001 == s->hw->caps.AsicID) ||
(MODEL_OP_9636P == s->hw->model) || (_ASIC_IS_98003 == s->hw->caps.AsicID)) {
(MODEL_OP_9636PP == s->hw->model)) { s->opt[OPT_MODE].constraint.string_list = mode_9800x_list;
s->opt[OPT_MODE].constraint.string_list = mode_9636_list;
} else { } else {
s->opt[OPT_MODE].constraint.string_list = mode_list; 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->opt[OPT_BR_Y].constraint.range = &s->hw->y_range;
s->val[OPT_BR_Y].w = SANE_FIX(_DEFAULT_BRY); s->val[OPT_BR_Y].w = SANE_FIX(_DEFAULT_BRY);
/* CHANGE: disable some settings for the 9636T and the other models */ /* disable extended mode list for devices without TPA */
if(MODEL_OP_9636T != s->hw->model) { 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; 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.vendor = "Plustek";
dev->sane.type = "flatbed scanner"; dev->sane.type = "flatbed scanner";
/* save the info we got from the driver */ /* save the info we got from the driver */
dev->model = scaps.Model; dev->caps = scaps;
dev->asic = scaps.AsicID;
dev->max_x = scaps.wMaxExtentX*MM_PER_INCH/_MEASURE_BASE; DBG( _DBG_INFO, "Scanner information:\n" );
dev->max_y = scaps.wMaxExtentY*MM_PER_INCH/_MEASURE_BASE; 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), dev->res_list = (SANE_Int *) calloc(((lens.rDpiX.wMax -_DEF_DPI)/25 + 1),
sizeof (SANE_Int)); /* one more to avoid a buffer overflow */ 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 # */ /* error, give asic # */
if (scaps.Model > sizeof (ModelStr) / sizeof (*ModelStr)) { if (scaps.Model > sizeof (ModelStr) / sizeof (*ModelStr)) {
sprintf (str, "ASIC ID = 0x%x", scaps.AsicID); sprintf(str, "ASIC ID = 0x%x", scaps.AsicID);
} else { } else {
sprintf (str, ModelStr[scaps.Model]); /* lookup model string */ sprintf(str, ModelStr[scaps.Model]); /* lookup model string */
} }
dev->sane.model = str; 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_X].w = SANE_FIX(_DEFAULT_BRX);
s->val[OPT_BR_Y].w = SANE_FIX(_DEFAULT_BRY); s->val[OPT_BR_Y].w = SANE_FIX(_DEFAULT_BRY);
if((MODEL_OP_9636T == s->hw->model) || if((_ASIC_IS_98001 == s->hw->caps.AsicID) ||
(MODEL_OP_9636P == s->hw->model) || (_ASIC_IS_98003 == s->hw->caps.AsicID)) {
(MODEL_OP_9636PP == s->hw->model)) { s->opt[OPT_MODE].constraint.string_list = mode_9800x_list;
s->opt[OPT_MODE].constraint.string_list = mode_9636_list;
} else { } else {
s->opt[OPT_MODE].constraint.string_list = mode_list; 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); 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 = s->opt[OPT_MODE].constraint.string_list =
&mode_9636_list[_TPAModeSupportMin]; &mode_9800x_list[_TPAModeSupportMin];
} else { } else {
s->opt[OPT_MODE].constraint.string_list = s->opt[OPT_MODE].constraint.string_list =
&mode_list[_TPAModeSupportMin]; &mode_list[_TPAModeSupportMin];

Wyświetl plik

@ -10,7 +10,7 @@
; ;
:backend "plustek" ; name of backend :backend "plustek" ; name of backend
:version "0.37" ; version of backend :version "0.38" ; version of backend
:status :stable ; :alpha, :beta, :stable, :new :status :stable ; :alpha, :beta, :stable, :new
:manpage "sane-plustek" ; name of manpage (if it exists) :manpage "sane-plustek" ; name of manpage (if it exists)

Wyświetl plik

@ -29,6 +29,7 @@
* moved fd from struct Plustek_Scanner to Plustek_Device * moved fd from struct Plustek_Scanner to Plustek_Device
* added next members to struct Plustek_Scanner and Plustek_Device * added next members to struct Plustek_Scanner and Plustek_Device
* 0.37 - added max_x to struct Plustek_Scan * 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; struct Plustek_Device *next;
int fd; /* device handle */ int fd; /* device handle */
SANE_Device sane; SANE_Device sane;
SANE_Int model;
SANE_Int asic;
SANE_Int max_x; SANE_Int max_x;
SANE_Int max_y; SANE_Int max_y;
SANE_Int level; SANE_Int level;
@ -155,6 +154,7 @@ typedef struct Plustek_Device
SANE_Range y_range; SANE_Range y_range;
SANE_Int *res_list; SANE_Int *res_list;
SANE_Int res_list_size; SANE_Int res_list_size;
ScannerCaps caps; /* caps reported by teh driver */
} Plustek_Device; } Plustek_Device;
typedef union typedef union

Wyświetl plik

@ -1,4 +1,4 @@
.TH sane-plustek 5 "10 November 2000" .TH sane-plustek 5 "30 November 2000"
.IX sane-plustek .IX sane-plustek
.SH NAME .SH NAME
sane-plustek - SANE backend for Plustek parallel port flatbed scanners sane-plustek - SANE backend for Plustek parallel port flatbed scanners
@ -124,7 +124,7 @@ See the plustek.conf file for examples.
.SH CONFIGURATION .SH CONFIGURATION
.PP .PP
As the driver is a loadable kernel module, it is configured 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 appending the options to the file
.B /etc/conf.modules .B /etc/conf.modules
.PP .PP