kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Extract wait_until_has_valid_words()
rodzic
b58192493e
commit
11c80b129e
|
@ -765,35 +765,36 @@ void sanei_genesys_test_buffer_empty(Genesys_Device* dev, SANE_Bool* empty)
|
||||||
DBG(DBG_io, "%s: buffer is filled\n", __func__);
|
DBG(DBG_io, "%s: buffer is filled\n", __func__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wait_until_has_valid_words(Genesys_Device* dev)
|
||||||
|
{
|
||||||
|
unsigned words = 0;
|
||||||
|
unsigned sleep_time_ms = 10;
|
||||||
|
|
||||||
|
for (unsigned wait_ms = 0; wait_ms < 50000; wait_ms += sleep_time_ms) {
|
||||||
|
sanei_genesys_read_valid_words(dev, &words);
|
||||||
|
if (words != 0)
|
||||||
|
break;
|
||||||
|
sanei_genesys_sleep_ms(sleep_time_ms);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (words == 0) {
|
||||||
|
throw SaneException(SANE_STATUS_IO_ERROR, "timeout, buffer does not get filled");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Read data (e.g scanned image) from scan buffer
|
// Read data (e.g scanned image) from scan buffer
|
||||||
void sanei_genesys_read_data_from_scanner(Genesys_Device* dev, uint8_t* data, size_t size)
|
void sanei_genesys_read_data_from_scanner(Genesys_Device* dev, uint8_t* data, size_t size)
|
||||||
{
|
{
|
||||||
DBG_HELPER_ARGS(dbg, "size = %lu bytes", (u_long) size);
|
DBG_HELPER_ARGS(dbg, "size = %lu bytes", (u_long) size);
|
||||||
int time_count = 0;
|
|
||||||
unsigned int words = 0;
|
|
||||||
|
|
||||||
if (size & 1)
|
if (size & 1)
|
||||||
DBG(DBG_info, "WARNING %s: odd number of bytes\n", __func__);
|
DBG(DBG_info, "WARNING %s: odd number of bytes\n", __func__);
|
||||||
|
|
||||||
// wait until buffer not empty for up to 5 seconds
|
wait_until_has_valid_words(dev);
|
||||||
do {
|
|
||||||
sanei_genesys_read_valid_words (dev, &words);
|
|
||||||
if (words == 0)
|
|
||||||
{
|
|
||||||
sanei_genesys_sleep_ms(10);
|
|
||||||
time_count++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while ((time_count < 2500*2) && (words == 0));
|
|
||||||
|
|
||||||
if (words == 0) /* timeout, buffer does not get filled */
|
|
||||||
{
|
|
||||||
throw SaneException(SANE_STATUS_IO_ERROR, "timeout, buffer does not get filled");
|
|
||||||
}
|
|
||||||
|
|
||||||
dev->cmd_set->bulk_read_data(dev, 0x45, data, size);
|
dev->cmd_set->bulk_read_data(dev, 0x45, data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sanei_genesys_read_feed_steps(Genesys_Device* dev, unsigned int* steps)
|
void sanei_genesys_read_feed_steps(Genesys_Device* dev, unsigned int* steps)
|
||||||
{
|
{
|
||||||
DBG_HELPER(dbg);
|
DBG_HELPER(dbg);
|
||||||
|
|
Ładowanie…
Reference in New Issue