diff --git a/backend/genesys/command_set.h b/backend/genesys/command_set.h index 0b1591a9c..4e22a562c 100644 --- a/backend/genesys/command_set.h +++ b/backend/genesys/command_set.h @@ -67,8 +67,7 @@ public: virtual void init(Genesys_Device* dev) const = 0; virtual void init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* regs, int* channels, - int* total_size) const = 0; + Genesys_Register_Set* regs) const = 0; virtual void init_regs_for_shading(Genesys_Device* dev, const Genesys_Sensor& sensor, Genesys_Register_Set& regs) const = 0; diff --git a/backend/genesys/enums.h b/backend/genesys/enums.h index 32c54609b..5bd0cece5 100644 --- a/backend/genesys/enums.h +++ b/backend/genesys/enums.h @@ -474,8 +474,8 @@ enum class ModelFlag : unsigned // use 14-bit gamma table instead of 12-bit GAMMA_14BIT = 1 << 1, - // skip lamp warmup (genesys_warmup()) - SKIP_WARMUP = 1 << 4, + // perform lamp warmup + WARMUP = 1 << 4, // repark head and check for lock by moving without scanning REPARK = 1 << 7, diff --git a/backend/genesys/genesys.cpp b/backend/genesys/genesys.cpp index fc0eef828..3072299ef 100644 --- a/backend/genesys/genesys.cpp +++ b/backend/genesys/genesys.cpp @@ -3428,24 +3428,25 @@ static void genesys_warmup_lamp(Genesys_Device* dev) { DBG_HELPER(dbg); unsigned seconds = 0; - int pixel; - int channels, total_size; - double first_average = 0; - double second_average = 0; - int difference = 255; - int lines = 3; const auto& sensor = sanei_genesys_find_sensor_any(dev); - dev->cmd_set->init_regs_for_warmup(dev, sensor, &dev->reg, &channels, &total_size); + dev->cmd_set->init_regs_for_warmup(dev, sensor, &dev->reg); dev->interface->write_registers(dev->reg); + auto total_pixels = dev->session.output_pixels; + auto total_size = dev->session.output_line_bytes; + auto channels = dev->session.params.channels; + auto lines = dev->session.output_line_count; + std::vector first_line(total_size); std::vector second_line(total_size); - do - { - DBG(DBG_info, "%s: one more loop\n", __func__); + do { + DBG(DBG_info, "%s: one more loop\n", __func__); + + first_line = second_line; + dev->cmd_set->begin_scan(dev, sensor, &dev->reg, false); if (is_testing_mode()) { @@ -3456,72 +3457,45 @@ static void genesys_warmup_lamp(Genesys_Device* dev) wait_until_buffer_non_empty(dev); - try { - sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size); - } catch (...) { - // FIXME: document why this retry is here - sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size); - } - - dev->cmd_set->end_scan(dev, &dev->reg, true); - - dev->interface->sleep_ms(1000); - seconds++; - - dev->cmd_set->begin_scan(dev, sensor, &dev->reg, false); - - wait_until_buffer_non_empty(dev); - sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size); dev->cmd_set->end_scan(dev, &dev->reg, true); - /* compute difference between the two scans */ - for (pixel = 0; pixel < total_size; pixel++) - { + // compute difference between the two scans + double first_average = 0; + double second_average = 0; + for (unsigned pixel = 0; pixel < total_size; pixel++) { // 16 bit data if (dev->session.params.depth == 16) { - first_average += (first_line[pixel] + first_line[pixel + 1] * 256); - second_average += (second_line[pixel] + second_line[pixel + 1] * 256); - pixel++; - } - else - { - first_average += first_line[pixel]; - second_average += second_line[pixel]; - } - } - if (dev->session.params.depth == 16) { - first_average /= pixel; - second_average /= pixel; - difference = static_cast(std::fabs(first_average - second_average)); - DBG(DBG_info, "%s: average = %.2f, diff = %.3f\n", __func__, - 100 * ((second_average) / (256 * 256)), - 100 * (difference / second_average)); + first_average += (first_line[pixel] + first_line[pixel + 1] * 256); + second_average += (second_line[pixel] + second_line[pixel + 1] * 256); + pixel++; + } else { + first_average += first_line[pixel]; + second_average += second_line[pixel]; + } + } - if (second_average > (100 * 256) - && (difference / second_average) < 0.002) - break; - } - else - { - first_average /= pixel; - second_average /= pixel; - if (DBG_LEVEL >= DBG_data) - { - sanei_genesys_write_pnm_file("gl_warmup1.pnm", first_line.data(), 8, channels, - total_size / (lines * channels), lines); - sanei_genesys_write_pnm_file("gl_warmup2.pnm", second_line.data(), 8, channels, - total_size / (lines * channels), lines); - } - DBG(DBG_info, "%s: average 1 = %.2f, average 2 = %.2f\n", __func__, first_average, - second_average); - /* if delta below 15/255 ~= 5.8%, lamp is considred warm enough */ - if (fabs (first_average - second_average) < 15 - && second_average > 55) - break; - } + first_average /= total_pixels; + second_average /= total_pixels; + + if (DBG_LEVEL >= DBG_data) { + sanei_genesys_write_pnm_file("gl_warmup1.pnm", first_line.data(), + dev->session.params.depth, channels, + total_size / (lines * channels), lines); + sanei_genesys_write_pnm_file("gl_warmup2.pnm", second_line.data(), + dev->session.params.depth, channels, + total_size / (lines * channels), lines); + } + + DBG(DBG_info, "%s: average 1 = %.2f, average 2 = %.2f\n", __func__, first_average, + second_average); + + if (second_average > 0 && + std::fabs(first_average - second_average) / second_average < 0.005) + { + break; + } - /* sleep another second before next loop */ dev->interface->sleep_ms(1000); seconds++; } while (seconds < WARMUP_TIME); @@ -3555,9 +3529,15 @@ static void genesys_start_scan(Genesys_Device* dev, bool lamp_off) /* wait for lamp warmup : until a warmup for TRANSPARENCY is designed, skip * it when scanning from XPA. */ - if (!has_flag(dev->model->flags, ModelFlag::SKIP_WARMUP) && - (dev->settings.scan_method == ScanMethod::FLATBED)) + if (has_flag(dev->model->flags, ModelFlag::WARMUP) && + (dev->settings.scan_method != ScanMethod::TRANSPARENCY_INFRARED)) { + if (dev->settings.scan_method == ScanMethod::TRANSPARENCY || + dev->settings.scan_method == ScanMethod::TRANSPARENCY_INFRARED) + { + dev->cmd_set->move_to_ta(dev); + } + genesys_warmup_lamp(dev); } diff --git a/backend/genesys/gl124.cpp b/backend/genesys/gl124.cpp index 379a12f67..d3d6832ff 100644 --- a/backend/genesys/gl124.cpp +++ b/backend/genesys/gl124.cpp @@ -1418,16 +1418,23 @@ void CommandSetGl124::coarse_gain_calibration(Genesys_Device* dev, const Genesys // wait for lamp warmup by scanning the same line until difference // between 2 scans is below a threshold void CommandSetGl124::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* reg, int* channels, - int* total_size) const + Genesys_Register_Set* reg) const { DBG_HELPER(dbg); - int num_pixels; - - *channels=3; *reg = dev->reg; + auto flags = ScanFlag::DISABLE_SHADING | + ScanFlag::DISABLE_GAMMA | + ScanFlag::SINGLE_LINE | + ScanFlag::IGNORE_STAGGER_OFFSET | + ScanFlag::IGNORE_COLOR_OFFSET; + if (dev->settings.scan_method == ScanMethod::TRANSPARENCY || + dev->settings.scan_method == ScanMethod::TRANSPARENCY_INFRARED) + { + flags |= ScanFlag::USE_XPA; + } + ScanSession session; session.params.xres = sensor.optical_res; session.params.yres = dev->motor.base_ydpi; @@ -1435,24 +1442,17 @@ void CommandSetGl124::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se session.params.starty = 0; session.params.pixels = dev->model->x_size_calib_mm * sensor.optical_res / MM_PER_INCH / 2; session.params.lines = 1; - session.params.depth = 8; - session.params.channels = *channels; + session.params.depth = dev->model->bpp_color_values.front(); + session.params.channels = 3; session.params.scan_method = dev->settings.scan_method; session.params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS; session.params.color_filter = dev->settings.color_filter; - session.params.flags = ScanFlag::DISABLE_SHADING | - ScanFlag::DISABLE_GAMMA | - ScanFlag::SINGLE_LINE | - ScanFlag::IGNORE_STAGGER_OFFSET | - ScanFlag::IGNORE_COLOR_OFFSET; + session.params.flags = flags; + compute_session(dev, session, sensor); init_regs_for_scan_session(dev, sensor, reg, session); - num_pixels = session.output_pixels; - - *total_size = num_pixels * 3 * 1; /* colors * bytes_per_color * scan lines */ - sanei_genesys_set_motor_power(*reg, false); } diff --git a/backend/genesys/gl124.h b/backend/genesys/gl124.h index 9f6da50c3..df50c12d6 100644 --- a/backend/genesys/gl124.h +++ b/backend/genesys/gl124.h @@ -93,8 +93,7 @@ public: void init(Genesys_Device* dev) const override; void init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* regs, int* channels, - int* total_size) const override; + Genesys_Register_Set* regs) const override; void init_regs_for_shading(Genesys_Device* dev, const Genesys_Sensor& sensor, Genesys_Register_Set& regs) const override; diff --git a/backend/genesys/gl646.cpp b/backend/genesys/gl646.cpp index da8c4b448..c82da51f7 100644 --- a/backend/genesys/gl646.cpp +++ b/backend/genesys/gl646.cpp @@ -2458,14 +2458,12 @@ void CommandSetGl646::coarse_gain_calibration(Genesys_Device* dev, const Genesys * */ void CommandSetGl646::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* local_reg, int* channels, - int* total_size) const + Genesys_Register_Set* local_reg) const { DBG_HELPER(dbg); (void) sensor; Genesys_Settings settings; - int lines; dev->frontend = dev->frontend_initial; @@ -2483,7 +2481,7 @@ void CommandSetGl646::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se settings.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH; settings.requested_pixels = settings.pixels; settings.lines = 2; - settings.depth = 8; + settings.depth = dev->model->bpp_gray_values.front(); settings.color_filter = ColorFilter::RED; settings.disable_interpolation = 0; @@ -2504,11 +2502,6 @@ void CommandSetGl646::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se /* turn off motor during this scan */ sanei_genesys_set_motor_power(*local_reg, false); - /* returned value to higher level warmup function */ - *channels = 1; - lines = local_reg->get24(REG_LINCNT) + 1; - *total_size = lines * settings.pixels; - // now registers are ok, write them to scanner gl646_set_fe(dev, local_sensor, AFE_SET, settings.xres); } diff --git a/backend/genesys/gl646.h b/backend/genesys/gl646.h index ad9a1104f..dea4bffca 100644 --- a/backend/genesys/gl646.h +++ b/backend/genesys/gl646.h @@ -446,8 +446,7 @@ public: void init(Genesys_Device* dev) const override; void init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* regs, int* channels, - int* total_size) const override; + Genesys_Register_Set* regs) const override; void init_regs_for_shading(Genesys_Device* dev, const Genesys_Sensor& sensor, Genesys_Register_Set& regs) const override; diff --git a/backend/genesys/gl841.cpp b/backend/genesys/gl841.cpp index f98f6c99a..819ae734a 100644 --- a/backend/genesys/gl841.cpp +++ b/backend/genesys/gl841.cpp @@ -2834,8 +2834,7 @@ void CommandSetGl841::coarse_gain_calibration(Genesys_Device* dev, const Genesys // wait for lamp warmup by scanning the same line until difference // between 2 scans is below a threshold void CommandSetGl841::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* local_reg, int* channels, - int* total_size) const + Genesys_Register_Set* local_reg) const { DBG_HELPER(dbg); int num_pixels = 4 * 300; @@ -2849,6 +2848,17 @@ void CommandSetGl841::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se dev->frontend.set_offset(1, 0x80); dev->frontend.set_offset(2, 0x80); + auto flags = ScanFlag::DISABLE_SHADING | + ScanFlag::DISABLE_GAMMA | + ScanFlag::SINGLE_LINE | + ScanFlag::IGNORE_STAGGER_OFFSET | + ScanFlag::IGNORE_COLOR_OFFSET; + if (dev->settings.scan_method == ScanMethod::TRANSPARENCY || + dev->settings.scan_method == ScanMethod::TRANSPARENCY_INFRARED) + { + flags |= ScanFlag::USE_XPA; + } + ScanSession session; session.params.xres = sensor.optical_res; session.params.yres = dev->settings.yres; @@ -2856,27 +2866,16 @@ void CommandSetGl841::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se session.params.starty = 0; session.params.pixels = num_pixels; session.params.lines = 1; - session.params.depth = 16; - session.params.channels = *channels; + session.params.depth = dev->model->bpp_color_values.front(); + session.params.channels = 3; session.params.scan_method = dev->settings.scan_method; - if (*channels == 3) { - session.params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS; - } else { - session.params.scan_mode = ScanColorMode::GRAY; - } + session.params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS; session.params.color_filter = dev->settings.color_filter; - session.params.flags = ScanFlag::DISABLE_SHADING | - ScanFlag::DISABLE_GAMMA | - ScanFlag::SINGLE_LINE | - ScanFlag::IGNORE_STAGGER_OFFSET | - ScanFlag::IGNORE_COLOR_OFFSET; + session.params.flags = flags; + compute_session(dev, session, sensor); init_regs_for_scan_session(dev, sensor, local_reg, session); - - num_pixels = session.output_pixels; - - *total_size = num_pixels * 3 * 2 * 1; /* colors * bytes_per_color * scan lines */ } /* diff --git a/backend/genesys/gl841.h b/backend/genesys/gl841.h index 9e010bb30..a66bb80a0 100644 --- a/backend/genesys/gl841.h +++ b/backend/genesys/gl841.h @@ -60,8 +60,7 @@ public: void init(Genesys_Device* dev) const override; void init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* regs, int* channels, - int* total_size) const override; + Genesys_Register_Set* regs) const override; void init_regs_for_shading(Genesys_Device* dev, const Genesys_Sensor& sensor, Genesys_Register_Set& regs) const override; diff --git a/backend/genesys/gl843.cpp b/backend/genesys/gl843.cpp index bfad8dacd..7bb6945e4 100644 --- a/backend/genesys/gl843.cpp +++ b/backend/genesys/gl843.cpp @@ -1757,23 +1757,32 @@ void CommandSetGl843::coarse_gain_calibration(Genesys_Device* dev, const Genesys // wait for lamp warmup by scanning the same line until difference // between 2 scans is below a threshold void CommandSetGl843::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* reg, int* channels, - int* total_size) const + Genesys_Register_Set* reg) const { DBG_HELPER(dbg); (void) sensor; - *channels=3; + unsigned channels = 3; unsigned resolution = dev->model->get_resolution_settings(dev->settings.scan_method) .get_nearest_resolution_x(600); - const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, *channels, + const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, channels, dev->settings.scan_method); unsigned num_pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH / 2; - *total_size = num_pixels * 3 * 1; *reg = dev->reg; + auto flags = ScanFlag::DISABLE_SHADING | + ScanFlag::DISABLE_GAMMA | + ScanFlag::SINGLE_LINE | + ScanFlag::IGNORE_STAGGER_OFFSET | + ScanFlag::IGNORE_COLOR_OFFSET; + if (dev->settings.scan_method == ScanMethod::TRANSPARENCY || + dev->settings.scan_method == ScanMethod::TRANSPARENCY_INFRARED) + { + flags |= ScanFlag::USE_XPA; + } + ScanSession session; session.params.xres = resolution; session.params.yres = resolution; @@ -1781,16 +1790,13 @@ void CommandSetGl843::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Se session.params.starty = 0; session.params.pixels = num_pixels; session.params.lines = 1; - session.params.depth = 8; - session.params.channels = *channels; + session.params.depth = dev->model->bpp_color_values.front(); + session.params.channels = channels; session.params.scan_method = dev->settings.scan_method; session.params.scan_mode = ScanColorMode::COLOR_SINGLE_PASS; session.params.color_filter = dev->settings.color_filter; - session.params.flags = ScanFlag::DISABLE_SHADING | - ScanFlag::DISABLE_GAMMA | - ScanFlag::SINGLE_LINE | - ScanFlag::IGNORE_STAGGER_OFFSET | - ScanFlag::IGNORE_COLOR_OFFSET; + session.params.flags = flags; + compute_session(dev, session, calib_sensor); init_regs_for_scan_session(dev, calib_sensor, reg, session); diff --git a/backend/genesys/gl843.h b/backend/genesys/gl843.h index 7cd46fcab..d227af2d9 100644 --- a/backend/genesys/gl843.h +++ b/backend/genesys/gl843.h @@ -60,8 +60,7 @@ public: void init(Genesys_Device* dev) const override; void init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* regs, int* channels, - int* total_size) const override; + Genesys_Register_Set* regs) const override; void init_regs_for_shading(Genesys_Device* dev, const Genesys_Sensor& sensor, Genesys_Register_Set& regs) const override; diff --git a/backend/genesys/gl846.cpp b/backend/genesys/gl846.cpp index e4d88c032..fa0139c3e 100644 --- a/backend/genesys/gl846.cpp +++ b/backend/genesys/gl846.cpp @@ -1392,14 +1392,11 @@ bool CommandSetGl846::needs_home_before_init_regs_for_scan(Genesys_Device* dev) } void CommandSetGl846::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* regs, int* channels, - int* total_size) const + Genesys_Register_Set* regs) const { (void) dev; (void) sensor; (void) regs; - (void) channels; - (void) total_size; throw SaneException("not implemented"); } diff --git a/backend/genesys/gl846.h b/backend/genesys/gl846.h index bfc214c0a..742a7c5f1 100644 --- a/backend/genesys/gl846.h +++ b/backend/genesys/gl846.h @@ -60,8 +60,7 @@ public: void init(Genesys_Device* dev) const override; void init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* regs, int* channels, - int* total_size) const override; + Genesys_Register_Set* regs) const override; void init_regs_for_shading(Genesys_Device* dev, const Genesys_Sensor& sensor, Genesys_Register_Set& regs) const override; diff --git a/backend/genesys/gl847.cpp b/backend/genesys/gl847.cpp index 324e9078f..2de643bf5 100644 --- a/backend/genesys/gl847.cpp +++ b/backend/genesys/gl847.cpp @@ -1288,14 +1288,11 @@ bool CommandSetGl847::needs_home_before_init_regs_for_scan(Genesys_Device* dev) } void CommandSetGl847::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* regs, int* channels, - int* total_size) const + Genesys_Register_Set* regs) const { (void) dev; (void) sensor; (void) regs; - (void) channels; - (void) total_size; throw SaneException("not implemented"); } diff --git a/backend/genesys/gl847.h b/backend/genesys/gl847.h index 794aa3ebf..7a5f954b1 100644 --- a/backend/genesys/gl847.h +++ b/backend/genesys/gl847.h @@ -80,8 +80,7 @@ public: void init(Genesys_Device* dev) const override; void init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* regs, int* channels, - int* total_size) const override; + Genesys_Register_Set* regs) const override; void init_regs_for_shading(Genesys_Device* dev, const Genesys_Sensor& sensor, Genesys_Register_Set& regs) const override; diff --git a/backend/genesys/tables_model.cpp b/backend/genesys/tables_model.cpp index 3eee6f07f..dd139f84a 100644 --- a/backend/genesys/tables_model.cpp +++ b/backend/genesys/tables_model.cpp @@ -192,8 +192,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::CANON_LIDE_35; model.gpio_id = GpioId::CANON_LIDE_35; model.motor_id = MotorId::CANON_LIDE_35; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::DARK_WHITE_CALIBRATION | + model.flags = ModelFlag::DARK_WHITE_CALIBRATION | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | @@ -247,8 +246,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::KVSS080; model.gpio_id = GpioId::KVSS080; model.motor_id = MotorId::KVSS080; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::CUSTOM_GAMMA; + model.flags = ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_SCAN_SW; model.search_lines = 100; @@ -298,8 +296,8 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::G4050; model.gpio_id = GpioId::G4050; model.motor_id = MotorId::G4050; - model.flags = ModelFlag::SHADING_REPARK | - ModelFlag::SKIP_WARMUP | + model.flags = ModelFlag::WARMUP | + ModelFlag::SHADING_REPARK | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW; model.search_lines = 100; @@ -348,7 +346,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::G4050; model.gpio_id = GpioId::G4050; model.motor_id = MotorId::G4050; - model.flags = ModelFlag::SKIP_WARMUP | + model.flags = ModelFlag::WARMUP | ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW; @@ -400,7 +398,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::G4050; model.gpio_id = GpioId::G4050; model.motor_id = MotorId::G4050; - model.flags = ModelFlag::SKIP_WARMUP | + model.flags = ModelFlag::WARMUP | ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW; @@ -465,7 +463,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::CANON_4400F; model.gpio_id = GpioId::CANON_4400F; model.motor_id = MotorId::CANON_4400F; - model.flags = ModelFlag::SKIP_WARMUP | + model.flags = ModelFlag::WARMUP | ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA | ModelFlag::SHADING_REPARK | @@ -537,7 +535,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::CANON_8400F; model.gpio_id = GpioId::CANON_8400F; model.motor_id = MotorId::CANON_8400F; - model.flags = ModelFlag::SKIP_WARMUP | + model.flags = ModelFlag::WARMUP | ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA | ModelFlag::SHADING_REPARK; @@ -603,7 +601,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::CANON_8600F; model.gpio_id = GpioId::CANON_8600F; model.motor_id = MotorId::CANON_8600F; - model.flags = ModelFlag::SKIP_WARMUP | + model.flags = ModelFlag::WARMUP | ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA | ModelFlag::SHADING_REPARK; @@ -656,8 +654,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::CANON_LIDE_200; model.gpio_id = GpioId::CANON_LIDE_200; model.motor_id = MotorId::CANON_LIDE_100; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::SIS_SENSOR | + model.flags = ModelFlag::SIS_SENSOR | ModelFlag::DARK_CALIBRATION | ModelFlag::SHADING_REPARK | ModelFlag::CUSTOM_GAMMA; @@ -712,8 +709,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::CANON_LIDE_110; model.gpio_id = GpioId::CANON_LIDE_110; model.motor_id = MotorId::CANON_LIDE_110; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::DARK_CALIBRATION | + model.flags = ModelFlag::DARK_CALIBRATION | ModelFlag::SHADING_REPARK | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_SCAN_SW | @@ -766,8 +762,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::CANON_LIDE_120; model.gpio_id = GpioId::CANON_LIDE_120; model.motor_id = MotorId::CANON_LIDE_120; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::DARK_CALIBRATION | + model.flags = ModelFlag::DARK_CALIBRATION | ModelFlag::SHADING_REPARK | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_SCAN_SW | @@ -822,8 +817,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::CANON_LIDE_110; model.gpio_id = GpioId::CANON_LIDE_210; model.motor_id = MotorId::CANON_LIDE_210; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::DARK_CALIBRATION | + model.flags = ModelFlag::DARK_CALIBRATION | ModelFlag::SHADING_REPARK | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_SCAN_SW | @@ -878,8 +872,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::CANON_LIDE_110; model.gpio_id = GpioId::CANON_LIDE_210; model.motor_id = MotorId::CANON_LIDE_210; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::DARK_CALIBRATION | + model.flags = ModelFlag::DARK_CALIBRATION | ModelFlag::SHADING_REPARK | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_SCAN_SW | @@ -936,7 +929,6 @@ void genesys_init_usb_device_tables() model.gpio_id = GpioId::CANON_LIDE_200; model.motor_id = MotorId::CANON_LIDE_200; model.flags = ModelFlag::UNTESTED | - ModelFlag::SKIP_WARMUP | ModelFlag::SIS_SENSOR | ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA; @@ -992,8 +984,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::CANON_LIDE_700F; model.gpio_id = GpioId::CANON_LIDE_700F; model.motor_id = MotorId::CANON_LIDE_700; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::SIS_SENSOR | + model.flags = ModelFlag::SIS_SENSOR | ModelFlag::DARK_CALIBRATION | ModelFlag::SHADING_REPARK | ModelFlag::CUSTOM_GAMMA; @@ -1048,8 +1039,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::CANON_LIDE_200; model.gpio_id = GpioId::CANON_LIDE_200; model.motor_id = MotorId::CANON_LIDE_200; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::SIS_SENSOR | + model.flags = ModelFlag::SIS_SENSOR | ModelFlag::DARK_CALIBRATION | ModelFlag::SHADING_REPARK | ModelFlag::CUSTOM_GAMMA; @@ -1106,8 +1096,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::CANON_LIDE_35; model.gpio_id = GpioId::CANON_LIDE_35; model.motor_id = MotorId::CANON_LIDE_35; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::DARK_WHITE_CALIBRATION | + model.flags = ModelFlag::DARK_WHITE_CALIBRATION | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_COPY_SW | @@ -1162,8 +1151,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::CANON_LIDE_80; model.gpio_id = GpioId::CANON_LIDE_80; model.motor_id = MotorId::CANON_LIDE_80; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::DARK_WHITE_CALIBRATION | + model.flags = ModelFlag::DARK_WHITE_CALIBRATION | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | @@ -1217,7 +1205,6 @@ void genesys_init_usb_device_tables() model.gpio_id = GpioId::HP2300; model.motor_id = MotorId::HP2300; model.flags = ModelFlag::GAMMA_14BIT | - ModelFlag::SKIP_WARMUP | ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW; @@ -1271,7 +1258,6 @@ void genesys_init_usb_device_tables() model.motor_id = MotorId::HP2400; model.flags = ModelFlag::GAMMA_14BIT | ModelFlag::DARK_CALIBRATION | - ModelFlag::SKIP_WARMUP | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_SCAN_SW; model.search_lines = 132; @@ -1324,7 +1310,6 @@ void genesys_init_usb_device_tables() model.motor_id = MotorId::XP200; model.flags = ModelFlag::GAMMA_14BIT | ModelFlag::CUSTOM_GAMMA | - ModelFlag::SKIP_WARMUP | ModelFlag::DARK_CALIBRATION; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE; model.search_lines = 132; @@ -1375,7 +1360,8 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_HP3670; model.gpio_id = GpioId::HP3670; model.motor_id = MotorId::HP3670; - model.flags = ModelFlag::GAMMA_14BIT | + model.flags = ModelFlag::WARMUP | + ModelFlag::GAMMA_14BIT | ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_SCAN_SW; @@ -1526,7 +1512,8 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_5345; model.gpio_id = GpioId::MD_5345; model.motor_id = MotorId::MD_5345; - model.flags = ModelFlag::GAMMA_14BIT | + model.flags = ModelFlag::WARMUP | + ModelFlag::GAMMA_14BIT | ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_COPY_SW | @@ -1581,8 +1568,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_XP300; model.gpio_id = GpioId::XP300; model.motor_id = MotorId::XP300; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::DARK_CALIBRATION | + model.flags = ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE; model.search_lines = 400; @@ -1632,8 +1618,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_XP300; model.gpio_id = GpioId::DP665; model.motor_id = MotorId::DP665; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::DARK_CALIBRATION | + model.flags = ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE; model.search_lines = 400; @@ -1683,8 +1668,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_XP300; model.gpio_id = GpioId::DP665; model.motor_id = MotorId::ROADWARRIOR; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::CUSTOM_GAMMA | + model.flags = ModelFlag::CUSTOM_GAMMA | ModelFlag::DARK_CALIBRATION; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE; model.search_lines = 400; @@ -1734,8 +1718,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_XP300; model.gpio_id = GpioId::DP665; model.motor_id = MotorId::ROADWARRIOR; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::NO_CALIBRATION | + model.flags = ModelFlag::NO_CALIBRATION | ModelFlag::CUSTOM_GAMMA | ModelFlag::UNTESTED; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW; @@ -1787,8 +1770,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_XP300; model.gpio_id = GpioId::DP665; model.motor_id = MotorId::ROADWARRIOR; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::CUSTOM_GAMMA | + model.flags = ModelFlag::CUSTOM_GAMMA | ModelFlag::DARK_CALIBRATION; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE; model.search_lines = 400; @@ -1838,8 +1820,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_DSM600; model.gpio_id = GpioId::DP665; model.motor_id = MotorId::DSMOBILE_600; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::CUSTOM_GAMMA | + model.flags = ModelFlag::CUSTOM_GAMMA | ModelFlag::DARK_CALIBRATION; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE; model.search_lines = 400; @@ -1890,8 +1871,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_DSM600; model.gpio_id = GpioId::DP665; model.motor_id = MotorId::DSMOBILE_600; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::CUSTOM_GAMMA | + model.flags = ModelFlag::CUSTOM_GAMMA | ModelFlag::DARK_CALIBRATION; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE; model.search_lines = 400; @@ -1941,8 +1921,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_DSM600; model.gpio_id = GpioId::DP685; model.motor_id = MotorId::XP300; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::CUSTOM_GAMMA | + model.flags = ModelFlag::CUSTOM_GAMMA | ModelFlag::DARK_CALIBRATION; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE; model.search_lines = 400; @@ -1994,8 +1973,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_XP300; model.gpio_id = GpioId::XP300; model.motor_id = MotorId::XP300; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::CUSTOM_GAMMA | + model.flags = ModelFlag::CUSTOM_GAMMA | ModelFlag::DARK_CALIBRATION; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE; model.search_lines = 400; @@ -2047,8 +2025,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_XP300; model.gpio_id = GpioId::XP300; model.motor_id = MotorId::XP300; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::DARK_CALIBRATION | + model.flags = ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA | ModelFlag::UNTESTED; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE; @@ -2099,7 +2076,8 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_5345; model.gpio_id = GpioId::MD_5345; model.motor_id = MotorId::MD_5345; - model.flags = ModelFlag::GAMMA_14BIT | + model.flags = ModelFlag::WARMUP | + ModelFlag::GAMMA_14BIT | ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_COPY_SW | @@ -2154,7 +2132,8 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_5345; model.gpio_id = GpioId::MD_5345; model.motor_id = MotorId::MD_5345; - model.flags = ModelFlag::GAMMA_14BIT | + model.flags = ModelFlag::WARMUP | + ModelFlag::GAMMA_14BIT | ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_COPY_SW | @@ -2210,8 +2189,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::WOLFSON_XP300; model.gpio_id = GpioId::DP665; model.motor_id = MotorId::ROADWARRIOR; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::CUSTOM_GAMMA | + model.flags = ModelFlag::CUSTOM_GAMMA | ModelFlag::DARK_CALIBRATION; model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_PAGE_LOADED_SW | GENESYS_HAS_CALIBRATE; model.search_lines = 400; @@ -2264,7 +2242,6 @@ void genesys_init_usb_device_tables() model.motor_id = MotorId::PLUSTEK_OPTICPRO_3600; model.flags = ModelFlag::UNTESTED | // not fully working yet ModelFlag::CUSTOM_GAMMA | - ModelFlag::SKIP_WARMUP | ModelFlag::DARK_CALIBRATION; model.buttons = GENESYS_HAS_NO_BUTTONS; model.search_lines = 200; @@ -2328,8 +2305,8 @@ void genesys_init_usb_device_tables() model.gpio_id = GpioId::PLUSTEK_OPTICFILM_7200I; model.motor_id = MotorId::PLUSTEK_OPTICFILM_7200I; - model.flags = ModelFlag::CUSTOM_GAMMA | - ModelFlag::SKIP_WARMUP | + model.flags = ModelFlag::WARMUP | + ModelFlag::CUSTOM_GAMMA | ModelFlag::DARK_CALIBRATION | ModelFlag::SHADING_REPARK | ModelFlag::INVERTED_16BIT_DATA; @@ -2407,8 +2384,8 @@ void genesys_init_usb_device_tables() model.gpio_id = GpioId::PLUSTEK_OPTICFILM_7300; model.motor_id = MotorId::PLUSTEK_OPTICFILM_7300; - model.flags = ModelFlag::CUSTOM_GAMMA | - ModelFlag::SKIP_WARMUP | + model.flags = ModelFlag::WARMUP | + ModelFlag::CUSTOM_GAMMA | ModelFlag::DARK_CALIBRATION | ModelFlag::SHADING_REPARK; @@ -2479,7 +2456,6 @@ void genesys_init_usb_device_tables() model.motor_id = MotorId::PLUSTEK_OPTICFILM_7400; model.flags = ModelFlag::CUSTOM_GAMMA | - ModelFlag::SKIP_WARMUP | ModelFlag::DARK_CALIBRATION | ModelFlag::SHADING_REPARK; @@ -2549,8 +2525,8 @@ void genesys_init_usb_device_tables() model.gpio_id = GpioId::PLUSTEK_OPTICFILM_7500I; model.motor_id = MotorId::PLUSTEK_OPTICFILM_7500I; - model.flags = ModelFlag::CUSTOM_GAMMA | - ModelFlag::SKIP_WARMUP | + model.flags = ModelFlag::WARMUP | + ModelFlag::CUSTOM_GAMMA | ModelFlag::DARK_CALIBRATION | ModelFlag::SHADING_REPARK; @@ -2621,7 +2597,6 @@ void genesys_init_usb_device_tables() model.motor_id = MotorId::PLUSTEK_OPTICFILM_8200I; model.flags = ModelFlag::CUSTOM_GAMMA | - ModelFlag::SKIP_WARMUP | ModelFlag::DARK_CALIBRATION | ModelFlag::SHADING_REPARK; @@ -2682,7 +2657,6 @@ void genesys_init_usb_device_tables() ModelFlag::GAMMA_14BIT | ModelFlag::DARK_CALIBRATION | ModelFlag::CUSTOM_GAMMA | - ModelFlag::SKIP_WARMUP | ModelFlag::NO_CALIBRATION; model.buttons = GENESYS_HAS_NO_BUTTONS; @@ -2734,8 +2708,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::PLUSTEK_OPTICBOOK_3800; model.gpio_id = GpioId::PLUSTEK_OPTICBOOK_3800; model.motor_id = MotorId::PLUSTEK_OPTICBOOK_3800; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::CUSTOM_GAMMA; + model.flags = ModelFlag::CUSTOM_GAMMA; model.buttons = GENESYS_HAS_NO_BUTTONS; // TODO there are 4 buttons to support model.search_lines = 100; @@ -2785,8 +2758,7 @@ void genesys_init_usb_device_tables() model.adc_id = AdcId::IMG101; model.gpio_id = GpioId::IMG101; model.motor_id = MotorId::IMG101; - model.flags = ModelFlag::SKIP_WARMUP | - ModelFlag::CUSTOM_GAMMA | + model.flags = ModelFlag::CUSTOM_GAMMA | ModelFlag::UNTESTED; model.buttons = GENESYS_HAS_NO_BUTTONS ; model.search_lines = 100;