align gl124 code on latest gl847 improvements

- slow back home
- feeding
- unintialized dev->skip
merge-requests/1/head
Stphane Voltz 2012-05-30 06:39:35 +02:00
rodzic 3d9b16327c
commit c87bfdc0be
3 zmienionych plików z 16 dodań i 13 usunięć

Wyświetl plik

@ -58,7 +58,7 @@
* SANE backend for Genesys Logic GL646/GL841/GL842/GL843/GL847/GL124 based scanners * SANE backend for Genesys Logic GL646/GL841/GL842/GL843/GL847/GL124 based scanners
*/ */
#define BUILD 81 #define BUILD 82
#define BACKEND_NAME genesys #define BACKEND_NAME genesys
#include "genesys.h" #include "genesys.h"
@ -5222,7 +5222,8 @@ Problems with the first approach:
/* end scan if all needed data have been read */ /* end scan if all needed data have been read */
/* TODO extend this to other ASICs */ /* TODO extend this to other ASICs */
if((dev->model->asic_type == GENESYS_GL847) if(((dev->model->asic_type == GENESYS_GL847)
||(dev->model->asic_type == GENESYS_GL124))
&&(dev->total_bytes_read >= dev->total_bytes_to_read)) &&(dev->total_bytes_read >= dev->total_bytes_to_read))
{ {
dev->model->cmd_set->end_scan (dev, dev->reg, SANE_TRUE); dev->model->cmd_set->end_scan (dev, dev->reg, SANE_TRUE);

Wyświetl plik

@ -1054,6 +1054,8 @@ gl124_init_motor_regs_scan (Genesys_Device * dev,
feedl<<=scan_step_type; feedl<<=scan_step_type;
dist = scan_steps; dist = scan_steps;
if (flags & MOTOR_FLAG_FEED)
dist *=2;
if (use_fast_fed) if (use_fast_fed)
{ {
dist += fast_steps*2; dist += fast_steps*2;
@ -1064,7 +1066,7 @@ gl124_init_motor_regs_scan (Genesys_Device * dev,
if(dist<feedl) if(dist<feedl)
feedl -= dist; feedl -= dist;
else else
feedl = 1; feedl = 0;
sanei_genesys_set_triple(reg,REG_FEEDL,feedl); sanei_genesys_set_triple(reg,REG_FEEDL,feedl);
DBG (DBG_io, "%s: feedl=%d\n", __FUNCTION__, feedl); DBG (DBG_io, "%s: feedl=%d\n", __FUNCTION__, feedl);
@ -1183,13 +1185,13 @@ gl124_setup_sensor (Genesys_Device * dev, Genesys_Register_Set * regs, int dpi)
} }
sanei_genesys_set_triple(regs,REG_EXPB,exp); sanei_genesys_set_triple(regs,REG_EXPB,exp);
/* order of the sub-segments */
dev->order=sensor->order;
sanei_genesys_set_triple(regs,REG_CK1MAP,sensor->ck1map); sanei_genesys_set_triple(regs,REG_CK1MAP,sensor->ck1map);
sanei_genesys_set_triple(regs,REG_CK3MAP,sensor->ck3map); sanei_genesys_set_triple(regs,REG_CK3MAP,sensor->ck3map);
sanei_genesys_set_triple(regs,REG_CK4MAP,sensor->ck4map); sanei_genesys_set_triple(regs,REG_CK4MAP,sensor->ck4map);
/* order of the sub-segments */
dev->order=sensor->order;
DBGCOMPLETED; DBGCOMPLETED;
} }
@ -1378,6 +1380,7 @@ gl124_init_optical_regs_scan (Genesys_Device * dev,
dev->bpl = words_per_line; dev->bpl = words_per_line;
dev->cur = 0; dev->cur = 0;
dev->skip = 0;
dev->len = dev->bpl/segnb; dev->len = dev->bpl/segnb;
dev->dist = dev->bpl/segnb; dev->dist = dev->bpl/segnb;
dev->segnb = segnb; dev->segnb = segnb;
@ -2201,8 +2204,6 @@ gl124_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
/* set up for reverse and no scan */ /* set up for reverse and no scan */
r = sanei_genesys_get_address (local_reg, REG02); r = sanei_genesys_get_address (local_reg, REG02);
r->value |= REG02_MTRREV; r->value |= REG02_MTRREV;
r = sanei_genesys_get_address (local_reg, REG01);
r->value &= ~REG01_SCAN;
RIE (gl124_bulk_write_register (dev, local_reg, GENESYS_GL124_MAX_REGS)); RIE (gl124_bulk_write_register (dev, local_reg, GENESYS_GL124_MAX_REGS));
@ -2331,6 +2332,9 @@ gl124_feed (Genesys_Device * dev, unsigned int steps)
} }
while (status == SANE_STATUS_GOOD && !(val & FEEDFSH)); while (status == SANE_STATUS_GOOD && !(val & FEEDFSH));
/* then stop scanning */
RIE(gl124_stop_action (dev));
DBGCOMPLETED; DBGCOMPLETED;
return SANE_STATUS_GOOD; return SANE_STATUS_GOOD;
} }
@ -2662,16 +2666,15 @@ gl124_init_regs_for_scan (Genesys_Device * dev)
move = (move * move_dpi) / MM_PER_INCH; move = (move * move_dpi) / MM_PER_INCH;
DBG (DBG_info, "%s: move=%f steps\n", __FUNCTION__, move); DBG (DBG_info, "%s: move=%f steps\n", __FUNCTION__, move);
if(channels*dev->settings.yres>=1200 && move>1000) if(channels*dev->settings.yres>=600 && move>700)
{ {
move -= 180; status = gl124_feed (dev, move-500);
status = gl124_feed (dev, move);
if (status != SANE_STATUS_GOOD) if (status != SANE_STATUS_GOOD)
{ {
DBG (DBG_error, "%s: failed to move to scan area\n",__FUNCTION__); DBG (DBG_error, "%s: failed to move to scan area\n",__FUNCTION__);
return status; return status;
} }
move=0; move=500;
} }
DBG (DBG_info, "gl124_init_regs_for_scan: move=%f steps\n", move); DBG (DBG_info, "gl124_init_regs_for_scan: move=%f steps\n", move);

Wyświetl plik

@ -581,7 +581,6 @@ typedef struct {
static size_t order_01[]={0,1}; static size_t order_01[]={0,1};
static size_t order_0213[]={0,2,1,3}; static size_t order_0213[]={0,2,1,3};
static size_t order_0246[]={0,2,4,6,1,3,5,7};
/** /**
* database of sensor profiles * database of sensor profiles