diff --git a/AUTHORS b/AUTHORS index f57b82e77..5f63321ed 100644 --- a/AUTHORS +++ b/AUTHORS @@ -173,7 +173,7 @@ Karsten Festag Kazuhiro Sasayama Kazuya Fukuda Kevin Charter -m. allan noah +m. allan noah M.F. Manuel Panea Marcio Teixeira diff --git a/ChangeLog b/ChangeLog index 2d07b1e16..c3d94b384 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2007-01-26 m. allan noah + + * 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 * 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 @@ -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 @@ -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 diff --git a/ChangeLog-1.0.13 b/ChangeLog-1.0.13 index c338e6e22..a3f2705ab 100644 --- a/ChangeLog-1.0.13 +++ b/ChangeLog-1.0.13 @@ -104,6 +104,7 @@ scanners. 2003-11-04 m. allan noah + * doc/descriptions/fujitsu.desc: added model "fi-4110EOX2" 2003-11-04 Gerhard Jaeger @@ -300,8 +301,9 @@ fixed urls. 2003-10-19 m. allan noah + * backend/fujitsu.c: reverse previous patch. Dont blindly trust - code from the backend maintainer :) + code from the backend maintainer :) 2003-10-19 Julien Blache * 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 . - Initialized a couple vars in the 3091 init routines. + Initialized a couple vars in the 3091 init routines. 2003-10-15 Henning Meier-Geinitz @@ -1228,8 +1230,8 @@ 2003-06-11 Oliver Schirrmeister - * 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 @@ -1282,10 +1284,10 @@ 2003-06-06 Oliver Schirrmeister - * 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 diff --git a/backend/fujitsu-scsi.h b/backend/fujitsu-scsi.h index 812e3bfd0..c3f6912d4 100644 --- a/backend/fujitsu-scsi.h +++ b/backend/fujitsu-scsi.h @@ -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 diff --git a/backend/fujitsu.c b/backend/fujitsu.c index 6badbcb3c..7f02b621b 100644 --- a/backend/fujitsu.c +++ b/backend/fujitsu.c @@ -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 diff --git a/backend/fujitsu.conf.in b/backend/fujitsu.conf.in index 3a48eb76f..649ea94c7 100644 --- a/backend/fujitsu.conf.in +++ b/backend/fujitsu.conf.in @@ -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 diff --git a/backend/fujitsu.h b/backend/fujitsu.h index 089471bd9..f8a34e29c 100644 --- a/backend/fujitsu.h +++ b/backend/fujitsu.h @@ -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); diff --git a/doc/descriptions/fujitsu.desc b/doc/descriptions/fujitsu.desc index 7b81956ae..5216e7f4f 100644 --- a/doc/descriptions/fujitsu.desc +++ b/doc/descriptions/fujitsu.desc @@ -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.... diff --git a/doc/sane-fujitsu.man b/doc/sane-fujitsu.man index ac07826a8..ecc147f70 100644 --- a/doc/sane-fujitsu.man +++ b/doc/sane-fujitsu.man @@ -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 .br fi-4120, fi-series color support, backend re-write, current maintainer: - M. Allan Noah: + m. allan noah: .SH "SEE ALSO" sane(7), @@ -269,5 +269,5 @@ sane-sp15c(5), sane-avision(5) .SH AUTHOR -M. Allan Noah: +m. allan noah: