kopia lustrzana https://gitlab.com/sane-project/backends
Merge branch 'genesys-gl646-simplify-sensor' into 'master'
genesys: Simplify sensor setup on GL646 See merge request sane-project/backends!139merge-requests/138/merge
commit
3e2b6cead0
|
@ -204,7 +204,6 @@ static void gl646_stop_motor(Genesys_Device* dev)
|
|||
dev->write_register(0x0f, 0x00);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* find the lowest resolution for the sensor in the given mode.
|
||||
* @param sensor id of the sensor
|
||||
|
@ -214,25 +213,16 @@ static void gl646_stop_motor(Genesys_Device* dev)
|
|||
static int
|
||||
get_lowest_resolution(int sensor_id, unsigned channels)
|
||||
{
|
||||
int i, nb;
|
||||
int dpi;
|
||||
|
||||
i = 0;
|
||||
dpi = 9600;
|
||||
nb = sizeof (sensor_master) / sizeof (Sensor_Master);
|
||||
while (i < nb)
|
||||
{
|
||||
/* computes distance and keep mode if it is closer than previous */
|
||||
if (sensor_id == sensor_master[i].sensor
|
||||
&& sensor_master[i].channels == channels)
|
||||
{
|
||||
if (sensor_master[i].dpi < dpi)
|
||||
{
|
||||
dpi = sensor_master[i].dpi;
|
||||
}
|
||||
}
|
||||
i++;
|
||||
int dpi = 9600;
|
||||
for (const auto& sensor : sensor_master) {
|
||||
// computes distance and keep mode if it is closer than previous
|
||||
if (sensor_id == sensor.sensor && sensor.matches_channels(channels)) {
|
||||
if (sensor.dpi < dpi) {
|
||||
dpi = sensor.dpi;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DBG(DBG_info, "%s: %d\n", __func__, dpi);
|
||||
return dpi;
|
||||
}
|
||||
|
@ -247,35 +237,28 @@ get_lowest_resolution(int sensor_id, unsigned channels)
|
|||
static int
|
||||
get_closest_resolution(int sensor_id, int required, unsigned channels)
|
||||
{
|
||||
int i, nb;
|
||||
int dist, dpi;
|
||||
int dpi = 0;
|
||||
int dist = 9600;
|
||||
|
||||
i = 0;
|
||||
dpi = 0;
|
||||
dist = 9600;
|
||||
nb = sizeof (sensor_master) / sizeof (Sensor_Master);
|
||||
while (i < nb)
|
||||
{
|
||||
/* exit on perfect match */
|
||||
if (sensor_id == sensor_master[i].sensor
|
||||
&& sensor_master[i].dpi == required
|
||||
&& sensor_master[i].channels == channels)
|
||||
{
|
||||
DBG(DBG_info, "%s: match found for %d\n", __func__, required);
|
||||
return required;
|
||||
}
|
||||
/* computes distance and keep mode if it is closer than previous */
|
||||
if (sensor_id == sensor_master[i].sensor
|
||||
&& sensor_master[i].channels == channels)
|
||||
{
|
||||
if (abs (sensor_master[i].dpi - required) < dist)
|
||||
{
|
||||
dpi = sensor_master[i].dpi;
|
||||
dist = abs (sensor_master[i].dpi - required);
|
||||
}
|
||||
}
|
||||
i++;
|
||||
for (const auto& sensor : sensor_master) {
|
||||
if (sensor_id != sensor.sensor)
|
||||
continue;
|
||||
|
||||
// exit on perfect match
|
||||
if (sensor.dpi == required && sensor.matches_channels(channels)) {
|
||||
DBG(DBG_info, "%s: match found for %d\n", __func__, required);
|
||||
return required;
|
||||
}
|
||||
|
||||
// computes distance and keep mode if it is closer than previous
|
||||
if (sensor.matches_channels(channels)) {
|
||||
if (std::abs(sensor.dpi - required) < dist) {
|
||||
dpi = sensor.dpi;
|
||||
dist = std::abs(sensor.dpi - required);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DBG(DBG_info, "%s: closest match for %d is %d\n", __func__, required, dpi);
|
||||
return dpi;
|
||||
}
|
||||
|
@ -290,22 +273,15 @@ get_closest_resolution(int sensor_id, int required, unsigned channels)
|
|||
*/
|
||||
static unsigned get_ccd_size_divisor(int sensor_id, int required, unsigned channels)
|
||||
{
|
||||
int i, nb;
|
||||
|
||||
i = 0;
|
||||
nb = sizeof (sensor_master) / sizeof (Sensor_Master);
|
||||
while (i < nb)
|
||||
{
|
||||
/* exit on perfect match */
|
||||
if (sensor_id == sensor_master[i].sensor
|
||||
&& sensor_master[i].dpi == required
|
||||
&& sensor_master[i].channels == channels)
|
||||
{
|
||||
DBG(DBG_io, "%s: match found for %d (ccd_size_divisor=%d)\n", __func__, required,
|
||||
sensor_master[i].ccd_size_divisor);
|
||||
return sensor_master[i].ccd_size_divisor;
|
||||
}
|
||||
i++;
|
||||
for (const auto& sensor : sensor_master) {
|
||||
// exit on perfect match
|
||||
if (sensor_id == sensor.sensor && sensor.dpi == required &&
|
||||
sensor.matches_channels(channels))
|
||||
{
|
||||
DBG(DBG_io, "%s: match found for %d (ccd_size_divisor=%d)\n", __func__, required,
|
||||
sensor.ccd_size_divisor);
|
||||
return sensor.ccd_size_divisor;
|
||||
}
|
||||
}
|
||||
DBG(DBG_info, "%s: failed to find match for %d dpi\n", __func__, required);
|
||||
return 1;
|
||||
|
@ -320,22 +296,15 @@ static unsigned get_ccd_size_divisor(int sensor_id, int required, unsigned chann
|
|||
*/
|
||||
static int get_cksel(int sensor_id, int required, unsigned channels)
|
||||
{
|
||||
int i, nb;
|
||||
|
||||
i = 0;
|
||||
nb = sizeof (sensor_master) / sizeof (Sensor_Master);
|
||||
while (i < nb)
|
||||
{
|
||||
/* exit on perfect match */
|
||||
if (sensor_id == sensor_master[i].sensor
|
||||
&& sensor_master[i].dpi == required
|
||||
&& sensor_master[i].channels == channels)
|
||||
{
|
||||
DBG(DBG_io, "%s: match found for %d (cksel=%d)\n", __func__, required,
|
||||
sensor_master[i].cksel);
|
||||
return sensor_master[i].cksel;
|
||||
}
|
||||
i++;
|
||||
for (const auto& sensor : sensor_master) {
|
||||
// exit on perfect match
|
||||
if (sensor_id == sensor.sensor && sensor.dpi == required &&
|
||||
sensor.matches_channels(channels))
|
||||
{
|
||||
DBG(DBG_io, "%s: match found for %d (cksel=%d)\n", __func__, required,
|
||||
sensor.cksel);
|
||||
return sensor.cksel;
|
||||
}
|
||||
}
|
||||
DBG(DBG_error, "%s: failed to find match for %d dpi\n", __func__, required);
|
||||
/* fail safe fallback */
|
||||
|
@ -413,10 +382,7 @@ static void gl646_setup_registers(Genesys_Device* dev,
|
|||
uint32_t endx = startx + pixels;
|
||||
|
||||
int i, nb;
|
||||
Sensor_Master *sensor_mst = NULL;
|
||||
Motor_Master *motor = NULL;
|
||||
Sensor_Settings *settings = NULL;
|
||||
GenesysRegister *r;
|
||||
unsigned int used1, used2, vfinal;
|
||||
unsigned int bpp; /**> bytes per pixel */
|
||||
uint32_t z1, z2;
|
||||
|
@ -439,20 +405,17 @@ static void gl646_setup_registers(Genesys_Device* dev,
|
|||
xresolution = resolution;
|
||||
}
|
||||
|
||||
/* for the given resolution, search for master
|
||||
* sensor mode setting */
|
||||
i = 0;
|
||||
nb = sizeof (sensor_master) / sizeof (Sensor_Master);
|
||||
while (i < nb)
|
||||
{
|
||||
if (dev->model->ccd_type == sensor_master[i].sensor
|
||||
&& sensor_master[i].dpi == xresolution
|
||||
&& sensor_master[i].channels == session.params.channels)
|
||||
{
|
||||
sensor_mst = &sensor_master[i];
|
||||
}
|
||||
i++;
|
||||
// for the given resolution, search for master sensor mode setting
|
||||
const Sensor_Master* sensor_mst = nullptr;
|
||||
for (const auto& sensor : sensor_master) {
|
||||
if (dev->model->ccd_type == sensor.sensor && sensor.dpi == xresolution &&
|
||||
sensor.matches_channels(session.params.channels))
|
||||
{
|
||||
sensor_mst = &sensor;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (sensor_mst == NULL) {
|
||||
throw SaneException("unable to find settings for sensor %d at %d dpi channels=%d",
|
||||
dev->model->ccd_type, xresolution, session.params.channels);
|
||||
|
@ -480,69 +443,16 @@ static void gl646_setup_registers(Genesys_Device* dev,
|
|||
|
||||
/* now we can search for the specific sensor settings */
|
||||
i = 0;
|
||||
nb = sizeof (sensor_settings) / sizeof (Sensor_Settings);
|
||||
while (i < nb)
|
||||
{
|
||||
if (sensor_mst->sensor == sensor_settings[i].sensor
|
||||
&& sensor_mst->cksel == sensor_settings[i].cksel)
|
||||
{
|
||||
settings = &sensor_settings[i];
|
||||
}
|
||||
i++;
|
||||
}
|
||||
if (settings == NULL)
|
||||
{
|
||||
throw SaneException("unable to find settings for sensor %d with '%d' ccd timing",
|
||||
sensor_mst->sensor, sensor_mst->cksel);
|
||||
}
|
||||
|
||||
unsigned ccd_size_divisor = sensor_mst->ccd_size_divisor;
|
||||
|
||||
/* now apply values from settings to registers */
|
||||
if (sensor_mst->regs_0x10_0x15 != NULL)
|
||||
{
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
r = sanei_genesys_get_address (regs, 0x10 + i);
|
||||
r->value = sensor_mst->regs_0x10_0x15[i];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
r = sanei_genesys_get_address (regs, 0x10 + i);
|
||||
r->value = 0;
|
||||
}
|
||||
}
|
||||
// now apply values from settings to registers
|
||||
regs->set16(REG_EXPR, sensor_mst->exposure.red);
|
||||
regs->set16(REG_EXPG, sensor_mst->exposure.green);
|
||||
regs->set16(REG_EXPB, sensor_mst->exposure.blue);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
r = sanei_genesys_get_address (regs, 0x08 + i);
|
||||
if (ccd_size_divisor > 1) {
|
||||
r->value = settings->manual_0x08_0x0b[i];
|
||||
} else {
|
||||
r->value = settings->regs_0x08_0x0b[i];
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
r = sanei_genesys_get_address (regs, 0x16 + i);
|
||||
r->value = settings->regs_0x16_0x1d[i];
|
||||
}
|
||||
|
||||
for (i = 0; i < 13; i++)
|
||||
{
|
||||
r = sanei_genesys_get_address (regs, 0x52 + i);
|
||||
r->value = settings->regs_0x52_0x5e[i];
|
||||
}
|
||||
if (ccd_size_divisor > 1) {
|
||||
for (i = 0; i < 7; i++)
|
||||
{
|
||||
r = sanei_genesys_get_address (regs, 0x52 + i);
|
||||
r->value = settings->manual_0x52_0x58[i];
|
||||
}
|
||||
for (const auto& reg : sensor_mst->custom_regs) {
|
||||
regs->set8(reg.address, reg.value);
|
||||
}
|
||||
|
||||
/* now generate slope tables : we are not using generate_slope_table3 yet */
|
||||
|
@ -667,12 +577,6 @@ static void gl646_setup_registers(Genesys_Device* dev,
|
|||
regs->find_reg(0x05).value &= ~REG05_LEDADD;
|
||||
}
|
||||
|
||||
/* cktoggle, ckdelay and cksel at once, cktdelay=2 => ccd_size_divisor == 2 for md5345 */
|
||||
regs->find_reg(0x18).value = sensor_mst->r18;
|
||||
|
||||
/* manual CCD/2 clock programming on ccd_size_divisor == 2 for hp2300 */
|
||||
regs->find_reg(0x1d).value = sensor_mst->r1d;
|
||||
|
||||
/* HP2400 1200dpi mode tuning */
|
||||
|
||||
if (dev->model->ccd_type == CCD_HP2400)
|
||||
|
@ -759,8 +663,8 @@ static void gl646_setup_registers(Genesys_Device* dev,
|
|||
DBG(DBG_info, "%s: wpl=%d\n", __func__, words_per_line);
|
||||
regs->set24(REG_MAXWD, words_per_line);
|
||||
|
||||
regs->set16(REG_DPISET, sensor_mst->dpiset);
|
||||
regs->set16(REG_LPERIOD, sensor_mst->exposure);
|
||||
regs->set16(REG_DPISET, sensor_mst->xdpi * sensor_mst->ccd_size_divisor * sensor_mst->cksel);
|
||||
regs->set16(REG_LPERIOD, sensor_mst->exposure_lperiod);
|
||||
|
||||
/* move distance must be adjusted to take into account the extra lines
|
||||
* read to reorder data */
|
||||
|
@ -889,7 +793,7 @@ static void gl646_setup_registers(Genesys_Device* dev,
|
|||
regs->find_reg(0x65).value = motor->mtrpwm;
|
||||
|
||||
sanei_genesys_calculate_zmod (regs->find_reg(0x02).value & REG02_FASTFED,
|
||||
sensor_mst->exposure,
|
||||
sensor_mst->exposure_lperiod,
|
||||
slope_table1,
|
||||
motor->steps1,
|
||||
move, motor->fwdbwd, &z1, &z2);
|
||||
|
@ -942,7 +846,7 @@ static void gl646_setup_registers(Genesys_Device* dev,
|
|||
dev->current_setup.pixels =
|
||||
((endx - startx) * sensor_mst->xdpi) / sensor.optical_res;
|
||||
dev->current_setup.lines = linecnt;
|
||||
dev->current_setup.exposure_time = sensor_mst->exposure;
|
||||
dev->current_setup.exposure_time = sensor_mst->exposure_lperiod;
|
||||
dev->current_setup.xres = sensor_mst->xdpi;
|
||||
dev->current_setup.ccd_size_divisor = ccd_size_divisor;
|
||||
dev->current_setup.stagger = stagger;
|
||||
|
@ -3898,8 +3802,7 @@ static void gl646_search_strip(Genesys_Device* dev, const Genesys_Sensor& sensor
|
|||
|
||||
unsigned ccd_size_divisor = 1;
|
||||
if (sensor.ccd_size_divisor > 1) {
|
||||
// FIXME: possibly wrong channel count for ccd_size_divisor
|
||||
ccd_size_divisor = get_ccd_size_divisor(dev->model->ccd_type, res, 3);
|
||||
ccd_size_divisor = get_ccd_size_divisor(dev->model->ccd_type, res, 1);
|
||||
}
|
||||
|
||||
/* we set up for a lowest available resolution color grey scan, full width */
|
||||
|
|
|
@ -146,6 +146,9 @@
|
|||
#define REG6C_Z1MOD 0x38
|
||||
#define REG6C_Z2MOD 0x07
|
||||
|
||||
#define REG_EXPR 0x10
|
||||
#define REG_EXPG 0x12
|
||||
#define REG_EXPB 0x14
|
||||
#define REG_SCANFED 0x1f
|
||||
#define REG_BUFSEL 0x20
|
||||
#define REG_LINCNT 0x25
|
||||
|
@ -281,134 +284,81 @@ typedef struct
|
|||
*/
|
||||
struct Sensor_Master
|
||||
{
|
||||
/* key */
|
||||
SANE_Int sensor; /**< sensor identifier */
|
||||
SANE_Int dpi; /**< required dpi */
|
||||
unsigned channels; // 3 channels if color scan, 1 channel for gray scan
|
||||
int sensor = 0; // sensor identifier */
|
||||
int dpi = 0; // required dpi */
|
||||
std::vector<unsigned> channels; // 3 channels if color scan, 1 channel for gray scan
|
||||
|
||||
/* settings */
|
||||
SANE_Int xdpi; /**< real sensor dpi, may be different from the required resolution */
|
||||
SANE_Int exposure; /**< exposure time */
|
||||
SANE_Int dpiset; /**< set sensor dpi */
|
||||
SANE_Int cksel; /**< dpiset 'divisor', part of reg 18h */
|
||||
SANE_Int dummy; /**< dummy exposure time */
|
||||
/* uint8_t regs_0x10_0x15[6];*/
|
||||
uint8_t *regs_0x10_0x15; /**< per color exposure time for CIS scanners */
|
||||
int xdpi = 0; // real sensor dpi, may be different from the required resolution */
|
||||
int exposure_lperiod = 0; // exposure time */
|
||||
int cksel = 0; // dpiset 'divisor', part of reg 18h
|
||||
|
||||
// selects manual CCD/2 clock programming. I.e. we're scanning at high DPI, but clock is setup
|
||||
// such that we acquire only every 2nd pixel data
|
||||
unsigned ccd_size_divisor;
|
||||
unsigned ccd_size_divisor = 0;
|
||||
|
||||
uint8_t r18; /**> content of register 18h */
|
||||
uint8_t r1d; /**> content of register 1dh */
|
||||
SensorExposure exposure;
|
||||
|
||||
GenesysRegisterSettingSet custom_regs;
|
||||
|
||||
bool matches_channels(unsigned ch) const
|
||||
{
|
||||
return std::find(channels.begin(), channels.end(), ch) != channels.end();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* settings for a given resolution and DPISET
|
||||
* TODO clean up this when all scanners will have been added
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* key */
|
||||
SANE_Int sensor;
|
||||
SANE_Int cksel;
|
||||
|
||||
/* values */
|
||||
uint8_t regs_0x08_0x0b[4]; /**< settings for normal CCD clock */
|
||||
uint8_t manual_0x08_0x0b[4]; /**< settings for CCD/2 clock */
|
||||
uint8_t regs_0x16_0x1d[8];
|
||||
uint8_t regs_0x52_0x5e[13];
|
||||
uint8_t manual_0x52_0x58[7];
|
||||
} Sensor_Settings;
|
||||
|
||||
static uint8_t xp200_color[6]={0x16, 0x44, 0x0c, 0x80, 0x09, 0x2e};
|
||||
static uint8_t xp200_gray[6]={0x05, 0x0a, 0x0f, 0xa0, 0x10, 0x10};
|
||||
|
||||
/**
|
||||
* master sensor settings, for a given sensor and dpi,
|
||||
* it gives exposure and CCD time
|
||||
*/
|
||||
static Sensor_Master sensor_master[] = {
|
||||
static std::vector<Sensor_Master> sensor_master = {
|
||||
/* HP3670 master settings */
|
||||
{CCD_HP3670, 75, 3, 75, 4879, 300, 4, 42, NULL, 1, 0x33, 0x43},
|
||||
{CCD_HP3670, 100, 3, 100, 4487, 400, 4, 42, NULL, 1, 0x33, 0x43},
|
||||
{CCD_HP3670, 150, 3, 150, 4879, 600, 4, 42, NULL, 1, 0x33, 0x43},
|
||||
{CCD_HP3670, 300, 3, 300, 4503, 1200, 4, 42, NULL, 1, 0x33, 0x43},
|
||||
{CCD_HP3670, 600, 3, 600, 10251, 1200, 2, 42, NULL, 1, 0x31, 0x43},
|
||||
{CCD_HP3670,1200, 3, 1200, 12750, 1200, 1, 42, NULL, 1, 0x30, 0x43},
|
||||
{CCD_HP3670,2400, 3, 1200, 12750, 1200, 1, 42, NULL, 1, 0x30, 0x43},
|
||||
{CCD_HP3670, 75, 1, 75, 4879, 300, 4, 42, NULL, 1, 0x33, 0x43},
|
||||
{CCD_HP3670, 100, 1, 100, 4487, 400, 4, 42, NULL, 1, 0x33, 0x43},
|
||||
{CCD_HP3670, 150, 1, 150, 4879, 600, 4, 42, NULL, 1, 0x33, 0x43},
|
||||
{CCD_HP3670, 300, 1, 300, 4503, 1200, 4, 42, NULL, 1, 0x33, 0x43},
|
||||
{CCD_HP3670, 600, 1, 600, 10251, 1200, 2, 42, NULL, 1, 0x31, 0x43},
|
||||
{CCD_HP3670,1200, 1, 1200, 12750, 1200, 1, 42, NULL, 1, 0x30, 0x43},
|
||||
{CCD_HP3670,2400, 1, 1200, 12750, 1200, 1, 42, NULL, 1, 0x30, 0x43},
|
||||
{CCD_HP3670, 75, {1, 3}, 75, 4879, 4, 1, { 0, 0, 0 }, { { 0x08, 0x00 }, { 0x09, 0x0a }, { 0x0a, 0x0b }, { 0x0b, 0x0d }, { 0x16, 0x33 }, { 0x17, 0x07 }, { 0x18, 0x33 }, { 0x19, 0x2a }, { 0x1a, 0x02 }, { 0x1b, 0x13 }, { 0x1c, 0xc0 }, { 0x1d, 0x43 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x15 }, { 0x5a, 0xc1 }, { 0x5b, 0x05 }, { 0x5c, 0x0a }, { 0x5d, 0x0f }, { 0x5e, 0x00 } } },
|
||||
{CCD_HP3670, 100, {1, 3}, 100, 4487, 4, 1, { 0, 0, 0 }, { { 0x08, 0x00 }, { 0x09, 0x0a }, { 0x0a, 0x0b }, { 0x0b, 0x0d }, { 0x16, 0x33 }, { 0x17, 0x07 }, { 0x18, 0x33 }, { 0x19, 0x2a }, { 0x1a, 0x02 }, { 0x1b, 0x13 }, { 0x1c, 0xc0 }, { 0x1d, 0x43 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x15 }, { 0x5a, 0xc1 }, { 0x5b, 0x05 }, { 0x5c, 0x0a }, { 0x5d, 0x0f }, { 0x5e, 0x00 } } },
|
||||
{CCD_HP3670, 150, {1, 3}, 150, 4879, 4, 1, { 0, 0, 0 }, { { 0x08, 0x00 }, { 0x09, 0x0a }, { 0x0a, 0x0b }, { 0x0b, 0x0d }, { 0x16, 0x33 }, { 0x17, 0x07 }, { 0x18, 0x33 }, { 0x19, 0x2a }, { 0x1a, 0x02 }, { 0x1b, 0x13 }, { 0x1c, 0xc0 }, { 0x1d, 0x43 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x15 }, { 0x5a, 0xc1 }, { 0x5b, 0x05 }, { 0x5c, 0x0a }, { 0x5d, 0x0f }, { 0x5e, 0x00 } } },
|
||||
{CCD_HP3670, 300, {1, 3}, 300, 4503, 4, 1, { 0, 0, 0 }, { { 0x08, 0x00 }, { 0x09, 0x0a }, { 0x0a, 0x0b }, { 0x0b, 0x0d }, { 0x16, 0x33 }, { 0x17, 0x07 }, { 0x18, 0x33 }, { 0x19, 0x2a }, { 0x1a, 0x02 }, { 0x1b, 0x13 }, { 0x1c, 0xc0 }, { 0x1d, 0x43 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x15 }, { 0x5a, 0xc1 }, { 0x5b, 0x05 }, { 0x5c, 0x0a }, { 0x5d, 0x0f }, { 0x5e, 0x00 } } },
|
||||
{CCD_HP3670, 600, {1, 3}, 600, 10251, 2, 1, { 0, 0, 0 }, { { 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 }, { 0x16, 0x33 }, { 0x17, 0x07 }, { 0x18, 0x31 }, { 0x19, 0x2a }, { 0x1a, 0x02 }, { 0x1b, 0x0e }, { 0x1c, 0xc0 }, { 0x1d, 0x43 }, { 0x52, 0x0b }, { 0x53, 0x0f }, { 0x54, 0x13 }, { 0x55, 0x17 }, { 0x56, 0x03 }, { 0x57, 0x07 }, { 0x58, 0x63 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x02 }, { 0x5c, 0x0e }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_HP3670,1200, {1, 3}, 1200, 12750, 1, 1, { 0, 0, 0 }, { { 0x08, 0x0d }, { 0x09, 0x0f }, { 0x0a, 0x11 }, { 0x0b, 0x13 }, { 0x16, 0x2b }, { 0x17, 0x07 }, { 0x18, 0x30 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0xc0 }, { 0x1d, 0x43 }, { 0x52, 0x03 }, { 0x53, 0x07 }, { 0x54, 0x0b }, { 0x55, 0x0f }, { 0x56, 0x13 }, { 0x57, 0x17 }, { 0x58, 0x23 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_HP3670,2400, {1, 3}, 1200, 12750, 1, 1, { 0, 0, 0 }, { { 0x08, 0x0d }, { 0x09, 0x0f }, { 0x0a, 0x11 }, { 0x0b, 0x13 }, { 0x16, 0x2b }, { 0x17, 0x07 }, { 0x18, 0x30 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0xc0 }, { 0x1d, 0x43 }, { 0x52, 0x03 }, { 0x53, 0x07 }, { 0x54, 0x0b }, { 0x55, 0x0f }, { 0x56, 0x13 }, { 0x57, 0x17 }, { 0x58, 0x23 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
|
||||
/* HP 2400 master settings */
|
||||
{CCD_HP2400, 50, 3, 50, 7211, 200, 4, 42, NULL, 1, 0x3f, 0x02},
|
||||
{CCD_HP2400, 100, 3, 100, 7211, 400, 4, 42, NULL, 1, 0x3f, 0x02},
|
||||
{CCD_HP2400, 150, 3, 150, 7211, 600, 4, 42, NULL, 1, 0x3f, 0x02},
|
||||
{CCD_HP2400, 300, 3, 300, 8751, 1200, 4, 42, NULL, 1, 0x3f, 0x02},
|
||||
{CCD_HP2400, 600, 3, 600, 18760, 1200, 2, 42, NULL, 1, 0x31, 0x02},
|
||||
{CCD_HP2400,1200, 3, 1200, 21749, 1200, 1, 42, NULL, 1, 0x30, 0x42},
|
||||
{CCD_HP2400, 50, 1, 50, 7211, 200, 4, 42, NULL, 1, 0x3f, 0x02},
|
||||
{CCD_HP2400, 100, 1, 100, 7211, 400, 4, 42, NULL, 1, 0x3f, 0x02},
|
||||
{CCD_HP2400, 150, 1, 150, 7211, 600, 4, 42, NULL, 1, 0x3f, 0x02},
|
||||
{CCD_HP2400, 300, 1, 300, 8751, 1200, 4, 42, NULL, 1, 0x3f, 0x02},
|
||||
{CCD_HP2400, 600, 1, 600, 18760, 1200, 2, 42, NULL, 1, 0x31, 0x02},
|
||||
{CCD_HP2400,1200, 1, 1200, 21749, 1200, 1, 42, NULL, 1, 0x30, 0x42},
|
||||
{CCD_HP2400, 50, {1, 3}, 50, 7211, 4, 1, { 0, 0, 0 }, { { 0x08, 0x14 }, { 0x09, 0x15 }, { 0x0a, 0x00 }, { 0x0b, 0x00 }, { 0x16, 0xbf }, { 0x17, 0x08 }, { 0x18, 0x3f }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x02 }, { 0x52, 0x0b }, { 0x53, 0x0f }, { 0x54, 0x13 }, { 0x55, 0x17 }, { 0x56, 0x03 }, { 0x57, 0x07 }, { 0x58, 0x63 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_HP2400, 100, {1, 3}, 100, 7211, 4, 1, { 0, 0, 0 }, { { 0x08, 0x14 }, { 0x09, 0x15 }, { 0x0a, 0x00 }, { 0x0b, 0x00 }, { 0x16, 0xbf }, { 0x17, 0x08 }, { 0x18, 0x3f }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x02 }, { 0x52, 0x0b }, { 0x53, 0x0f }, { 0x54, 0x13 }, { 0x55, 0x17 }, { 0x56, 0x03 }, { 0x57, 0x07 }, { 0x58, 0x63 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_HP2400, 150, {1, 3}, 150, 7211, 4, 1, { 0, 0, 0 }, { { 0x08, 0x14 }, { 0x09, 0x15 }, { 0x0a, 0x00 }, { 0x0b, 0x00 }, { 0x16, 0xbf }, { 0x17, 0x08 }, { 0x18, 0x3f }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x02 }, { 0x52, 0x0b }, { 0x53, 0x0f }, { 0x54, 0x13 }, { 0x55, 0x17 }, { 0x56, 0x03 }, { 0x57, 0x07 }, { 0x58, 0x63 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_HP2400, 300, {1, 3}, 300, 8751, 4, 1, { 0, 0, 0 }, { { 0x08, 0x14 }, { 0x09, 0x15 }, { 0x0a, 0x00 }, { 0x0b, 0x00 }, { 0x16, 0xbf }, { 0x17, 0x08 }, { 0x18, 0x3f }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x02 }, { 0x52, 0x0b }, { 0x53, 0x0f }, { 0x54, 0x13 }, { 0x55, 0x17 }, { 0x56, 0x03 }, { 0x57, 0x07 }, { 0x58, 0x63 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_HP2400, 600, {1, 3}, 600, 18760, 2, 1, { 0, 0, 0 }, { { 0x08, 0x0e }, { 0x09, 0x0f }, { 0x0a, 0x00 }, { 0x0b, 0x00 }, { 0x16, 0xbf }, { 0x17, 0x08 }, { 0x18, 0x31 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x02 }, { 0x52, 0x03 }, { 0x53, 0x07 }, { 0x54, 0x0b }, { 0x55, 0x0f }, { 0x56, 0x13 }, { 0x57, 0x17 }, { 0x58, 0x23 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_HP2400,1200, {1, 3}, 1200, 21749, 1, 1, { 0, 0, 0 }, { { 0x08, 0x02 }, { 0x09, 0x04 }, { 0x0a, 0x00 }, { 0x0b, 0x00 }, { 0x16, 0xbf }, { 0x17, 0x08 }, { 0x18, 0x30 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0xc0 }, { 0x1d, 0x42 }, { 0x52, 0x0b }, { 0x53, 0x0f }, { 0x54, 0x13 }, { 0x55, 0x17 }, { 0x56, 0x03 }, { 0x57, 0x07 }, { 0x58, 0x63 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x0e }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
|
||||
/* XP 200 master settings */
|
||||
{CIS_XP200 , 75, 3, 75, 5700, 75, 1, 42, xp200_color, 1, 0x00, 0x11},
|
||||
{CIS_XP200 , 100, 3, 100, 5700, 100, 1, 42, xp200_color, 1, 0x00, 0x11},
|
||||
{CIS_XP200 , 200, 3, 200, 5700, 200, 1, 42, xp200_color, 1, 0x00, 0x11},
|
||||
{CIS_XP200 , 300, 3, 300, 9000, 300, 1, 42, xp200_color, 1, 0x00, 0x11},
|
||||
{CIS_XP200 , 600, 3, 600, 16000, 600, 1, 42, xp200_color, 1, 0x00, 0x11},
|
||||
{CIS_XP200 , 75, {3}, 75, 5700, 1, 1, { 0x1644, 0x0c80, 0x092e }, { { 0x08, 0x06 }, { 0x09, 0x07 }, { 0x0a, 0x0a }, { 0x0b, 0x04 }, { 0x16, 0x24 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x2a }, { 0x1a, 0x0a }, { 0x1b, 0x0a }, { 0x1c, 0x00 }, { 0x1d, 0x11 }, { 0x52, 0x08 }, { 0x53, 0x02 }, { 0x54, 0x00 }, { 0x55, 0x00 }, { 0x56, 0x00 }, { 0x57, 0x00 }, { 0x58, 0x1a }, { 0x59, 0x51 }, { 0x5a, 0x00 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CIS_XP200 , 100, {3}, 100, 5700, 1, 1, { 0x1644, 0x0c80, 0x092e }, { { 0x08, 0x06 }, { 0x09, 0x07 }, { 0x0a, 0x0a }, { 0x0b, 0x04 }, { 0x16, 0x24 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x2a }, { 0x1a, 0x0a }, { 0x1b, 0x0a }, { 0x1c, 0x00 }, { 0x1d, 0x11 }, { 0x52, 0x08 }, { 0x53, 0x02 }, { 0x54, 0x00 }, { 0x55, 0x00 }, { 0x56, 0x00 }, { 0x57, 0x00 }, { 0x58, 0x1a }, { 0x59, 0x51 }, { 0x5a, 0x00 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CIS_XP200 , 200, {3}, 200, 5700, 1, 1, { 0x1644, 0x0c80, 0x092e }, { { 0x08, 0x06 }, { 0x09, 0x07 }, { 0x0a, 0x0a }, { 0x0b, 0x04 }, { 0x16, 0x24 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x2a }, { 0x1a, 0x0a }, { 0x1b, 0x0a }, { 0x1c, 0x00 }, { 0x1d, 0x11 }, { 0x52, 0x08 }, { 0x53, 0x02 }, { 0x54, 0x00 }, { 0x55, 0x00 }, { 0x56, 0x00 }, { 0x57, 0x00 }, { 0x58, 0x1a }, { 0x59, 0x51 }, { 0x5a, 0x00 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CIS_XP200 , 300, {3}, 300, 9000, 1, 1, { 0x1644, 0x0c80, 0x092e }, { { 0x08, 0x06 }, { 0x09, 0x07 }, { 0x0a, 0x0a }, { 0x0b, 0x04 }, { 0x16, 0x24 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x2a }, { 0x1a, 0x0a }, { 0x1b, 0x0a }, { 0x1c, 0x00 }, { 0x1d, 0x11 }, { 0x52, 0x08 }, { 0x53, 0x02 }, { 0x54, 0x00 }, { 0x55, 0x00 }, { 0x56, 0x00 }, { 0x57, 0x00 }, { 0x58, 0x1a }, { 0x59, 0x51 }, { 0x5a, 0x00 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CIS_XP200 , 600, {3}, 600, 16000, 1, 1, { 0x1644, 0x0c80, 0x092e }, { { 0x08, 0x06 }, { 0x09, 0x07 }, { 0x0a, 0x0a }, { 0x0b, 0x04 }, { 0x16, 0x24 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x2a }, { 0x1a, 0x0a }, { 0x1b, 0x0a }, { 0x1c, 0x00 }, { 0x1d, 0x11 }, { 0x52, 0x08 }, { 0x53, 0x02 }, { 0x54, 0x00 }, { 0x55, 0x00 }, { 0x56, 0x00 }, { 0x57, 0x00 }, { 0x58, 0x1a }, { 0x59, 0x51 }, { 0x5a, 0x00 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
|
||||
{CIS_XP200 , 75, 1, 75, 16000, 75, 1, 42, xp200_gray, 1, 0x00, 0x11},
|
||||
{CIS_XP200 , 100, 1, 100, 7800, 100, 1, 42, xp200_gray, 1, 0x00, 0x11},
|
||||
{CIS_XP200 , 200, 1, 200, 11000, 200, 1, 42, xp200_gray, 1, 0x00, 0x11},
|
||||
{CIS_XP200 , 300, 1, 300, 13000, 300, 1, 42, xp200_gray, 1, 0x00, 0x11},
|
||||
{CIS_XP200 , 600, 1, 600, 24000, 600, 1, 42, xp200_gray, 1, 0x00, 0x11},
|
||||
{CIS_XP200 , 75, {1}, 75, 16000, 1, 1, { 0x050a, 0x0fa0, 0x1010 }, { { 0x08, 0x06 }, { 0x09, 0x07 }, { 0x0a, 0x0a }, { 0x0b, 0x04 }, { 0x16, 0x24 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x2a }, { 0x1a, 0x0a }, { 0x1b, 0x0a }, { 0x1c, 0x00 }, { 0x1d, 0x11 }, { 0x52, 0x08 }, { 0x53, 0x02 }, { 0x54, 0x00 }, { 0x55, 0x00 }, { 0x56, 0x00 }, { 0x57, 0x00 }, { 0x58, 0x1a }, { 0x59, 0x51 }, { 0x5a, 0x00 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CIS_XP200 , 100, {1}, 100, 7800, 1, 1, { 0x050a, 0x0fa0, 0x1010 }, { { 0x08, 0x06 }, { 0x09, 0x07 }, { 0x0a, 0x0a }, { 0x0b, 0x04 }, { 0x16, 0x24 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x2a }, { 0x1a, 0x0a }, { 0x1b, 0x0a }, { 0x1c, 0x00 }, { 0x1d, 0x11 }, { 0x52, 0x08 }, { 0x53, 0x02 }, { 0x54, 0x00 }, { 0x55, 0x00 }, { 0x56, 0x00 }, { 0x57, 0x00 }, { 0x58, 0x1a }, { 0x59, 0x51 }, { 0x5a, 0x00 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CIS_XP200 , 200, {1}, 200, 11000, 1, 1, { 0x050a, 0x0fa0, 0x1010 }, { { 0x08, 0x06 }, { 0x09, 0x07 }, { 0x0a, 0x0a }, { 0x0b, 0x04 }, { 0x16, 0x24 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x2a }, { 0x1a, 0x0a }, { 0x1b, 0x0a }, { 0x1c, 0x00 }, { 0x1d, 0x11 }, { 0x52, 0x08 }, { 0x53, 0x02 }, { 0x54, 0x00 }, { 0x55, 0x00 }, { 0x56, 0x00 }, { 0x57, 0x00 }, { 0x58, 0x1a }, { 0x59, 0x51 }, { 0x5a, 0x00 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CIS_XP200 , 300, {1}, 300, 13000, 1, 1, { 0x050a, 0x0fa0, 0x1010 }, { { 0x08, 0x06 }, { 0x09, 0x07 }, { 0x0a, 0x0a }, { 0x0b, 0x04 }, { 0x16, 0x24 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x2a }, { 0x1a, 0x0a }, { 0x1b, 0x0a }, { 0x1c, 0x00 }, { 0x1d, 0x11 }, { 0x52, 0x08 }, { 0x53, 0x02 }, { 0x54, 0x00 }, { 0x55, 0x00 }, { 0x56, 0x00 }, { 0x57, 0x00 }, { 0x58, 0x1a }, { 0x59, 0x51 }, { 0x5a, 0x00 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CIS_XP200 , 600, {1}, 600, 24000, 1, 1, { 0x050a, 0x0fa0, 0x1010 }, { { 0x08, 0x06 }, { 0x09, 0x07 }, { 0x0a, 0x0a }, { 0x0b, 0x04 }, { 0x16, 0x24 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x2a }, { 0x1a, 0x0a }, { 0x1b, 0x0a }, { 0x1c, 0x00 }, { 0x1d, 0x11 }, { 0x52, 0x08 }, { 0x53, 0x02 }, { 0x54, 0x00 }, { 0x55, 0x00 }, { 0x56, 0x00 }, { 0x57, 0x00 }, { 0x58, 0x1a }, { 0x59, 0x51 }, { 0x5a, 0x00 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
|
||||
/* HP 2300 master settings */
|
||||
{CCD_HP2300, 75, 3, 75, 4480, 150, 1, 42, NULL, 2, 0x20, 0x85},
|
||||
{CCD_HP2300, 150, 3, 150, 4350, 300, 1, 42, NULL, 2, 0x20, 0x85},
|
||||
{CCD_HP2300, 300, 3, 300, 4350, 600, 1, 42, NULL, 2, 0x20, 0x85},
|
||||
{CCD_HP2300, 600, 3, 600, 8700, 600, 1, 42, NULL, 1, 0x20, 0x05},
|
||||
{CCD_HP2300,1200, 3, 600, 8700, 600, 1, 42, NULL, 1, 0x20, 0x05},
|
||||
{CCD_HP2300, 75, 1, 75, 4480, 150, 1, 42, NULL, 2, 0x20, 0x85},
|
||||
{CCD_HP2300, 150, 1, 150, 4350, 300, 1, 42, NULL, 2, 0x20, 0x85},
|
||||
{CCD_HP2300, 300, 1, 300, 4350, 600, 1, 42, NULL, 2, 0x20, 0x85},
|
||||
{CCD_HP2300, 600, 1, 600, 8700, 600, 1, 42, NULL, 1, 0x20, 0x05},
|
||||
{CCD_HP2300,1200, 1, 600, 8700, 600, 1, 42, NULL, 1, 0x20, 0x05},
|
||||
/* non half ccd 300 dpi settings
|
||||
{CCD_HP2300, 300, 3, 300, 8700, 300, 1, 42, NULL, 1, 0x20, 0x05},
|
||||
{CCD_HP2300, 300, 1, 300, 8700, 300, 1, 42, NULL, 1, 0x20, 0x05},
|
||||
*/
|
||||
{CCD_HP2300, 75, {1, 3}, 75, 4480, 1, 2, { 0, 0, 0 }, { { 0x08, 0x16 }, { 0x09, 0x00 }, { 0x0a, 0x01 }, { 0x0b, 0x03 }, { 0x16, 0xb7 }, { 0x17, 0x0a }, { 0x18, 0x20 }, { 0x19, 0x2a }, { 0x1a, 0x6a }, { 0x1b, 0x8a }, { 0x1c, 0x00 }, { 0x1d, 0x85 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x06 }, { 0x5c, 0x0b }, { 0x5d, 0x10 }, { 0x5e, 0x16 } } },
|
||||
{CCD_HP2300, 150, {1, 3}, 150, 4350, 1, 2, { 0, 0, 0 }, { { 0x08, 0x16 }, { 0x09, 0x00 }, { 0x0a, 0x01 }, { 0x0b, 0x03 }, { 0x16, 0xb7 }, { 0x17, 0x0a }, { 0x18, 0x20 }, { 0x19, 0x2a }, { 0x1a, 0x6a }, { 0x1b, 0x8a }, { 0x1c, 0x00 }, { 0x1d, 0x85 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x06 }, { 0x5c, 0x0b }, { 0x5d, 0x10 }, { 0x5e, 0x16 } } },
|
||||
{CCD_HP2300, 300, {1, 3}, 300, 4350, 1, 2, { 0, 0, 0 }, { { 0x08, 0x16 }, { 0x09, 0x00 }, { 0x0a, 0x01 }, { 0x0b, 0x03 }, { 0x16, 0xb7 }, { 0x17, 0x0a }, { 0x18, 0x20 }, { 0x19, 0x2a }, { 0x1a, 0x6a }, { 0x1b, 0x8a }, { 0x1c, 0x00 }, { 0x1d, 0x85 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x06 }, { 0x5c, 0x0b }, { 0x5d, 0x10 }, { 0x5e, 0x16 } } },
|
||||
{CCD_HP2300, 600, {1, 3}, 600, 8700, 1, 1, { 0, 0, 0 }, { { 0x08, 0x01 }, { 0x09, 0x03 }, { 0x0a, 0x04 }, { 0x0b, 0x06 }, { 0x16, 0xb7 }, { 0x17, 0x0a }, { 0x18, 0x20 }, { 0x19, 0x2a }, { 0x1a, 0x6a }, { 0x1b, 0x8a }, { 0x1c, 0x00 }, { 0x1d, 0x05 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x06 }, { 0x5c, 0x0b }, { 0x5d, 0x10 }, { 0x5e, 0x16 } } },
|
||||
{CCD_HP2300,1200, {1, 3}, 600, 8700, 1, 1, { 0, 0, 0 }, { { 0x08, 0x01 }, { 0x09, 0x03 }, { 0x0a, 0x04 }, { 0x0b, 0x06 }, { 0x16, 0xb7 }, { 0x17, 0x0a }, { 0x18, 0x20 }, { 0x19, 0x2a }, { 0x1a, 0x6a }, { 0x1b, 0x8a }, { 0x1c, 0x00 }, { 0x1d, 0x05 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x06 }, { 0x5c, 0x0b }, { 0x5d, 0x10 }, { 0x5e, 0x16 } } },
|
||||
|
||||
/* MD5345/6471 master settings */
|
||||
{CCD_5345 , 50, 3, 50, 12000, 100, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 75, 3, 75, 11000, 150, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 100, 3, 100, 11000, 200, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 150, 3, 150, 11000, 300, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 200, 3, 200, 11000, 400, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 300, 3, 300, 11000, 600, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 400, 3, 400, 11000, 800, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 600, 3, 600, 11000,1200, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 ,1200, 3, 1200, 11000,1200, 1, 42, NULL, 1, 0x30, 0x03},
|
||||
{CCD_5345 ,2400, 3, 1200, 11000,1200, 1, 42, NULL, 1, 0x30, 0x03},
|
||||
{CCD_5345 , 50, 1, 50, 12000, 100, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 75, 1, 75, 11000, 150, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 100, 1, 100, 11000, 200, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 150, 1, 150, 11000, 300, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 200, 1, 200, 11000, 400, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 300, 1, 300, 11000, 600, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 400, 1, 400, 11000, 800, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 , 600, 1, 600, 11000,1200, 1, 42, NULL, 2, 0x28, 0x03},
|
||||
{CCD_5345 ,1200, 1, 1200, 11000,1200, 1, 42, NULL, 2, 0x30, 0x03},
|
||||
{CCD_5345 ,2400, 1, 1200, 11000,1200, 1, 42, NULL, 1, 0x30, 0x03},
|
||||
{CCD_5345 , 50, {1, 3}, 50, 12000, 1, 2, { 0, 0, 0 }, { { 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 }, { 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_5345 , 75, {1, 3}, 75, 11000, 1, 2, { 0, 0, 0 }, { { 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 }, { 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_5345 , 100, {1, 3}, 100, 11000, 1, 2, { 0, 0, 0 }, { { 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 }, { 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_5345 , 150, {1, 3}, 150, 11000, 1, 2, { 0, 0, 0 }, { { 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 }, { 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_5345 , 200, {1, 3}, 200, 11000, 1, 2, { 0, 0, 0 }, { { 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 }, { 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_5345 , 300, {1, 3}, 300, 11000, 1, 2, { 0, 0, 0 }, { { 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 }, { 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_5345 , 400, {1, 3}, 400, 11000, 1, 2, { 0, 0, 0 }, { { 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 }, { 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_5345 , 600, {1, 3}, 600, 11000, 1, 2, { 0, 0, 0 }, { { 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 }, { 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 }, { 0x52, 0x0f }, { 0x53, 0x13 }, { 0x54, 0x17 }, { 0x55, 0x03 }, { 0x56, 0x07 }, { 0x57, 0x0b }, { 0x58, 0x83 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_5345 ,1200, {1, 3}, 1200, 11000, 1, 1, { 0, 0, 0 }, { { 0x08, 0x0d }, { 0x09, 0x0f }, { 0x0a, 0x11 }, { 0x0b, 0x13 }, { 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x30 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 }, { 0x52, 0x03 }, { 0x53, 0x07 }, { 0x54, 0x0b }, { 0x55, 0x0f }, { 0x56, 0x13 }, { 0x57, 0x17 }, { 0x58, 0x23 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
{CCD_5345 ,2400, {1, 3}, 1200, 11000, 1, 1, { 0, 0, 0 }, { { 0x08, 0x0d }, { 0x09, 0x0f }, { 0x0a, 0x11 }, { 0x0b, 0x13 }, { 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x30 }, { 0x19, 0x2a }, { 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 }, { 0x52, 0x03 }, { 0x53, 0x07 }, { 0x54, 0x0b }, { 0x55, 0x0f }, { 0x56, 0x13 }, { 0x57, 0x17 }, { 0x58, 0x23 }, { 0x59, 0x00 }, { 0x5a, 0xc1 }, { 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 } } },
|
||||
|
||||
};
|
||||
|
||||
|
@ -501,74 +451,3 @@ static Motor_Master motor_master[] = {
|
|||
{MOTOR_5345, 1200, 1,1200, QUATER_STEP, SANE_FALSE, SANE_TRUE , 0, 16, 2750, 2750, 255, 2000, 300, 0.3, 0.4, 146},
|
||||
{MOTOR_5345, 2400, 1,2400, QUATER_STEP, SANE_FALSE, SANE_TRUE , 0, 16, 5500, 5500, 255, 2000, 300, 0.3, 0.4, 146}, /* 5500 guessed */
|
||||
};
|
||||
|
||||
/**
|
||||
* sensor settings for a given sensor and timing method
|
||||
*/
|
||||
static Sensor_Settings sensor_settings[] = {
|
||||
/* HP 3670 */
|
||||
{CCD_HP3670, 1,
|
||||
{0x0d, 0x0f, 0x11, 0x13},
|
||||
{0x00, 0x00, 0x00, 0x00},
|
||||
{0x2b, 0x07, 0x30, 0x2a, 0x00, 0x00, 0xc0, 0x43},
|
||||
{0x03, 0x07, 0x0b, 0x0f, 0x13, 0x17, 0x23, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, },
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
|
||||
},
|
||||
{CCD_HP3670, 2,
|
||||
{0x00, 0x05, 0x06, 0x08},
|
||||
{0x00, 0x00, 0x00, 0x00},
|
||||
{0x33, 0x07, 0x31, 0x2a, 0x02, 0x0e, 0xc0, 0x43},
|
||||
{0x0b, 0x0f, 0x13, 0x17, 0x03, 0x07, 0x63, 0x00, 0xc1, 0x02, 0x0e, 0x00, 0x00, },
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
|
||||
},
|
||||
{CCD_HP3670, 4,
|
||||
{0x00, 0x0a, 0x0b, 0x0d},
|
||||
{0x00, 0x00, 0x00, 0x00},
|
||||
{0x33, 0x07, 0x33, 0x2a, 0x02, 0x13, 0xc0, 0x43},
|
||||
{0x0f, 0x13, 0x17, 0x03, 0x07, 0x0b, 0x83, 0x15, 0xc1, 0x05, 0x0a, 0x0f, 0x00, },
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
|
||||
},
|
||||
/* HP 2400 */
|
||||
{CCD_HP2400, 4,
|
||||
{0x14, 0x15, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00},
|
||||
{0xbf, 0x08, 0x3f, 0x2a, 0x00, 0x00, 0x00, 0x02},
|
||||
{11, 15, 19, 23, 3, 7, 0x63, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00},
|
||||
{11, 15, 19, 23, 3, 7, 0x63}
|
||||
},
|
||||
{CCD_HP2400, 2,
|
||||
{14, 15, 0, 0},
|
||||
{14, 15, 0, 0},
|
||||
{0xbf, 0x08, 0x31, 0x2a, 0, 0, 0, 0x02},
|
||||
{3, 7, 11, 15, 19, 23, 0x23, 0, 0xc1, 0, 0, 0, 0},
|
||||
{3, 7, 11, 15, 19, 23, 0x23}
|
||||
},
|
||||
{CCD_HP2400, 1,
|
||||
{0x02, 0x04, 0x00, 0x00},
|
||||
{0x02, 0x04, 0x00, 0x00},
|
||||
{0xbf, 0x08, 0x30, 0x2a, 0x00, 0x00, 0xc0, 0x42},
|
||||
{0x0b, 0x0f, 0x13, 0x17, 0x03, 0x07, 0x63, 0x00, 0xc1, 0x00, 0x0e, 0x00, 0x00},
|
||||
{0x0b, 0x0f, 0x13, 0x17, 0x03, 0x07, 0x63}
|
||||
},
|
||||
{CIS_XP200, 1,
|
||||
{6, 7, 10, 4},
|
||||
{6, 7, 10, 4},
|
||||
{0x24, 0x04, 0x00, 0x2a, 0x0a, 0x0a, 0, 0x11},
|
||||
{8, 2, 0, 0, 0, 0, 0x1a, 0x51, 0, 0, 0, 0, 0},
|
||||
{8, 2, 0, 0, 0, 0, 0x1a}
|
||||
},
|
||||
{CCD_HP2300, 1,
|
||||
{0x01, 0x03, 0x04, 0x06},
|
||||
{0x16, 0x00, 0x01, 0x03},
|
||||
{0xb7, 0x0a, 0x20, 0x2a, 0x6a, 0x8a, 0x00, 0x05},
|
||||
{0x0f, 0x13, 0x17, 0x03, 0x07, 0x0b, 0x83, 0x00, 0xc1, 0x06, 0x0b, 0x10, 0x16},
|
||||
{0x0f, 0x13, 0x17, 0x03, 0x07, 0x0b, 0x83}
|
||||
},
|
||||
{CCD_5345, 1,
|
||||
{0x0d, 0x0f, 0x11, 0x13},
|
||||
{0x00, 0x05, 0x06, 0x08}, /* manual clock 1/2 settings or half ccd */
|
||||
{0x0b, 0x0a, 0x30, 0x2a, 0x00, 0x00, 0x00, 0x03, },
|
||||
{0x03, 0x07, 0x0b, 0x0f, 0x13, 0x17, 0x23, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x0f, 0x13, 0x17, 0x03, 0x07, 0x0b, 0x83} /* half ccd settings */
|
||||
},
|
||||
};
|
||||
|
|
Ładowanie…
Reference in New Issue