kopia lustrzana https://gitlab.com/sane-project/backends
epsonds: code cleanup, fix initial hang
rodzic
9d196e8889
commit
c3545da14d
|
@ -226,6 +226,8 @@ static SANE_Status esci2_cmd_simple(epsonds_scanner* s, char *cmd, SANE_Status (
|
||||||
|
|
||||||
SANE_Status esci2_fin(epsonds_scanner *s)
|
SANE_Status esci2_fin(epsonds_scanner *s)
|
||||||
{
|
{
|
||||||
|
DBG(5, "%s\n", __func__);
|
||||||
|
|
||||||
SANE_Status status = esci2_cmd_simple(s, "FIN x0000000", NULL);
|
SANE_Status status = esci2_cmd_simple(s, "FIN x0000000", NULL);
|
||||||
s->locked = 0;
|
s->locked = 0;
|
||||||
return status;
|
return status;
|
||||||
|
|
|
@ -157,22 +157,16 @@ SANE_Status eds_fsx(epsonds_scanner *s)
|
||||||
|
|
||||||
SANE_Status eds_lock(epsonds_scanner *s)
|
SANE_Status eds_lock(epsonds_scanner *s)
|
||||||
{
|
{
|
||||||
int tries = 3;
|
SANE_Status status;
|
||||||
|
|
||||||
|
DBG(5, "%s\n", __func__);
|
||||||
|
|
||||||
if (s->hw->connection == SANE_EPSONDS_USB) {
|
if (s->hw->connection == SANE_EPSONDS_USB) {
|
||||||
sanei_usb_set_timeout(USB_SHORT_TIMEOUT);
|
sanei_usb_set_timeout(USB_SHORT_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
SANE_Status status = eds_fsx(s);
|
|
||||||
if (status != SANE_STATUS_GOOD) {
|
|
||||||
|
|
||||||
do {
|
|
||||||
sleep(1);
|
|
||||||
status = eds_fsx(s);
|
status = eds_fsx(s);
|
||||||
|
|
||||||
} while (--tries && status != SANE_STATUS_GOOD);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (s->hw->connection == SANE_EPSONDS_USB) {
|
if (s->hw->connection == SANE_EPSONDS_USB) {
|
||||||
sanei_usb_set_timeout(USB_TIMEOUT);
|
sanei_usb_set_timeout(USB_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#define epsonds_io_h
|
#define epsonds_io_h
|
||||||
|
|
||||||
#define USB_TIMEOUT (6 * 1000)
|
#define USB_TIMEOUT (6 * 1000)
|
||||||
#define USB_SHORT_TIMEOUT (1 * 500)
|
#define USB_SHORT_TIMEOUT (1 * 800)
|
||||||
|
|
||||||
size_t eds_send(epsonds_scanner *s, void *buf, size_t length, SANE_Status *status);
|
size_t eds_send(epsonds_scanner *s, void *buf, size_t length, SANE_Status *status);
|
||||||
size_t eds_recv(epsonds_scanner *s, void *buf, size_t length, SANE_Status *status);
|
size_t eds_recv(epsonds_scanner *s, void *buf, size_t length, SANE_Status *status);
|
||||||
|
|
|
@ -167,9 +167,6 @@ open_scanner(epsonds_scanner *s)
|
||||||
if (s->hw->connection == SANE_EPSONDS_USB) {
|
if (s->hw->connection == SANE_EPSONDS_USB) {
|
||||||
|
|
||||||
status = sanei_usb_open(s->hw->sane.name, &s->fd);
|
status = sanei_usb_open(s->hw->sane.name, &s->fd);
|
||||||
if (status == SANE_STATUS_GOOD)
|
|
||||||
sanei_usb_clear_halt(s->fd);
|
|
||||||
|
|
||||||
sanei_usb_set_timeout(USB_TIMEOUT);
|
sanei_usb_set_timeout(USB_TIMEOUT);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -153,8 +153,6 @@ typedef struct ring_buffer
|
||||||
|
|
||||||
} ring_buffer;
|
} ring_buffer;
|
||||||
|
|
||||||
// typedef struct epsonds_scanner epsonds_scanner;
|
|
||||||
|
|
||||||
/* an instance of a scanner */
|
/* an instance of a scanner */
|
||||||
|
|
||||||
struct epsonds_scanner
|
struct epsonds_scanner
|
||||||
|
|
Ładowanie…
Reference in New Issue