kopia lustrzana https://gitlab.com/sane-project/backends
HP3670 working uncalibrated at all resolutions
rodzic
3cafbe7f52
commit
a0fd2c5012
|
@ -3170,8 +3170,6 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
|
|||
target_code);
|
||||
break;
|
||||
case CCD_5345:
|
||||
case CCD_HP2400:
|
||||
case CCD_HP3670:
|
||||
target_code = 0xe000;
|
||||
o = 4;
|
||||
if(dev->settings.xres<=dev->sensor.optical_res/2)
|
||||
|
@ -3190,6 +3188,23 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
|
|||
coeff,
|
||||
target_code);
|
||||
break;
|
||||
case CCD_HP3670:
|
||||
case CCD_HP2400:
|
||||
target_code = 0xe000;
|
||||
/* 0, 20 KO, -20 ~OK ?*/
|
||||
o = -20;
|
||||
cmat[0] = 0;
|
||||
cmat[1] = 1;
|
||||
cmat[2] = 2;
|
||||
compute_coefficients (dev,
|
||||
shading_data,
|
||||
pixels_per_line,
|
||||
3,
|
||||
cmat,
|
||||
o,
|
||||
coeff,
|
||||
target_code);
|
||||
break;
|
||||
case CCD_CANONLIDE35:
|
||||
target_bright = 0xfa00;
|
||||
target_dark = 0xa00;
|
||||
|
|
|
@ -85,10 +85,10 @@ static Genesys_Frontend Wolfson[] = {
|
|||
}
|
||||
, /* 3: MD6228/MD6471 */
|
||||
{DAC_WOLFSON_HP2400,
|
||||
{0x00, 0x03, 0x04, 0x02}
|
||||
{0x00, 0x03, 0x05, 0x02}
|
||||
, {0x00, 0x00, 0x00}
|
||||
, {0xc0, 0xc0, 0xc0}
|
||||
, {0x07, 0x07, 0x07}
|
||||
, {0xb4, 0xb6, 0xbc}
|
||||
, {0x06, 0x09, 0x08}
|
||||
, {0x00, 0x00, 0x00}
|
||||
}
|
||||
, /* 4: HP2400c */
|
||||
|
@ -121,12 +121,12 @@ static Genesys_Frontend Wolfson[] = {
|
|||
, {0x07, 0x00, 0x00}
|
||||
}
|
||||
, /* 8: HP3670 */
|
||||
{DAC_WOLFSON_HP3670, /* uses one write for offset or gain like hp2300/2400 */
|
||||
{DAC_WOLFSON_HP3670,
|
||||
/* reg0 reg1 reg2 reg3 */
|
||||
{0x00, 0x03, 0x04, 0x02}
|
||||
{0x00, 0x03, 0x05, 0x32} /* reg3=0x32 for 100-300 dpi, 0x12 at 1200 */
|
||||
, {0x00, 0x00, 0x00} /* sign */
|
||||
, {0xb0, 0xb0, 0xb0} /* offset */
|
||||
, {0x07, 0x07, 0x07} /* gain */
|
||||
, {0xba, 0xb8, 0xb8} /* offset */
|
||||
, {0x06, 0x05, 0x04} /* gain 4,3,2 at 1200 ?*/
|
||||
, {0x00, 0x00, 0x00}
|
||||
}
|
||||
,
|
||||
|
@ -976,9 +976,7 @@ Genesys_Model hp2400c_model = {
|
|||
| GENESYS_FLAG_14BIT_GAMMA
|
||||
| GENESYS_FLAG_DARK_CALIBRATION
|
||||
| GENESYS_FLAG_OFFSET_CALIBRATION
|
||||
| GENESYS_FLAG_CUSTOM_GAMMA
|
||||
| GENESYS_FLAG_SKIP_WARMUP
|
||||
| GENESYS_FLAG_NO_CALIBRATION,
|
||||
| GENESYS_FLAG_CUSTOM_GAMMA,
|
||||
GENESYS_HAS_NO_BUTTONS, /* no buttons supported */
|
||||
20,
|
||||
132
|
||||
|
@ -1044,15 +1042,16 @@ static Genesys_Model hp3670c_model = {
|
|||
GENESYS_GL646,
|
||||
NULL,
|
||||
|
||||
{1200, 600, 300, 150, 100, 50, 0}, /* possible x-resolutions */
|
||||
{1200, 600, 300, 150, 100, 50, 0}, /* possible y-resolutions */
|
||||
{1200, 600, 300, 150, 100, 75, 0}, /* possible x-resolutions */
|
||||
{1200, 600, 300, 150, 100, 75, 0}, /* possible y-resolutions */
|
||||
{16, 8, 0}, /* possible depths in gray mode */
|
||||
{16, 8, 0}, /* possible depths in color mode */
|
||||
|
||||
SANE_FIX (0.0), /* Start of scan area in mm (x) */
|
||||
SANE_FIX (7.5), /* Start of scan area in mm (y) */
|
||||
SANE_FIX (8.5), /* Start of scan area in mm (x) */
|
||||
SANE_FIX (0.0), /* Start of scan area in mm (y) */
|
||||
/* SANE_FIX (14.0), Start of scan area in mm (y) */
|
||||
SANE_FIX (215.9), /* Size of scan area in mm (x) */
|
||||
SANE_FIX (310.0), /* Size of scan area in mm (y) */
|
||||
SANE_FIX (300.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 black mark in mm (x) */
|
||||
|
@ -1083,6 +1082,7 @@ static Genesys_Model hp3670c_model = {
|
|||
| GENESYS_FLAG_14BIT_GAMMA
|
||||
| GENESYS_FLAG_DARK_CALIBRATION
|
||||
| GENESYS_FLAG_OFFSET_CALIBRATION
|
||||
| GENESYS_FLAG_SKIP_WARMUP
|
||||
| GENESYS_FLAG_NO_CALIBRATION
|
||||
| GENESYS_FLAG_CUSTOM_GAMMA,
|
||||
GENESYS_HAS_NO_BUTTONS,
|
||||
|
@ -1224,7 +1224,6 @@ static Genesys_Model medion_md5345_model = {
|
|||
after finishing scanning in mm */
|
||||
|
||||
48, 24, 0, /* RGB CCD Line-distance correction in pixel */
|
||||
/* 48, 24, 0, */
|
||||
COLOR_ORDER_RGB, /* Order of the CCD/CIS colors */
|
||||
|
||||
SANE_FALSE, /* Is this a CIS scanner? */
|
||||
|
|
|
@ -1115,7 +1115,7 @@ gl646_setup_registers (Genesys_Device * dev,
|
|||
RIE (write_control (dev, xresolution));
|
||||
|
||||
/* setup analog frontend */
|
||||
RIE (gl646_set_fe (dev, AFE_SET));
|
||||
RIE (gl646_set_fe (dev, AFE_SET, xresolution));
|
||||
|
||||
/* now we're done with registers setup values used by data transfer */
|
||||
/* we setup values needed for the data transfer */
|
||||
|
@ -1677,19 +1677,19 @@ gl646_set_ad_fe (Genesys_Device * dev, uint8_t set)
|
|||
* set up analog frontend
|
||||
* @param dev device to set up
|
||||
* @param set action from AFE_SET, AFE_INIT and AFE_POWERSAVE
|
||||
* @param dpi resolution of the scan since it affects settings
|
||||
* @return SANE_STATUS_GOOD if evrithing OK
|
||||
*/
|
||||
static SANE_Status
|
||||
gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set)
|
||||
gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set, int dpi)
|
||||
{
|
||||
SANE_Status status = SANE_STATUS_GOOD;
|
||||
int i;
|
||||
|
||||
DBG (DBG_proc, "gl646_wm_hp3670: start \n");
|
||||
switch (set)
|
||||
{
|
||||
case AFE_INIT:
|
||||
sanei_genesys_init_fe (dev);
|
||||
RIE(sanei_genesys_write_register (dev, 0x50, 0x00));
|
||||
status = sanei_genesys_fe_write_data (dev, 0x04, 0x80);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
|
@ -1698,6 +1698,8 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set)
|
|||
return status;
|
||||
}
|
||||
usleep (200000UL);
|
||||
RIE (sanei_genesys_write_register (dev, 0x50, 0x00));
|
||||
sanei_genesys_init_fe (dev);
|
||||
status = sanei_genesys_fe_write_data (dev, 0x01, dev->frontend.reg[1]);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
|
@ -1705,7 +1707,6 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set)
|
|||
sane_strstatus (status));
|
||||
return status;
|
||||
}
|
||||
/* b2 INVOP : set positive polarity output */
|
||||
status = sanei_genesys_fe_write_data (dev, 0x02, dev->frontend.reg[2]);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
|
@ -1713,17 +1714,15 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set)
|
|||
sane_strstatus (status));
|
||||
return status;
|
||||
}
|
||||
status = gl646_gpio_output_enable (dev->dn, 0x07);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"gl646_set_fe: failed to enable GPIO: %s\n",
|
||||
sane_strstatus (status));
|
||||
return status;
|
||||
}
|
||||
status = gl646_gpio_output_enable (dev->dn, 0x07);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error, "gl646_wm_hp3670: failed to enable GPIO: %s\n",
|
||||
sane_strstatus (status));
|
||||
return status;
|
||||
}
|
||||
break;
|
||||
case AFE_POWER_SAVE:
|
||||
/*
|
||||
status = sanei_genesys_fe_write_data (dev, 0x01, 0x06);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
|
@ -1737,42 +1736,57 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set)
|
|||
DBG (DBG_error, "gl646_wm_hp3670: writing reg6 failed: %s\n",
|
||||
sane_strstatus (status));
|
||||
return status;
|
||||
} */
|
||||
}
|
||||
return status;
|
||||
break;
|
||||
default: /* AFE_SET */
|
||||
/* mode setup */
|
||||
/* bit 3:0 RLCV */
|
||||
status = sanei_genesys_fe_write_data (dev, 0x03, dev->frontend.reg[3]);
|
||||
i = dev->frontend.reg[3];
|
||||
if (dpi > dev->sensor.optical_res / 2)
|
||||
{
|
||||
i = i & 0x1f;
|
||||
}
|
||||
status = sanei_genesys_fe_write_data (dev, 0x03, i);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error, "gl646_wm_hp3670: writing reg3 failed: %s\n",
|
||||
sane_strstatus (status));
|
||||
return status;
|
||||
}
|
||||
/* offset 0x23 */
|
||||
status = sanei_genesys_fe_write_data (dev, 0x28, dev->frontend.offset[0]);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
/* offset and sign (or msb/lsb ?) */
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
DBG (DBG_error, "gl646_wm_hp3670: writing offset failed: %s\n",
|
||||
sane_strstatus (status));
|
||||
return status;
|
||||
status =
|
||||
sanei_genesys_fe_write_data (dev, 0x20 + i,
|
||||
dev->frontend.offset[i]);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
"gl646_wm_hp3670: writing offset%d failed: %s\n", i,
|
||||
sane_strstatus (status));
|
||||
return status;
|
||||
}
|
||||
status = sanei_genesys_fe_write_data (dev, 0x24 + i, dev->frontend.sign[i]); /* MSB/LSB ? */
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error, "gl646_wm_hp3670: writing sign%d failed: %s\n",
|
||||
i, sane_strstatus (status));
|
||||
return status;
|
||||
}
|
||||
}
|
||||
/* gain 0x28 */
|
||||
status = sanei_genesys_fe_write_data (dev, 0x23, dev->frontend.gain[0]);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
|
||||
/* gain */
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
DBG (DBG_error, "gl646_wm_hp3670: writing gain failed: %s\n",
|
||||
sane_strstatus (status));
|
||||
return status;
|
||||
}
|
||||
/* mode setup */
|
||||
status = sanei_genesys_fe_write_data (dev, 0x01, dev->frontend.reg[1]);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error, "gl646_wm_hp3670: writing reg1 failed: %s\n",
|
||||
sane_strstatus (status));
|
||||
return status;
|
||||
status =
|
||||
sanei_genesys_fe_write_data (dev, 0x28 + i,
|
||||
dev->frontend.gain[i]);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error, "gl646_wm_hp3670: writing gain%d failed: %s\n",
|
||||
i, sane_strstatus (status));
|
||||
return status;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1780,17 +1794,24 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set)
|
|||
return status;
|
||||
}
|
||||
|
||||
/* Set values of analog frontend */
|
||||
/** Set values of analog frontend
|
||||
* @param dev device to set
|
||||
* @param set action to execute
|
||||
* @param dpi dpi to setup the AFE
|
||||
* @return error or SANE_STATUS_GOOD */
|
||||
#ifndef UNIT_TESTING
|
||||
static
|
||||
#endif
|
||||
SANE_Status
|
||||
gl646_set_fe (Genesys_Device * dev, uint8_t set)
|
||||
gl646_set_fe (Genesys_Device * dev, uint8_t set, int dpi)
|
||||
{
|
||||
SANE_Status status;
|
||||
int i;
|
||||
uint8_t val;
|
||||
|
||||
DBG (DBG_proc, "gl646_set_fe (%s)\n",
|
||||
DBG (DBG_proc, "gl646_set_fe (%s,%d)\n",
|
||||
set == AFE_INIT ? "init" : set == AFE_SET ? "set" : set ==
|
||||
AFE_POWER_SAVE ? "powersave" : "huh?");
|
||||
AFE_POWER_SAVE ? "powersave" : "huh?", dpi);
|
||||
|
||||
/* Analog Device type frontend */
|
||||
if ((dev->reg[reg_0x04].value & REG04_FESET) == 0x02)
|
||||
|
@ -1809,7 +1830,7 @@ gl646_set_fe (Genesys_Device * dev, uint8_t set)
|
|||
{
|
||||
case DAC_WOLFSON_HP3670:
|
||||
case DAC_WOLFSON_HP2400:
|
||||
return gl646_wm_hp3670 (dev, set);
|
||||
return gl646_wm_hp3670 (dev, set, dpi);
|
||||
break;
|
||||
default:
|
||||
DBG (DBG_proc, "gl646_set_fe(): using old method\n");
|
||||
|
@ -1967,6 +1988,18 @@ gl646_set_fe (Genesys_Device * dev, uint8_t set)
|
|||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
/** Set values of analog frontend
|
||||
* this this the public interface, the gl646 as to use one more
|
||||
* parameter to work effectively, hence the redirection
|
||||
* @param dev device to set
|
||||
* @param set action to execute
|
||||
* @return error or SANE_STATUS_GOOD */
|
||||
SANE_Status
|
||||
gl646_public_set_fe (Genesys_Device * dev, uint8_t set)
|
||||
{
|
||||
return gl646_set_fe(dev,set,dev->settings.yres);
|
||||
}
|
||||
|
||||
static void
|
||||
gl646_set_motor_power (Genesys_Register_Set * regs, SANE_Bool set)
|
||||
{
|
||||
|
@ -2009,6 +2042,7 @@ gl646_set_lamp_power (Genesys_Device * dev,
|
|||
|
||||
/**
|
||||
* enters or leaves power saving mode
|
||||
* limited to AFE for now.
|
||||
* @param dev scanner's device
|
||||
* @param SANE_TRUE to enable power saving, SANE_FALSE to leave it
|
||||
* @return allways SANE_STATUS_GOOD
|
||||
|
@ -2028,12 +2062,9 @@ SANE_Status gl646_save_power (Genesys_Device * dev, SANE_Bool enable)
|
|||
}
|
||||
else
|
||||
{
|
||||
/* gl646_set_fe (dev, AFE_INIT); */
|
||||
gl646_set_fe (dev, AFE_INIT, 0);
|
||||
}
|
||||
|
||||
/* to make compiler happy */
|
||||
gl646_set_fe (dev, AFE_SET);
|
||||
|
||||
DBG (DBG_proc, "gl646_save_power: end\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
@ -2798,8 +2829,8 @@ gl646_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
|
|||
/* setup for a backward scan of 65535 steps, with no actual data reading */
|
||||
settings.scan_method = SCAN_METHOD_FLATBED;
|
||||
settings.scan_mode = SCAN_MODE_COLOR;
|
||||
settings.xres = 75;
|
||||
settings.yres = 75;
|
||||
settings.xres = get_closest_resolution (dev->model->ccd_type, 75, SANE_FALSE);
|
||||
settings.yres = settings.xres;
|
||||
settings.tl_x = 0;
|
||||
settings.tl_y = 0;
|
||||
settings.pixels = 600;
|
||||
|
@ -2819,7 +2850,7 @@ gl646_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
|
|||
gl646_set_triple_reg (dev->reg, REG_FEEDL, 65535);
|
||||
|
||||
/* sets frontend */
|
||||
status = gl646_set_fe (dev, AFE_SET);
|
||||
status = gl646_set_fe (dev, AFE_SET, settings.xres);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (DBG_error,
|
||||
|
@ -3984,6 +4015,7 @@ gl646_coarse_gain_calibration (Genesys_Device * dev, int dpi)
|
|||
float average[3];
|
||||
Genesys_Settings settings;
|
||||
char title[32];
|
||||
SANE_Bool half_ccd=dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE;
|
||||
|
||||
if (dev->model->ccd_type == CIS_XP200)
|
||||
{
|
||||
|
@ -4000,12 +4032,12 @@ gl646_coarse_gain_calibration (Genesys_Device * dev, int dpi)
|
|||
{
|
||||
resolution =
|
||||
get_closest_resolution (dev->model->ccd_type, dev->sensor.optical_res,
|
||||
SANE_TRUE);
|
||||
half_ccd);
|
||||
}
|
||||
else
|
||||
{
|
||||
resolution =
|
||||
get_closest_resolution (dev->model->ccd_type, dpi, SANE_TRUE);
|
||||
get_closest_resolution (dev->model->ccd_type, dpi, half_ccd);
|
||||
}
|
||||
|
||||
settings.scan_method = SCAN_METHOD_FLATBED;
|
||||
|
@ -4069,7 +4101,7 @@ gl646_coarse_gain_calibration (Genesys_Device * dev, int dpi)
|
|||
/* log scanning data */
|
||||
if (DBG_LEVEL >= DBG_data)
|
||||
{
|
||||
sprintf (title, "alternative_coarse%02d.pnm", pass);
|
||||
sprintf (title, "coarse_gain%02d.pnm", pass);
|
||||
sanei_genesys_write_pnm_file (title, line, 8,
|
||||
channels, settings.pixels,
|
||||
settings.lines);
|
||||
|
@ -4199,7 +4231,7 @@ gl646_init_regs_for_warmup (Genesys_Device * dev,
|
|||
*total_size = lines * settings.pixels;
|
||||
|
||||
/* now registers are ok, write them to scanner */
|
||||
RIE (gl646_set_fe (dev, AFE_SET));
|
||||
RIE (gl646_set_fe (dev, AFE_SET, settings.xres));
|
||||
RIE (gl646_bulk_write_register (dev, local_reg, GENESYS_GL646_MAX_REGS));
|
||||
|
||||
DBG (DBG_proc, "gl646_init_regs_for_warmup: end\n");
|
||||
|
@ -4223,8 +4255,8 @@ gl646_repark_head (Genesys_Device * dev)
|
|||
|
||||
settings.scan_method = SCAN_METHOD_FLATBED;
|
||||
settings.scan_mode = SCAN_MODE_COLOR;
|
||||
settings.xres = 75;
|
||||
settings.yres = 75;
|
||||
settings.xres = get_closest_resolution (dev->model->ccd_type, 75, SANE_FALSE);
|
||||
settings.yres = settings.xres;
|
||||
settings.tl_x = 0;
|
||||
settings.tl_y = 5;
|
||||
settings.pixels = 600;
|
||||
|
@ -4441,7 +4473,7 @@ gl646_init (Genesys_Device * dev)
|
|||
} /* end if cold */
|
||||
|
||||
/* Set analog frontend */
|
||||
RIE (gl646_set_fe (dev, AFE_INIT));
|
||||
RIE (gl646_set_fe (dev, AFE_INIT, 0));
|
||||
|
||||
/* GPO enabling for XP200 */
|
||||
if (dev->model->ccd_type == CIS_XP200)
|
||||
|
@ -4645,7 +4677,7 @@ simple_scan (Genesys_Device * dev, Genesys_Settings settings, SANE_Bool move,
|
|||
settings.lines = lines;
|
||||
|
||||
/* initialize frontend */
|
||||
status = gl646_set_fe (dev, AFE_SET);
|
||||
status = gl646_set_fe (dev, AFE_SET, settings.xres);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
free (*data);
|
||||
|
@ -5272,7 +5304,7 @@ static Genesys_Command_Set gl646_cmd_set = {
|
|||
|
||||
gl646_bulk_full_size,
|
||||
|
||||
gl646_set_fe,
|
||||
gl646_public_set_fe,
|
||||
gl646_set_powersaving,
|
||||
gl646_save_power,
|
||||
gl646_set_motor_power,
|
||||
|
|
|
@ -272,7 +272,7 @@ enum
|
|||
#ifndef UNIT_TESTING
|
||||
static
|
||||
#endif
|
||||
SANE_Status gl646_set_fe (Genesys_Device * dev, uint8_t set);
|
||||
SANE_Status gl646_set_fe (Genesys_Device * dev, uint8_t set, int dpi);
|
||||
|
||||
/**
|
||||
* sets up the scanner for a scan, registers, gamma tables, shading tables
|
||||
|
@ -431,13 +431,13 @@ typedef struct
|
|||
/* *INDENT-OFF* */
|
||||
static Sensor_Master sensor_master[] = {
|
||||
/* HP3670 master settings */
|
||||
{CCD_HP3670, 50, SANE_TRUE , 50, 5758, 200, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
|
||||
{CCD_HP3670, 75, SANE_TRUE , 75, 4879, 300, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
|
||||
{CCD_HP3670, 100, SANE_TRUE , 100, 4487, 400, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
|
||||
{CCD_HP3670, 150, SANE_TRUE , 150, 4879, 600, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
|
||||
{CCD_HP3670, 300, SANE_TRUE , 300, 4503, 1200, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
|
||||
{CCD_HP3670, 600, SANE_TRUE , 600, 10251, 1200, 2, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x31, 0x43},
|
||||
{CCD_HP3670,1200, SANE_TRUE , 1200, 12750, 1200, 1, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x30, 0x43},
|
||||
{CCD_HP3670, 50, SANE_FALSE, 50, 5758, 200, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
|
||||
{CCD_HP3670, 75, SANE_FALSE, 75, 4879, 300, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
|
||||
{CCD_HP3670, 100, SANE_FALSE, 100, 4487, 400, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
|
||||
{CCD_HP3670, 150, SANE_FALSE, 150, 4879, 600, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
|
||||
{CCD_HP3670, 300, SANE_FALSE, 300, 4503, 1200, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
|
||||
|
@ -509,19 +509,18 @@ static Sensor_Master sensor_master[] = {
|
|||
*/
|
||||
static Motor_Master motor_master[] = {
|
||||
/* HP3670 motor settings */
|
||||
{MOTOR_HP3670, 50, SANE_TRUE , 50, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 229, 2329, 120, 200, 3399, 337, 0.3, 0.5, 192},
|
||||
{MOTOR_HP3670, 100, SANE_TRUE , 100, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 143, 2905, 374, 192, 3399, 426, 0.3, 0.4, 192},
|
||||
{MOTOR_HP3670, 75, SANE_TRUE , 75, FULL_STEP, SANE_FALSE, SANE_TRUE , 1, 73, 3429, 305, 192, 3399, 341, 0.3, 0.4, 192},
|
||||
{MOTOR_HP3670, 100, SANE_TRUE , 100, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 143, 2905, 187, 200, 3399, 337, 0.3, 0.4, 96},
|
||||
{MOTOR_HP3670, 150, SANE_TRUE , 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 73, 3429, 305, 192, 3399, 341, 0.3, 0.4, 192},
|
||||
{MOTOR_HP3670, 300, SANE_TRUE , 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 11, 1055, 563, 192, 3399, 341, 0.3, 0.4, 192},
|
||||
{MOTOR_HP3670, 600, SANE_TRUE , 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 10687, 5126, 192, 3399, 341, 0.3, 0.4, 192},
|
||||
{MOTOR_HP3670,1200, SANE_TRUE ,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 12751,12751, 192, 3399, 341, 0.3, 0.4, 192},
|
||||
{MOTOR_HP3670, 50, SANE_FALSE, 50, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 229, 2329, 120, 192, 3399, 341, 0.3, 0.4, 192},
|
||||
{MOTOR_HP3670, 100, SANE_FALSE, 100, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 143, 2905, 187, 192, 3399, 341, 0.3, 0.4, 192},
|
||||
{MOTOR_HP3670,1200, SANE_TRUE ,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 15937, 7968, 200, 3399, 337, 0.3, 0.4, 8},
|
||||
{MOTOR_HP3670, 75, SANE_FALSE, 75, FULL_STEP, SANE_FALSE, SANE_TRUE , 1, 73, 3429, 305, 192, 3399, 341, 0.3, 0.4, 192},
|
||||
{MOTOR_HP3670, 100, SANE_FALSE, 100, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 143, 2905, 187, 200, 3399, 337, 0.3, 0.4, 96},
|
||||
{MOTOR_HP3670, 150, SANE_FALSE, 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 73, 3429, 305, 192, 3399, 341, 0.3, 0.4, 192},
|
||||
{MOTOR_HP3670, 300, SANE_FALSE, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 11, 1055, 563, 192, 3399, 341, 0.3, 0.4, 192},
|
||||
{MOTOR_HP3670, 600, SANE_FALSE, 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 10687, 5126, 192, 3399, 341, 0.3, 0.4, 192},
|
||||
/* {MOTOR_HP3670,1200, SANE_FALSE,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 12751,12751, 192, 3399, 341, 0.3, 0.4, 192}, */
|
||||
{MOTOR_HP3670,1200, SANE_TRUE , 1200, HALF_STEP, SANE_FALSE, SANE_FALSE, 0, 2, 12750, 12750, 2, 5400, 5400, 0.3, 0.4, 8},
|
||||
{MOTOR_HP3670,1200, SANE_FALSE,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 12751,12751, 192, 3399, 341, 0.3, 0.4, 192},
|
||||
|
||||
/* HP2400/G2410 motor settings base motor dpi = 600 */
|
||||
{MOTOR_HP2400, 50, SANE_TRUE, 50, HALF_STEP, SANE_FALSE, SANE_FALSE, 63, 4, 1382, 800, 2, 5400, 5400, 0.25, 0.5, 16},
|
||||
|
|
Ładowanie…
Reference in New Issue