kopia lustrzana https://gitlab.com/sane-project/backends
Tidy poll call in kodakaio
rodzic
245c9600f3
commit
9ed65d3ea2
|
@ -1,3 +1,7 @@
|
||||||
|
2012-08-09 Paul Newall <quandry at ntlworld dot com>
|
||||||
|
* /backend/kodakaio.c:
|
||||||
|
calling of poll tidied up, may fix problems with repeated scans.
|
||||||
|
|
||||||
2012-07-30 Stéphane Voltz <stef.dev@free.fr>
|
2012-07-30 Stéphane Voltz <stef.dev@free.fr>
|
||||||
* doc/sane-genesys.man backend/genesys_low.h backend/genesys*.c:
|
* doc/sane-genesys.man backend/genesys_low.h backend/genesys*.c:
|
||||||
rewrite lineart emulation du to bugs exhibited by the use of the
|
rewrite lineart emulation du to bugs exhibited by the use of the
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
/* convenient lines to paste
|
/* convenient lines to paste
|
||||||
export SANE_DEBUG_KODAKAIO=40
|
export SANE_DEBUG_KODAKAIO=40
|
||||||
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var BACKENDS=kodakaio
|
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-latex BACKENDS=kodakaio
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* SANE-FLOW-DIAGRAM Kodakaio commands in [] brackets
|
/* SANE-FLOW-DIAGRAM Kodakaio commands in [] brackets
|
||||||
|
@ -114,7 +114,7 @@ export SANE_DEBUG_KODAKAIO=40
|
||||||
|
|
||||||
#define KODAKAIO_VERSION 02
|
#define KODAKAIO_VERSION 02
|
||||||
#define KODAKAIO_REVISION 4
|
#define KODAKAIO_REVISION 4
|
||||||
#define KODAKAIO_BUILD 2
|
#define KODAKAIO_BUILD 3
|
||||||
|
|
||||||
/* for usb (but also used for net). I don't know if this size will always work */
|
/* for usb (but also used for net). I don't know if this size will always work */
|
||||||
/* #define MAX_BLOCK_SIZE 32768 */
|
/* #define MAX_BLOCK_SIZE 32768 */
|
||||||
|
@ -186,9 +186,9 @@ normal levels. This system is a plan rather than a reality
|
||||||
#define min(x,y) (((x)<(y))?(x):(y))
|
#define min(x,y) (((x)<(y))?(x):(y))
|
||||||
|
|
||||||
/* I think these timeouts are defaults, overridden by any timeouts in the kodakaio.conf file */
|
/* I think these timeouts are defaults, overridden by any timeouts in the kodakaio.conf file */
|
||||||
static int MC_SNMP_Timeout = 2500;
|
static int K_SNMP_Timeout = 2500;
|
||||||
static int MC_Scan_Data_Timeout = 40000;
|
static int K_Scan_Data_Timeout = 40000;
|
||||||
static int MC_Request_Timeout = 5000;
|
static int K_Request_Timeout = 5000;
|
||||||
|
|
||||||
/* This file is used to store directly the raster returned by the scanner for debugging
|
/* This file is used to store directly the raster returned by the scanner for debugging
|
||||||
If RawScanPath has no length it will not be created */
|
If RawScanPath has no length it will not be created */
|
||||||
|
@ -635,17 +635,23 @@ kodakaio_net_read(struct KodakAio_Scanner *s, unsigned char *buf, size_t wanted,
|
||||||
{
|
{
|
||||||
size_t size, read = 0;
|
size_t size, read = 0;
|
||||||
struct pollfd fds[1];
|
struct pollfd fds[1];
|
||||||
|
int pollreply;
|
||||||
|
|
||||||
*status = SANE_STATUS_GOOD;
|
*status = SANE_STATUS_GOOD;
|
||||||
|
|
||||||
/* poll for data-to-be-read (using MC_Request_Timeout) */
|
/* poll for data-to-be-read (using K_Request_Timeout) */
|
||||||
fds[0].fd = s->fd;
|
fds[0].fd = s->fd;
|
||||||
fds[0].events = POLLIN;
|
fds[0].events = POLLIN;
|
||||||
if (poll (fds, 1, MC_Request_Timeout) <= 0) {
|
fds[0].revents = 0;
|
||||||
|
if (pollreply = poll (fds, 1, K_Request_Timeout) <= 0) {
|
||||||
|
if (pollreply ==0)
|
||||||
|
DBG(1, "poll timeout\n");
|
||||||
|
else
|
||||||
|
DBG(1, "poll error\n");
|
||||||
*status = SANE_STATUS_IO_ERROR;
|
*status = SANE_STATUS_IO_ERROR;
|
||||||
return read;
|
return read;
|
||||||
}
|
}
|
||||||
|
else if(fds[0].revents & POLLIN) {
|
||||||
while (read < wanted) {
|
while (read < wanted) {
|
||||||
size = sanei_tcp_read(s->fd, buf + read, wanted - read);
|
size = sanei_tcp_read(s->fd, buf + read, wanted - read);
|
||||||
|
|
||||||
|
@ -659,6 +665,9 @@ kodakaio_net_read(struct KodakAio_Scanner *s, unsigned char *buf, size_t wanted,
|
||||||
*status = SANE_STATUS_IO_ERROR;
|
*status = SANE_STATUS_IO_ERROR;
|
||||||
DBG(32, "net read %d bytes:%x,%x,%x,%x,%x,%x,%x,%x\n",read,buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7]);
|
DBG(32, "net read %d bytes:%x,%x,%x,%x,%x,%x,%x,%x\n",read,buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7]);
|
||||||
return read;
|
return read;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
DBG(1, "Unknown problem with poll\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* kodak does not pad commands like magicolor, so there's only a write_raw function */
|
/* kodak does not pad commands like magicolor, so there's only a write_raw function */
|
||||||
|
@ -1157,15 +1166,15 @@ when you get the ackstring return EOF status
|
||||||
*/
|
*/
|
||||||
KodakAio_Scanner *s = (KodakAio_Scanner *) handle;
|
KodakAio_Scanner *s = (KodakAio_Scanner *) handle;
|
||||||
SANE_Status status;
|
SANE_Status status;
|
||||||
int oldtimeout = MC_Request_Timeout;
|
int oldtimeout = K_Request_Timeout;
|
||||||
size_t bytecount;
|
size_t bytecount;
|
||||||
|
|
||||||
/* DBG(8, "%s\n", __func__); */
|
/* DBG(8, "%s\n", __func__); */
|
||||||
|
|
||||||
/* Temporarily set the poll timeout long instead of short,
|
/* Temporarily set the poll timeout long instead of short,
|
||||||
* because a color scan needs >5 seconds to initialize. Is this needed for kodak?*/
|
* because a color scan needs >5 seconds to initialize. Is this needed for kodak?*/
|
||||||
MC_Request_Timeout = MC_Scan_Data_Timeout;
|
K_Request_Timeout = K_Scan_Data_Timeout;
|
||||||
sanei_usb_set_timeout (MC_Scan_Data_Timeout);
|
sanei_usb_set_timeout (K_Scan_Data_Timeout);
|
||||||
bytecount = k_recv(s, buf, *len, &status);
|
bytecount = k_recv(s, buf, *len, &status);
|
||||||
*len = bytecount;
|
*len = bytecount;
|
||||||
s->bytes_unread -= bytecount;
|
s->bytes_unread -= bytecount;
|
||||||
|
@ -1174,7 +1183,7 @@ when you get the ackstring return EOF status
|
||||||
only compare 4 bytes because we sometimes get escSS02.. or escSS00.. */
|
only compare 4 bytes because we sometimes get escSS02.. or escSS00.. */
|
||||||
if (cmparray(buf,KodakEsp_Ack,4) == 0) status = SANE_STATUS_EOF;
|
if (cmparray(buf,KodakEsp_Ack,4) == 0) status = SANE_STATUS_EOF;
|
||||||
|
|
||||||
MC_Request_Timeout = oldtimeout;
|
K_Request_Timeout = oldtimeout;
|
||||||
sanei_usb_set_timeout (oldtimeout);
|
sanei_usb_set_timeout (oldtimeout);
|
||||||
|
|
||||||
if (status == SANE_STATUS_GOOD)
|
if (status == SANE_STATUS_GOOD)
|
||||||
|
@ -2292,17 +2301,17 @@ attach_one_config(SANEI_Config __sane_unused__ *config, const char *line)
|
||||||
} else if (sscanf(line, "snmp-timeout %i\n", &timeout)) {
|
} else if (sscanf(line, "snmp-timeout %i\n", &timeout)) {
|
||||||
/* Timeout for SNMP network discovery */
|
/* Timeout for SNMP network discovery */
|
||||||
DBG(50, "%s: SNMP timeout set to %d\n", __func__, timeout);
|
DBG(50, "%s: SNMP timeout set to %d\n", __func__, timeout);
|
||||||
MC_SNMP_Timeout = timeout;
|
K_SNMP_Timeout = timeout;
|
||||||
|
|
||||||
} else if (sscanf(line, "scan-data-timeout %i\n", &timeout)) {
|
} else if (sscanf(line, "scan-data-timeout %i\n", &timeout)) {
|
||||||
/* Timeout for scan data requests */
|
/* Timeout for scan data requests */
|
||||||
DBG(50, "%s: Scan data timeout set to %d\n", __func__, timeout);
|
DBG(50, "%s: Scan data timeout set to %d\n", __func__, timeout);
|
||||||
MC_Scan_Data_Timeout = timeout;
|
K_Scan_Data_Timeout = timeout;
|
||||||
|
|
||||||
} else if (sscanf(line, "request-timeout %i\n", &timeout)) {
|
} else if (sscanf(line, "request-timeout %i\n", &timeout)) {
|
||||||
/* Timeout for all other read requests */
|
/* Timeout for all other read requests */
|
||||||
DBG(50, "%s: Request timeout set to %d\n", __func__, timeout);
|
DBG(50, "%s: Request timeout set to %d\n", __func__, timeout);
|
||||||
MC_Request_Timeout = timeout;
|
K_Request_Timeout = timeout;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* TODO: Warning about unparsable line! */
|
/* TODO: Warning about unparsable line! */
|
||||||
|
|
Plik diff jest za duży
Load Diff
|
@ -0,0 +1 @@
|
||||||
|
mktextfm ptmr7t
|
Ładowanie…
Reference in New Issue