kopia lustrzana https://gitlab.com/sane-project/backends
Small fix for Paragon 1200 Pro. Added some test code for this
scanner. Added Trust Imagery 1200 to man page and .desc. New version: 1.0-117. Henning Meier-Geinitz <henning@meier-geinitz.de>DEVEL_2_0_BRANCH-1
rodzic
7e9a33a179
commit
ccb0327250
|
@ -46,7 +46,7 @@
|
||||||
|
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
/* Mustek backend version */
|
/* Mustek backend version */
|
||||||
#define BUILD 116
|
#define BUILD 117
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
|
|
||||||
#include "../include/sane/config.h"
|
#include "../include/sane/config.h"
|
||||||
|
@ -541,7 +541,8 @@ dev_cmd (Mustek_Scanner * s, const void * src, size_t src_size,
|
||||||
const SANE_Byte *pp;
|
const SANE_Byte *pp;
|
||||||
|
|
||||||
DBG(5, "dev_cmd: fd=%d, src=%p, src_size=%d, dst=%p, dst_size=%d\n",
|
DBG(5, "dev_cmd: fd=%d, src=%p, src_size=%d, dst=%p, dst_size=%d\n",
|
||||||
s->fd, src, (SANE_Int) src_size, dst, (SANE_Int) dst_size ? *dst_size : 0);
|
s->fd, src, (SANE_Int) src_size, dst,
|
||||||
|
(SANE_Int) dst_size ? *dst_size : 0);
|
||||||
|
|
||||||
if (src && (debug_level >= 5)) /* output data sent to SCSI device */
|
if (src && (debug_level >= 5)) /* output data sent to SCSI device */
|
||||||
{
|
{
|
||||||
|
@ -549,24 +550,24 @@ dev_cmd (Mustek_Scanner * s, const void * src, size_t src_size,
|
||||||
for (pp = (const SANE_Byte *) src;
|
for (pp = (const SANE_Byte *) src;
|
||||||
pp < (((const SANE_Byte *) src) + src_size);
|
pp < (((const SANE_Byte *) src) + src_size);
|
||||||
pp++)
|
pp++)
|
||||||
{
|
{
|
||||||
sprintf ((SANE_String) cmd_byte, " %02x", *pp);
|
sprintf ((SANE_String) cmd_byte, " %02x", *pp);
|
||||||
strcat ((SANE_String) cmd_byte_list, (SANE_String) cmd_byte);
|
strcat ((SANE_String) cmd_byte_list, (SANE_String) cmd_byte);
|
||||||
if (((pp - (const SANE_Byte *) src) % 0x10 == 0x0f)
|
if (((pp - (const SANE_Byte *) src) % 0x10 == 0x0f)
|
||||||
|| (pp >= (((const SANE_Byte *) src) + src_size - 1)))
|
|| (pp >= (((const SANE_Byte *) src) + src_size - 1)))
|
||||||
{
|
{
|
||||||
DBG(5, "dev_cmd: sending: %s\n", cmd_byte_list);
|
DBG(5, "dev_cmd: sending: %s\n", cmd_byte_list);
|
||||||
cmd_byte_list [0] = '\0';
|
cmd_byte_list [0] = '\0';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (s->hw->flags & MUSTEK_FLAG_N)
|
if (s->hw->flags & MUSTEK_FLAG_N)
|
||||||
status = sanei_ab306_cmd (s->fd, src, src_size, dst, dst_size);
|
status = sanei_ab306_cmd (s->fd, src, src_size, dst, dst_size);
|
||||||
else
|
else
|
||||||
status = sanei_scsi_cmd (s->fd, src, src_size, dst, dst_size);
|
status = sanei_scsi_cmd (s->fd, src, src_size, dst, dst_size);
|
||||||
|
|
||||||
if (dst && dst_size && (debug_level >= 5)) /* output data received from SCSI device */
|
if (dst && dst_size && (debug_level >= 5))
|
||||||
|
/* output data received from SCSI device */
|
||||||
{
|
{
|
||||||
cmd_byte_list [0] = '\0';
|
cmd_byte_list [0] = '\0';
|
||||||
for (pp = (const SANE_Byte *) dst;
|
for (pp = (const SANE_Byte *) dst;
|
||||||
|
@ -682,35 +683,13 @@ dev_read_req_enter (Mustek_Scanner *s, SANE_Byte *buf, SANE_Int lines,
|
||||||
}
|
}
|
||||||
else if (s->hw->flags & MUSTEK_FLAG_PRO)
|
else if (s->hw->flags & MUSTEK_FLAG_PRO)
|
||||||
{
|
{
|
||||||
|
scsi_sense_wait_ready (s);
|
||||||
memset (command, 0, 6);
|
memset (command, 0, 6);
|
||||||
command[0] = MUSTEK_SCSI_READ_SCANNED_DATA;
|
command[0] = MUSTEK_SCSI_READ_SCANNED_DATA;
|
||||||
command[2] = ((lines * bpl) >> 16) & 0xff;
|
command[2] = ((lines * bpl) >> 16) & 0xff;
|
||||||
command[3] = ((lines * bpl) >> 8) & 0xff;
|
command[3] = ((lines * bpl) >> 8) & 0xff;
|
||||||
command[4] = ((lines * bpl) >> 0) & 0xff;
|
command[4] = ((lines * bpl) >> 0) & 0xff;
|
||||||
|
|
||||||
if (command && (debug_level >= 5)) /* output data sent to SCSI device */
|
|
||||||
{
|
|
||||||
SANE_Byte cmd_byte_list [50];
|
|
||||||
SANE_Byte cmd_byte [5];
|
|
||||||
const SANE_Byte *pp;
|
|
||||||
SANE_Int command_size = 6;
|
|
||||||
|
|
||||||
cmd_byte_list [0] = '\0';
|
|
||||||
for (pp = (const SANE_Byte *) command;
|
|
||||||
pp < (((const SANE_Byte *) command) + command_size);
|
|
||||||
pp++)
|
|
||||||
{
|
|
||||||
sprintf ((SANE_String) cmd_byte, " %02x", *pp);
|
|
||||||
strcat ((SANE_String) cmd_byte_list, (SANE_String) cmd_byte);
|
|
||||||
if (((pp - (const SANE_Byte *) command) % 0x10 == 0x0f)
|
|
||||||
|| (pp >= (((const SANE_Byte *) command) + command_size - 1)))
|
|
||||||
{
|
|
||||||
DBG(5, "dev_read_req_enter: sending: %s\n", cmd_byte_list);
|
|
||||||
cmd_byte_list [0] = '\0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return sanei_scsi_req_enter (s->fd, command, 6, buf, lenp, idp);
|
return sanei_scsi_req_enter (s->fd, command, 6, buf, lenp, idp);
|
||||||
}
|
}
|
||||||
else /* Paragon series */
|
else /* Paragon series */
|
||||||
|
@ -2568,7 +2547,17 @@ mode_select_pro (Mustek_Scanner *s)
|
||||||
else
|
else
|
||||||
mode[6] = 0x00; /* lineart */
|
mode[6] = 0x00; /* lineart */
|
||||||
|
|
||||||
mode[11] = 0x00; /* what's this? */
|
mode[7] = 0;
|
||||||
|
mode[8] = 0;
|
||||||
|
mode[9] = 0;
|
||||||
|
mode[10] = 0;
|
||||||
|
mode[11] = 0x00;
|
||||||
|
mode[12] = 0x27;
|
||||||
|
mode[13] = 0xb0;
|
||||||
|
mode[14] = 0x04;
|
||||||
|
mode[15] = 0x43;
|
||||||
|
mode[16] = 0x41;
|
||||||
|
|
||||||
cp = mode + 17;
|
cp = mode + 17;
|
||||||
STORE16L(cp, s->resolution_code);
|
STORE16L(cp, s->resolution_code);
|
||||||
|
|
||||||
|
@ -2853,10 +2842,14 @@ do_stop (Mustek_Scanner *s)
|
||||||
if (s->fd >= 0)
|
if (s->fd >= 0)
|
||||||
{
|
{
|
||||||
if (s->hw->flags & MUSTEK_FLAG_PRO)
|
if (s->hw->flags & MUSTEK_FLAG_PRO)
|
||||||
dev_wait_ready (s);
|
{
|
||||||
if ((s->hw->flags & MUSTEK_FLAG_PARAGON_1)
|
if (s->total_bytes < s->params.lines * s->params.bytes_per_line)
|
||||||
|
status = dev_cmd (s, scsi_start_stop, sizeof (scsi_start_stop),
|
||||||
|
0, 0);
|
||||||
|
dev_wait_ready (s);
|
||||||
|
}
|
||||||
|
else if ((s->hw->flags & MUSTEK_FLAG_PARAGON_1)
|
||||||
|| (s->hw->flags & MUSTEK_FLAG_PARAGON_2)
|
|| (s->hw->flags & MUSTEK_FLAG_PARAGON_2)
|
||||||
|| (s->hw->flags & MUSTEK_FLAG_PRO)
|
|
||||||
|| (s->hw->flags & MUSTEK_FLAG_THREE_PASS))
|
|| (s->hw->flags & MUSTEK_FLAG_THREE_PASS))
|
||||||
{
|
{
|
||||||
if (s->cancelled &&
|
if (s->cancelled &&
|
||||||
|
@ -4848,7 +4841,6 @@ reader_process (Mustek_Scanner *s, SANE_Int fd)
|
||||||
DBG(4, "reader_process: buffer %d: entering read request for %d "
|
DBG(4, "reader_process: buffer %d: entering read request for %d "
|
||||||
"bytes (buffer %d)\n", buffernumber + 1,
|
"bytes (buffer %d)\n", buffernumber + 1,
|
||||||
bstat[buffernumber].lines * bpl, buffer_count);
|
bstat[buffernumber].lines * bpl, buffer_count);
|
||||||
|
|
||||||
sigprocmask (SIG_BLOCK, &sigterm_set, 0);
|
sigprocmask (SIG_BLOCK, &sigterm_set, 0);
|
||||||
status = dev_read_req_enter (s, bstat[buffernumber].data,
|
status = dev_read_req_enter (s, bstat[buffernumber].data,
|
||||||
bstat[buffernumber].lines, bpl,
|
bstat[buffernumber].lines, bpl,
|
||||||
|
@ -5382,7 +5374,7 @@ sane_close (SANE_Handle handle)
|
||||||
DBG(1, "sane_close: invalid handle %p\n", handle);
|
DBG(1, "sane_close: invalid handle %p\n", handle);
|
||||||
return; /* oops, not a handle we know about */
|
return; /* oops, not a handle we know about */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->scanning)
|
if (s->scanning)
|
||||||
do_stop (handle);
|
do_stop (handle);
|
||||||
|
|
||||||
|
@ -6111,11 +6103,11 @@ sane_start (SANE_Handle handle)
|
||||||
status = mode_select_pro (s);
|
status = mode_select_pro (s);
|
||||||
if (status != SANE_STATUS_GOOD)
|
if (status != SANE_STATUS_GOOD)
|
||||||
goto stop_scanner_and_return;
|
goto stop_scanner_and_return;
|
||||||
|
|
||||||
status = calibration_pro (s);
|
status = calibration_pro (s);
|
||||||
if (status != SANE_STATUS_GOOD)
|
if (status != SANE_STATUS_GOOD)
|
||||||
goto stop_scanner_and_return;
|
goto stop_scanner_and_return;
|
||||||
|
|
||||||
status = send_gamma_table (s);
|
status = send_gamma_table (s);
|
||||||
if (status != SANE_STATUS_GOOD)
|
if (status != SANE_STATUS_GOOD)
|
||||||
goto stop_scanner_and_return;
|
goto stop_scanner_and_return;
|
||||||
|
@ -6124,6 +6116,9 @@ sane_start (SANE_Handle handle)
|
||||||
if (status != SANE_STATUS_GOOD)
|
if (status != SANE_STATUS_GOOD)
|
||||||
goto stop_scanner_and_return;
|
goto stop_scanner_and_return;
|
||||||
|
|
||||||
|
scsi_unit_wait_ready (s);
|
||||||
|
scsi_sense_wait_ready (s);
|
||||||
|
|
||||||
status = get_image_status (s, &s->params.bytes_per_line,
|
status = get_image_status (s, &s->params.bytes_per_line,
|
||||||
&s->params.lines);
|
&s->params.lines);
|
||||||
if (status != SANE_STATUS_GOOD)
|
if (status != SANE_STATUS_GOOD)
|
||||||
|
|
|
@ -1,5 +1,17 @@
|
||||||
CHANGES for the SANE Mustek backend
|
CHANGES for the SANE Mustek backend
|
||||||
|
|
||||||
|
2002-01-07
|
||||||
|
* Released Mustek backend 1.0-117.
|
||||||
|
|
||||||
|
2001-12-29
|
||||||
|
* Send start_stop_scan for Pro even if scan wasn't cancelled but less
|
||||||
|
data than expected was send (e.g. scanimage -T).
|
||||||
|
|
||||||
|
2001-12-22
|
||||||
|
* Added Trust Imagery 1200 to man page and .desc.
|
||||||
|
|
||||||
|
2001-12-15
|
||||||
|
* Released Mustek backend 1.0-116.
|
||||||
|
|
||||||
2001-12-11
|
2001-12-11
|
||||||
* Fixed possible segfault in sane_control_option.
|
* Fixed possible segfault in sane_control_option.
|
||||||
|
|
Ładowanie…
Reference in New Issue