diff --git a/backend/pieusb.c b/backend/pieusb.c index a070fc04d..085754b65 100644 --- a/backend/pieusb.c +++ b/backend/pieusb.c @@ -110,6 +110,8 @@ extern void write_tiff_rgbi_header (FILE *fptr, int width, int height, int depth /* device flags */ #define FLAG_SLIDE_TRANSPORT 0x01 +/* Some scanners do understand SLIDE_TRANSPORT but not CMD_17 - introducing a new flag */ +#define FLAG_CMD_17_NOSUPPORT 0x02 /* -------------------------------------------------------------------------- * @@ -1004,10 +1006,12 @@ sane_start (SANE_Handle handle) /* ---------------------------------------------------------------------- * * Function 17 + * This function is not supported by all scanners which are capable of + * slide transport, therefore FLAG_CMD_17_NOSUPPORT was introduced. * * ---------------------------------------------------------------------- */ - if (scanner->device->flags & FLAG_SLIDE_TRANSPORT) { + if ( (scanner->device->flags & FLAG_SLIDE_TRANSPORT) & !(scanner->device->flags & FLAG_CMD_17_NOSUPPORT) ) { sanei_pieusb_cmd_17 (scanner->device_number, 1, &status); if (status.pieusb_status != PIEUSB_STATUS_GOOD) { DBG (DBG_error, "sane_start(): sanei_pieusb_cmd_17 failed: %d\n", status.pieusb_status); diff --git a/backend/pieusb.conf.in b/backend/pieusb.conf.in index 8904d3d94..588dd9b41 100644 --- a/backend/pieusb.conf.in +++ b/backend/pieusb.conf.in @@ -16,5 +16,5 @@ usb 0x05e3 0x0145 0x47 0x00 # Reflecta CrystalScan 3600 usb 0x05e3 0x0145 0x2e 0x00 -# Reflecta DigitDia 4000 -usb 0x05e3 0x0142 0x2f 0x00 +# Reflecta DigitDia 4000 - SLIDE_TRANSPORT but no CMD_17 +usb 0x05e3 0x0142 0x2f 0x03 diff --git a/backend/pieusb_specific.c b/backend/pieusb_specific.c index 033ad035e..e5471ee5b 100644 --- a/backend/pieusb_specific.c +++ b/backend/pieusb_specific.c @@ -753,7 +753,7 @@ sanei_pieusb_init_options (Pieusb_Scanner* scanner) scanner->opt[OPT_FAST_INFRARED].cap |= SANE_CAP_SOFT_SELECT; /* automatically advance to next slide after scan */ - scanner->opt[OPT_ADVANCE_SLIDE].name = "advcane"; + scanner->opt[OPT_ADVANCE_SLIDE].name = "advance"; scanner->opt[OPT_ADVANCE_SLIDE].title = "Advance slide"; scanner->opt[OPT_ADVANCE_SLIDE].desc = "Automatically advance to next slide after scan"; scanner->opt[OPT_ADVANCE_SLIDE].type = SANE_TYPE_BOOL;