kopia lustrzana https://gitlab.com/sane-project/backends
updated to backend version 1.0.44, updated maintainer email addy
rodzic
50a260fee3
commit
4eabb3820c
2
AUTHORS
2
AUTHORS
|
@ -173,7 +173,7 @@ Karsten Festag <karsten.festag@gmx.de>
|
|||
Kazuhiro Sasayama <kaz@hypercore.co.jp>
|
||||
Kazuya Fukuda <kaafuu@mug.biglobe.ne.jp>
|
||||
Kevin Charter <charter@cs.rice.edu>
|
||||
m. allan noah <anoah at pfeiffer dot edu>
|
||||
m. allan noah <kitno455 at gmail dot com>
|
||||
M.F. <massifr@tiscalinet.it>
|
||||
Manuel Panea <Manuel.Panea@rzg.mpg.de>
|
||||
Marcio Teixeira <marciot@users.sourceforge.net>
|
||||
|
|
21
ChangeLog
21
ChangeLog
|
@ -1,3 +1,15 @@
|
|||
2007-01-26 m. allan noah <kitno455 a t gmail d o t com>
|
||||
|
||||
* AUTHORS, doc/sane-fujitsu.man, backend/fujitsu.conf.in,
|
||||
backend/fujitsu.c: updated email address
|
||||
* backend/fujitsu-scsi.h, backend/fujitsu.[ch]: update to v1.0.44,
|
||||
set SANE_CAP_HARD_SELECT on all buttons/sensors.
|
||||
disable sending gamma LUT, quality errors reported.
|
||||
support MS overscan.
|
||||
clamp the scan area to the pagesize on ADF.
|
||||
|
||||
* doc/descriptions/fujitsu.desc: version number update
|
||||
|
||||
2006-01-21 Jochen Eisinger <jochen@penguin-breeder.org>
|
||||
|
||||
* doc/descriptions/mustek_pp.desc: Cybercom is a CIS scanner
|
||||
|
@ -164,8 +176,7 @@
|
|||
|
||||
* backend/fujitsu.[ch], backend/fujitsu-scsi.h: update to v1.0.43,
|
||||
add model-specific code to init_vpd for M3099, clean some noise
|
||||
* doc/descriptions/fujitsu.desc:
|
||||
version number update
|
||||
* doc/descriptions/fujitsu.desc: version number update
|
||||
|
||||
2006-09-18 Stephane Voltz <stef.dev@free.fr>
|
||||
|
||||
|
@ -189,8 +200,7 @@
|
|||
|
||||
* backend/fujitsu.c: update to v1.0.42,
|
||||
fix bug in get_hardware_status (#303798)
|
||||
* doc/descriptions/fujitsu.desc:
|
||||
version number update
|
||||
* doc/descriptions/fujitsu.desc: version number update
|
||||
|
||||
2006-08-29 Gerhard Jaeger <gerhard@gjaeger.de>
|
||||
|
||||
|
@ -206,8 +216,7 @@
|
|||
* backend/fujitsu.c backend/fujitsu-scsi.h: update to v1.0.41,
|
||||
do_usb_cmd() returns io error on cmd/out/status/rs EOF,
|
||||
fix bug in MS buffer/prepick scsi data block
|
||||
* doc/descriptions/fujitsu.desc:
|
||||
version number update
|
||||
* doc/descriptions/fujitsu.desc: version number update
|
||||
|
||||
2006-08-28 Stephane Voltz <stefdev@modulonet.fr>
|
||||
|
||||
|
|
|
@ -104,6 +104,7 @@
|
|||
scanners.
|
||||
|
||||
2003-11-04 m. allan noah <anoah at pfeiffer dot edu>
|
||||
|
||||
* doc/descriptions/fujitsu.desc: added model "fi-4110EOX2"
|
||||
|
||||
2003-11-04 Gerhard Jaeger <gerhard@gjaeger.de>
|
||||
|
@ -300,8 +301,9 @@
|
|||
fixed urls.
|
||||
|
||||
2003-10-19 m. allan noah <anoah at pfeiffer dot edu>
|
||||
|
||||
* backend/fujitsu.c: reverse previous patch. Dont blindly trust
|
||||
code from the backend maintainer :)
|
||||
code from the backend maintainer :)
|
||||
|
||||
2003-10-19 Julien Blache <jb@jblache.org>
|
||||
* frontend/saned.c: added subnet support to saned ; added
|
||||
|
@ -347,7 +349,7 @@
|
|||
* backend/fujitsu.c: memset the device struct and the scsi buff
|
||||
when a new device is attached. Submitted by
|
||||
Chris Chesney <cchesney at go-integral dot com>.
|
||||
Initialized a couple vars in the 3091 init routines.
|
||||
Initialized a couple vars in the 3091 init routines.
|
||||
|
||||
2003-10-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||
|
||||
|
@ -1228,8 +1230,8 @@
|
|||
|
||||
2003-06-11 Oliver Schirrmeister <oschirr@abm.de>
|
||||
|
||||
* backend/fujitsu.c fixed bug in that code when a scanner is
|
||||
disconnected (anoah@pfeiffer.edu)
|
||||
* backend/fujitsu.c: fixed bug in that code when a scanner is
|
||||
disconnected (anoah at pfeiffer dot edu)
|
||||
|
||||
2003-06-10 Michael Herder <crapsite@gmx.net>
|
||||
|
||||
|
@ -1282,10 +1284,10 @@
|
|||
|
||||
2003-06-06 Oliver Schirrmeister <oschirr@abm.de>
|
||||
|
||||
* backend/fujitsu.h backend/fujitsu.c doc/descriptions/fujitsu.desc
|
||||
path from anoah@pfeiffer.edu:
|
||||
* backend/fujitsu.h backend/fujitsu.c doc/descriptions/fujitsu.desc:
|
||||
remove SP15 code
|
||||
sane_open actually opens the device you request
|
||||
from (anoah at pfeiffer dot edu)
|
||||
|
||||
2003-06-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||
|
||||
|
|
|
@ -443,7 +443,7 @@ static scsiblk mode_selectB = { mode_selectC, sizeof (mode_selectC) };
|
|||
* there is also 'descriptor block' & 'vendor-specific block'
|
||||
* but fujitsu seems not to use these */
|
||||
|
||||
/* 8 byte page only used by all pages except dropout? */
|
||||
/* 8 byte page used by all pages except dropout? */
|
||||
static unsigned char mode_select_8byteC[] = {
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
@ -494,7 +494,9 @@ static scsiblk mode_select_10byteB = {
|
|||
|
||||
#define set_MSEL_prepick(sb, val) setbitfield(sb + 0x06, 0x03, 6, val)
|
||||
|
||||
/*buffer and prepick use these*/
|
||||
#define set_MSEL_overscan(sb, val) setbitfield(sb + 0x09, 0x03, 6, val)
|
||||
|
||||
/*buffer, prepick, overscan use these*/
|
||||
#define MSEL_DEFAULT 0
|
||||
#define MSEL_OFF 2
|
||||
#define MSEL_ON 3
|
||||
|
|
|
@ -226,7 +226,7 @@
|
|||
- rewrite do_*_cmd functions to handle short reads
|
||||
and to use ptr to return read in length
|
||||
- new init_user function split from init_model
|
||||
_ init_vpd allows short vpd block for older models
|
||||
- init_vpd allows short vpd block for older models
|
||||
- support MS buffer (s.scipioni AT harvardgroup DOT it)
|
||||
- support MS prepick
|
||||
- read only 1 byte of mode sense output
|
||||
|
@ -237,6 +237,11 @@
|
|||
- fix bug in get_hardware_status (#303798)
|
||||
V 1.0.43 2006-09-19, MAN
|
||||
- add model-specific code to init_vpd for M3099
|
||||
V 1.0.44 2007-01-26, MAN
|
||||
- set SANE_CAP_HARD_SELECT on all buttons/sensors
|
||||
- disable sending gamma LUT, seems wrong on some units?
|
||||
- support MS overscan
|
||||
- clamp the scan area to the pagesize on ADF
|
||||
|
||||
SANE FLOW DIAGRAM
|
||||
|
||||
|
@ -297,7 +302,7 @@
|
|||
#include "fujitsu.h"
|
||||
|
||||
#define DEBUG 1
|
||||
#define BUILD 43
|
||||
#define BUILD 44
|
||||
|
||||
/* values for SANE_DEBUG_FUJITSU env var:
|
||||
- errors 5
|
||||
|
@ -890,7 +895,7 @@ init_vpd (struct fujitsu *s)
|
|||
memcpy(buffer+0x19,buff_VPD_M3097.cmd,buff_VPD_M3097.size);
|
||||
}*/
|
||||
|
||||
DBG (5, "init_vpd: length=%0x\n",get_IN_page_length (buffer));
|
||||
DBG (15, "init_vpd: length=%0x\n",get_IN_page_length (buffer));
|
||||
|
||||
/* This scanner supports vital product data.
|
||||
* Use this data to set dpi-lists etc. */
|
||||
|
@ -1152,7 +1157,7 @@ init_vpd (struct fujitsu *s)
|
|||
/*FIXME no vendor vpd, set some defaults? */
|
||||
else{
|
||||
DBG (5, "init_vpd: Your scanner supports only partial VPD?\n");
|
||||
DBG (5, "init_vpd: Please contact anoah at pfeiffer dot edu\n");
|
||||
DBG (5, "init_vpd: Please contact kitno455 at gmail dot com\n");
|
||||
DBG (5, "init_vpd: with details of your scanner model.\n");
|
||||
ret = SANE_STATUS_INVAL;
|
||||
}
|
||||
|
@ -1160,7 +1165,7 @@ init_vpd (struct fujitsu *s)
|
|||
/*FIXME no vpd, set some defaults? */
|
||||
else{
|
||||
DBG (5, "init_vpd: Your scanner does not support VPD?\n");
|
||||
DBG (5, "init_vpd: Please contact anoah at pfeiffer dot edu\n");
|
||||
DBG (5, "init_vpd: Please contact kitno455 at gmail dot com\n");
|
||||
DBG (5, "init_vpd: with details of your scanner model.\n");
|
||||
}
|
||||
|
||||
|
@ -1410,6 +1415,14 @@ init_model (struct fujitsu *s)
|
|||
/* lies */
|
||||
s->adbits = 8;
|
||||
|
||||
}
|
||||
else if (strstr (s->product_name, "fi-4120C2")
|
||||
|| strstr (s->product_name, "fi-4220C2") ) {
|
||||
|
||||
/* missing from vpd */
|
||||
s->os_x_basic = 376;
|
||||
s->os_y_basic = 236;
|
||||
|
||||
}
|
||||
else if (strstr (s->product_name, "fi-4750")
|
||||
|| strstr (s->product_name, "fi-4340") ) {
|
||||
|
@ -1878,7 +1891,16 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
/* values stored in 1200 dpi units */
|
||||
/* must be converted to MM for sane */
|
||||
s->br_x_range.min = SCANNER_UNIT_TO_FIXED_MM(s->min_x);
|
||||
s->br_x_range.max = SCANNER_UNIT_TO_FIXED_MM(s->max_x);
|
||||
|
||||
/* clamp to scanner max for fb */
|
||||
if(s->source == SOURCE_FLATBED){
|
||||
s->br_x_range.max = SCANNER_UNIT_TO_FIXED_MM(s->max_x);
|
||||
}
|
||||
/* clamp to current paper size for adf */
|
||||
else{
|
||||
s->br_x_range.max = SCANNER_UNIT_TO_FIXED_MM(s->page_width);
|
||||
}
|
||||
|
||||
s->br_x_range.quant = MM_PER_UNIT_FIX;
|
||||
|
||||
opt->name = SANE_NAME_SCAN_BR_X;
|
||||
|
@ -1896,7 +1918,16 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
/* values stored in 1200 dpi units */
|
||||
/* must be converted to MM for sane */
|
||||
s->br_y_range.min = SCANNER_UNIT_TO_FIXED_MM(s->min_y);
|
||||
s->br_y_range.max = SCANNER_UNIT_TO_FIXED_MM(s->max_y);
|
||||
|
||||
/* clamp to scanner max for fb */
|
||||
if(s->source == SOURCE_FLATBED){
|
||||
s->br_y_range.max = SCANNER_UNIT_TO_FIXED_MM(s->max_y);
|
||||
}
|
||||
/* clamp to current paper size for adf */
|
||||
else{
|
||||
s->br_y_range.max = SCANNER_UNIT_TO_FIXED_MM(s->page_height);
|
||||
}
|
||||
|
||||
s->br_y_range.quant = MM_PER_UNIT_FIX;
|
||||
|
||||
opt->name = SANE_NAME_SCAN_BR_Y;
|
||||
|
@ -2212,6 +2243,26 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
||||
/*overscan*/
|
||||
if(option==OPT_OVERSCAN){
|
||||
s->overscan_list[0] = string_Default;
|
||||
s->overscan_list[1] = string_Off;
|
||||
s->overscan_list[2] = string_On;
|
||||
s->overscan_list[3] = NULL;
|
||||
|
||||
opt->name = "overscan";
|
||||
opt->title = "Overscan";
|
||||
opt->desc = "Collect a few mm of background on top side of scan, before paper enters ADF.";
|
||||
opt->type = SANE_TYPE_STRING;
|
||||
opt->constraint_type = SANE_CONSTRAINT_STRING_LIST;
|
||||
opt->constraint.string_list = s->overscan_list;
|
||||
opt->size = maxStringSize (opt->constraint.string_list);
|
||||
if (s->has_MS_auto)
|
||||
opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
||||
/*sleep time*/
|
||||
if(option==OPT_SLEEP_TIME){
|
||||
s->sleep_time_range.min = 0;
|
||||
|
@ -2314,7 +2365,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2326,7 +2377,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2338,7 +2389,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2350,7 +2401,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2362,7 +2413,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2374,7 +2425,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2386,7 +2437,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2398,7 +2449,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2410,7 +2461,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2422,7 +2473,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2434,7 +2485,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2446,7 +2497,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2458,7 +2509,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_INT;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2470,7 +2521,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status && s->has_imprinter)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2482,7 +2533,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2494,7 +2545,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_INT;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2506,7 +2557,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_INT;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2518,7 +2569,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_INT;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->has_cmd_hw_status && s->has_imprinter)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2530,7 +2581,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_INT;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->ghs_in_rs)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2542,7 +2593,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
opt->type = SANE_TYPE_BOOL;
|
||||
opt->unit = SANE_UNIT_NONE;
|
||||
if (s->ghs_in_rs)
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
|
||||
else
|
||||
opt->cap = SANE_CAP_INACTIVE;
|
||||
}
|
||||
|
@ -2791,6 +2842,20 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
|
|||
}
|
||||
return SANE_STATUS_GOOD;
|
||||
|
||||
case OPT_OVERSCAN:
|
||||
switch (s->overscan) {
|
||||
case MSEL_DEFAULT:
|
||||
strcpy (val, string_Default);
|
||||
break;
|
||||
case MSEL_ON:
|
||||
strcpy (val, string_On);
|
||||
break;
|
||||
case MSEL_OFF:
|
||||
strcpy (val, string_Off);
|
||||
break;
|
||||
}
|
||||
return SANE_STATUS_GOOD;
|
||||
|
||||
case OPT_SLEEP_TIME:
|
||||
*val_p = s->sleep_time;
|
||||
return SANE_STATUS_GOOD;
|
||||
|
@ -3164,6 +3229,18 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
|
|||
else
|
||||
return SANE_STATUS_GOOD;
|
||||
|
||||
case OPT_OVERSCAN:
|
||||
if (!strcmp(val, string_Default))
|
||||
s->overscan = MSEL_DEFAULT;
|
||||
else if (!strcmp(val, string_On))
|
||||
s->overscan= MSEL_ON;
|
||||
else if (!strcmp(val, string_Off))
|
||||
s->overscan= MSEL_OFF;
|
||||
if (s->has_MS_auto)
|
||||
return mode_select_overscan(s);
|
||||
else
|
||||
return SANE_STATUS_GOOD;
|
||||
|
||||
case OPT_SLEEP_TIME:
|
||||
s->sleep_time = val_c;
|
||||
return set_sleep_mode(s);
|
||||
|
@ -3341,7 +3418,7 @@ get_hardware_status (struct fujitsu *s)
|
|||
static SANE_Status
|
||||
send_lut (struct fujitsu *s)
|
||||
{
|
||||
int i, j, ret, bytes = 1 << s->adbits;
|
||||
int i, j, ret=0, bytes = 1 << s->adbits;
|
||||
unsigned char * p = send_lutC+S_lut_data_offset;
|
||||
double b, slope, offset;
|
||||
|
||||
|
@ -3390,12 +3467,13 @@ send_lut (struct fujitsu *s)
|
|||
|
||||
hexdump(15,"LUT:",send_lutC+S_lut_data_offset,bytes);
|
||||
|
||||
ret = do_cmd (
|
||||
DBG (10,"send_lut: skipping\n");
|
||||
/*ret = do_cmd (
|
||||
s, 1, 0,
|
||||
sendB.cmd, sendB.size,
|
||||
send_lutC, S_lut_data_offset+bytes,
|
||||
NULL, NULL
|
||||
);
|
||||
);*/
|
||||
|
||||
DBG (10, "send_lut: finish\n");
|
||||
|
||||
|
@ -3579,6 +3657,29 @@ mode_select_prepick (struct fujitsu *s)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static SANE_Status
|
||||
mode_select_overscan (struct fujitsu *s)
|
||||
{
|
||||
int ret;
|
||||
|
||||
DBG (10, "mode_select_overscan: start\n");
|
||||
|
||||
set_MSEL_xfer_length (mode_selectB.cmd, mode_select_8byteB.size);
|
||||
set_MSEL_pc(mode_select_8byteB.cmd, MS_pc_auto);
|
||||
set_MSEL_overscan(mode_select_8byteB.cmd, s->overscan);
|
||||
|
||||
ret = do_cmd (
|
||||
s, 1, 0,
|
||||
mode_selectB.cmd, mode_selectB.size,
|
||||
mode_select_8byteB.cmd, mode_select_8byteB.size,
|
||||
NULL, NULL
|
||||
);
|
||||
|
||||
DBG (10, "mode_select_overscan: finish\n");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @@ Section 4 - SANE scanning functions
|
||||
|
|
|
@ -20,8 +20,8 @@ scsi FUJITSU
|
|||
#usb VENDORID PRODUCTID
|
||||
|
||||
# NOTE: if you have to add your device here- please send the id and model
|
||||
# to the author via email, so it can be included in next version. anoah at
|
||||
# pfeiffer dot edu - with Fujitsu in the subject line
|
||||
# to the author via email, so it can be included in next version. kitno455 at
|
||||
# gmail dot com - with Fujitsu in the subject line
|
||||
|
||||
#fi-4x20C
|
||||
usb 0x04c5 0x1041
|
||||
|
|
|
@ -43,6 +43,7 @@ enum fujitsu_Option
|
|||
OPT_DROPOUT_COLOR,
|
||||
OPT_BUFF_MODE,
|
||||
OPT_PREPICK,
|
||||
OPT_OVERSCAN,
|
||||
OPT_SLEEP_TIME,
|
||||
OPT_DUPLEX_OFFSET,
|
||||
OPT_GREEN_OFFSET,
|
||||
|
@ -281,6 +282,7 @@ struct fujitsu
|
|||
SANE_String_Const lamp_color_list[5];
|
||||
SANE_String_Const buff_mode_list[4];
|
||||
SANE_String_Const prepick_list[4];
|
||||
SANE_String_Const overscan_list[4];
|
||||
SANE_Range sleep_time_range;
|
||||
SANE_Range duplex_offset_range;
|
||||
SANE_Range green_offset_range;
|
||||
|
@ -318,6 +320,7 @@ struct fujitsu
|
|||
int dropout_color;
|
||||
int buff_mode;
|
||||
int prepick;
|
||||
int overscan;
|
||||
int lamp_color;
|
||||
int sleep_time;
|
||||
int duplex_offset;
|
||||
|
@ -552,6 +555,8 @@ static SANE_Status mode_select_buff (struct fujitsu *s);
|
|||
|
||||
static SANE_Status mode_select_prepick (struct fujitsu *s);
|
||||
|
||||
static SANE_Status mode_select_overscan (struct fujitsu *s);
|
||||
|
||||
static SANE_Status set_sleep_mode(struct fujitsu *s);
|
||||
|
||||
int get_current_side (struct fujitsu *s);
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
:backend "fujitsu" ; name of backend
|
||||
:url "http://www2.pfeiffer.edu/~anoah/fujitsu/"
|
||||
:version "1.0.43" ; version of backend
|
||||
:version "1.0.44" ; version of backend
|
||||
:manpage "sane-fujitsu" ; name of manpage (if it exists)
|
||||
:comment "Backend re-written for SANE release 1.0.18, see sane-fujitsu manpage"
|
||||
:devicetype :scanner ; start of a list of devices....
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.TH sane-fujitsu 5 "2006-06-06" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
|
||||
.TH sane-fujitsu 5 "2007-01-26" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
|
||||
.IX sane-fujitsu
|
||||
|
||||
.SH NAME
|
||||
|
@ -259,7 +259,7 @@ fujitsu backend, 3093, fi-4340C, ipc, cmp, long-time maintainer:
|
|||
fi-4220C and basic USB support: Ron Cemer <ron a t roncemer d o t com>
|
||||
.br
|
||||
fi-4120, fi-series color support, backend re-write, current maintainer:
|
||||
M. Allan Noah: <anoah a t pfeiffer d o t edu>
|
||||
m. allan noah: <kitno455 a t gmail d o t com>
|
||||
|
||||
.SH "SEE ALSO"
|
||||
sane(7),
|
||||
|
@ -269,5 +269,5 @@ sane-sp15c(5),
|
|||
sane-avision(5)
|
||||
|
||||
.SH AUTHOR
|
||||
M. Allan Noah: <anoah a t pfeiffer d o t edu>
|
||||
m. allan noah: <kitno455 a t gmail d o t com>
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue