kopia lustrzana https://gitlab.com/sane-project/backends
* doc/descriptions/fujitsu.desc, backend/fujitsu.conf.in,
backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v79 - add usb ids for several models - print additional hardware capability bits - detect front-side endorser - disable endorser-side controls if only one side installed - add quirks for fi-6x70merge-requests/1/head
rodzic
7274bfc500
commit
48e23ca24e
13
ChangeLog
13
ChangeLog
|
@ -1,10 +1,19 @@
|
||||||
|
2008-10-01 m. allan noah <kitno455 a t gmail d o t com>
|
||||||
|
* doc/descriptions/fujitsu.desc, backend/fujitsu.conf.in,
|
||||||
|
backend/fujitsu.[ch], backend/fujitsu-scsi.h: backend v79
|
||||||
|
- add usb ids for several models
|
||||||
|
- print additional hardware capability bits
|
||||||
|
- detect front-side endorser
|
||||||
|
- disable endorser-side controls if only one side installed
|
||||||
|
- add quirks for fi-6x70
|
||||||
|
|
||||||
2008-10-01 m. allan noah <kitno455 a t gmail d o t com>
|
2008-10-01 m. allan noah <kitno455 a t gmail d o t com>
|
||||||
* backend/epjitsu.[ch]: backend v16:
|
* backend/epjitsu.[ch]: backend v16:
|
||||||
- split fill_frontback_buffers_S300 into 3 functions
|
- split fill_frontback_buffers_S300 into 3 functions
|
||||||
- enable threshold_curve option
|
- enable threshold-curve option
|
||||||
- add 1-D dynamic binary thresholding code
|
- add 1-D dynamic binary thresholding code
|
||||||
- remove y-resolution option
|
- remove y-resolution option
|
||||||
- pad 225x200 data to 255x225
|
- pad 225x200 data to 225x225
|
||||||
|
|
||||||
2008-10-01 Gerhard Jaeger <gerhard@gjaeger.de>
|
2008-10-01 Gerhard Jaeger <gerhard@gjaeger.de>
|
||||||
* doc/descriptions/plustek.desc: Added entry for UT12 devid 0x0013
|
* doc/descriptions/plustek.desc: Added entry for UT12 devid 0x0013
|
||||||
|
|
|
@ -193,15 +193,18 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
|
||||||
#define get_IN_multilevel_rgb(in) getbitfield(in+0x1c, 1, 7)
|
#define get_IN_multilevel_rgb(in) getbitfield(in+0x1c, 1, 7)
|
||||||
|
|
||||||
/* vendor unique section */
|
/* vendor unique section */
|
||||||
#define get_IN_operator_panel(in) getbitfield(in+0x20, 1, 1)
|
|
||||||
#define get_IN_barcode(in) getbitfield(in+0x20, 1, 2)
|
|
||||||
#define get_IN_endorser(in) getbitfield(in+0x20, 1, 3)
|
|
||||||
#define get_IN_duplex(in) getbitfield(in+0x20, 1, 4)
|
|
||||||
#define get_IN_transparency(in) getbitfield(in+0x20, 1, 5)
|
|
||||||
#define get_IN_flatbed(in) getbitfield(in+0x20, 1, 6)
|
|
||||||
#define get_IN_adf(in) getbitfield(in+0x20, 1, 7)
|
#define get_IN_adf(in) getbitfield(in+0x20, 1, 7)
|
||||||
|
#define get_IN_flatbed(in) getbitfield(in+0x20, 1, 6)
|
||||||
|
#define get_IN_transparency(in) getbitfield(in+0x20, 1, 5)
|
||||||
|
#define get_IN_duplex(in) getbitfield(in+0x20, 1, 4)
|
||||||
|
#define get_IN_endorser_b(in) getbitfield(in+0x20, 1, 3)
|
||||||
|
#define get_IN_barcode(in) getbitfield(in+0x20, 1, 2)
|
||||||
|
#define get_IN_operator_panel(in) getbitfield(in+0x20, 1, 1)
|
||||||
|
#define get_IN_endorser_f(in) getbitfield(in+0x20, 1, 0)
|
||||||
|
|
||||||
|
#define get_IN_unused(in) getbitfield(in+0x21, 0x0f, 4)
|
||||||
#define get_IN_adbits(in) getbitfield(in+0x21, 0x0f, 0)
|
#define get_IN_adbits(in) getbitfield(in+0x21, 0x0f, 0)
|
||||||
|
|
||||||
#define get_IN_buffer_bytes(in) getnbyte(in + 0x22, 4)
|
#define get_IN_buffer_bytes(in) getnbyte(in + 0x22, 4)
|
||||||
|
|
||||||
/*supported scsi commands*/
|
/*supported scsi commands*/
|
||||||
|
|
|
@ -382,6 +382,12 @@
|
||||||
- recent model names (fi-6xxx) dont end in 'C'
|
- recent model names (fi-6xxx) dont end in 'C'
|
||||||
- simplify flatbed area overrides
|
- simplify flatbed area overrides
|
||||||
- call scanner_control to change source during sane_start
|
- call scanner_control to change source during sane_start
|
||||||
|
v79 2008-10-01, MAN
|
||||||
|
- add usb ids for several models
|
||||||
|
- print additional hardware capability bits
|
||||||
|
- detect front-side endorser
|
||||||
|
- disable endorser-side controls if only one side installed
|
||||||
|
- add quirks for fi-6x70
|
||||||
|
|
||||||
SANE FLOW DIAGRAM
|
SANE FLOW DIAGRAM
|
||||||
|
|
||||||
|
@ -442,7 +448,7 @@
|
||||||
#include "fujitsu.h"
|
#include "fujitsu.h"
|
||||||
|
|
||||||
#define DEBUG 1
|
#define DEBUG 1
|
||||||
#define BUILD 78
|
#define BUILD 79
|
||||||
|
|
||||||
/* values for SANE_DEBUG_FUJITSU env var:
|
/* values for SANE_DEBUG_FUJITSU env var:
|
||||||
- errors 5
|
- errors 5
|
||||||
|
@ -676,6 +682,9 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
|
||||||
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x1042'\n");
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x1042'\n");
|
||||||
sanei_usb_attach_matching_devices("usb 0x04c5 0x1042", attach_one_usb);
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x1042", attach_one_usb);
|
||||||
|
|
||||||
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x1078'\n");
|
||||||
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x1078", attach_one_usb);
|
||||||
|
|
||||||
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x1095'\n");
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x1095'\n");
|
||||||
sanei_usb_attach_matching_devices("usb 0x04c5 0x1095", attach_one_usb);
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x1095", attach_one_usb);
|
||||||
|
|
||||||
|
@ -694,6 +703,9 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
|
||||||
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x10af'\n");
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x10af'\n");
|
||||||
sanei_usb_attach_matching_devices("usb 0x04c5 0x10af", attach_one_usb);
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x10af", attach_one_usb);
|
||||||
|
|
||||||
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x10cf'\n");
|
||||||
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x10cf", attach_one_usb);
|
||||||
|
|
||||||
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x10e0'\n");
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x10e0'\n");
|
||||||
sanei_usb_attach_matching_devices("usb 0x04c5 0x10e0", attach_one_usb);
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x10e0", attach_one_usb);
|
||||||
|
|
||||||
|
@ -703,6 +715,9 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
|
||||||
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x10e2'\n");
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x10e2'\n");
|
||||||
sanei_usb_attach_matching_devices("usb 0x04c5 0x10e2", attach_one_usb);
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x10e2", attach_one_usb);
|
||||||
|
|
||||||
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x10e6'\n");
|
||||||
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x10e6", attach_one_usb);
|
||||||
|
|
||||||
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x10e7'\n");
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x10e7'\n");
|
||||||
sanei_usb_attach_matching_devices("usb 0x04c5 0x10e7", attach_one_usb);
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x10e7", attach_one_usb);
|
||||||
|
|
||||||
|
@ -721,6 +736,9 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
|
||||||
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x114d'\n");
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x114d'\n");
|
||||||
sanei_usb_attach_matching_devices("usb 0x04c5 0x114d", attach_one_usb);
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x114d", attach_one_usb);
|
||||||
|
|
||||||
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x114e'\n");
|
||||||
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x114e", attach_one_usb);
|
||||||
|
|
||||||
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x114f'\n");
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x114f'\n");
|
||||||
sanei_usb_attach_matching_devices("usb 0x04c5 0x114f", attach_one_usb);
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x114f", attach_one_usb);
|
||||||
|
|
||||||
|
@ -729,6 +747,15 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
|
||||||
|
|
||||||
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x1155'\n");
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x1155'\n");
|
||||||
sanei_usb_attach_matching_devices("usb 0x04c5 0x1155", attach_one_usb);
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x1155", attach_one_usb);
|
||||||
|
|
||||||
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x1174'\n");
|
||||||
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x1174", attach_one_usb);
|
||||||
|
|
||||||
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x1176'\n");
|
||||||
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x1176", attach_one_usb);
|
||||||
|
|
||||||
|
DBG (15, "sane_get_devices: looking for 'usb 0x04c5 0x1178'\n");
|
||||||
|
sanei_usb_attach_matching_devices("usb 0x04c5 0x1178", attach_one_usb);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*delete missing scanners from list*/
|
/*delete missing scanners from list*/
|
||||||
|
@ -1263,27 +1290,32 @@ init_vpd (struct fujitsu *s)
|
||||||
|
|
||||||
DBG (15, "vendor options\n");
|
DBG (15, "vendor options\n");
|
||||||
|
|
||||||
s->has_operator_panel = get_IN_operator_panel(in);
|
s->has_adf = get_IN_adf(in);
|
||||||
DBG (15, " operator panel: %d\n", s->has_operator_panel);
|
DBG (15, " adf: %d\n", s->has_adf);
|
||||||
|
|
||||||
s->has_barcode = get_IN_barcode(in);
|
s->has_flatbed = get_IN_flatbed(in);
|
||||||
DBG (15, " barcode: %d\n", s->has_barcode);
|
DBG (15, " flatbed: %d\n", s->has_flatbed);
|
||||||
|
|
||||||
s->has_endorser = get_IN_endorser(in);
|
s->has_transparency = get_IN_transparency(in);
|
||||||
DBG (15, " endorser: %d\n", s->has_endorser);
|
DBG (15, " transparency: %d\n", s->has_transparency);
|
||||||
|
|
||||||
s->has_duplex = get_IN_duplex(in);
|
s->has_duplex = get_IN_duplex(in);
|
||||||
s->has_back = s->has_duplex;
|
s->has_back = s->has_duplex;
|
||||||
DBG (15, " duplex: %d\n", s->has_duplex);
|
DBG (15, " duplex: %d\n", s->has_duplex);
|
||||||
|
|
||||||
s->has_transparency = get_IN_transparency(in);
|
s->has_endorser_b = get_IN_endorser_b(in);
|
||||||
DBG (15, " transparency: %d\n", s->has_transparency);
|
DBG (15, " back endorser: %d\n", s->has_endorser_b);
|
||||||
|
|
||||||
s->has_flatbed = get_IN_flatbed(in);
|
s->has_barcode = get_IN_barcode(in);
|
||||||
DBG (15, " flatbed: %d\n", s->has_flatbed);
|
DBG (15, " barcode: %d\n", s->has_barcode);
|
||||||
|
|
||||||
s->has_adf = get_IN_adf(in);
|
s->has_operator_panel = get_IN_operator_panel(in);
|
||||||
DBG (15, " adf: %d\n", s->has_adf);
|
DBG (15, " operator panel: %d\n", s->has_operator_panel);
|
||||||
|
|
||||||
|
s->has_endorser_f = get_IN_endorser_f(in);
|
||||||
|
DBG (15, " front endorser: %d\n", s->has_endorser_f);
|
||||||
|
|
||||||
|
DBG (15, " unused caps: %d\n", get_IN_unused(in));
|
||||||
|
|
||||||
s->adbits = get_IN_adbits(in);
|
s->adbits = get_IN_adbits(in);
|
||||||
DBG (15, " A/D bits: %d\n",s->adbits);
|
DBG (15, " A/D bits: %d\n",s->adbits);
|
||||||
|
@ -1900,6 +1932,13 @@ init_model (struct fujitsu *s)
|
||||||
s->max_y_fb = 14173;
|
s->max_y_fb = 14173;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (strstr (s->model_name, "fi-6670")
|
||||||
|
|| strstr (s->model_name, "fi-6770") ) {
|
||||||
|
|
||||||
|
/* weirdness */
|
||||||
|
s->even_scan_line = 1;
|
||||||
|
}
|
||||||
|
|
||||||
DBG (10, "init_model: finish\n");
|
DBG (10, "init_model: finish\n");
|
||||||
|
|
||||||
return SANE_STATUS_GOOD;
|
return SANE_STATUS_GOOD;
|
||||||
|
@ -1965,6 +2004,9 @@ init_user (struct fujitsu *s)
|
||||||
s->u_endorser_bits=16;
|
s->u_endorser_bits=16;
|
||||||
s->u_endorser_step=1;
|
s->u_endorser_step=1;
|
||||||
s->u_endorser_side=ED_back;
|
s->u_endorser_side=ED_back;
|
||||||
|
if(s->has_endorser_f){
|
||||||
|
s->u_endorser_side=ED_front;
|
||||||
|
}
|
||||||
s->u_endorser_dir=DIR_TTB;
|
s->u_endorser_dir=DIR_TTB;
|
||||||
strcpy((char *)s->u_endorser_string,"%05ud");
|
strcpy((char *)s->u_endorser_string,"%05ud");
|
||||||
|
|
||||||
|
@ -3456,7 +3498,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
||||||
opt->constraint_type = SANE_CONSTRAINT_NONE;
|
opt->constraint_type = SANE_CONSTRAINT_NONE;
|
||||||
|
|
||||||
/*flaming hack to get scanimage to hide group*/
|
/*flaming hack to get scanimage to hide group*/
|
||||||
if (!s->has_endorser)
|
if ( !(s->has_endorser_f || s->has_endorser_b) )
|
||||||
opt->type = SANE_TYPE_BOOL;
|
opt->type = SANE_TYPE_BOOL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3468,7 +3510,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
opt->size = sizeof(SANE_Word);
|
opt->size = sizeof(SANE_Word);
|
||||||
|
|
||||||
if (s->has_endorser)
|
if (s->has_endorser_f || s->has_endorser_b)
|
||||||
opt->cap= SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
opt->cap= SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||||
else
|
else
|
||||||
opt->cap = SANE_CAP_INACTIVE;
|
opt->cap = SANE_CAP_INACTIVE;
|
||||||
|
@ -3485,7 +3527,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
||||||
opt->size = sizeof(SANE_Word);
|
opt->size = sizeof(SANE_Word);
|
||||||
|
|
||||||
/*old type cant do this?*/
|
/*old type cant do this?*/
|
||||||
if (s->has_endorser && s->endorser_type != ET_OLD){
|
if ((s->has_endorser_f || s->has_endorser_b) && s->endorser_type != ET_OLD){
|
||||||
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||||
if(!s->u_endorser)
|
if(!s->u_endorser)
|
||||||
opt->cap |= SANE_CAP_INACTIVE;
|
opt->cap |= SANE_CAP_INACTIVE;
|
||||||
|
@ -3509,7 +3551,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
opt->size = sizeof(SANE_Word);
|
opt->size = sizeof(SANE_Word);
|
||||||
|
|
||||||
if (s->has_endorser){
|
if (s->has_endorser_f || s->has_endorser_b){
|
||||||
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||||
if(!s->u_endorser)
|
if(!s->u_endorser)
|
||||||
opt->cap |= SANE_CAP_INACTIVE;
|
opt->cap |= SANE_CAP_INACTIVE;
|
||||||
|
@ -3533,7 +3575,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
opt->size = sizeof(SANE_Word);
|
opt->size = sizeof(SANE_Word);
|
||||||
|
|
||||||
if (s->has_endorser){
|
if (s->has_endorser_f || s->has_endorser_b){
|
||||||
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||||
if(!s->u_endorser)
|
if(!s->u_endorser)
|
||||||
opt->cap |= SANE_CAP_INACTIVE;
|
opt->cap |= SANE_CAP_INACTIVE;
|
||||||
|
@ -3557,7 +3599,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
||||||
opt->unit = SANE_UNIT_MM;
|
opt->unit = SANE_UNIT_MM;
|
||||||
opt->size = sizeof(SANE_Word);
|
opt->size = sizeof(SANE_Word);
|
||||||
|
|
||||||
if (s->has_endorser){
|
if (s->has_endorser_f || s->has_endorser_b){
|
||||||
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||||
if(!s->u_endorser)
|
if(!s->u_endorser)
|
||||||
opt->cap |= SANE_CAP_INACTIVE;
|
opt->cap |= SANE_CAP_INACTIVE;
|
||||||
|
@ -3583,7 +3625,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
|
|
||||||
/*only newest can do this?*/
|
/*only newest can do this?*/
|
||||||
if (s->has_endorser && s->endorser_type == ET_40){
|
if ((s->has_endorser_f || s->has_endorser_b) && s->endorser_type == ET_40){
|
||||||
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||||
if(!s->u_endorser)
|
if(!s->u_endorser)
|
||||||
opt->cap |= SANE_CAP_INACTIVE;
|
opt->cap |= SANE_CAP_INACTIVE;
|
||||||
|
@ -3611,7 +3653,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
||||||
opt->type = SANE_TYPE_STRING;
|
opt->type = SANE_TYPE_STRING;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
|
|
||||||
if (s->has_endorser){
|
if (s->has_endorser_f || s->has_endorser_b){
|
||||||
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||||
if(!s->u_endorser)
|
if(!s->u_endorser)
|
||||||
opt->cap |= SANE_CAP_INACTIVE;
|
opt->cap |= SANE_CAP_INACTIVE;
|
||||||
|
@ -3636,7 +3678,8 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
||||||
opt->type = SANE_TYPE_STRING;
|
opt->type = SANE_TYPE_STRING;
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
|
|
||||||
if (s->has_endorser){
|
/* only show if both endorsers are installed */
|
||||||
|
if (s->has_endorser_f && s->has_endorser_b){
|
||||||
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||||
if(!s->u_endorser)
|
if(!s->u_endorser)
|
||||||
opt->cap |= SANE_CAP_INACTIVE;
|
opt->cap |= SANE_CAP_INACTIVE;
|
||||||
|
@ -3662,7 +3705,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
||||||
opt->unit = SANE_UNIT_NONE;
|
opt->unit = SANE_UNIT_NONE;
|
||||||
opt->size = s->endorser_string_len + 1;
|
opt->size = s->endorser_string_len + 1;
|
||||||
|
|
||||||
if (s->has_endorser){
|
if (s->has_endorser_f || s->has_endorser_b){
|
||||||
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
opt->cap=SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
|
||||||
if(!s->u_endorser)
|
if(!s->u_endorser)
|
||||||
opt->cap |= SANE_CAP_INACTIVE;
|
opt->cap |= SANE_CAP_INACTIVE;
|
||||||
|
@ -3844,7 +3887,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
||||||
opt->desc = "Imprinter ink running low";
|
opt->desc = "Imprinter ink running low";
|
||||||
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_endorser)
|
if (s->has_cmd_hw_status && (s->has_endorser_f || s->has_endorser_b))
|
||||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | 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;
|
||||||
|
@ -3892,7 +3935,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
||||||
opt->desc = "Imprinter ink level";
|
opt->desc = "Imprinter ink level";
|
||||||
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_endorser)
|
if (s->has_cmd_hw_status && (s->has_endorser_f || s->has_endorser_b))
|
||||||
opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | 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;
|
||||||
|
@ -5945,7 +5988,7 @@ endorser(struct fujitsu *s)
|
||||||
|
|
||||||
memset(out,0,outLen);
|
memset(out,0,outLen);
|
||||||
|
|
||||||
if (s->has_endorser) {
|
if (s->has_endorser_f || s->has_endorser_b){
|
||||||
|
|
||||||
set_ED_endorser_data_id(out,0);
|
set_ED_endorser_data_id(out,0);
|
||||||
if(s->u_endorser){
|
if(s->u_endorser){
|
||||||
|
|
|
@ -27,11 +27,16 @@ scsi FUJITSU
|
||||||
usb 0x04c5 0x1041
|
usb 0x04c5 0x1041
|
||||||
usb 0x04c5 0x1042
|
usb 0x04c5 0x1042
|
||||||
|
|
||||||
|
#fi-4530C
|
||||||
|
usb 0x04c5 0x1078
|
||||||
|
|
||||||
#fi-5750C
|
#fi-5750C
|
||||||
usb 0x04c5 0x1095
|
usb 0x04c5 0x1095
|
||||||
|
|
||||||
#fi-5110xxx
|
#fi-5110eox/2
|
||||||
usb 0x04c5 0x1096
|
usb 0x04c5 0x1096
|
||||||
|
|
||||||
|
#fi-5110C
|
||||||
usb 0x04c5 0x1097
|
usb 0x04c5 0x1097
|
||||||
|
|
||||||
#fi-5650C
|
#fi-5650C
|
||||||
|
@ -41,6 +46,9 @@ usb 0x04c5 0x10ad
|
||||||
usb 0x04c5 0x10ae
|
usb 0x04c5 0x10ae
|
||||||
usb 0x04c5 0x10af
|
usb 0x04c5 0x10af
|
||||||
|
|
||||||
|
#fi-4340C
|
||||||
|
usb 0x04c5 0x10cf
|
||||||
|
|
||||||
#fi-5x20C
|
#fi-5x20C
|
||||||
usb 0x04c5 0x10e0
|
usb 0x04c5 0x10e0
|
||||||
usb 0x04c5 0x10e1
|
usb 0x04c5 0x10e1
|
||||||
|
@ -48,6 +56,9 @@ usb 0x04c5 0x10e1
|
||||||
#fi-5530C
|
#fi-5530C
|
||||||
usb 0x04c5 0x10e2
|
usb 0x04c5 0x10e2
|
||||||
|
|
||||||
|
#fi-5110eox3
|
||||||
|
usb 0x04c5 0x10e6
|
||||||
|
|
||||||
#fi-5900C
|
#fi-5900C
|
||||||
usb 0x04c5 0x10e7
|
usb 0x04c5 0x10e7
|
||||||
|
|
||||||
|
@ -66,6 +77,9 @@ usb 0x04c5 0x114a
|
||||||
#fi-6140
|
#fi-6140
|
||||||
usb 0x04c5 0x114d
|
usb 0x04c5 0x114d
|
||||||
|
|
||||||
|
#fi-6240
|
||||||
|
usb 0x04c5 0x114e
|
||||||
|
|
||||||
#fi-6130
|
#fi-6130
|
||||||
usb 0x04c5 0x114f
|
usb 0x04c5 0x114f
|
||||||
|
|
||||||
|
@ -74,3 +88,12 @@ usb 0x04c5 0x1150
|
||||||
|
|
||||||
#ScanSnap S510
|
#ScanSnap S510
|
||||||
usb 0x04c5 0x1155
|
usb 0x04c5 0x1155
|
||||||
|
|
||||||
|
#fi-6770
|
||||||
|
usb 0x04c5 0x1174
|
||||||
|
|
||||||
|
#fi-6670
|
||||||
|
usb 0x04c5 0x1176
|
||||||
|
|
||||||
|
#fi-6750
|
||||||
|
usb 0x04c5 0x1178
|
||||||
|
|
|
@ -187,13 +187,14 @@ struct fujitsu
|
||||||
/* --------------------------------------------------------------------- */
|
/* --------------------------------------------------------------------- */
|
||||||
/* immutable values which are set during vndr VPD probing of the scanner */
|
/* immutable values which are set during vndr VPD probing of the scanner */
|
||||||
/* members in order found in scsi data... */
|
/* members in order found in scsi data... */
|
||||||
int has_operator_panel;
|
|
||||||
int has_barcode;
|
|
||||||
int has_endorser;
|
|
||||||
int has_duplex;
|
|
||||||
int has_transparency;
|
|
||||||
int has_flatbed;
|
|
||||||
int has_adf;
|
int has_adf;
|
||||||
|
int has_flatbed;
|
||||||
|
int has_transparency;
|
||||||
|
int has_duplex;
|
||||||
|
int has_endorser_b;
|
||||||
|
int has_barcode;
|
||||||
|
int has_operator_panel;
|
||||||
|
int has_endorser_f;
|
||||||
|
|
||||||
int adbits;
|
int adbits;
|
||||||
int buffer_bytes;
|
int buffer_bytes;
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
:backend "fujitsu" ; name of backend
|
:backend "fujitsu" ; name of backend
|
||||||
:url "http://www.thebility.com/fujitsu/"
|
:url "http://www.thebility.com/fujitsu/"
|
||||||
:version "78" ; version of backend
|
:version "79" ; version of backend
|
||||||
:manpage "sane-fujitsu" ; name of manpage (if it exists)
|
:manpage "sane-fujitsu" ; name of manpage (if it exists)
|
||||||
:comment "Backend updated for SANE release 1.1.0, see sane-fujitsu manpage"
|
:comment "Backend updated for SANE release 1.1.0, see sane-fujitsu manpage"
|
||||||
:devicetype :scanner ; start of a list of devices....
|
:devicetype :scanner ; start of a list of devices....
|
||||||
|
@ -60,15 +60,16 @@
|
||||||
:status :complete
|
:status :complete
|
||||||
:comment "small, recent, discontinued, usb 2.0"
|
:comment "small, recent, discontinued, usb 2.0"
|
||||||
|
|
||||||
:model "fi-5110EOX"
|
:model "fi-5110EOX/2"
|
||||||
:interface "USB"
|
:interface "USB"
|
||||||
:status :complete
|
:status :complete
|
||||||
:usbid "0x04c5" "0x1096"
|
:usbid "0x04c5" "0x1096"
|
||||||
:comment "small, recent, discontinued, no TWAIN driver"
|
:comment "small, recent, discontinued, no TWAIN driver"
|
||||||
|
|
||||||
:model "fi-5110EOX2"
|
:model "fi-5110EOX3"
|
||||||
:interface "USB"
|
:interface "USB"
|
||||||
:status :complete
|
:status :complete
|
||||||
|
:usbid "0x04c5" "0x10e6"
|
||||||
:comment "small, recent, discontinued, no TWAIN driver"
|
:comment "small, recent, discontinued, no TWAIN driver"
|
||||||
|
|
||||||
:model "fi-5110EOXM"
|
:model "fi-5110EOXM"
|
||||||
|
@ -199,6 +200,7 @@
|
||||||
:model "fi-4530C"
|
:model "fi-4530C"
|
||||||
:interface "SCSI USB"
|
:interface "SCSI USB"
|
||||||
:status :complete
|
:status :complete
|
||||||
|
:usbid "0x04c5" "0x1078"
|
||||||
:comment "medium, recent, discontinued"
|
:comment "medium, recent, discontinued"
|
||||||
|
|
||||||
:model "fi-4640S"
|
:model "fi-4640S"
|
||||||
|
@ -215,6 +217,7 @@
|
||||||
; CURRENT MODELS, MEDIUM
|
; CURRENT MODELS, MEDIUM
|
||||||
:model "fi-4340C"
|
:model "fi-4340C"
|
||||||
:interface "SCSI USB"
|
:interface "SCSI USB"
|
||||||
|
:usbid "0x04c5" "0x10cf"
|
||||||
:status :complete
|
:status :complete
|
||||||
:comment "medium, current"
|
:comment "medium, current"
|
||||||
|
|
||||||
|
@ -239,6 +242,7 @@
|
||||||
:model "fi-6240"
|
:model "fi-6240"
|
||||||
:interface "SCSI USB"
|
:interface "SCSI USB"
|
||||||
:status :complete
|
:status :complete
|
||||||
|
:usbid "0x04c5" "0x114f"
|
||||||
:comment "medium, current"
|
:comment "medium, current"
|
||||||
|
|
||||||
;==================================================
|
;==================================================
|
||||||
|
@ -316,21 +320,29 @@
|
||||||
:model "fi-5750C"
|
:model "fi-5750C"
|
||||||
:interface "SCSI USB"
|
:interface "SCSI USB"
|
||||||
:usbid "0x04c5" "0x1095"
|
:usbid "0x04c5" "0x1095"
|
||||||
:status :good
|
:status :complete
|
||||||
:comment "big, current, might need flatbed max area override"
|
:comment "big, current"
|
||||||
|
|
||||||
:model "fi-5900C"
|
:model "fi-5900C"
|
||||||
:interface "SCSI USB"
|
:interface "SCSI USB"
|
||||||
:usbid "0x04c5" "0x10e7"
|
:usbid "0x04c5" "0x10e7"
|
||||||
:status :good
|
:status :complete
|
||||||
:comment "big, current, possibly some multi-feed options unsupported"
|
:comment "big, current"
|
||||||
|
|
||||||
|
:model "fi-6750"
|
||||||
|
:interface "SCSI USB"
|
||||||
|
:status :untested
|
||||||
|
:usbid "0x04c5" "0x1178"
|
||||||
|
:comment "Unreleased lighter duty version of fi-6770?"
|
||||||
|
|
||||||
:model "fi-6670"
|
:model "fi-6670"
|
||||||
:interface "SCSI USB"
|
:interface "SCSI USB"
|
||||||
:status :untested
|
:status :good
|
||||||
:comment "big, current, faster version of fi-5650C?"
|
:usbid "0x04c5" "0x1176"
|
||||||
|
:comment "big, current, might have usb power suspend problems?"
|
||||||
|
|
||||||
:model "fi-6770"
|
:model "fi-6770"
|
||||||
:interface "SCSI USB"
|
:interface "SCSI USB"
|
||||||
:status :untested
|
:status :good
|
||||||
:comment "big, current, faster version of fi-5750C?"
|
:usbid "0x04c5" "0x1174"
|
||||||
|
:comment "big, current, might have usb power suspend problems?"
|
||||||
|
|
Ładowanie…
Reference in New Issue