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
Chris Bagwell 2009-01-23 03:50:22 +00:00
rodzic c3475650ca
commit 8b5df29714
16 zmienionych plików z 2197 dodań i 1798 usunięć

Wyświetl plik

@ -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

Wyświetl plik

@ -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

Plik diff jest za duży Load Diff

Wyświetl plik

@ -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

Wyświetl plik

@ -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>

Wyświetl plik

@ -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;

Wyświetl plik

@ -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"

Wyświetl plik

@ -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>

Wyświetl plik

@ -43,6 +43,9 @@
**************************************************************************/
#undef BACKEND_NAME
#define BACKEND_NAME lexmark_low
#include "../include/sane/config.h"
#include <stdio.h>

Wyświetl plik

@ -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, &reg);
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, &reg);
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;
}

Plik diff jest za duży Load Diff

Wyświetl plik

@ -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"

Wyświetl plik

@ -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 ();

Wyświetl plik

@ -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 \

Wyświetl plik

@ -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

358
doc/sane-epson2.man 100644
Wyświetl plik

@ -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