kopia lustrzana https://gitlab.com/sane-project/backends
Submit Makefile.in from Makefile.am submitted previously.
Updated backends with EXTRA_* files to allow Makefile's to always pass in BACKEND_NAME to be fixed to backend name instead of filename; while still making sure that SANE_DEBUG_${BACKEND}* exist as documented in man pages. Add references to epson and epson2 man pages about SANE_DEBUG_EPSONx_SCSI and _NET options. Created an epson2 man page; based mostly on epson page.merge-requests/1/head
rodzic
c3475650ca
commit
8b5df29714
16
ChangeLog
16
ChangeLog
|
@ -1,3 +1,19 @@
|
|||
2009-01-22 Chris Bagwell <cbagwell-guest at users.alioth.debian.org>
|
||||
* Makefile.in: Submit Makefile.in from Makefile.am submitted
|
||||
previously.
|
||||
* backend/epson.c, backend/epson_scsi.c, backend/epson2_net.c,
|
||||
backend/epson2_scsi.c, backend/genesys_gl646.c,
|
||||
backend/genesys_gl841.c, backend/lexmark_low.c, backend/rts88xx_lib.c,
|
||||
backend/umax_pp.c, backend/umax_pp_low.c, backend/umax_pp_mid.c,
|
||||
doc/Makefile.in, doc/sane-epson.man, doc/sane-epson2.man:
|
||||
Updated backends with EXTRA_* files to allow Makefile's
|
||||
to always pass in BACKEND_NAME to be fixed to backend name
|
||||
instead of filename; while still making sure that
|
||||
SANE_DEBUG_${BACKEND}* exist as documented in man pages.
|
||||
Add references to epson and epson2 man pages about
|
||||
SANE_DEBUG_EPSONx_SCSI and _NET options.
|
||||
Created an epson2 man page; based mostly on epson page.
|
||||
|
||||
2009-01-22 Stéphane Voltz <stef.dev@free.fr>
|
||||
* doc/Makefile.in doc/descriptions/genesys.desc : added the rts8891
|
||||
man page to the generation and install . added XP200 to the genesys
|
||||
|
|
18
Makefile.in
18
Makefile.in
|
@ -738,23 +738,25 @@ sort-cvsignore:
|
|||
#
|
||||
libcheck:
|
||||
@echo "Libraries exporting 'illegal' symbols:"
|
||||
@for lib in backend/.libs/*.so; do \
|
||||
@for lib in backend/.libs/*.so backend/.libs/*.a; do \
|
||||
lines=`nm -g $$lib|grep '\( T \)\|\( D \)'|egrep -v ' _fini| _init'|egrep -v ' sane_| sanei_'`; \
|
||||
if test -n "$$lines" ; then \
|
||||
echo -e "*** $$lib:\n$$lines"; \
|
||||
exit 1; \
|
||||
found_errors="yes"; \
|
||||
fi \
|
||||
done
|
||||
@echo
|
||||
@echo "Libraries exporting 'non-standard sane_*' symbols:"
|
||||
@for lib in backend/.libs/*.so; do \
|
||||
done; \
|
||||
echo; \
|
||||
echo "Libraries exporting 'non-standard sane_*' symbols:"; \
|
||||
for lib in backend/.libs/*.so backend/.libs/*.a; do \
|
||||
lines=`nm -g $$lib|grep '\( T \)\|\( D \)'|egrep ' sane_' | egrep -v 'sane_.*init|sane_.*exit|sane_.*get_devices|sane_.*open|sane_.*close|sane_.*get_option_descriptor|sane_.*control_option|sane_.*get_parameters|sane_.*start|sane_.*read|sane_.*cancel|sane_.*set_io_mode|sane_.*get_select_fd|sane_strstatus'` ; \
|
||||
if test -n "$$lines" ; then \
|
||||
echo -e "*** $$lib:\n$$lines"; \
|
||||
found_errors="yes"; \
|
||||
exit 1; \
|
||||
fi \
|
||||
done
|
||||
done;
|
||||
if test ! -z $$found_errors ; then \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
# TODO: If software can be updated to pass the libcheck tests again then
|
||||
# the following line can be uncommented. Then we will have a single
|
||||
|
|
1770
backend/epson.c
1770
backend/epson.c
Plik diff jest za duży
Load Diff
|
@ -13,6 +13,9 @@
|
|||
|
||||
#include "../include/sane/config.h"
|
||||
|
||||
#undef BACKEND_NAME
|
||||
#define BACKEND_NAME epson2_net
|
||||
|
||||
#include <sane/sane.h>
|
||||
#include <sane/saneopts.h>
|
||||
#include <sane/sanei_tcp.h>
|
||||
|
@ -24,9 +27,6 @@
|
|||
|
||||
#include "byteorder.h"
|
||||
|
||||
#undef BACKEND_NAME
|
||||
#define BACKEND_NAME epson2_net
|
||||
|
||||
#include <sane/sanei_debug.h>
|
||||
|
||||
#ifdef HAVE_STDDEF_H
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
#undef BACKEND_NAME
|
||||
#define BACKEND_NAME epson2_scsi
|
||||
|
||||
#include <sane/config.h>
|
||||
#include <sane/sanei_debug.h>
|
||||
#include <sane/sanei_scsi.h>
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifdef _AIX
|
||||
#include "../include/lalloca.h" /* MUST come first for AIX! */
|
||||
#include "../include/lalloca.h" /* MUST come first for AIX! */
|
||||
#endif
|
||||
#undef BACKEND_NAME
|
||||
#define BACKEND_NAME epson_scsi
|
||||
#include "../include/sane/config.h"
|
||||
#include <sane/sanei_debug.h>
|
||||
#include <sane/sanei_scsi.h>
|
||||
|
@ -20,7 +22,7 @@
|
|||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#include <string.h> /* for memset and memcpy */
|
||||
#include <string.h> /* for memset and memcpy */
|
||||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
|
@ -69,7 +71,7 @@ sanei_epson_scsi_inquiry (int fd, int page_code, void *buf, size_t * buf_size)
|
|||
*/
|
||||
int
|
||||
sanei_epson_scsi_read (int fd, void *buf, size_t buf_size,
|
||||
SANE_Status * status)
|
||||
SANE_Status * status)
|
||||
{
|
||||
u_char cmd[6];
|
||||
|
||||
|
@ -92,7 +94,7 @@ sanei_epson_scsi_read (int fd, void *buf, size_t buf_size,
|
|||
*/
|
||||
int
|
||||
sanei_epson_scsi_write (int fd, const void *buf, size_t buf_size,
|
||||
SANE_Status * status)
|
||||
SANE_Status * status)
|
||||
{
|
||||
u_char *cmd;
|
||||
|
||||
|
|
|
@ -61,6 +61,9 @@
|
|||
#include "../include/sane/sanei.h"
|
||||
#include "../include/sane/saneopts.h"
|
||||
|
||||
#undef BACKEND_NAME
|
||||
#define BACKEND_NAME genesys_gl646
|
||||
|
||||
#include "../include/sane/sanei_backend.h"
|
||||
#include "../include/sane/sanei_config.h"
|
||||
#include "../include/sane/sanei_usb.h"
|
||||
|
|
|
@ -48,6 +48,9 @@
|
|||
If you do not wish that, delete this exception notice.
|
||||
*/
|
||||
|
||||
#undef BACKEND_NAME
|
||||
#define BACKEND_NAME genesys_gl841
|
||||
|
||||
#include "../include/sane/config.h"
|
||||
|
||||
#include <math.h>
|
||||
|
|
|
@ -43,6 +43,9 @@
|
|||
|
||||
**************************************************************************/
|
||||
|
||||
#undef BACKEND_NAME
|
||||
#define BACKEND_NAME lexmark_low
|
||||
|
||||
#include "../include/sane/config.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
|
|
@ -43,6 +43,9 @@
|
|||
|
||||
/* this file contains functions common to rts88xx ASICs */
|
||||
|
||||
#undef BACKEND_NAME
|
||||
#define BACKEND_NAME rts88xx_lib
|
||||
|
||||
#include "../include/sane/config.h"
|
||||
#include "../include/sane/sane.h"
|
||||
#include "../include/sane/sanei_backend.h"
|
||||
|
@ -88,7 +91,7 @@ sanei_rts88xx_set_color_scan (SANE_Byte * regs)
|
|||
|
||||
void
|
||||
sanei_rts88xx_set_offset (SANE_Byte * regs, SANE_Byte red, SANE_Byte green,
|
||||
SANE_Byte blue)
|
||||
SANE_Byte blue)
|
||||
{
|
||||
/* offset for odd pixels */
|
||||
regs[0x02] = red;
|
||||
|
@ -103,7 +106,7 @@ sanei_rts88xx_set_offset (SANE_Byte * regs, SANE_Byte red, SANE_Byte green,
|
|||
|
||||
void
|
||||
sanei_rts88xx_set_gain (SANE_Byte * regs, SANE_Byte red, SANE_Byte green,
|
||||
SANE_Byte blue)
|
||||
SANE_Byte blue)
|
||||
{
|
||||
regs[0x08] = red;
|
||||
regs[0x09] = green;
|
||||
|
@ -177,7 +180,7 @@ sanei_rts88xx_write_reg (SANE_Int devnum, SANE_Int index, SANE_Byte * reg)
|
|||
*/
|
||||
SANE_Status
|
||||
sanei_rts88xx_write_regs (SANE_Int devnum, SANE_Int start,
|
||||
SANE_Byte * source, SANE_Int length)
|
||||
SANE_Byte * source, SANE_Int length)
|
||||
{
|
||||
size_t size = 0;
|
||||
size_t i;
|
||||
|
@ -187,11 +190,11 @@ sanei_rts88xx_write_regs (SANE_Int devnum, SANE_Int start,
|
|||
if (DBG_LEVEL > DBG_io)
|
||||
{
|
||||
for (i = 0; i < (size_t) length; i++)
|
||||
{
|
||||
sprintf (message + 5 * i, "0x%02x ", source[i]);
|
||||
}
|
||||
{
|
||||
sprintf (message + 5 * i, "0x%02x ", source[i]);
|
||||
}
|
||||
DBG (DBG_io, "sanei_rts88xx_write_regs : write_regs(0x%02x,%d)=%s\n",
|
||||
start, length, message);
|
||||
start, length, message);
|
||||
}
|
||||
|
||||
/* when writing several registers at a time, we avoid writing the 0xb3 register
|
||||
|
@ -204,15 +207,15 @@ sanei_rts88xx_write_regs (SANE_Int devnum, SANE_Int start,
|
|||
buffer[2] = 0x00;
|
||||
buffer[3] = size;
|
||||
for (i = 0; i < size; i++)
|
||||
buffer[i + 4] = source[i];
|
||||
buffer[i + 4] = source[i];
|
||||
/* the USB block is size + 4 bytes of header long */
|
||||
size += 4;
|
||||
if (sanei_usb_write_bulk (devnum, buffer, &size) != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_write_regs : write registers part 1 failed ...\n");
|
||||
return SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_write_regs : write registers part 1 failed ...\n");
|
||||
return SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
|
||||
/* skip 0xb3 register */
|
||||
size -= 3;
|
||||
|
@ -231,7 +234,7 @@ sanei_rts88xx_write_regs (SANE_Int devnum, SANE_Int start,
|
|||
if (sanei_usb_write_bulk (devnum, buffer, &size) != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_write_regs : write registers part 2 failed ...\n");
|
||||
"sanei_rts88xx_write_regs : write registers part 2 failed ...\n");
|
||||
return SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
|
||||
|
@ -242,7 +245,7 @@ sanei_rts88xx_write_regs (SANE_Int devnum, SANE_Int start,
|
|||
/* read several registers starting at the given index */
|
||||
SANE_Status
|
||||
sanei_rts88xx_read_regs (SANE_Int devnum, SANE_Int start,
|
||||
SANE_Byte * dest, SANE_Int length)
|
||||
SANE_Byte * dest, SANE_Int length)
|
||||
{
|
||||
SANE_Status status;
|
||||
static SANE_Byte command_block[] = { 0x80, 0, 0x00, 0xFF };
|
||||
|
@ -252,7 +255,7 @@ sanei_rts88xx_read_regs (SANE_Int devnum, SANE_Int start,
|
|||
if (start + length > 255)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_read_regs: start and length must be within [0..255]\n");
|
||||
"sanei_rts88xx_read_regs: start and length must be within [0..255]\n");
|
||||
return SANE_STATUS_INVAL;
|
||||
}
|
||||
|
||||
|
@ -278,14 +281,14 @@ sanei_rts88xx_read_regs (SANE_Int devnum, SANE_Int start,
|
|||
if (size != (size_t) length)
|
||||
{
|
||||
DBG (DBG_warn, "sanei_rts88xx_read_regs: read got only %lu bytes\n",
|
||||
(u_long) size);
|
||||
(u_long) size);
|
||||
}
|
||||
if (DBG_LEVEL >= DBG_io)
|
||||
{
|
||||
for (i = 0; i < size; i++)
|
||||
sprintf (message + 5 * i, "0x%02x ", dest[i]);
|
||||
sprintf (message + 5 * i, "0x%02x ", dest[i]);
|
||||
DBG (DBG_io, "sanei_rts88xx_read_regs: read_regs(0x%02x,%d)=%s\n",
|
||||
start, length, message);
|
||||
start, length, message);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
@ -308,7 +311,7 @@ sanei_rts88xx_get_status (SANE_Int devnum, SANE_Byte * regs)
|
|||
*/
|
||||
SANE_Status
|
||||
sanei_rts88xx_set_status (SANE_Int devnum, SANE_Byte * regs,
|
||||
SANE_Byte reg10, SANE_Byte reg11)
|
||||
SANE_Byte reg10, SANE_Byte reg11)
|
||||
{
|
||||
SANE_Status status;
|
||||
|
||||
|
@ -344,7 +347,7 @@ sanei_rts88xx_reset_lamp (SANE_Int devnum, SANE_Byte * regs)
|
|||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_reset_lamp: failed to read 0xda register\n");
|
||||
"sanei_rts88xx_reset_lamp: failed to read 0xda register\n");
|
||||
return status;
|
||||
}
|
||||
reg = 0xa0;
|
||||
|
@ -352,7 +355,7 @@ sanei_rts88xx_reset_lamp (SANE_Int devnum, SANE_Byte * regs)
|
|||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_reset_lamp: failed to write 0xda register\n");
|
||||
"sanei_rts88xx_reset_lamp: failed to write 0xda register\n");
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -372,21 +375,21 @@ sanei_rts88xx_reset_lamp (SANE_Int devnum, SANE_Byte * regs)
|
|||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_reset_lamp: failed to write 0xda register\n");
|
||||
"sanei_rts88xx_reset_lamp: failed to write 0xda register\n");
|
||||
return status;
|
||||
}
|
||||
status = sanei_rts88xx_read_reg (devnum, 0xda, ®);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_reset_lamp: failed to read 0xda register\n");
|
||||
"sanei_rts88xx_reset_lamp: failed to read 0xda register\n");
|
||||
return status;
|
||||
}
|
||||
if (reg != 0xa7)
|
||||
{
|
||||
DBG (DBG_warn,
|
||||
"sanei_rts88xx_reset_lamp: expected reg[0xda]=0xa7, got 0x%02x\n",
|
||||
reg);
|
||||
"sanei_rts88xx_reset_lamp: expected reg[0xda]=0xa7, got 0x%02x\n",
|
||||
reg);
|
||||
}
|
||||
|
||||
/* store read value in shadow register */
|
||||
|
@ -447,7 +450,7 @@ sanei_rts88xx_cancel (SANE_Int devnum)
|
|||
*/
|
||||
SANE_Status
|
||||
sanei_rts88xx_write_mem (SANE_Int devnum, SANE_Int length, SANE_Int extra,
|
||||
SANE_Byte * value)
|
||||
SANE_Byte * value)
|
||||
{
|
||||
SANE_Status status;
|
||||
SANE_Byte *buffer;
|
||||
|
@ -468,9 +471,9 @@ sanei_rts88xx_write_mem (SANE_Int devnum, SANE_Int length, SANE_Int extra,
|
|||
buffer[i + 4] = value[i];
|
||||
|
||||
if (DBG_LEVEL > DBG_io2)
|
||||
{
|
||||
sprintf (message + 3 * i, "%02x ", buffer[i + 4]);
|
||||
}
|
||||
{
|
||||
sprintf (message + 3 * i, "%02x ", buffer[i + 4]);
|
||||
}
|
||||
}
|
||||
DBG (DBG_io, "sanei_rts88xx_write_mem: %02x %02x %02x %02x -> %s\n",
|
||||
buffer[0], buffer[1], buffer[2], buffer[3], message);
|
||||
|
@ -481,8 +484,8 @@ sanei_rts88xx_write_mem (SANE_Int devnum, SANE_Int length, SANE_Int extra,
|
|||
if ((status == SANE_STATUS_GOOD) && (size != (size_t) length + 4 + extra))
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_write_mem: only wrote %lu bytes out of %d\n",
|
||||
(u_long) size, length + 4);
|
||||
"sanei_rts88xx_write_mem: only wrote %lu bytes out of %d\n",
|
||||
(u_long) size, length + 4);
|
||||
status = SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
return status;
|
||||
|
@ -493,7 +496,7 @@ sanei_rts88xx_write_mem (SANE_Int devnum, SANE_Int length, SANE_Int extra,
|
|||
*/
|
||||
SANE_Status
|
||||
sanei_rts88xx_set_mem (SANE_Int devnum, SANE_Byte ctrl1,
|
||||
SANE_Byte ctrl2, SANE_Int length, SANE_Byte * value)
|
||||
SANE_Byte ctrl2, SANE_Int length, SANE_Byte * value)
|
||||
{
|
||||
SANE_Status status;
|
||||
SANE_Byte regs[2];
|
||||
|
@ -504,7 +507,7 @@ sanei_rts88xx_set_mem (SANE_Int devnum, SANE_Byte ctrl1,
|
|||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_set_mem: failed to write 0x91/0x92 registers\n");
|
||||
"sanei_rts88xx_set_mem: failed to write 0x91/0x92 registers\n");
|
||||
return status;
|
||||
}
|
||||
status = sanei_rts88xx_write_mem (devnum, length, 0, value);
|
||||
|
@ -535,7 +538,7 @@ sanei_rts88xx_read_mem (SANE_Int devnum, SANE_Int length, SANE_Byte * value)
|
|||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_read_mem: failed to write length header\n");
|
||||
"sanei_rts88xx_read_mem: failed to write length header\n");
|
||||
return status;
|
||||
}
|
||||
DBG (DBG_io, "sanei_rts88xx_read_mem: %02x %02x %02x %02x -> ...\n",
|
||||
|
@ -544,18 +547,18 @@ sanei_rts88xx_read_mem (SANE_Int devnum, SANE_Int length, SANE_Byte * value)
|
|||
while (length > 0)
|
||||
{
|
||||
if (length > 2048)
|
||||
want = 2048;
|
||||
want = 2048;
|
||||
else
|
||||
want = length;
|
||||
want = length;
|
||||
size = want;
|
||||
status = sanei_usb_read_bulk (devnum, value + read, &size);
|
||||
if (size != want)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_read_mem: only read %lu bytes out of %lu\n",
|
||||
(u_long) size, (u_long) want);
|
||||
status = SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_read_mem: only read %lu bytes out of %lu\n",
|
||||
(u_long) size, (u_long) want);
|
||||
status = SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
length -= size;
|
||||
read += size;
|
||||
}
|
||||
|
@ -567,7 +570,7 @@ sanei_rts88xx_read_mem (SANE_Int devnum, SANE_Int length, SANE_Byte * value)
|
|||
*/
|
||||
SANE_Status
|
||||
sanei_rts88xx_get_mem (SANE_Int devnum, SANE_Byte ctrl1,
|
||||
SANE_Byte ctrl2, SANE_Int length, SANE_Byte * value)
|
||||
SANE_Byte ctrl2, SANE_Int length, SANE_Byte * value)
|
||||
{
|
||||
SANE_Status status;
|
||||
SANE_Byte regs[2];
|
||||
|
@ -578,7 +581,7 @@ sanei_rts88xx_get_mem (SANE_Int devnum, SANE_Byte ctrl1,
|
|||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_get_mem: failed to write 0x91/0x92 registers\n");
|
||||
"sanei_rts88xx_get_mem: failed to write 0x91/0x92 registers\n");
|
||||
return status;
|
||||
}
|
||||
status = sanei_rts88xx_read_mem (devnum, length, value);
|
||||
|
@ -604,11 +607,11 @@ sanei_rts88xx_nvram_ctrl (SANE_Int devnum, SANE_Int length, SANE_Byte * value)
|
|||
if (DBG_LEVEL > DBG_io)
|
||||
{
|
||||
for (i = 0; i < length; i++)
|
||||
{
|
||||
sprintf (message + 5 * i, "0x%02x ", value[i]);
|
||||
}
|
||||
{
|
||||
sprintf (message + 5 * i, "0x%02x ", value[i]);
|
||||
}
|
||||
DBG (DBG_io, "sanei_rts88xx_nvram_ctrl : nvram_ctrl(0x00,%d)=%s\n",
|
||||
length, message);
|
||||
length, message);
|
||||
}
|
||||
|
||||
buffer[0] = 0x8a;
|
||||
|
@ -637,7 +640,7 @@ sanei_rts88xx_nvram_ctrl (SANE_Int devnum, SANE_Int length, SANE_Byte * value)
|
|||
*/
|
||||
SANE_Status
|
||||
sanei_rts88xx_setup_nvram (SANE_Int devnum, SANE_Int length,
|
||||
SANE_Byte * value)
|
||||
SANE_Byte * value)
|
||||
{
|
||||
SANE_Status status = SANE_STATUS_GOOD;
|
||||
SANE_Byte local[2], reg;
|
||||
|
@ -659,19 +662,19 @@ sanei_rts88xx_setup_nvram (SANE_Int devnum, SANE_Int length,
|
|||
{
|
||||
status = sanei_rts88xx_nvram_ctrl (devnum, 2, local);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error, "sanei_rts88xx_setup_nvram : failed loop #%d ...\n",
|
||||
i);
|
||||
return status;
|
||||
}
|
||||
{
|
||||
DBG (DBG_error, "sanei_rts88xx_setup_nvram : failed loop #%d ...\n",
|
||||
i);
|
||||
return status;
|
||||
}
|
||||
status = sanei_rts88xx_read_reg (devnum, 0x10, ®);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_setup_nvram : register reading failed loop #%d ...\n",
|
||||
i);
|
||||
return status;
|
||||
}
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_setup_nvram : register reading failed loop #%d ...\n",
|
||||
i);
|
||||
return status;
|
||||
}
|
||||
DBG (DBG_io, "sanei_rts88xx_setup_nvram: reg[0x10]=0x%02x\n", reg);
|
||||
}
|
||||
reg = 0;
|
||||
|
@ -679,7 +682,7 @@ sanei_rts88xx_setup_nvram (SANE_Int devnum, SANE_Int length,
|
|||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_setup_nvram : controler register write failed\n");
|
||||
"sanei_rts88xx_setup_nvram : controler register write failed\n");
|
||||
return status;
|
||||
}
|
||||
reg = 1;
|
||||
|
@ -687,7 +690,7 @@ sanei_rts88xx_setup_nvram (SANE_Int devnum, SANE_Int length,
|
|||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_setup_nvram : controler register write failed\n");
|
||||
"sanei_rts88xx_setup_nvram : controler register write failed\n");
|
||||
return status;
|
||||
}
|
||||
return status;
|
||||
|
@ -698,7 +701,7 @@ sanei_rts88xx_setup_nvram (SANE_Int devnum, SANE_Int length,
|
|||
*/
|
||||
void
|
||||
sanei_rts88xx_set_scan_area (SANE_Byte * regs, SANE_Int ystart,
|
||||
SANE_Int yend, SANE_Int xstart, SANE_Int xend)
|
||||
SANE_Int yend, SANE_Int xstart, SANE_Int xend)
|
||||
{
|
||||
/* vertical lines to move before scan */
|
||||
regs[START_LINE] = LOBYTE (ystart);
|
||||
|
@ -747,7 +750,7 @@ sanei_rts88xx_data_count (SANE_Int devnum, SANE_Word * count)
|
|||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_data_count : failed to read data count\n");
|
||||
"sanei_rts88xx_data_count : failed to read data count\n");
|
||||
return status;
|
||||
}
|
||||
*count = result[0] + (result[1] << 8) + (result[2] << 16);
|
||||
|
@ -771,23 +774,23 @@ sanei_rts88xx_wait_data (SANE_Int devnum, SANE_Bool busy, SANE_Word * count)
|
|||
{
|
||||
status = sanei_rts88xx_data_count (devnum, count);
|
||||
if (*count != 0)
|
||||
{
|
||||
DBG (DBG_io, "sanei_rts88xx_wait_data: %d bytes available\n",
|
||||
*count);
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
{
|
||||
DBG (DBG_io, "sanei_rts88xx_wait_data: %d bytes available\n",
|
||||
*count);
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
/* check that the scanner is busy scanning */
|
||||
if (busy)
|
||||
{
|
||||
sanei_rts88xx_read_reg (devnum, CONTROL_REG, &control);
|
||||
if ((control & 0x08) == 0 && (*count == 0))
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_wait_data: scanner stopped being busy before data are available\n");
|
||||
return SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
}
|
||||
{
|
||||
sanei_rts88xx_read_reg (devnum, CONTROL_REG, &control);
|
||||
if ((control & 0x08) == 0 && (*count == 0))
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"sanei_rts88xx_wait_data: scanner stopped being busy before data are available\n");
|
||||
return SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* we hit timeout */
|
||||
|
@ -799,7 +802,7 @@ sanei_rts88xx_wait_data (SANE_Int devnum, SANE_Bool busy, SANE_Word * count)
|
|||
*/
|
||||
SANE_Status
|
||||
sanei_rts88xx_read_data (SANE_Int devnum, SANE_Word * length,
|
||||
unsigned char *dest)
|
||||
unsigned char *dest)
|
||||
{
|
||||
SANE_Status status = SANE_STATUS_GOOD;
|
||||
SANE_Byte header[4];
|
||||
|
@ -831,12 +834,12 @@ sanei_rts88xx_read_data (SANE_Int devnum, SANE_Word * length,
|
|||
size = (len - read) & 0xFFC0;
|
||||
status = sanei_usb_read_bulk (devnum, dest + read, &size);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error, "sanei_rts88xx_read_data: failed to read data\n");
|
||||
return status;
|
||||
}
|
||||
{
|
||||
DBG (DBG_error, "sanei_rts88xx_read_data: failed to read data\n");
|
||||
return status;
|
||||
}
|
||||
DBG (DBG_io2, "sanei_rts88xx_read_data: read %lu bytes\n",
|
||||
(u_long) size);
|
||||
(u_long) size);
|
||||
read += size;
|
||||
}
|
||||
|
||||
|
@ -846,12 +849,12 @@ sanei_rts88xx_read_data (SANE_Int devnum, SANE_Word * length,
|
|||
{
|
||||
status = sanei_usb_read_bulk (devnum, dest + read, &remain);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error, "sanei_rts88xx_read_data: failed to read data\n");
|
||||
return status;
|
||||
}
|
||||
{
|
||||
DBG (DBG_error, "sanei_rts88xx_read_data: failed to read data\n");
|
||||
return status;
|
||||
}
|
||||
DBG (DBG_io2, "sanei_rts88xx_read_data: read %lu bytes\n",
|
||||
(u_long) remain);
|
||||
(u_long) remain);
|
||||
read += remain;
|
||||
}
|
||||
|
||||
|
|
1539
backend/umax_pp.c
1539
backend/umax_pp.c
Plik diff jest za duży
Load Diff
|
@ -40,9 +40,8 @@
|
|||
|
||||
This file implements a SANE backend for Umax PP flatbed scanners. */
|
||||
|
||||
|
||||
|
||||
|
||||
#undef BACKEND_NAME
|
||||
#define BACKEND_NAME umax_pp_low
|
||||
|
||||
#include "../include/sane/config.h"
|
||||
|
||||
|
|
|
@ -40,6 +40,8 @@
|
|||
|
||||
This file implements a SANE backend for Umax PP flatbed scanners. */
|
||||
|
||||
#define DEBUG_DECLARE_ONLY
|
||||
|
||||
#include "../include/sane/config.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@ -78,14 +80,14 @@ lock_parport (void)
|
|||
if ((fd > 0) && (!locked))
|
||||
{
|
||||
if (ioctl (sanei_umax_pp_getparport (), PPCLAIM))
|
||||
{
|
||||
return UMAX1220P_BUSY;
|
||||
}
|
||||
{
|
||||
return UMAX1220P_BUSY;
|
||||
}
|
||||
#ifdef PPGETMODE
|
||||
if (ioctl (fd, PPGETMODE, &exmode))
|
||||
exmode = IEEE1284_MODE_COMPAT;
|
||||
exmode = IEEE1284_MODE_COMPAT;
|
||||
if (ioctl (fd, PPGETFLAGS, &exflags))
|
||||
exflags = 0;
|
||||
exflags = 0;
|
||||
#endif
|
||||
mode = IEEE1284_MODE_EPP;
|
||||
ioctl (fd, PPNEGOT, &mode);
|
||||
|
@ -165,7 +167,7 @@ sanei_umax_pp_model (int port, int *model)
|
|||
if (rc != 1)
|
||||
{
|
||||
DBG (0, "sanei_umax_pp_initTransport() failed (%s:%d)\n", __FILE__,
|
||||
__LINE__);
|
||||
__LINE__);
|
||||
unlock_parport ();
|
||||
return UMAX1220P_TRANSPORT_FAILED;
|
||||
}
|
||||
|
@ -184,7 +186,7 @@ sanei_umax_pp_model (int port, int *model)
|
|||
if (rc < 600)
|
||||
{
|
||||
DBG (0, "sanei_umax_pp_CheckModel() failed (%s:%d)\n", __FILE__,
|
||||
__LINE__);
|
||||
__LINE__);
|
||||
return UMAX1220P_PROBE_FAILED;
|
||||
}
|
||||
*model = rc;
|
||||
|
@ -219,21 +221,21 @@ sanei_umax_pp_attach (int port, char *name)
|
|||
if (sanei_umax_pp_probeScanner (recover) != 1)
|
||||
{
|
||||
if (recover)
|
||||
{
|
||||
sanei_umax_pp_initTransport (recover);
|
||||
sanei_umax_pp_endSession ();
|
||||
if (sanei_umax_pp_probeScanner (recover) != 1)
|
||||
{
|
||||
DBG (0, "Recover failed ....\n");
|
||||
unlock_parport ();
|
||||
return UMAX1220P_PROBE_FAILED;
|
||||
}
|
||||
}
|
||||
{
|
||||
sanei_umax_pp_initTransport (recover);
|
||||
sanei_umax_pp_endSession ();
|
||||
if (sanei_umax_pp_probeScanner (recover) != 1)
|
||||
{
|
||||
DBG (0, "Recover failed ....\n");
|
||||
unlock_parport ();
|
||||
return UMAX1220P_PROBE_FAILED;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
unlock_parport ();
|
||||
return UMAX1220P_PROBE_FAILED;
|
||||
}
|
||||
{
|
||||
unlock_parport ();
|
||||
return UMAX1220P_PROBE_FAILED;
|
||||
}
|
||||
}
|
||||
sanei_umax_pp_endSession ();
|
||||
unlock_parport ();
|
||||
|
@ -281,7 +283,7 @@ sanei_umax_pp_open (int port, char *name)
|
|||
{
|
||||
|
||||
DBG (0, "sanei_umax_pp_initTransport() failed (%s:%d)\n", __FILE__,
|
||||
__LINE__);
|
||||
__LINE__);
|
||||
unlock_parport ();
|
||||
return UMAX1220P_TRANSPORT_FAILED;
|
||||
}
|
||||
|
@ -289,7 +291,7 @@ sanei_umax_pp_open (int port, char *name)
|
|||
if (sanei_umax_pp_initScanner (recover) == 0)
|
||||
{
|
||||
DBG (0, "sanei_umax_pp_initScanner() failed (%s:%d)\n", __FILE__,
|
||||
__LINE__);
|
||||
__LINE__);
|
||||
sanei_umax_pp_endSession ();
|
||||
unlock_parport ();
|
||||
return UMAX1220P_SCANNER_FAILED;
|
||||
|
@ -328,9 +330,9 @@ sanei_umax_pp_cancel (void)
|
|||
|
||||
int
|
||||
sanei_umax_pp_start (int x, int y, int width, int height, int dpi, int color,
|
||||
int autoset,
|
||||
int gain, int offset, int *rbpp, int *rtw,
|
||||
int *rth)
|
||||
int autoset,
|
||||
int gain, int offset, int *rbpp, int *rtw,
|
||||
int *rth)
|
||||
{
|
||||
int col = BW_MODE;
|
||||
|
||||
|
@ -372,7 +374,7 @@ sanei_umax_pp_start (int x, int y, int width, int height, int dpi, int color,
|
|||
|
||||
int
|
||||
sanei_umax_pp_read (long len, int window, int dpi, int last,
|
||||
unsigned char *buffer)
|
||||
unsigned char *buffer)
|
||||
{
|
||||
int read = 0;
|
||||
int bytes;
|
||||
|
@ -387,13 +389,13 @@ sanei_umax_pp_read (long len, int window, int dpi, int last,
|
|||
while (read < len)
|
||||
{
|
||||
bytes =
|
||||
sanei_umax_pp_readBlock (len - read, window, dpi, last,
|
||||
buffer + read);
|
||||
sanei_umax_pp_readBlock (len - read, window, dpi, last,
|
||||
buffer + read);
|
||||
if (bytes == 0)
|
||||
{
|
||||
sanei_umax_pp_endSession ();
|
||||
return UMAX1220P_READ_FAILED;
|
||||
}
|
||||
{
|
||||
sanei_umax_pp_endSession ();
|
||||
return UMAX1220P_READ_FAILED;
|
||||
}
|
||||
read += bytes;
|
||||
}
|
||||
unlock_parport ();
|
||||
|
|
|
@ -40,7 +40,7 @@ DISTCLEAN_FILES = @DISTCLEAN_FILES@
|
|||
|
||||
SECT1 = scanimage.1 sane-config.1 sane-find-scanner.1 gamma4scanimage.1
|
||||
SECT5 = sane-abaton.5 sane-agfafocus.5 sane-apple.5 sane-as6e.5 sane-dll.5 \
|
||||
sane-dc25.5 sane-dmc.5 sane-epson.5 sane-hp.5 sane-gphoto2.5 \
|
||||
sane-dc25.5 sane-dmc.5 sane-epson.5 sane-epson2.5 sane-hp.5 sane-gphoto2.5 \
|
||||
sane-leo.5 sane-lexmark.5 sane-matsushita.5 sane-microtek.5 \
|
||||
sane-microtek2.5 sane-mustek.5 sane-nec.5 sane-net.5 sane-pie.5 \
|
||||
sane-pint.5 sane-pnm.5 sane-umax.5 sane-qcam.5 sane-scsi.5 \
|
||||
|
@ -99,7 +99,7 @@ DISTFILES = Makefile.in backend-writing.txt descriptions.txt \
|
|||
sane-artec.man sane-as6e.man sane-avision.man sane-bh.man \
|
||||
sane-canon.man sane-canon630u.man sane-config.man sane-coolscan.man \
|
||||
sane-coolscan2.man sane-dc210.man sane-dc240.man \
|
||||
sane-dc25.man sane-dll.man sane-dmc.man sane-epson.man \
|
||||
sane-dc25.man sane-dll.man sane-dmc.man sane-epson.man sane-epson2.man \
|
||||
sane-find-scanner.man sane-fujitsu.man sane-gphoto2.man sane-hp.man \
|
||||
sane-logo.png sane-logo2.jpg sane-matsushita.man sane-microtek.man \
|
||||
sane-leo.man sane-lexmark.man sane-microtek2.man \
|
||||
|
|
|
@ -262,7 +262,11 @@ If the library was compiled with debug support enabled, this
|
|||
environment variable controls the debug level for this backend. E.g.,
|
||||
a value of 128 requests all debug output to be printed. Smaller
|
||||
levels reduce verbosity.
|
||||
|
||||
.TP
|
||||
.B SANE_DEBUG_EPSON_SCSI
|
||||
If the library was compiled with debug support enabled, this
|
||||
environment variable controls the SCSI related debug level for this backend.
|
||||
Only a value of 2 is supported.
|
||||
.TP
|
||||
.B SANE_EPSON_CMD_LVL
|
||||
This allows to override the function or command level that the backend
|
||||
|
|
|
@ -0,0 +1,358 @@
|
|||
.TH sane\-epson2 5 "22 Jan 2009" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
|
||||
.IX sane\-epson2
|
||||
.SH NAME
|
||||
sane\-epson2 \- SANE backend for EPSON scanners
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
.B sane\-epson2
|
||||
library implements a SANE (Scanner Access Now Easy) backend that
|
||||
provides access to Epson flatbed scanners. This library supports
|
||||
a similar set of scanners as the sane\-epson driver but was
|
||||
developed to support a wider range of connections to the scanner;
|
||||
include network access.
|
||||
.PP
|
||||
Because
|
||||
.B sane\-epson
|
||||
and
|
||||
.B sane\-epson2
|
||||
drivers support many of the same devices, if one
|
||||
driver gives you problems you may try disabling it to try the other.
|
||||
This can be done by removing the driver name from the
|
||||
.I dll.conf
|
||||
or perhaps by commenting out the options in
|
||||
.I epson.conf
|
||||
or
|
||||
.I epson2.conf.
|
||||
.PP
|
||||
At present, the following scanners are known to work with this backend:
|
||||
.PP
|
||||
.RS
|
||||
.ft CR
|
||||
.nf
|
||||
Model: Connection Type
|
||||
--------------------------- -------------------
|
||||
ActionScanner II SCSI, parallel
|
||||
AcuLaser CX11 Series USB, Network
|
||||
AcuLaser CX21 Series USB, Network
|
||||
CX-3200 USB
|
||||
CX-3600 USB
|
||||
CX-3650 USB
|
||||
CX-4050 USB
|
||||
CX-4600 USB
|
||||
CX-4800 USB
|
||||
CX-5000 USB
|
||||
CX-5200 USB
|
||||
CX-5400 USB
|
||||
CX-6300 USB
|
||||
CX-6400 USB
|
||||
CX-6500 USB
|
||||
CX-6600 USB
|
||||
DX-3800 USB
|
||||
DX-5000 USB
|
||||
DX-5050 USB
|
||||
DX-6000 USB
|
||||
DX-7400 USB
|
||||
ES-300C SCSI, parallel
|
||||
ES-300GS SCSI
|
||||
ES-600C parallel
|
||||
ES-1200C parallel
|
||||
Expression 636 SCSI
|
||||
Expression 800 SCSI
|
||||
Expression 1600 USB, SCSI, IEEE-1394
|
||||
Expression 1680 USB, SCSI, IEEE-1394
|
||||
FilmScan 200 SCSI
|
||||
GT-5000 SCSI, parallel
|
||||
GT-5500 SCSI
|
||||
GT-6000 parallel
|
||||
GT-6500 parallel
|
||||
GT-7000 SCSI
|
||||
GT-8000 SCSI
|
||||
GT-8500 SCSI
|
||||
Perfection 610 USB
|
||||
Perfection 636S SCSI
|
||||
Perfection 636U USB
|
||||
Perfection 640 USB
|
||||
Perfection 1200S SCSI
|
||||
Perfection 1200U USB
|
||||
Perfection 1240 USB, SCSI
|
||||
Perfection 1640 USB, SCSI
|
||||
Perfection 1650 USB
|
||||
Perfection 1660 USB
|
||||
Perfection 2400 USB
|
||||
Perfection 2450 USB, IEEE-1394
|
||||
Perfection 3200 USB
|
||||
Perfection 4870 USB
|
||||
Perfection 4990 USB
|
||||
RX-425 USB
|
||||
RX-500 USB
|
||||
RX-600 USB
|
||||
RX-700 USB
|
||||
V700 USB, IEEE-1394
|
||||
V750 USB, IEEE-1394
|
||||
.fi
|
||||
.ft R
|
||||
and many more. The official list is on the Sane web site.
|
||||
.RE
|
||||
|
||||
For other scanners the software may or may not work. Please send mail to
|
||||
the sane-backend mailing list to report success with scanners not on
|
||||
the list or problems with scanners that are listed.
|
||||
.SH OPTIONS
|
||||
The options the backend supports can either be selected through command line
|
||||
options to programs like scanimage or through GUI elements in programs like
|
||||
xscanimage or xsane.
|
||||
|
||||
Valid command line options and their syntax can be listed by using
|
||||
.RS
|
||||
scanimage \-\-help \-d epson2
|
||||
.RE
|
||||
Not all devices support all options.
|
||||
.TP
|
||||
.I Scan Mode
|
||||
The
|
||||
.I \-\-mode
|
||||
switch selects the basic mode of operation of the scanner. Valid choices
|
||||
are Binary, Gray and Color. The Binary mode is black and white only,
|
||||
Gray will produce 256 levels of gray or more depending on the scanner
|
||||
and Color means 24 bit color mode or more depending on the scanner.
|
||||
Some scanners will internally use 36 bit color, their external interface
|
||||
however may only support 24 bits.
|
||||
|
||||
The
|
||||
.I \-\-depth
|
||||
option selects the bit depth the scanner is using. This option is only
|
||||
available for scanners that support more than one bit depth. Older
|
||||
scanners will always transfer the image in 8bit mode. Newer scanners
|
||||
allow to select either 8 bits, 12 or 14 bits per color channel. For a
|
||||
color scan this means an effective color depth of 36 or 42 bits over
|
||||
all three channels. The valid choices depend on the scanner model.
|
||||
|
||||
The
|
||||
.I \-\-halftoning
|
||||
switch selects the mode that is used in Binary mode. Valid options
|
||||
are "None", "Halftone A (Hard Tone)", "Halftone B (Soft Tone)", "Halftone C
|
||||
(Net Screen)", "Dither A (4x4 Bayer)", "Dither B (4x4 Spiral)", "Dither C
|
||||
(4x4 Net Screen)", "Dither D (8x4 Net Screen)", "Text Enhanced Technology",
|
||||
"Download pattern A", and "Download pattern B".
|
||||
|
||||
The
|
||||
.I \-\-dropout
|
||||
switch selects the so called dropout color. Vald options are None,
|
||||
Red, Green and Blue. The default is None. The dropout color is used for
|
||||
monochrome scanning and selects the color that is not scanned. This can
|
||||
be used to e.g. scan an original with a colored background.
|
||||
|
||||
The
|
||||
.I \-\-brightness
|
||||
switch controls the brightness of the scan. Valid options are integer
|
||||
values from \-3 to 3. The default is 0. The larger the brightness value,
|
||||
the brighter the image gets. If a user defined table for the gamma
|
||||
correction is selected, the brightness parameter is not available.
|
||||
|
||||
The
|
||||
.I \-\-sharpness
|
||||
switch sets the sharpness of the image data. Valid options are integer
|
||||
values from \-2 to 2, with \-2 meaning "Defocus", \-1 "Defocus slightly",
|
||||
0 "Normal", 1 "Sharpen slightly" and 2 "Sharpen".
|
||||
|
||||
The
|
||||
.I \-\-gamma\-correction
|
||||
switch controls the scanner's internal gamma correction. Valid options are
|
||||
"Default", "User defined", "High density printing" "Low density printing"
|
||||
and "High contrast printing".
|
||||
|
||||
The
|
||||
.I \-\-color\-correction
|
||||
switch controls the scanner's internal color correction function. Valid
|
||||
options are "No Correction", "Impact\-dot printers", "Thermal printers",
|
||||
"Ink\-jet printers" and "CRT monitors". The default is "CRT monitors".
|
||||
|
||||
The
|
||||
.I \-\-resolution
|
||||
switch selects the resolution for a scan. Some EPSON scanners will scan in
|
||||
any resolution between the lowest and highest possible value. The list
|
||||
reported by the scanner can be displayed using the "\-\-help \-d epson"
|
||||
parameters to scanimage.
|
||||
|
||||
The
|
||||
.I \-\-threshold
|
||||
switch selects the minimum brightness to get a white point.
|
||||
|
||||
The
|
||||
.I \-\-mirror
|
||||
option controls the way the image is scanned. By reading the image data
|
||||
from right to left the image is mirrored. Valid options are "yes" and
|
||||
"no". The default is "no".
|
||||
|
||||
The
|
||||
.I \-\-auto\-area\-segmentation
|
||||
switch activates the automatic area segmentation for monochrome scans. The
|
||||
scanner will try to determine which areas are text and which contain
|
||||
images. The image areas will be halftoned, and the text will be
|
||||
improved. Valid options are "yes" and "no". The default is "yes".
|
||||
|
||||
The
|
||||
.I \-\-red\-gamma\-table
|
||||
parameter can be used to download a user defined gamma table for the
|
||||
red channel. The valid options are the same as for \-\-gamma\-table.
|
||||
|
||||
The
|
||||
.I \-\-green\-gamma\-table
|
||||
parameter can be used to download a user defined gamma table for the
|
||||
green channel. The valid options are the same as for \-\-gamma\-table.
|
||||
|
||||
The
|
||||
.I \-\-blue\-gamma\-table
|
||||
parameter can be used to download a user defined gamma table for the
|
||||
blue channel. The valid options are the same as for \-\-gamma\-table.
|
||||
|
||||
The
|
||||
.I --wait-for-button
|
||||
parameter can be used to wait until the button on the scanner is
|
||||
pressed to actually start the scan process.
|
||||
|
||||
The color correction coefficients
|
||||
.I \-\-cct\-1 \-\-cct\-2 \-\-cct\-3 ... \-\-cct\-9
|
||||
will install color correction coefficients for the user defined color
|
||||
correction. Values are specified as integers in the range \-127..127.
|
||||
|
||||
The
|
||||
.I \-\-preview
|
||||
option requests a preview scan. The frontend software automatically selects a low
|
||||
resolution. Valid options are "yes" and "no". The default is "no".
|
||||
|
||||
The geometry options
|
||||
.I \-l \-t \-x \-y
|
||||
control the scan area: \-l sets the top left x coordinate, \-t the top
|
||||
left y coordinate, \-x selects the width and \-y the height of the scan
|
||||
area. All parameters are specified in millimeters.
|
||||
|
||||
The
|
||||
.I \-\-source
|
||||
option selects the scan source. Valid options depend on the installed
|
||||
options. The default is "Flatbed".
|
||||
|
||||
The
|
||||
.I \-\-auto\-eject
|
||||
option will eject a page after scanning from the document feeder.
|
||||
|
||||
The
|
||||
.I \-\-film\-type
|
||||
option will select the film type for scans with the transparency
|
||||
unit. This option is only activated if the TPU is selected as scan
|
||||
source. Valid options are "Negative Film" and "Positive Film".
|
||||
|
||||
The
|
||||
.I \-\-focus\-position
|
||||
option selects the focus position for all scans. Valid options are "Focus
|
||||
2.5mm above glass" and "Focus on glass". The focus on the 2.5mm point
|
||||
above the glass is necessary for scans with the transparency unit, so
|
||||
that the scanner can focus on the film if one of the film holders is used.
|
||||
This option is only functional for selected scanners, all other scanners
|
||||
will ignore this option.
|
||||
|
||||
The
|
||||
.I \-\-bay
|
||||
option selects which bay to scan
|
||||
|
||||
The
|
||||
.I \-\-eject
|
||||
option ejects the sheet in the ADF.
|
||||
|
||||
The
|
||||
.I \-\-adf-mode
|
||||
option selecst the ADF mode (simplex/duplex).
|
||||
|
||||
.SH CONFIGURATION FILE
|
||||
The configuration file @CONFIGDIR@/epson2.conf specifies the device(s) that the
|
||||
backend will use. Possible connection types are:
|
||||
.TP
|
||||
.I SCSI
|
||||
This is the default, and if nothing else is specified the backend software will
|
||||
open a given path as SCSI device. More information about valid syntax for SCSI
|
||||
devices can be found in sane\-scsi(5).
|
||||
.br
|
||||
Usually SCSI scanners are configured with a line "scsi EPSON" in this file. In
|
||||
some cases it may be necessary to only use the string "scsi" (e.g. for the GT-6500).
|
||||
.TP
|
||||
.I PIO \- Parallel Interface
|
||||
The parallel interface can be configured in two ways: An integer value starting
|
||||
at the beginning of a line will be interpreted as the IO address of the parallel
|
||||
port. To make it clearer that a configured IO address is a parallel port the
|
||||
port address can be preceded by the string "PIO". The PIO connection does not
|
||||
use a special device file in the /dev directory. The IO address can be specified
|
||||
in hex mode (prefixed with "0x").
|
||||
.TP
|
||||
.I USB
|
||||
For USB scanners not automatically detect, their VENDOR and PRODUCT ID can
|
||||
be specified manually in the config file.
|
||||
More information about valid syntax for USB devices can be found in sane\-usb(5).
|
||||
.TP
|
||||
.I Network
|
||||
Network scanners can be auto-discovered if
|
||||
.I autodiscovery
|
||||
is specified after
|
||||
.I
|
||||
net
|
||||
keyword. An IP address to connect to can also be used.
|
||||
.SH FILES
|
||||
.TP
|
||||
.I @LIBDIR@/libsane\-epson2.a
|
||||
The static library implementing this backend.
|
||||
.TP
|
||||
.I @LIBDIR@/libsane\-epson2.so
|
||||
The shared library implementing this backend (present on systems that
|
||||
support dynamic loading).
|
||||
.SH ENVIRONMENT
|
||||
.TP
|
||||
.B SANE_DEBUG_EPSON2
|
||||
If the library was compiled with debug support enabled, this
|
||||
environment variable controls the debug level for this backend. E.g.,
|
||||
a value of 128 requests all debug output to be printed. Smaller
|
||||
levels reduce verbosity.
|
||||
.TP
|
||||
.B SANE_DEBUG_EPSON2_SCSI
|
||||
If the library was compiled with debug support enabled, this
|
||||
environment variable controls the SCSI related debug level for this backend.
|
||||
Only a value of 2 is supported.
|
||||
.TP
|
||||
.B SANE_DEBUG_EPSON2_NET
|
||||
If the library was compiled with debug support enabled, this
|
||||
environment variable controls the network related debug level for this
|
||||
backend. E.g., a value of 128 requests all debug output to be printed.
|
||||
Smaller levels reduce verbosity.
|
||||
.TP
|
||||
.B SANE_EPSON2_CMD_LVL
|
||||
This allows to override the function or command level that the backend
|
||||
uses to communicate with the scanner. The function level a scanner
|
||||
supports is determined during the initialization of the device. If
|
||||
the backend does not recognize the function level reported by the
|
||||
scanner it will default to function level B3. Valid function levels
|
||||
are A1, A2, B1, B2, B3, B4, B5, B6, B7, B8, D1 and F5. Use this feature
|
||||
only if you know what you are doing!
|
||||
|
||||
.SH "SEE ALSO"
|
||||
|
||||
sane\-scsi(5), sane\-usb(5), scanimage(1), xscanimage(1), xsane(1)
|
||||
|
||||
.SH BUGS
|
||||
|
||||
None :-) At least none are currently known.
|
||||
|
||||
.SH UNSUPPORTED DEVICES
|
||||
The backend may be used with Epson scanners that are not yet listed
|
||||
under the list of supported devices. A scanner that is not recognized
|
||||
may default to the function level B3, which means that not all
|
||||
functions that the scanner may be capable of are accessible.
|
||||
|
||||
If the scanner is not even recognized as an Epson scanner this is
|
||||
probably because the device name reported by the scanner is not in the
|
||||
correct format. Please send this information to the backend maintainer
|
||||
(email address is in the AUTHOR section of this man page or in the
|
||||
AUTHORS file of the SANE distribution).
|
||||
|
||||
.SH AUTHOR
|
||||
|
||||
The package is written by Alessandro Zummo and is based on previous
|
||||
work done by Karl Hienz Kremer in the epson package as well as based
|
||||
on work by Christian Bucher and Kazuhiro Sasayama
|
Ładowanie…
Reference in New Issue