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>
|
Kazuhiro Sasayama <kaz@hypercore.co.jp>
|
||||||
Kazuya Fukuda <kaafuu@mug.biglobe.ne.jp>
|
Kazuya Fukuda <kaafuu@mug.biglobe.ne.jp>
|
||||||
Kevin Charter <charter@cs.rice.edu>
|
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>
|
M.F. <massifr@tiscalinet.it>
|
||||||
Manuel Panea <Manuel.Panea@rzg.mpg.de>
|
Manuel Panea <Manuel.Panea@rzg.mpg.de>
|
||||||
Marcio Teixeira <marciot@users.sourceforge.net>
|
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>
|
2006-01-21 Jochen Eisinger <jochen@penguin-breeder.org>
|
||||||
|
|
||||||
* doc/descriptions/mustek_pp.desc: Cybercom is a CIS scanner
|
* 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,
|
* backend/fujitsu.[ch], backend/fujitsu-scsi.h: update to v1.0.43,
|
||||||
add model-specific code to init_vpd for M3099, clean some noise
|
add model-specific code to init_vpd for M3099, clean some noise
|
||||||
* doc/descriptions/fujitsu.desc:
|
* doc/descriptions/fujitsu.desc: version number update
|
||||||
version number update
|
|
||||||
|
|
||||||
2006-09-18 Stephane Voltz <stef.dev@free.fr>
|
2006-09-18 Stephane Voltz <stef.dev@free.fr>
|
||||||
|
|
||||||
|
|
@ -189,8 +200,7 @@
|
||||||
|
|
||||||
* backend/fujitsu.c: update to v1.0.42,
|
* backend/fujitsu.c: update to v1.0.42,
|
||||||
fix bug in get_hardware_status (#303798)
|
fix bug in get_hardware_status (#303798)
|
||||||
* doc/descriptions/fujitsu.desc:
|
* doc/descriptions/fujitsu.desc: version number update
|
||||||
version number update
|
|
||||||
|
|
||||||
2006-08-29 Gerhard Jaeger <gerhard@gjaeger.de>
|
2006-08-29 Gerhard Jaeger <gerhard@gjaeger.de>
|
||||||
|
|
||||||
|
|
@ -206,8 +216,7 @@
|
||||||
* backend/fujitsu.c backend/fujitsu-scsi.h: update to v1.0.41,
|
* backend/fujitsu.c backend/fujitsu-scsi.h: update to v1.0.41,
|
||||||
do_usb_cmd() returns io error on cmd/out/status/rs EOF,
|
do_usb_cmd() returns io error on cmd/out/status/rs EOF,
|
||||||
fix bug in MS buffer/prepick scsi data block
|
fix bug in MS buffer/prepick scsi data block
|
||||||
* doc/descriptions/fujitsu.desc:
|
* doc/descriptions/fujitsu.desc: version number update
|
||||||
version number update
|
|
||||||
|
|
||||||
2006-08-28 Stephane Voltz <stefdev@modulonet.fr>
|
2006-08-28 Stephane Voltz <stefdev@modulonet.fr>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,7 @@
|
||||||
scanners.
|
scanners.
|
||||||
|
|
||||||
2003-11-04 m. allan noah <anoah at pfeiffer dot edu>
|
2003-11-04 m. allan noah <anoah at pfeiffer dot edu>
|
||||||
|
|
||||||
* doc/descriptions/fujitsu.desc: added model "fi-4110EOX2"
|
* doc/descriptions/fujitsu.desc: added model "fi-4110EOX2"
|
||||||
|
|
||||||
2003-11-04 Gerhard Jaeger <gerhard@gjaeger.de>
|
2003-11-04 Gerhard Jaeger <gerhard@gjaeger.de>
|
||||||
|
|
@ -300,8 +301,9 @@
|
||||||
fixed urls.
|
fixed urls.
|
||||||
|
|
||||||
2003-10-19 m. allan noah <anoah at pfeiffer dot edu>
|
2003-10-19 m. allan noah <anoah at pfeiffer dot edu>
|
||||||
|
|
||||||
* backend/fujitsu.c: reverse previous patch. Dont blindly trust
|
* 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>
|
2003-10-19 Julien Blache <jb@jblache.org>
|
||||||
* frontend/saned.c: added subnet support to saned ; added
|
* frontend/saned.c: added subnet support to saned ; added
|
||||||
|
|
@ -347,7 +349,7 @@
|
||||||
* backend/fujitsu.c: memset the device struct and the scsi buff
|
* backend/fujitsu.c: memset the device struct and the scsi buff
|
||||||
when a new device is attached. Submitted by
|
when a new device is attached. Submitted by
|
||||||
Chris Chesney <cchesney at go-integral dot com>.
|
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>
|
2003-10-15 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||||
|
|
||||||
|
|
@ -1228,8 +1230,8 @@
|
||||||
|
|
||||||
2003-06-11 Oliver Schirrmeister <oschirr@abm.de>
|
2003-06-11 Oliver Schirrmeister <oschirr@abm.de>
|
||||||
|
|
||||||
* backend/fujitsu.c fixed bug in that code when a scanner is
|
* backend/fujitsu.c: fixed bug in that code when a scanner is
|
||||||
disconnected (anoah@pfeiffer.edu)
|
disconnected (anoah at pfeiffer dot edu)
|
||||||
|
|
||||||
2003-06-10 Michael Herder <crapsite@gmx.net>
|
2003-06-10 Michael Herder <crapsite@gmx.net>
|
||||||
|
|
||||||
|
|
@ -1282,10 +1284,10 @@
|
||||||
|
|
||||||
2003-06-06 Oliver Schirrmeister <oschirr@abm.de>
|
2003-06-06 Oliver Schirrmeister <oschirr@abm.de>
|
||||||
|
|
||||||
* backend/fujitsu.h backend/fujitsu.c doc/descriptions/fujitsu.desc
|
* backend/fujitsu.h backend/fujitsu.c doc/descriptions/fujitsu.desc:
|
||||||
path from anoah@pfeiffer.edu:
|
|
||||||
remove SP15 code
|
remove SP15 code
|
||||||
sane_open actually opens the device you request
|
sane_open actually opens the device you request
|
||||||
|
from (anoah at pfeiffer dot edu)
|
||||||
|
|
||||||
2003-06-05 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
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'
|
* there is also 'descriptor block' & 'vendor-specific block'
|
||||||
* but fujitsu seems not to use these */
|
* 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[] = {
|
static unsigned char mode_select_8byteC[] = {
|
||||||
0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x06, 0x00, 0x00, 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)
|
#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_DEFAULT 0
|
||||||
#define MSEL_OFF 2
|
#define MSEL_OFF 2
|
||||||
#define MSEL_ON 3
|
#define MSEL_ON 3
|
||||||
|
|
|
||||||
|
|
@ -226,7 +226,7 @@
|
||||||
- rewrite do_*_cmd functions to handle short reads
|
- rewrite do_*_cmd functions to handle short reads
|
||||||
and to use ptr to return read in length
|
and to use ptr to return read in length
|
||||||
- new init_user function split from init_model
|
- 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 buffer (s.scipioni AT harvardgroup DOT it)
|
||||||
- support MS prepick
|
- support MS prepick
|
||||||
- read only 1 byte of mode sense output
|
- read only 1 byte of mode sense output
|
||||||
|
|
@ -237,6 +237,11 @@
|
||||||
- fix bug in get_hardware_status (#303798)
|
- fix bug in get_hardware_status (#303798)
|
||||||
V 1.0.43 2006-09-19, MAN
|
V 1.0.43 2006-09-19, MAN
|
||||||
- add model-specific code to init_vpd for M3099
|
- 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
|
SANE FLOW DIAGRAM
|
||||||
|
|
||||||
|
|
@ -297,7 +302,7 @@
|
||||||
#include "fujitsu.h"
|
#include "fujitsu.h"
|
||||||
|
|
||||||
#define DEBUG 1
|
#define DEBUG 1
|
||||||
#define BUILD 43
|
#define BUILD 44
|
||||||
|
|
||||||
/* values for SANE_DEBUG_FUJITSU env var:
|
/* values for SANE_DEBUG_FUJITSU env var:
|
||||||
- errors 5
|
- errors 5
|
||||||
|
|
@ -890,7 +895,7 @@ init_vpd (struct fujitsu *s)
|
||||||
memcpy(buffer+0x19,buff_VPD_M3097.cmd,buff_VPD_M3097.size);
|
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.
|
/* This scanner supports vital product data.
|
||||||
* Use this data to set dpi-lists etc. */
|
* Use this data to set dpi-lists etc. */
|
||||||
|
|
@ -1152,7 +1157,7 @@ init_vpd (struct fujitsu *s)
|
||||||
/*FIXME no vendor vpd, set some defaults? */
|
/*FIXME no vendor vpd, set some defaults? */
|
||||||
else{
|
else{
|
||||||
DBG (5, "init_vpd: Your scanner supports only partial VPD?\n");
|
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");
|
DBG (5, "init_vpd: with details of your scanner model.\n");
|
||||||
ret = SANE_STATUS_INVAL;
|
ret = SANE_STATUS_INVAL;
|
||||||
}
|
}
|
||||||
|
|
@ -1160,7 +1165,7 @@ init_vpd (struct fujitsu *s)
|
||||||
/*FIXME no vpd, set some defaults? */
|
/*FIXME no vpd, set some defaults? */
|
||||||
else{
|
else{
|
||||||
DBG (5, "init_vpd: Your scanner does not support VPD?\n");
|
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");
|
DBG (5, "init_vpd: with details of your scanner model.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1410,6 +1415,14 @@ init_model (struct fujitsu *s)
|
||||||
/* lies */
|
/* lies */
|
||||||
s->adbits = 8;
|
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")
|
else if (strstr (s->product_name, "fi-4750")
|
||||||
|| strstr (s->product_name, "fi-4340") ) {
|
|| 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 */
|
/* values stored in 1200 dpi units */
|
||||||
/* must be converted to MM for sane */
|
/* must be converted to MM for sane */
|
||||||
s->br_x_range.min = SCANNER_UNIT_TO_FIXED_MM(s->min_x);
|
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;
|
s->br_x_range.quant = MM_PER_UNIT_FIX;
|
||||||
|
|
||||||
opt->name = SANE_NAME_SCAN_BR_X;
|
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 */
|
/* values stored in 1200 dpi units */
|
||||||
/* must be converted to MM for sane */
|
/* must be converted to MM for sane */
|
||||||
s->br_y_range.min = SCANNER_UNIT_TO_FIXED_MM(s->min_y);
|
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;
|
s->br_y_range.quant = MM_PER_UNIT_FIX;
|
||||||
|
|
||||||
opt->name = SANE_NAME_SCAN_BR_Y;
|
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;
|
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*/
|
/*sleep time*/
|
||||||
if(option==OPT_SLEEP_TIME){
|
if(option==OPT_SLEEP_TIME){
|
||||||
s->sleep_time_range.min = 0;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_INT;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status && s->has_imprinter)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status || s->ghs_in_rs)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_INT;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_INT;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_INT;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->has_cmd_hw_status && s->has_imprinter)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_INT;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->ghs_in_rs)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
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->type = SANE_TYPE_BOOL;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
if (s->ghs_in_rs)
|
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
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
opt->cap = SANE_CAP_INACTIVE;
|
||||||
}
|
}
|
||||||
|
|
@ -2791,6 +2842,20 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
|
||||||
}
|
}
|
||||||
return SANE_STATUS_GOOD;
|
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:
|
case OPT_SLEEP_TIME:
|
||||||
*val_p = s->sleep_time;
|
*val_p = s->sleep_time;
|
||||||
return SANE_STATUS_GOOD;
|
return SANE_STATUS_GOOD;
|
||||||
|
|
@ -3164,6 +3229,18 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
|
||||||
else
|
else
|
||||||
return SANE_STATUS_GOOD;
|
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:
|
case OPT_SLEEP_TIME:
|
||||||
s->sleep_time = val_c;
|
s->sleep_time = val_c;
|
||||||
return set_sleep_mode(s);
|
return set_sleep_mode(s);
|
||||||
|
|
@ -3341,7 +3418,7 @@ get_hardware_status (struct fujitsu *s)
|
||||||
static SANE_Status
|
static SANE_Status
|
||||||
send_lut (struct fujitsu *s)
|
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;
|
unsigned char * p = send_lutC+S_lut_data_offset;
|
||||||
double b, slope, offset;
|
double b, slope, offset;
|
||||||
|
|
||||||
|
|
@ -3390,12 +3467,13 @@ send_lut (struct fujitsu *s)
|
||||||
|
|
||||||
hexdump(15,"LUT:",send_lutC+S_lut_data_offset,bytes);
|
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,
|
s, 1, 0,
|
||||||
sendB.cmd, sendB.size,
|
sendB.cmd, sendB.size,
|
||||||
send_lutC, S_lut_data_offset+bytes,
|
send_lutC, S_lut_data_offset+bytes,
|
||||||
NULL, NULL
|
NULL, NULL
|
||||||
);
|
);*/
|
||||||
|
|
||||||
DBG (10, "send_lut: finish\n");
|
DBG (10, "send_lut: finish\n");
|
||||||
|
|
||||||
|
|
@ -3579,6 +3657,29 @@ mode_select_prepick (struct fujitsu *s)
|
||||||
return ret;
|
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
|
* @@ Section 4 - SANE scanning functions
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,8 @@ scsi FUJITSU
|
||||||
#usb VENDORID PRODUCTID
|
#usb VENDORID PRODUCTID
|
||||||
|
|
||||||
# NOTE: if you have to add your device here- please send the id and model
|
# 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
|
# to the author via email, so it can be included in next version. kitno455 at
|
||||||
# pfeiffer dot edu - with Fujitsu in the subject line
|
# gmail dot com - with Fujitsu in the subject line
|
||||||
|
|
||||||
#fi-4x20C
|
#fi-4x20C
|
||||||
usb 0x04c5 0x1041
|
usb 0x04c5 0x1041
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ enum fujitsu_Option
|
||||||
OPT_DROPOUT_COLOR,
|
OPT_DROPOUT_COLOR,
|
||||||
OPT_BUFF_MODE,
|
OPT_BUFF_MODE,
|
||||||
OPT_PREPICK,
|
OPT_PREPICK,
|
||||||
|
OPT_OVERSCAN,
|
||||||
OPT_SLEEP_TIME,
|
OPT_SLEEP_TIME,
|
||||||
OPT_DUPLEX_OFFSET,
|
OPT_DUPLEX_OFFSET,
|
||||||
OPT_GREEN_OFFSET,
|
OPT_GREEN_OFFSET,
|
||||||
|
|
@ -281,6 +282,7 @@ struct fujitsu
|
||||||
SANE_String_Const lamp_color_list[5];
|
SANE_String_Const lamp_color_list[5];
|
||||||
SANE_String_Const buff_mode_list[4];
|
SANE_String_Const buff_mode_list[4];
|
||||||
SANE_String_Const prepick_list[4];
|
SANE_String_Const prepick_list[4];
|
||||||
|
SANE_String_Const overscan_list[4];
|
||||||
SANE_Range sleep_time_range;
|
SANE_Range sleep_time_range;
|
||||||
SANE_Range duplex_offset_range;
|
SANE_Range duplex_offset_range;
|
||||||
SANE_Range green_offset_range;
|
SANE_Range green_offset_range;
|
||||||
|
|
@ -318,6 +320,7 @@ struct fujitsu
|
||||||
int dropout_color;
|
int dropout_color;
|
||||||
int buff_mode;
|
int buff_mode;
|
||||||
int prepick;
|
int prepick;
|
||||||
|
int overscan;
|
||||||
int lamp_color;
|
int lamp_color;
|
||||||
int sleep_time;
|
int sleep_time;
|
||||||
int duplex_offset;
|
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_prepick (struct fujitsu *s);
|
||||||
|
|
||||||
|
static SANE_Status mode_select_overscan (struct fujitsu *s);
|
||||||
|
|
||||||
static SANE_Status set_sleep_mode(struct fujitsu *s);
|
static SANE_Status set_sleep_mode(struct fujitsu *s);
|
||||||
|
|
||||||
int get_current_side (struct fujitsu *s);
|
int get_current_side (struct fujitsu *s);
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
:backend "fujitsu" ; name of backend
|
:backend "fujitsu" ; name of backend
|
||||||
:url "http://www2.pfeiffer.edu/~anoah/fujitsu/"
|
: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)
|
:manpage "sane-fujitsu" ; name of manpage (if it exists)
|
||||||
:comment "Backend re-written for SANE release 1.0.18, see sane-fujitsu manpage"
|
:comment "Backend re-written for SANE release 1.0.18, see sane-fujitsu manpage"
|
||||||
:devicetype :scanner ; start of a list of devices....
|
: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
|
.IX sane-fujitsu
|
||||||
|
|
||||||
.SH NAME
|
.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>
|
fi-4220C and basic USB support: Ron Cemer <ron a t roncemer d o t com>
|
||||||
.br
|
.br
|
||||||
fi-4120, fi-series color support, backend re-write, current maintainer:
|
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"
|
.SH "SEE ALSO"
|
||||||
sane(7),
|
sane(7),
|
||||||
|
|
@ -269,5 +269,5 @@ sane-sp15c(5),
|
||||||
sane-avision(5)
|
sane-avision(5)
|
||||||
|
|
||||||
.SH AUTHOR
|
.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