kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Simplify dpiset calculation on gl646
rodzic
989782bd72
commit
c8c9deaf6d
|
@ -362,8 +362,11 @@ void CommandSetGl646::init_regs_for_scan_session(Genesys_Device* dev, const Gene
|
|||
|
||||
regs->set24(REG_MAXWD, session.output_line_bytes);
|
||||
|
||||
regs->set16(REG_DPISET, session.output_resolution * session.ccd_size_divisor *
|
||||
sensor.ccd_pixels_per_system_pixel());
|
||||
// FIXME: the incoming sensor is selected for incorrect resolution
|
||||
const auto& dpiset_sensor = sanei_genesys_find_sensor(dev, session.params.xres,
|
||||
session.params.channels,
|
||||
session.params.scan_method);
|
||||
regs->set16(REG_DPISET, dpiset_sensor.dpiset_override);
|
||||
regs->set16(REG_LPERIOD, sensor.exposure_lperiod);
|
||||
|
||||
/* move distance must be adjusted to take into account the extra lines
|
||||
|
|
|
@ -114,7 +114,27 @@ void genesys_init_sensor_tables()
|
|||
};
|
||||
sensor.gamma = { 1.0f, 1.0f, 1.0f };
|
||||
sensor.get_ccd_size_divisor_fun = default_get_ccd_size_divisor_for_dpi;
|
||||
s_sensors->push_back(sensor);
|
||||
{
|
||||
struct CustomSensorSettings
|
||||
{
|
||||
ValueFilterAny<unsigned> resolutions;
|
||||
unsigned dpiset_override;
|
||||
};
|
||||
|
||||
CustomSensorSettings custom_settings[] = {
|
||||
{ { 75 }, 150 },
|
||||
{ { 150 }, 300 },
|
||||
{ { 300 }, 600 },
|
||||
{ { 600 }, 1200 },
|
||||
{ { 1200 }, 2400 },
|
||||
};
|
||||
|
||||
for (const CustomSensorSettings& setting : custom_settings) {
|
||||
sensor.resolutions = setting.resolutions;
|
||||
sensor.dpiset_override = setting.dpiset_override;
|
||||
s_sensors->push_back(sensor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sensor = Genesys_Sensor();
|
||||
|
@ -136,7 +156,25 @@ void genesys_init_sensor_tables()
|
|||
};
|
||||
sensor.gamma = { 1.0f, 1.0f, 1.0f };
|
||||
sensor.get_ccd_size_divisor_fun = default_get_ccd_size_divisor_for_dpi;
|
||||
s_sensors->push_back(sensor);
|
||||
{
|
||||
struct CustomSensorSettings
|
||||
{
|
||||
ValueFilterAny<unsigned> resolutions;
|
||||
};
|
||||
|
||||
CustomSensorSettings custom_settings[] = {
|
||||
{ { 75 } },
|
||||
{ { 150 } },
|
||||
{ { 300 } },
|
||||
{ { 600 } },
|
||||
};
|
||||
|
||||
for (const CustomSensorSettings& setting : custom_settings) {
|
||||
sensor.resolutions = setting.resolutions;
|
||||
sensor.dpiset_override = setting.resolutions.values()[0];
|
||||
s_sensors->push_back(sensor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sensor = Genesys_Sensor();
|
||||
|
@ -158,7 +196,27 @@ void genesys_init_sensor_tables()
|
|||
};
|
||||
sensor.gamma = { 1.0f, 1.0f, 1.0f };
|
||||
sensor.get_ccd_size_divisor_fun = default_get_ccd_size_divisor_for_dpi;
|
||||
s_sensors->push_back(sensor);
|
||||
{
|
||||
struct CustomSensorSettings
|
||||
{
|
||||
ValueFilterAny<unsigned> resolutions;
|
||||
unsigned dpiset_override;
|
||||
};
|
||||
|
||||
CustomSensorSettings custom_settings[] = {
|
||||
{ { 75 }, 150 },
|
||||
{ { 150 }, 300 },
|
||||
{ { 300 }, 600 },
|
||||
{ { 600 }, 1200 },
|
||||
{ { 1200 }, 2400 },
|
||||
};
|
||||
|
||||
for (const CustomSensorSettings& setting : custom_settings) {
|
||||
sensor.resolutions = setting.resolutions;
|
||||
sensor.dpiset_override = setting.dpiset_override;
|
||||
s_sensors->push_back(sensor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sensor = Genesys_Sensor();
|
||||
|
@ -186,13 +244,14 @@ void genesys_init_sensor_tables()
|
|||
{
|
||||
struct CustomSensorSettings {
|
||||
ValueFilterAny<unsigned> resolutions;
|
||||
unsigned dpiset_override;
|
||||
unsigned exposure_lperiod;
|
||||
unsigned ccd_size_divisor;
|
||||
GenesysRegisterSettingSet custom_regs;
|
||||
};
|
||||
|
||||
CustomSensorSettings custom_settings[] = {
|
||||
{ { 50 }, 12000, 2, {
|
||||
{ { 50 }, 100, 12000, 2, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 },
|
||||
{ 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 },
|
||||
|
@ -201,7 +260,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 75 }, 11000, 2, {
|
||||
{ { 75 }, 150, 11000, 2, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 },
|
||||
{ 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 },
|
||||
|
@ -210,7 +269,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 100 }, 11000, 2, {
|
||||
{ { 100 }, 200, 11000, 2, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 },
|
||||
{ 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 },
|
||||
|
@ -219,7 +278,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 150 }, 11000, 2, {
|
||||
{ { 150 }, 300, 11000, 2, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 },
|
||||
{ 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 },
|
||||
|
@ -228,7 +287,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 200 }, 11000, 2, {
|
||||
{ { 200 }, 400, 11000, 2, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 },
|
||||
{ 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 },
|
||||
|
@ -237,7 +296,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 300 }, 11000, 2, {
|
||||
{ { 300 }, 600, 11000, 2, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 },
|
||||
{ 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 },
|
||||
|
@ -246,7 +305,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 400 }, 11000, 2, {
|
||||
{ { 400 }, 800, 11000, 2, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 },
|
||||
{ 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 },
|
||||
|
@ -255,7 +314,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 600 }, 11000, 2, {
|
||||
{ { 600 }, 1200, 11000, 2, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 },
|
||||
{ 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x28 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 },
|
||||
|
@ -264,7 +323,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 1200 }, 11000, 1, {
|
||||
{ { 1200 }, 1200, 11000, 1, {
|
||||
{ 0x08, 0x0d }, { 0x09, 0x0f }, { 0x0a, 0x11 }, { 0x0b, 0x13 },
|
||||
{ 0x16, 0x0b }, { 0x17, 0x0a }, { 0x18, 0x30 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x03 },
|
||||
|
@ -278,6 +337,7 @@ void genesys_init_sensor_tables()
|
|||
for (const CustomSensorSettings& setting : custom_settings)
|
||||
{
|
||||
sensor.resolutions = setting.resolutions;
|
||||
sensor.dpiset_override = setting.dpiset_override;
|
||||
sensor.exposure_lperiod = setting.exposure_lperiod;
|
||||
sensor.ccd_size_divisor = setting.ccd_size_divisor;
|
||||
sensor.custom_regs = setting.custom_regs;
|
||||
|
@ -310,12 +370,13 @@ void genesys_init_sensor_tables()
|
|||
{
|
||||
struct CustomSensorSettings {
|
||||
ValueFilterAny<unsigned> resolutions;
|
||||
unsigned dpiset_override;
|
||||
unsigned exposure_lperiod;
|
||||
GenesysRegisterSettingSet custom_regs;
|
||||
};
|
||||
|
||||
CustomSensorSettings custom_settings[] = {
|
||||
{ { 50 }, 7211, {
|
||||
{ { 50 }, 200, 7211, {
|
||||
{ 0x08, 0x14 }, { 0x09, 0x15 }, { 0x0a, 0x00 }, { 0x0b, 0x00 },
|
||||
{ 0x16, 0xbf }, { 0x17, 0x08 }, { 0x18, 0x3f }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x02 },
|
||||
|
@ -324,7 +385,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 100 }, 7211, {
|
||||
{ { 100 }, 400, 7211, {
|
||||
{ 0x08, 0x14 }, { 0x09, 0x15 }, { 0x0a, 0x00 }, { 0x0b, 0x00 },
|
||||
{ 0x16, 0xbf }, { 0x17, 0x08 }, { 0x18, 0x3f }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x02 },
|
||||
|
@ -333,7 +394,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 150 }, 7211, {
|
||||
{ { 150 }, 600, 7211, {
|
||||
{ 0x08, 0x14 }, { 0x09, 0x15 }, { 0x0a, 0x00 }, { 0x0b, 0x00 },
|
||||
{ 0x16, 0xbf }, { 0x17, 0x08 }, { 0x18, 0x3f }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x02 },
|
||||
|
@ -342,7 +403,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 300 }, 8751, {
|
||||
{ { 300 }, 1200, 8751, {
|
||||
{ 0x08, 0x14 }, { 0x09, 0x15 }, { 0x0a, 0x00 }, { 0x0b, 0x00 },
|
||||
{ 0x16, 0xbf }, { 0x17, 0x08 }, { 0x18, 0x3f }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x02 },
|
||||
|
@ -351,7 +412,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 600 }, 18760, {
|
||||
{ { 600 }, 1200, 18760, {
|
||||
{ 0x08, 0x0e }, { 0x09, 0x0f }, { 0x0a, 0x00 }, { 0x0b, 0x00 },
|
||||
{ 0x16, 0xbf }, { 0x17, 0x08 }, { 0x18, 0x31 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0x00 }, { 0x1d, 0x02 },
|
||||
|
@ -360,7 +421,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x00 }, { 0x5c, 0x00 }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 1200 }, 21749, {
|
||||
{ { 1200 }, 1200, 21749, {
|
||||
{ 0x08, 0x02 }, { 0x09, 0x04 }, { 0x0a, 0x00 }, { 0x0b, 0x00 },
|
||||
{ 0x16, 0xbf }, { 0x17, 0x08 }, { 0x18, 0x30 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0xc0 }, { 0x1d, 0x42 },
|
||||
|
@ -374,6 +435,7 @@ void genesys_init_sensor_tables()
|
|||
for (const CustomSensorSettings& setting : custom_settings)
|
||||
{
|
||||
sensor.resolutions = setting.resolutions;
|
||||
sensor.dpiset_override = setting.dpiset_override;
|
||||
sensor.exposure_lperiod = setting.exposure_lperiod;
|
||||
sensor.custom_regs = setting.custom_regs;
|
||||
s_sensors->push_back(sensor);
|
||||
|
@ -405,13 +467,14 @@ void genesys_init_sensor_tables()
|
|||
{
|
||||
struct CustomSensorSettings {
|
||||
ValueFilterAny<unsigned> resolutions;
|
||||
unsigned dpiset_override;
|
||||
unsigned exposure_lperiod;
|
||||
unsigned ccd_size_divisor;
|
||||
GenesysRegisterSettingSet custom_regs;
|
||||
};
|
||||
|
||||
CustomSensorSettings custom_settings[] = {
|
||||
{ { 75 }, 4480, 2, {
|
||||
{ { 75 }, 150, 4480, 2, {
|
||||
{ 0x08, 0x16 }, { 0x09, 0x00 }, { 0x0a, 0x01 }, { 0x0b, 0x03 },
|
||||
{ 0x16, 0xb7 }, { 0x17, 0x0a }, { 0x18, 0x20 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x6a }, { 0x1b, 0x8a }, { 0x1c, 0x00 }, { 0x1d, 0x85 },
|
||||
|
@ -420,7 +483,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x06 }, { 0x5c, 0x0b }, { 0x5d, 0x10 }, { 0x5e, 0x16 }
|
||||
}
|
||||
},
|
||||
{ { 150 }, 4350, 2, {
|
||||
{ { 150 }, 300, 4350, 2, {
|
||||
{ 0x08, 0x16 }, { 0x09, 0x00 }, { 0x0a, 0x01 }, { 0x0b, 0x03 },
|
||||
{ 0x16, 0xb7 }, { 0x17, 0x0a }, { 0x18, 0x20 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x6a }, { 0x1b, 0x8a }, { 0x1c, 0x00 }, { 0x1d, 0x85 },
|
||||
|
@ -429,7 +492,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x06 }, { 0x5c, 0x0b }, { 0x5d, 0x10 }, { 0x5e, 0x16 }
|
||||
}
|
||||
},
|
||||
{ { 300 }, 4350, 2, {
|
||||
{ { 300 }, 600, 4350, 2, {
|
||||
{ 0x08, 0x16 }, { 0x09, 0x00 }, { 0x0a, 0x01 }, { 0x0b, 0x03 },
|
||||
{ 0x16, 0xb7 }, { 0x17, 0x0a }, { 0x18, 0x20 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x6a }, { 0x1b, 0x8a }, { 0x1c, 0x00 }, { 0x1d, 0x85 },
|
||||
|
@ -438,7 +501,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x06 }, { 0x5c, 0x0b }, { 0x5d, 0x10 }, { 0x5e, 0x16 }
|
||||
}
|
||||
},
|
||||
{ { 600 }, 8700, 1, {
|
||||
{ { 600 }, 600, 8700, 1, {
|
||||
{ 0x08, 0x01 }, { 0x09, 0x03 }, { 0x0a, 0x04 }, { 0x0b, 0x06 },
|
||||
{ 0x16, 0xb7 }, { 0x17, 0x0a }, { 0x18, 0x20 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x6a }, { 0x1b, 0x8a }, { 0x1c, 0x00 }, { 0x1d, 0x05 },
|
||||
|
@ -452,6 +515,7 @@ void genesys_init_sensor_tables()
|
|||
for (const CustomSensorSettings& setting : custom_settings)
|
||||
{
|
||||
sensor.resolutions = setting.resolutions;
|
||||
sensor.dpiset_override = setting.dpiset_override;
|
||||
sensor.exposure_lperiod = setting.exposure_lperiod;
|
||||
sensor.ccd_size_divisor = setting.ccd_size_divisor;
|
||||
sensor.custom_regs = setting.custom_regs;
|
||||
|
@ -573,6 +637,7 @@ void genesys_init_sensor_tables()
|
|||
{
|
||||
sensor.resolutions = setting.resolutions;
|
||||
sensor.channels = setting.channels;
|
||||
sensor.dpiset_override = setting.resolutions.values()[0];
|
||||
sensor.exposure_lperiod = setting.exposure_lperiod;
|
||||
sensor.exposure = setting.exposure;
|
||||
s_sensors->push_back(sensor);
|
||||
|
@ -604,12 +669,13 @@ void genesys_init_sensor_tables()
|
|||
{
|
||||
struct CustomSensorSettings {
|
||||
ValueFilterAny<unsigned> resolutions;
|
||||
unsigned dpiset_override;
|
||||
unsigned exposure_lperiod;
|
||||
GenesysRegisterSettingSet custom_regs;
|
||||
};
|
||||
|
||||
CustomSensorSettings custom_settings[] = {
|
||||
{ { 50 }, 5758, {
|
||||
{ { 50 }, 200, 5758, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x0a }, { 0x0a, 0x0b }, { 0x0b, 0x0d },
|
||||
{ 0x16, 0x33 }, { 0x17, 0x07 }, { 0x18, 0x33 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x02 }, { 0x1b, 0x13 }, { 0x1c, 0xc0 }, { 0x1d, 0x43 },
|
||||
|
@ -618,7 +684,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x05 }, { 0x5c, 0x0a }, { 0x5d, 0x0f }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 75 }, 4879, {
|
||||
{ { 75 }, 300, 4879, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x0a }, { 0x0a, 0x0b }, { 0x0b, 0x0d },
|
||||
{ 0x16, 0x33 }, { 0x17, 0x07 }, { 0x18, 0x33 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x02 }, { 0x1b, 0x13 }, { 0x1c, 0xc0 }, { 0x1d, 0x43 },
|
||||
|
@ -627,7 +693,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x05 }, { 0x5c, 0x0a }, { 0x5d, 0x0f }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 100 }, 4487, {
|
||||
{ { 100 }, 400, 4487, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x0a }, { 0x0a, 0x0b }, { 0x0b, 0x0d },
|
||||
{ 0x16, 0x33 }, { 0x17, 0x07 }, { 0x18, 0x33 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x02 }, { 0x1b, 0x13 }, { 0x1c, 0xc0 }, { 0x1d, 0x43 },
|
||||
|
@ -636,7 +702,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x05 }, { 0x5c, 0x0a }, { 0x5d, 0x0f }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 150 }, 4879, {
|
||||
{ { 150 }, 600, 4879, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x0a }, { 0x0a, 0x0b }, { 0x0b, 0x0d },
|
||||
{ 0x16, 0x33 }, { 0x17, 0x07 }, { 0x18, 0x33 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x02 }, { 0x1b, 0x13 }, { 0x1c, 0xc0 }, { 0x1d, 0x43 },
|
||||
|
@ -645,7 +711,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x05 }, { 0x5c, 0x0a }, { 0x5d, 0x0f }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 300 }, 4503, {
|
||||
{ { 300 }, 1200, 4503, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x0a }, { 0x0a, 0x0b }, { 0x0b, 0x0d },
|
||||
{ 0x16, 0x33 }, { 0x17, 0x07 }, { 0x18, 0x33 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x02 }, { 0x1b, 0x13 }, { 0x1c, 0xc0 }, { 0x1d, 0x43 },
|
||||
|
@ -654,7 +720,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x05 }, { 0x5c, 0x0a }, { 0x5d, 0x0f }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 600 }, 10251, {
|
||||
{ { 600 }, 1200, 10251, {
|
||||
{ 0x08, 0x00 }, { 0x09, 0x05 }, { 0x0a, 0x06 }, { 0x0b, 0x08 },
|
||||
{ 0x16, 0x33 }, { 0x17, 0x07 }, { 0x18, 0x31 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x02 }, { 0x1b, 0x0e }, { 0x1c, 0xc0 }, { 0x1d, 0x43 },
|
||||
|
@ -663,7 +729,7 @@ void genesys_init_sensor_tables()
|
|||
{ 0x5b, 0x02 }, { 0x5c, 0x0e }, { 0x5d, 0x00 }, { 0x5e, 0x00 }
|
||||
}
|
||||
},
|
||||
{ { 1200 }, 12750, {
|
||||
{ { 1200 }, 1200, 12750, {
|
||||
{ 0x08, 0x0d }, { 0x09, 0x0f }, { 0x0a, 0x11 }, { 0x0b, 0x13 },
|
||||
{ 0x16, 0x2b }, { 0x17, 0x07 }, { 0x18, 0x30 }, { 0x19, 0x2a },
|
||||
{ 0x1a, 0x00 }, { 0x1b, 0x00 }, { 0x1c, 0xc0 }, { 0x1d, 0x43 },
|
||||
|
@ -677,6 +743,7 @@ void genesys_init_sensor_tables()
|
|||
for (const CustomSensorSettings& setting : custom_settings)
|
||||
{
|
||||
sensor.resolutions = setting.resolutions;
|
||||
sensor.dpiset_override = setting.dpiset_override;
|
||||
sensor.exposure_lperiod = setting.exposure_lperiod;
|
||||
sensor.custom_regs = setting.custom_regs;
|
||||
s_sensors->push_back(sensor);
|
||||
|
@ -3442,13 +3509,14 @@ void verify_sensor_tables()
|
|||
}
|
||||
auto asic_type = sensor_to_asic[sensor.sensor_id];
|
||||
|
||||
if (sensor.dpiset_override == 0) {
|
||||
throw SaneException("dpiset_override is not defined");
|
||||
}
|
||||
|
||||
if (asic_type != AsicType::GL646) {
|
||||
if (sensor.register_dpihw == 0) {
|
||||
throw SaneException("register_dpihw is not defined");
|
||||
}
|
||||
if (sensor.dpiset_override == 0) {
|
||||
throw SaneException("dpiset_override is not defined");
|
||||
}
|
||||
if (sensor.shading_resolution == 0) {
|
||||
throw SaneException("shading_resolution is not defined");
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue