Merge remote-tracking branch 'origin/master' into escl-simple-scan

merge-requests/317/merge
Thierry HUCHARD 2020-01-25 17:32:10 +01:00
commit bb9c4ead76
9 zmienionych plików z 187 dodań i 192 usunięć

Wyświetl plik

@ -160,6 +160,9 @@ public:
/// cold boot init function
virtual void asic_boot(Genesys_Device* dev, bool cold) const = 0;
/// checks if specific scan head is at home position
virtual bool is_head_home(Genesys_Device& dev, ScanHeadId scan_head) const = 0;
/// enables or disables XPA slider motor
virtual void set_xpa_lamp_power(Genesys_Device& dev, bool set) const = 0;

Wyświetl plik

@ -23,11 +23,50 @@
#define DEBUG_DECLARE_ONLY
#include "command_set_common.h"
#include "low.h"
namespace genesys {
CommandSetCommon::~CommandSetCommon() = default;
bool CommandSetCommon::is_head_home(Genesys_Device& dev, ScanHeadId scan_head) const
{
struct HeadSettings {
ModelId model_id;
ScanHeadId scan_head;
GenesysRegisterSettingSet regs;
};
HeadSettings settings[] = {
{ ModelId::CANON_8600F,
ScanHeadId::PRIMARY, {
{ 0x6c, 0x20, 0x60 },
{ 0xa6, 0x00, 0x01 },
}
},
{ ModelId::CANON_8600F,
ScanHeadId::SECONDARY, {
{ 0x6c, 0x00, 0x60 },
{ 0xa6, 0x01, 0x01 },
}
},
};
for (const auto& setting : settings) {
if (setting.model_id == dev.model->model_id &&
setting.scan_head == scan_head)
{
auto reg_backup = apply_reg_settings_to_device_with_backup(dev, setting.regs);
auto status = scanner_read_status(dev);
apply_reg_settings_to_device(dev, reg_backup);
return status.is_at_home;
}
}
auto status = scanner_read_status(dev);
return status.is_at_home;
}
void CommandSetCommon::set_xpa_lamp_power(Genesys_Device& dev, bool set) const
{
@ -127,39 +166,38 @@ void CommandSetCommon::set_motor_mode(Genesys_Device& dev, Genesys_Register_Set&
ResolutionFilter resolutions;
GenesysRegisterSettingSet regs_primary_and_secondary;
GenesysRegisterSettingSet regs_primary;
GenesysRegisterSettingSet regs_secondary;
};
MotorSettings settings[] = {
{ ModelId::CANON_8400F, { 400, 800, 1600 }, {
{ ModelId::CANON_8400F, { 400, 800, 1600, 3200 }, {
{ 0x6c, 0x00, 0x90 },
{ 0xa9, 0x04, 0x06 },
}, {
{ 0x6c, 0x90, 0x90 },
{ 0xa9, 0x02, 0x06 },
}
},
{ ModelId::CANON_8400F, { 3200 }, {
{ 0x6c, 0x00, 0x92 },
{ 0xa9, 0x04, 0x06 },
}, {
{ 0x6c, 0x90, 0x90 },
{ 0xa9, 0x02, 0x06 },
}
}, {}
},
{ ModelId::CANON_8600F, { 300, 600, 1200 }, {
{ 0x6c, 0x00, 0x20 },
{ 0x6c, 0x00, 0x60 },
{ 0xa6, 0x01, 0x41 },
}, {
{ 0x6c, 0x20, 0x22 },
{ 0x6c, 0x20, 0x62 },
{ 0xa6, 0x00, 0x41 },
}, {
{ 0x6c, 0x40, 0x62 },
{ 0xa6, 0x01, 0x41 },
}
},
{ ModelId::CANON_8600F, { 2400, 4800 }, {
{ 0x6c, 0x02, 0x22 },
{ 0x6c, 0x02, 0x62 },
{ 0xa6, 0x01, 0x41 },
}, {
{ 0x6c, 0x20, 0x22 },
{ 0x6c, 0x20, 0x62 },
{ 0xa6, 0x00, 0x41 },
}, {
{ 0x6c, 0x40, 0x62 },
{ 0xa6, 0x01, 0x41 },
}
},
{ ModelId::HP_SCANJET_G4050, ResolutionFilter::ANY, {
@ -173,11 +211,11 @@ void CommandSetCommon::set_motor_mode(Genesys_Device& dev, Genesys_Register_Set&
{ 0x6b, 0x00, 0x01 }, // BUG: note that only ADF is unset
{ 0xa8, 0x04, 0x04 },
{ 0xa9, 0x00, 0x10 }, // note that 0x20 bit is not reset
}
}, {}
},
{ ModelId::PLUSTEK_OPTICFILM_7200I, ResolutionFilter::ANY, {}, {} },
{ ModelId::PLUSTEK_OPTICFILM_7300, ResolutionFilter::ANY, {}, {} },
{ ModelId::PLUSTEK_OPTICFILM_7500I, ResolutionFilter::ANY, {}, {} },
{ ModelId::PLUSTEK_OPTICFILM_7200I, ResolutionFilter::ANY, {}, {}, {} },
{ ModelId::PLUSTEK_OPTICFILM_7300, ResolutionFilter::ANY, {}, {}, {} },
{ ModelId::PLUSTEK_OPTICFILM_7500I, ResolutionFilter::ANY, {}, {}, {} },
};
for (const auto& setting : settings) {
@ -193,6 +231,10 @@ void CommandSetCommon::set_motor_mode(Genesys_Device& dev, Genesys_Register_Set&
apply_reg_settings_to_device(dev, setting.regs_primary_and_secondary);
break;
}
case MotorMode::SECONDARY: {
apply_reg_settings_to_device(dev, setting.regs_secondary);
break;
}
}
regs.state.motor_mode = mode;
return;

Wyświetl plik

@ -35,6 +35,8 @@ class CommandSetCommon : public CommandSet
public:
~CommandSetCommon() override;
bool is_head_home(Genesys_Device& dev, ScanHeadId scan_head) const override;
void set_xpa_lamp_power(Genesys_Device& dev, bool set) const override;
void set_motor_mode(Genesys_Device& dev, Genesys_Register_Set& regs,

Wyświetl plik

@ -528,6 +528,7 @@ enum class MotorMode : unsigned
{
PRIMARY = 0,
PRIMARY_AND_SECONDARY,
SECONDARY,
};
} // namespace genesys

Wyświetl plik

@ -1176,8 +1176,22 @@ void scanner_move_back_home(Genesys_Device& dev, bool wait_until_home)
}
namespace {
void handle_motor_position_after_move_back_home_ta(Genesys_Device& dev)
bool should_use_secondary_motor_mode(Genesys_Device& dev)
{
bool should_use = !dev.is_head_pos_known(ScanHeadId::SECONDARY) ||
!dev.is_head_pos_known(ScanHeadId::PRIMARY) ||
dev.head_pos(ScanHeadId::SECONDARY) > dev.head_pos(ScanHeadId::PRIMARY);
bool supports = dev.model->model_id == ModelId::CANON_8600F;
return should_use && supports;
}
void handle_motor_position_after_move_back_home_ta(Genesys_Device& dev, MotorMode motor_mode)
{
if (motor_mode == MotorMode::SECONDARY) {
dev.set_head_pos_zero(ScanHeadId::SECONDARY);
return;
}
if (dev.is_head_pos_known(ScanHeadId::PRIMARY)) {
if (dev.head_pos(ScanHeadId::PRIMARY) > dev.head_pos(ScanHeadId::SECONDARY)) {
dev.advance_head_pos_by_steps(ScanHeadId::PRIMARY, Direction::BACKWARD,
@ -1209,7 +1223,9 @@ void scanner_move_back_home_ta(Genesys_Device& dev)
const auto& sensor = sanei_genesys_find_sensor(&dev, resolution, 1, scan_method);
if (dev.is_head_pos_known(ScanHeadId::SECONDARY) &&
dev.head_pos(ScanHeadId::SECONDARY) > 1000)
dev.is_head_pos_known(ScanHeadId::PRIMARY) &&
dev.head_pos(ScanHeadId::SECONDARY) > 1000 &&
dev.head_pos(ScanHeadId::SECONDARY) <= dev.head_pos(ScanHeadId::PRIMARY))
{
// leave 500 steps for regular slow back home
scanner_move(dev, scan_method, dev.head_pos(ScanHeadId::SECONDARY) - 500,
@ -1240,7 +1256,11 @@ void scanner_move_back_home_ta(Genesys_Device& dev)
scanner_clear_scan_and_feed_counts(dev);
dev.interface->write_registers(local_reg);
dev.cmd_set->set_motor_mode(dev, local_reg, MotorMode::PRIMARY_AND_SECONDARY);
auto motor_mode = should_use_secondary_motor_mode(dev) ? MotorMode::SECONDARY
: MotorMode::PRIMARY_AND_SECONDARY;
dev.cmd_set->set_motor_mode(dev, local_reg, motor_mode);
try {
scanner_start_action(dev, true);
@ -1254,7 +1274,7 @@ void scanner_move_back_home_ta(Genesys_Device& dev)
if (is_testing_mode()) {
dev.interface->test_checkpoint("move_back_home_ta");
handle_motor_position_after_move_back_home_ta(dev);
handle_motor_position_after_move_back_home_ta(dev, motor_mode);
scanner_stop_action(dev);
dev.cmd_set->set_motor_mode(dev, local_reg, MotorMode::PRIMARY);
@ -1268,7 +1288,7 @@ void scanner_move_back_home_ta(Genesys_Device& dev)
if (status.is_at_home) {
dbg.log(DBG_info, "TA reached home position");
handle_motor_position_after_move_back_home_ta(dev);
handle_motor_position_after_move_back_home_ta(dev, motor_mode);
scanner_stop_action(dev);
dev.cmd_set->set_motor_mode(dev, local_reg, MotorMode::PRIMARY);
@ -4631,7 +4651,7 @@ static void probe_genesys_devices()
of Genesys_Calibration_Cache as is.
*/
static const char* CALIBRATION_IDENT = "sane_genesys";
static const int CALIBRATION_VERSION = 21;
static const int CALIBRATION_VERSION = 23;
bool read_calibration(std::istream& str, Genesys_Device::Calibration& calibration,
const std::string& path)

Wyświetl plik

@ -1214,6 +1214,15 @@ void CommandSetGl843::init_regs_for_scan_session(Genesys_Device* dev, const Gene
DBG(DBG_info, "%s: total bytes to send = %zu\n", __func__, dev->total_bytes_to_read);
}
static double get_model_x_offset_ta(const Genesys_Device& dev,
const Genesys_Settings& settings)
{
if (dev.model->model_id == ModelId::CANON_8600F && settings.xres == 4800) {
return 85.0;
}
return dev.model->x_offset_ta;
}
ScanSession CommandSetGl843::calculate_scan_session(const Genesys_Device* dev,
const Genesys_Sensor& sensor,
const Genesys_Settings& settings) const
@ -1229,18 +1238,20 @@ ScanSession CommandSetGl843::calculate_scan_session(const Genesys_Device* dev,
if (settings.scan_method == ScanMethod::TRANSPARENCY ||
settings.scan_method == ScanMethod::TRANSPARENCY_INFRARED)
{
start = static_cast<int>(dev->model->x_offset_ta);
start = static_cast<int>(get_model_x_offset_ta(*dev, settings));
} else {
start = static_cast<int>(dev->model->x_offset);
}
if (dev->model->model_id == ModelId::CANON_8600F)
start += static_cast<int>(settings.tl_x);
if (dev->model->model_id == ModelId::CANON_8400F ||
dev->model->model_id == ModelId::CANON_8600F)
{
// FIXME: this is probably just an artifact of a bug elsewhere
start /= ccd_size_divisor;
}
start += static_cast<int>(settings.tl_x);
start = static_cast<int>((start * sensor.optical_res) / MM_PER_INCH);
ScanSession session;
@ -1400,6 +1411,20 @@ void CommandSetGl843::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
dev->interface->write_register(REG_0x7E, 0x01);
break;
case GpioId::CANON_8400F:
if (dev->session.params.xres == 3200)
{
GenesysRegisterSettingSet reg_settings = {
{ 0x6c, 0x00, 0x02 },
};
apply_reg_settings_to_device(*dev, reg_settings);
}
if (reg->state.is_xpa_on && reg->state.is_lamp_on) {
dev->cmd_set->set_xpa_lamp_power(*dev, true);
}
if (reg->state.is_xpa_on) {
dev->cmd_set->set_motor_mode(*dev, *reg, MotorMode::PRIMARY_AND_SECONDARY);
}
break;
case GpioId::CANON_8600F:
if (reg->state.is_xpa_on && reg->state.is_lamp_on) {
dev->cmd_set->set_xpa_lamp_power(*dev, true);
@ -1446,6 +1471,12 @@ void CommandSetGl843::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
dev->advance_head_pos_by_session(ScanHeadId::SECONDARY);
break;
}
case MotorMode::SECONDARY: {
if (reg->state.is_motor_on) {
dev->advance_head_pos_by_session(ScanHeadId::SECONDARY);
}
break;
}
}
}
@ -1627,7 +1658,7 @@ void CommandSetGl843::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
dev->model->model_id == ModelId::CANON_8600F &&
dev->settings.xres == 4800)
{
float offset = static_cast<float>(dev->model->x_offset_ta);
float offset = static_cast<float>(get_model_x_offset_ta(*dev, dev->settings));
offset /= calib_sensor.get_ccd_size_divisor_for_dpi(resolution);
offset = static_cast<float>((offset * calib_sensor.optical_res) / MM_PER_INCH);
@ -1732,10 +1763,11 @@ void CommandSetGl843::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens
if (dev->settings.scan_method==ScanMethod::TRANSPARENCY ||
dev->settings.scan_method == ScanMethod::TRANSPARENCY_INFRARED)
{
start = static_cast<float>(dev->model->x_offset_ta);
start = static_cast<float>(get_model_x_offset_ta(*dev, dev->settings));
} else {
start = static_cast<float>(dev->model->x_offset);
}
start = static_cast<float>(start + dev->settings.tl_x);
if (dev->model->model_id == ModelId::CANON_8400F ||
dev->model->model_id == ModelId::CANON_8600F)
@ -1744,7 +1776,6 @@ void CommandSetGl843::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens
start /= sensor.get_ccd_size_divisor_for_dpi(dev->settings.xres);
}
start = static_cast<float>(start + dev->settings.tl_x);
start = static_cast<float>((start * sensor.optical_res) / MM_PER_INCH);
ScanSession session;
@ -2026,7 +2057,7 @@ void CommandSetGl843::offset_calibration(Genesys_Device* dev, const Genesys_Sens
dev->model->model_id == ModelId::CANON_8600F &&
dev->settings.xres == 4800)
{
start_pixel = static_cast<int>(dev->model->x_offset_ta);
start_pixel = static_cast<int>(get_model_x_offset_ta(*dev, dev->settings));
start_pixel /= calib_sensor.get_ccd_size_divisor_for_dpi(resolution);
start_pixel = static_cast<int>((start_pixel * calib_sensor.optical_res) / MM_PER_INCH);

Wyświetl plik

@ -1504,6 +1504,14 @@ void sanei_genesys_asic_init(Genesys_Device* dev, bool /*max_regs*/)
dev->already_initialized = true;
// Move to home if needed
if (dev->model->model_id == ModelId::CANON_8600F) {
if (!dev->cmd_set->is_head_home(*dev, ScanHeadId::SECONDARY)) {
dev->set_head_pos_unknown(ScanHeadId::SECONDARY);
}
if (!dev->cmd_set->is_head_home(*dev, ScanHeadId::PRIMARY)) {
dev->set_head_pos_unknown(ScanHeadId::SECONDARY);
}
}
dev->cmd_set->move_back_home(dev, true);
// Set powersaving (default = 15 minutes)

Wyświetl plik

@ -515,7 +515,7 @@ void genesys_init_usb_device_tables()
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
model.x_offset = 3.5;
model.x_offset = 5.5;
model.y_offset = 17.00;
model.x_size = 219.9;
model.y_size = 300.0;
@ -592,7 +592,7 @@ void genesys_init_usb_device_tables()
model.y_offset_calib_white = 0.0;
model.x_offset_calib_black = 8.0;
model.x_offset_ta = 85.0;
model.x_offset_ta = 94.0;
model.y_offset_ta = 26.0;
model.x_size_ta = 70.0;
model.y_size_ta = 230.0;

Wyświetl plik

@ -2400,7 +2400,7 @@ void genesys_init_sensor_tables()
// 31 at 600 dpi, 58 at 1200 dpi
sensor.dummy_pixel = 20;
sensor.ccd_start_xoffset = 152;
sensor.sensor_pixels = 27200;
sensor.sensor_pixels = 28400;
sensor.fau_gain_white_ref = 160;
sensor.gain_white_ref = 160;
sensor.exposure = { 0x9c40, 0x9c40, 0x9c40 };
@ -2424,25 +2424,11 @@ void genesys_init_sensor_tables()
};
CustomSensorSettings custom_settings[] = {
{ { 400 }, 2400, 1, 7200, { ScanMethod::FLATBED }, {
{ 0x16, 0x33 },
{ 0x17, 0x0c },
{ 0x18, 0x13 },
{ 0x19, 0x2a },
{ 0x1a, 0x30 },
{ 0x1b, 0x00 },
{ 0x1c, 0x00 },
{ 0x1d, 0x84 },
{ 0x1e, 0xa0 },
{ 0x52, 0x0d },
{ 0x53, 0x10 },
{ 0x54, 0x01 },
{ 0x55, 0x04 },
{ 0x56, 0x07 },
{ 0x57, 0x0a },
{ 0x58, 0x6b },
{ 0x59, 0x00 },
{ 0x5a, 0x40 },
{ { 400 }, 2400, 1, 7200, { ScanMethod::FLATBED }, {
{ 0x16, 0x33 }, { 0x17, 0x0c }, { 0x18, 0x13 }, { 0x19, 0x2a },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x84 }, { 0x1e, 0xa0 },
{ 0x52, 0x0d }, { 0x53, 0x10 }, { 0x54, 0x01 }, { 0x55, 0x04 },
{ 0x56, 0x07 }, { 0x57, 0x0a }, { 0x58, 0x6b }, { 0x59, 0x00 }, { 0x5a, 0x40 },
{ 0x70, 0x01 }, { 0x71, 0x02 }, { 0x72, 0x03 }, { 0x73, 0x04 },
{ 0x74, 0x00 }, { 0x75, 0x0e }, { 0x76, 0x3f },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
@ -2450,25 +2436,11 @@ void genesys_init_sensor_tables()
{ 0x80, 0x2a },
}, {}
},
{ { 800 }, 4800, 1, 7200, { ScanMethod::FLATBED }, {
{ 0x16, 0x33 },
{ 0x17, 0x0c },
{ 0x18, 0x13 },
{ 0x19, 0x2a },
{ 0x1a, 0x30 },
{ 0x1b, 0x00 },
{ 0x1c, 0x00 },
{ 0x1d, 0x84 },
{ 0x1e, 0xa0 },
{ 0x52, 0x0d },
{ 0x53, 0x10 },
{ 0x54, 0x01 },
{ 0x55, 0x04 },
{ 0x56, 0x07 },
{ 0x57, 0x0a },
{ 0x58, 0x6b },
{ 0x59, 0x00 },
{ 0x5a, 0x40 },
{ { 800 }, 4800, 1, 7200, { ScanMethod::FLATBED }, {
{ 0x16, 0x33 }, { 0x17, 0x0c }, { 0x18, 0x13 }, { 0x19, 0x2a },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x84 }, { 0x1e, 0xa0 },
{ 0x52, 0x0d }, { 0x53, 0x10 }, { 0x54, 0x01 }, { 0x55, 0x04 },
{ 0x56, 0x07 }, { 0x57, 0x0a }, { 0x58, 0x6b }, { 0x59, 0x00 }, { 0x5a, 0x40 },
{ 0x70, 0x01 }, { 0x71, 0x02 }, { 0x72, 0x03 }, { 0x73, 0x04 },
{ 0x74, 0x00 }, { 0x75, 0x0e }, { 0x76, 0x3f },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
@ -2476,26 +2448,12 @@ void genesys_init_sensor_tables()
{ 0x80, 0x20 },
}, {}
},
{ { 1600 }, 4800, 1, 14400, { ScanMethod::FLATBED }, {
{ 0x16, 0x33 },
{ 0x17, 0x0c },
{ 0x18, 0x11 },
{ 0x19, 0x2a },
{ 0x1a, 0x30 },
{ 0x1b, 0x00 },
{ 0x1c, 0x00 },
{ 0x1d, 0x84 },
{ 0x1e, 0xa1 },
{ 0x52, 0x0b },
{ 0x53, 0x0e },
{ 0x54, 0x11 },
{ 0x55, 0x02 },
{ 0x56, 0x05 },
{ 0x57, 0x08 },
{ 0x58, 0x63 },
{ 0x59, 0x00 },
{ 0x5a, 0x40 },
{ 0x70, 0x01 }, { 0x71, 0x02 }, { 0x72, 0x02 }, { 0x73, 0x03 },
{ { 1600 }, 4800, 1, 14400, { ScanMethod::FLATBED }, {
{ 0x16, 0x33 }, { 0x17, 0x0c }, { 0x18, 0x11 }, { 0x19, 0x2a },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x84 }, { 0x1e, 0xa1 },
{ 0x52, 0x0b }, { 0x53, 0x0e }, { 0x54, 0x11 }, { 0x55, 0x02 },
{ 0x56, 0x05 }, { 0x57, 0x08 }, { 0x58, 0x63 }, { 0x59, 0x00 }, { 0x5a, 0x40 },
{ 0x70, 0x00 }, { 0x71, 0x01 }, { 0x72, 0x02 }, { 0x73, 0x03 },
{ 0x74, 0x00 }, { 0x75, 0x01 }, { 0x76, 0xff },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
{ 0x7a, 0x02 }, { 0x7b, 0x49 }, { 0x7c, 0x24 },
@ -2504,25 +2462,11 @@ void genesys_init_sensor_tables()
{ 0x03, 0x1f },
}
},
{ { 3200 }, 4800, 1, 28800, { ScanMethod::FLATBED }, {
{ 0x16, 0x33 },
{ 0x17, 0x0c },
{ 0x18, 0x10 },
{ 0x19, 0x2a },
{ 0x1a, 0x30 },
{ 0x1b, 0x00 },
{ 0x1c, 0x20 },
{ 0x1d, 0x84 },
{ 0x1e, 0xa1 },
{ 0x52, 0x02 },
{ 0x53, 0x05 },
{ 0x54, 0x08 },
{ 0x55, 0x0b },
{ 0x56, 0x0e },
{ 0x57, 0x11 },
{ 0x58, 0x1b },
{ 0x59, 0x00 },
{ 0x5a, 0x40 },
{ { 3200 }, 4800, 1, 28800, { ScanMethod::FLATBED }, {
{ 0x16, 0x33 }, { 0x17, 0x0c }, { 0x18, 0x10 }, { 0x19, 0x2a },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x20 }, { 0x1d, 0x84 }, { 0x1e, 0xa1 },
{ 0x52, 0x02 }, { 0x53, 0x05 }, { 0x54, 0x08 }, { 0x55, 0x0b },
{ 0x56, 0x0e }, { 0x57, 0x11 }, { 0x58, 0x1b }, { 0x59, 0x00 }, { 0x5a, 0x40 },
{ 0x70, 0x09 }, { 0x71, 0x0a }, { 0x72, 0x0b }, { 0x73, 0x0c },
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x00 },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
@ -2532,26 +2476,12 @@ void genesys_init_sensor_tables()
{ 0x03, 0x1f },
},
},
{ { 400 }, 2400, 1, 14400, { ScanMethod::TRANSPARENCY,
ScanMethod::TRANSPARENCY_INFRARED }, {
{ 0x16, 0x33 },
{ 0x17, 0x0c },
{ 0x18, 0x13 },
{ 0x19, 0x2a },
{ 0x1a, 0x30 },
{ 0x1b, 0x00 },
{ 0x1c, 0x00 },
{ 0x1d, 0x84 },
{ 0x1e, 0xa0 },
{ 0x52, 0x0d },
{ 0x53, 0x10 },
{ 0x54, 0x01 },
{ 0x55, 0x04 },
{ 0x56, 0x07 },
{ 0x57, 0x0a },
{ 0x58, 0x6b },
{ 0x59, 0x00 },
{ 0x5a, 0x40 },
{ { 400 }, 2400, 1, 14400, { ScanMethod::TRANSPARENCY,
ScanMethod::TRANSPARENCY_INFRARED }, {
{ 0x16, 0x33 }, { 0x17, 0x0c }, { 0x18, 0x13 }, { 0x19, 0x2a },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x84 }, { 0x1e, 0xa0 },
{ 0x52, 0x0d }, { 0x53, 0x10 }, { 0x54, 0x01 }, { 0x55, 0x04 },
{ 0x56, 0x07 }, { 0x57, 0x0a }, { 0x58, 0x6b }, { 0x59, 0x00 }, { 0x5a, 0x40 },
{ 0x70, 0x01 }, { 0x71, 0x02 }, { 0x72, 0x03 }, { 0x73, 0x04 },
{ 0x74, 0x00 }, { 0x75, 0x0e }, { 0x76, 0x3f },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
@ -2559,53 +2489,25 @@ void genesys_init_sensor_tables()
{ 0x80, 0x20 },
}, {}
},
{ { 800 }, 4800, 1, 14400, { ScanMethod::TRANSPARENCY,
ScanMethod::TRANSPARENCY_INFRARED }, {
{ 0x16, 0x33 },
{ 0x17, 0x0c },
{ 0x18, 0x13 },
{ 0x19, 0x2a },
{ 0x1a, 0x30 },
{ 0x1b, 0x00 },
{ 0x1c, 0x00 },
{ 0x1d, 0x84 },
{ 0x1e, 0xa0 },
{ 0x52, 0x0d },
{ 0x53, 0x10 },
{ 0x54, 0x01 },
{ 0x55, 0x04 },
{ 0x56, 0x07 },
{ 0x57, 0x0a },
{ 0x58, 0x6b },
{ 0x59, 0x00 },
{ 0x5a, 0x40 },
{ 0x70, 0x01 }, { 0x71, 0x02 }, { 0x72, 0x03 }, { 0x73, 0x04 },
{ { 800 }, 4800, 1, 14400, { ScanMethod::TRANSPARENCY,
ScanMethod::TRANSPARENCY_INFRARED }, {
{ 0x16, 0x33 }, { 0x17, 0x0c }, { 0x18, 0x13 }, { 0x19, 0x2a },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x84 }, { 0x1e, 0xa0 },
{ 0x52, 0x0d }, { 0x53, 0x10 }, { 0x54, 0x01 }, { 0x55, 0x04 },
{ 0x56, 0x07 }, { 0x57, 0x0a }, { 0x58, 0x6b }, { 0x59, 0x00 }, { 0x5a, 0x40 },
{ 0x70, 0x00 }, { 0x71, 0x01 }, { 0x72, 0x02 }, { 0x73, 0x03 },
{ 0x74, 0x00 }, { 0x75, 0x0e }, { 0x76, 0x3f },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
{ 0x7a, 0x01 }, { 0x7b, 0xb6 }, { 0x7c, 0xdb },
{ 0x80, 0x20 },
}, {}
},
{ { 1600 }, 4800, 1, 28800, { ScanMethod::TRANSPARENCY,
ScanMethod::TRANSPARENCY_INFRARED }, {
{ 0x16, 0x33 },
{ 0x17, 0x0c },
{ 0x18, 0x11 },
{ 0x19, 0x2a },
{ 0x1a, 0x30 },
{ 0x1b, 0x00 },
{ 0x1c, 0x00 },
{ 0x1d, 0x84 },
{ 0x1e, 0xa0 },
{ 0x52, 0x0b },
{ 0x53, 0x0e },
{ 0x54, 0x11 },
{ 0x55, 0x02 },
{ 0x56, 0x05 },
{ 0x57, 0x08 },
{ 0x58, 0x63 },
{ 0x59, 0x00 },
{ 0x5a, 0x40 },
{ { 1600 }, 4800, 1, 28800, { ScanMethod::TRANSPARENCY,
ScanMethod::TRANSPARENCY_INFRARED }, {
{ 0x16, 0x33 }, { 0x17, 0x0c }, { 0x18, 0x11 }, { 0x19, 0x2a },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x84 }, { 0x1e, 0xa0 },
{ 0x52, 0x0b }, { 0x53, 0x0e }, { 0x54, 0x11 }, { 0x55, 0x02 },
{ 0x56, 0x05 }, { 0x57, 0x08 }, { 0x58, 0x63 }, { 0x59, 0x00 }, { 0x5a, 0x40 },
{ 0x70, 0x00 }, { 0x71, 0x01 }, { 0x72, 0x02 }, { 0x73, 0x03 },
{ 0x74, 0x00 }, { 0x75, 0x01 }, { 0x76, 0xff },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },
@ -2615,26 +2517,12 @@ void genesys_init_sensor_tables()
{ 0x03, 0x1f },
},
},
{ { 3200 }, 4800, 1, 28800, { ScanMethod::TRANSPARENCY,
ScanMethod::TRANSPARENCY_INFRARED }, {
{ 0x16, 0x33 },
{ 0x17, 0x0c },
{ 0x18, 0x10 },
{ 0x19, 0x2a },
{ 0x1a, 0x30 },
{ 0x1b, 0x00 },
{ 0x1c, 0x20 },
{ 0x1d, 0x84 },
{ 0x1e, 0xa0 },
{ 0x52, 0x02 },
{ 0x53, 0x05 },
{ 0x54, 0x08 },
{ 0x55, 0x0b },
{ 0x56, 0x0e },
{ 0x57, 0x11 },
{ 0x58, 0x1b },
{ 0x59, 0x00 },
{ 0x5a, 0x40 },
{ { 3200 }, 4800, 1, 28800, { ScanMethod::TRANSPARENCY,
ScanMethod::TRANSPARENCY_INFRARED }, {
{ 0x16, 0x33 }, { 0x17, 0x0c }, { 0x18, 0x10 }, { 0x19, 0x2a },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x20 }, { 0x1d, 0x84 }, { 0x1e, 0xa0 },
{ 0x52, 0x02 }, { 0x53, 0x05 }, { 0x54, 0x08 }, { 0x55, 0x0b },
{ 0x56, 0x0e }, { 0x57, 0x11 }, { 0x58, 0x1b }, { 0x59, 0x00 }, { 0x5a, 0x40 },
{ 0x70, 0x09 }, { 0x71, 0x0a }, { 0x72, 0x0b }, { 0x73, 0x0c },
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x00 },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 },