kopia lustrzana https://gitlab.com/sane-project/backends
rodzic
8e22b9418a
commit
b9e41f89e1
|
@ -2590,10 +2590,6 @@ compute_planar_coefficients (Genesys_Device * dev,
|
||||||
/* x2 because of 16 bit values, and x2 since one coeff for dark
|
/* x2 because of 16 bit values, and x2 since one coeff for dark
|
||||||
* and another for white */
|
* and another for white */
|
||||||
ptr = shading_data + words_per_color * cmat[c] * 2 + (x + offset) * 4;
|
ptr = shading_data + words_per_color * cmat[c] * 2 + (x + offset) * 4;
|
||||||
if(ptr-shading_data==0x385fc)
|
|
||||||
{
|
|
||||||
dk = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dk = 0;
|
dk = 0;
|
||||||
br = 0;
|
br = 0;
|
||||||
|
@ -2924,9 +2920,9 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
|
||||||
coeff,
|
coeff,
|
||||||
target_code);
|
target_code);
|
||||||
break;
|
break;
|
||||||
|
case CIS_CANONLIDE700:
|
||||||
case CIS_CANONLIDE100:
|
case CIS_CANONLIDE100:
|
||||||
case CIS_CANONLIDE200:
|
case CIS_CANONLIDE200:
|
||||||
case CIS_CANONLIDE700:
|
|
||||||
case CIS_CANONLIDE110:
|
case CIS_CANONLIDE110:
|
||||||
words_per_color=pixels_per_line*2;
|
words_per_color=pixels_per_line*2;
|
||||||
length = words_per_color * 3 * 2;
|
length = words_per_color * 3 * 2;
|
||||||
|
|
|
@ -472,9 +472,9 @@ static Genesys_Sensor Sensor[] = {
|
||||||
/* CANONLIDE700 */
|
/* CANONLIDE700 */
|
||||||
{CIS_CANONLIDE700,
|
{CIS_CANONLIDE700,
|
||||||
4800, /* optical resolution */
|
4800, /* optical resolution */
|
||||||
73*8, /* black pixels */
|
73*8, /* black pixels 73 at 600 dpi */
|
||||||
16*8, /* dummy pixels */
|
16*8, /* dummy pixels */
|
||||||
384*8, /* CCD_startx_offset 384 at 600 */
|
384*8, /* CCD_startx_offset 384 at 600 dpi */
|
||||||
5186*8, /* 8x5570 segments */
|
5186*8, /* 8x5570 segments */
|
||||||
210,
|
210,
|
||||||
200,
|
200,
|
||||||
|
@ -1625,7 +1625,7 @@ static Genesys_Model canon_lide_700f_model = {
|
||||||
SANE_FIX (216.07), /* Size of scan area in mm (x) */
|
SANE_FIX (216.07), /* Size of scan area in mm (x) */
|
||||||
SANE_FIX (297.0), /* Size of scan area in mm (y) */
|
SANE_FIX (297.0), /* Size of scan area in mm (y) */
|
||||||
|
|
||||||
SANE_FIX (0.0), /* Start of white strip in mm (y) */
|
SANE_FIX (1.0), /* Start of white strip in mm (y) */
|
||||||
SANE_FIX (0.0), /* Start of black mark in mm (x) */
|
SANE_FIX (0.0), /* Start of black mark in mm (x) */
|
||||||
|
|
||||||
SANE_FIX (0.0), /* Start of scan area in TA mode in mm (x) */
|
SANE_FIX (0.0), /* Start of scan area in TA mode in mm (x) */
|
||||||
|
@ -1658,7 +1658,7 @@ static Genesys_Model canon_lide_700f_model = {
|
||||||
| GENESYS_FLAG_SHADING_REPARK
|
| GENESYS_FLAG_SHADING_REPARK
|
||||||
| GENESYS_FLAG_CUSTOM_GAMMA,
|
| GENESYS_FLAG_CUSTOM_GAMMA,
|
||||||
GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW,
|
GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW,
|
||||||
50,
|
100,
|
||||||
400
|
400
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -2272,6 +2272,7 @@ gl124_feed (Genesys_Device * dev, unsigned int steps)
|
||||||
uint8_t val;
|
uint8_t val;
|
||||||
|
|
||||||
DBGSTART;
|
DBGSTART;
|
||||||
|
DBG (DBG_io, "%s: steps=%d\n", __FUNCTION__, steps);
|
||||||
|
|
||||||
/* prepare local registers */
|
/* prepare local registers */
|
||||||
memset (local_reg, 0, sizeof (local_reg));
|
memset (local_reg, 0, sizeof (local_reg));
|
||||||
|
|
|
@ -760,6 +760,27 @@ gl847_set_ad_fe (Genesys_Device * dev, uint8_t set)
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static SANE_Status
|
||||||
|
gl847_homsnr_gpio(Genesys_Device *dev)
|
||||||
|
{
|
||||||
|
uint8_t val;
|
||||||
|
SANE_Status status=SANE_STATUS_GOOD;
|
||||||
|
|
||||||
|
if (dev->model->gpo_type == GPO_CANONLIDE700)
|
||||||
|
{
|
||||||
|
RIE (sanei_genesys_read_register (dev, REG6C, &val));
|
||||||
|
val &= ~REG6C_GPIO10;
|
||||||
|
RIE (sanei_genesys_write_register (dev, REG6C, val));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RIE (sanei_genesys_read_register (dev, REG6C, &val));
|
||||||
|
val |= REG6C_GPIO10;
|
||||||
|
RIE (sanei_genesys_write_register (dev, REG6C, val));
|
||||||
|
}
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
/* Set values of analog frontend */
|
/* Set values of analog frontend */
|
||||||
static SANE_Status
|
static SANE_Status
|
||||||
gl847_set_fe (Genesys_Device * dev, uint8_t set)
|
gl847_set_fe (Genesys_Device * dev, uint8_t set)
|
||||||
|
@ -1869,9 +1890,7 @@ gl847_stop_action (Genesys_Device * dev)
|
||||||
DBGSTART;
|
DBGSTART;
|
||||||
|
|
||||||
/* post scan gpio */
|
/* post scan gpio */
|
||||||
RIE (sanei_genesys_read_register (dev, REG6C, &val));
|
gl847_homsnr_gpio(dev);
|
||||||
val &= ~REG6C_GPIO10;
|
|
||||||
RIE (sanei_genesys_write_register (dev, REG6C, val));
|
|
||||||
|
|
||||||
status = sanei_genesys_get_status (dev, &val);
|
status = sanei_genesys_get_status (dev, &val);
|
||||||
if (DBG_LEVEL >= DBG_io)
|
if (DBG_LEVEL >= DBG_io)
|
||||||
|
@ -1960,11 +1979,12 @@ gl847_begin_scan (Genesys_Device * dev, Genesys_Register_Set * reg,
|
||||||
DBGSTART;
|
DBGSTART;
|
||||||
|
|
||||||
/* clear GPIO 10 */
|
/* clear GPIO 10 */
|
||||||
/* XXX STEF XXX
|
if (dev->model->gpo_type != GPO_CANONLIDE700)
|
||||||
RIE (sanei_genesys_read_register (dev, REG6C, &val));
|
{
|
||||||
val &= ~REG6C_GPIO10;
|
RIE (sanei_genesys_read_register (dev, REG6C, &val));
|
||||||
RIE (sanei_genesys_write_register (dev, REG6C, val));
|
val &= ~REG6C_GPIO10;
|
||||||
*/
|
RIE (sanei_genesys_write_register (dev, REG6C, val));
|
||||||
|
}
|
||||||
|
|
||||||
val = REG0D_CLRLNCNT;
|
val = REG0D_CLRLNCNT;
|
||||||
RIE (sanei_genesys_write_register (dev, REG0D, val));
|
RIE (sanei_genesys_write_register (dev, REG0D, val));
|
||||||
|
@ -2041,15 +2061,12 @@ gl847_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
|
||||||
int loop = 0;
|
int loop = 0;
|
||||||
int scan_mode;
|
int scan_mode;
|
||||||
|
|
||||||
|
|
||||||
/* post scan gpio : without that HOMSNR is unreliable */
|
|
||||||
RIE (sanei_genesys_read_register (dev, REG6C, &val));
|
|
||||||
val &= ~REG6C_GPIO10;
|
|
||||||
RIE (sanei_genesys_write_register (dev, REG6C, val));
|
|
||||||
|
|
||||||
DBG (DBG_proc, "gl847_slow_back_home (wait_until_home = %d)\n",
|
DBG (DBG_proc, "gl847_slow_back_home (wait_until_home = %d)\n",
|
||||||
wait_until_home);
|
wait_until_home);
|
||||||
|
|
||||||
|
/* post scan gpio : without that HOMSNR is unreliable */
|
||||||
|
gl847_homsnr_gpio(dev);
|
||||||
|
|
||||||
/* first read gives HOME_SENSOR true */
|
/* first read gives HOME_SENSOR true */
|
||||||
status = sanei_genesys_get_status (dev, &val);
|
status = sanei_genesys_get_status (dev, &val);
|
||||||
if (status != SANE_STATUS_GOOD)
|
if (status != SANE_STATUS_GOOD)
|
||||||
|
@ -2136,9 +2153,7 @@ gl847_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* post scan gpio : without that HOMSNR is unreliable */
|
/* post scan gpio : without that HOMSNR is unreliable */
|
||||||
RIE (sanei_genesys_read_register (dev, REG6C, &val));
|
gl847_homsnr_gpio(dev);
|
||||||
val &= ~REG6C_GPIO10;
|
|
||||||
RIE (sanei_genesys_write_register (dev, REG6C, val));
|
|
||||||
|
|
||||||
if (wait_until_home)
|
if (wait_until_home)
|
||||||
{
|
{
|
||||||
|
@ -2365,7 +2380,6 @@ gl847_feed (Genesys_Device * dev, unsigned int steps)
|
||||||
Genesys_Register_Set *r;
|
Genesys_Register_Set *r;
|
||||||
float resolution;
|
float resolution;
|
||||||
uint8_t val;
|
uint8_t val;
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
DBGSTART;
|
DBGSTART;
|
||||||
DBG (DBG_io, "%s: steps=%d\n", __FUNCTION__, steps);
|
DBG (DBG_io, "%s: steps=%d\n", __FUNCTION__, steps);
|
||||||
|
@ -2374,20 +2388,6 @@ gl847_feed (Genesys_Device * dev, unsigned int steps)
|
||||||
memset (local_reg, 0, sizeof (local_reg));
|
memset (local_reg, 0, sizeof (local_reg));
|
||||||
memcpy (local_reg, dev->reg, GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
|
memcpy (local_reg, dev->reg, GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
|
||||||
|
|
||||||
resolution=200;
|
|
||||||
resolution=150;
|
|
||||||
|
|
||||||
/* search lowest move dpi XXX STEF XXX*/
|
|
||||||
i=0;
|
|
||||||
resolution=600;
|
|
||||||
while(i<sizeof(sensors)/sizeof(Sensor_Profile))
|
|
||||||
{
|
|
||||||
if(sensors[i].sensor_type==dev->model->ccd_type && sensors[i].dpi<resolution)
|
|
||||||
{
|
|
||||||
resolution=sensors[i].dpi;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
resolution=sanei_genesys_get_lowest_ydpi(dev);
|
resolution=sanei_genesys_get_lowest_ydpi(dev);
|
||||||
gl847_init_scan_regs (dev,
|
gl847_init_scan_regs (dev,
|
||||||
local_reg,
|
local_reg,
|
||||||
|
@ -2439,7 +2439,7 @@ gl847_feed (Genesys_Device * dev, unsigned int steps)
|
||||||
while (status == SANE_STATUS_GOOD && !(val & FEEDFSH));
|
while (status == SANE_STATUS_GOOD && !(val & FEEDFSH));
|
||||||
|
|
||||||
/* then stop scanning */
|
/* then stop scanning */
|
||||||
RIE (gl847_stop_action (dev));
|
/* XXX STEF XXX RIE (gl847_stop_action (dev)); */
|
||||||
|
|
||||||
DBGCOMPLETED;
|
DBGCOMPLETED;
|
||||||
return SANE_STATUS_GOOD;
|
return SANE_STATUS_GOOD;
|
||||||
|
@ -2471,7 +2471,7 @@ gl847_init_regs_for_shading (Genesys_Device * dev)
|
||||||
dev->calib_resolution,
|
dev->calib_resolution,
|
||||||
dev->calib_resolution,
|
dev->calib_resolution,
|
||||||
0,
|
0,
|
||||||
0,
|
90, /* XXX STEF XXX ensure it is compatible with LiDE 100/200 */
|
||||||
dev->calib_pixels,
|
dev->calib_pixels,
|
||||||
dev->calib_lines,
|
dev->calib_lines,
|
||||||
16,
|
16,
|
||||||
|
@ -2754,7 +2754,7 @@ gl847_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
|
||||||
{
|
{
|
||||||
dev->binary=fopen("binary.pnm","wb");
|
dev->binary=fopen("binary.pnm","wb");
|
||||||
sanei_genesys_get_triple(dev->reg, REG_LINCNT, &lines);
|
sanei_genesys_get_triple(dev->reg, REG_LINCNT, &lines);
|
||||||
channels=3;
|
channels=dev->current_setup.channels;
|
||||||
if(dev->binary!=NULL)
|
if(dev->binary!=NULL)
|
||||||
{
|
{
|
||||||
fprintf(dev->binary,"P5\n%d %d\n%d\n",(endpixel-strpixel)/factor*channels,lines/channels,255);
|
fprintf(dev->binary,"P5\n%d %d\n%d\n",(endpixel-strpixel)/factor*channels,lines/channels,255);
|
||||||
|
@ -2853,13 +2853,13 @@ gl847_led_calibration (Genesys_Device * dev)
|
||||||
|
|
||||||
DBGSTART;
|
DBGSTART;
|
||||||
|
|
||||||
/* move to reach calibration area */
|
|
||||||
move = SANE_UNFIX (dev->model->y_offset_calib);
|
move = SANE_UNFIX (dev->model->y_offset_calib);
|
||||||
move = (move * dev->motor.base_ydpi) / MM_PER_INCH;
|
move = (move * (dev->motor.base_ydpi/4)) / MM_PER_INCH;
|
||||||
if(move>20)
|
if(move>20)
|
||||||
{
|
{
|
||||||
RIE(gl847_feed (dev, move));
|
RIE(gl847_feed (dev, move));
|
||||||
}
|
}
|
||||||
|
DBG (DBG_io, "%s: move=%f steps\n", __FUNCTION__, move);
|
||||||
|
|
||||||
/* offset calibration is always done in color mode */
|
/* offset calibration is always done in color mode */
|
||||||
channels = 3;
|
channels = 3;
|
||||||
|
@ -2903,9 +2903,9 @@ gl847_led_calibration (Genesys_Device * dev)
|
||||||
exp[1]=sensor->expg;
|
exp[1]=sensor->expg;
|
||||||
exp[2]=sensor->expb;
|
exp[2]=sensor->expb;
|
||||||
|
|
||||||
bottom[0]=39000;
|
bottom[0]=29000;
|
||||||
bottom[1]=49000;
|
bottom[1]=29000;
|
||||||
bottom[2]=49000;
|
bottom[2]=29000;
|
||||||
|
|
||||||
top[0]=41000;
|
top[0]=41000;
|
||||||
top[1]=51000;
|
top[1]=51000;
|
||||||
|
@ -3030,13 +3030,18 @@ gl847_init_gpio (Genesys_Device * dev)
|
||||||
return SANE_STATUS_INVAL;
|
return SANE_STATUS_INVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RIE (sanei_genesys_write_register (dev, REGA7, gpios[idx].ra7));
|
||||||
|
RIE (sanei_genesys_write_register (dev, REGA6, gpios[idx].ra6));
|
||||||
|
|
||||||
|
RIE (sanei_genesys_write_register (dev, REG6E, gpios[idx].r6e));
|
||||||
|
RIE (sanei_genesys_write_register (dev, REG6C, 0x00));
|
||||||
|
|
||||||
RIE (sanei_genesys_write_register (dev, REG6B, gpios[idx].r6b));
|
RIE (sanei_genesys_write_register (dev, REG6B, gpios[idx].r6b));
|
||||||
RIE (sanei_genesys_write_register (dev, REG6C, gpios[idx].r6c));
|
RIE (sanei_genesys_write_register (dev, REG6C, gpios[idx].r6c));
|
||||||
RIE (sanei_genesys_write_register (dev, REG6D, gpios[idx].r6d));
|
RIE (sanei_genesys_write_register (dev, REG6D, gpios[idx].r6d));
|
||||||
RIE (sanei_genesys_write_register (dev, REG6E, gpios[idx].r6e));
|
RIE (sanei_genesys_write_register (dev, REG6E, gpios[idx].r6e));
|
||||||
RIE (sanei_genesys_write_register (dev, REG6F, gpios[idx].r6f));
|
RIE (sanei_genesys_write_register (dev, REG6F, gpios[idx].r6f));
|
||||||
RIE (sanei_genesys_write_register (dev, REGA6, gpios[idx].ra6));
|
|
||||||
RIE (sanei_genesys_write_register (dev, REGA7, gpios[idx].ra7));
|
|
||||||
RIE (sanei_genesys_write_register (dev, REGA8, gpios[idx].ra8));
|
RIE (sanei_genesys_write_register (dev, REGA8, gpios[idx].ra8));
|
||||||
RIE (sanei_genesys_write_register (dev, REGA9, gpios[idx].ra9));
|
RIE (sanei_genesys_write_register (dev, REGA9, gpios[idx].ra9));
|
||||||
|
|
||||||
|
|
|
@ -537,7 +537,7 @@ typedef struct
|
||||||
} Gpio_Profile;
|
} Gpio_Profile;
|
||||||
|
|
||||||
static Gpio_Profile gpios[]={
|
static Gpio_Profile gpios[]={
|
||||||
{ GPO_CANONLIDE200, 0x02, 0xfb, 0x20, 0xff, 0x00, 0x04, 0x04, 0x00, 0x00},
|
{ GPO_CANONLIDE200, 0x02, 0xf9, 0x20, 0xff, 0x00, 0x04, 0x04, 0x00, 0x00},
|
||||||
{ GPO_CANONLIDE700, 0x06, 0xdb, 0xff, 0xff, 0x80, 0x15, 0x07, 0x20, 0x10},
|
{ GPO_CANONLIDE700, 0x06, 0xdb, 0xff, 0xff, 0x80, 0x15, 0x07, 0x20, 0x10},
|
||||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||||
};
|
};
|
||||||
|
|
Ładowanie…
Reference in New Issue