genesys: Use strongly typed enum for model id

merge-requests/203/head
Povilas Kanapickas 2019-09-30 13:51:57 +03:00
rodzic 290d19a097
commit 591309a29e
9 zmienionych plików z 244 dodań i 258 usunięć

Wyświetl plik

@ -2802,8 +2802,8 @@ static void genesys_flatbed_calibration(Genesys_Device* dev, Genesys_Sensor& sen
coarse_res /= 2;
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F ||
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F ||
dev->model->model_id == ModelId::CANON_CANOSCAN_8600F)
{
coarse_res = 1200;
}
@ -4668,7 +4668,7 @@ probe_genesys_devices (void)
of Genesys_Calibration_Cache as is.
*/
static const char* CALIBRATION_IDENT = "sane_genesys";
static const int CALIBRATION_VERSION = 10;
static const int CALIBRATION_VERSION = 11;
bool read_calibration(std::istream& str, Genesys_Device::Calibration& calibration,
const std::string& path)

Wyświetl plik

@ -85,7 +85,7 @@ struct Genesys_Model
const char* name = nullptr;
const char* vendor = nullptr;
const char* model = nullptr;
unsigned model_id = 0;
ModelId model_id = ModelId::UNKNOWN;
AsicType asic_type = AsicType::UNKNOWN;

Wyświetl plik

@ -117,52 +117,53 @@ enum class ColorOrder
BGR,
};
enum Genesys_Model_Type
enum class ModelId : unsigned
{
MODEL_UMAX_ASTRA_4500 = 0,
MODEL_CANON_LIDE_50,
MODEL_PANASONIC_KV_SS080,
MODEL_HP_SCANJET_4850C,
MODEL_HP_SCANJET_G4010,
MODEL_HP_SCANJET_G4050,
MODEL_CANON_CANOSCAN_4400F,
MODEL_CANON_CANOSCAN_8400F,
MODEL_CANON_CANOSCAN_8600F,
MODEL_CANON_LIDE_100,
MODEL_CANON_LIDE_110,
MODEL_CANON_LIDE_120,
MODEL_CANON_LIDE_210,
MODEL_CANON_LIDE_220,
MODEL_CANON_CANOSCAN_5600F,
MODEL_CANON_LIDE_700F,
MODEL_CANON_LIDE_200,
MODEL_CANON_LIDE_60,
MODEL_CANON_LIDE_80,
MODEL_HP_SCANJET_2300C,
MODEL_HP_SCANJET_2400C,
MODEL_VISIONEER_STROBE_XP200,
MODEL_HP_SCANJET_3670C,
MODEL_PLUSTEK_OPTICPRO_ST12,
MODEL_PLUSTEK_OPTICPRO_ST24,
MODEL_MEDION_MD5345,
MODEL_VISIONEER_STROBE_XP300,
MODEL_SYSCAN_DOCKETPORT_665,
MODEL_VISIONEER_ROADWARRIOR,
MODEL_SYSCAN_DOCKETPORT_465,
MODEL_VISIONEER_STROBE_XP100_REVISION3,
MODEL_PENTAX_DSMOBILE_600,
MODEL_SYSCAN_DOCKETPORT_467,
MODEL_SYSCAN_DOCKETPORT_685,
MODEL_SYSCAN_DOCKETPORT_485,
MODEL_DCT_DOCKETPORT_487,
MODEL_VISIONEER_7100,
MODEL_XEROX_2400,
MODEL_XEROX_TRAVELSCANNER_100,
MODEL_PLUSTEK_OPTICPRO_3600,
MODEL_PLUSTEK_OPTICFILM_7200I,
MODEL_HP_SCANJET_N6310,
MODEL_PLUSTEK_OPTICBOOK_3800,
MODEL_CANON_IMAGE_FORMULA_101
UNKNOWN = 0,
CANON_CANOSCAN_4400F,
CANON_CANOSCAN_5600F,
CANON_CANOSCAN_8400F,
CANON_CANOSCAN_8600F,
CANON_IMAGE_FORMULA_101,
CANON_LIDE_50,
CANON_LIDE_60,
CANON_LIDE_80,
CANON_LIDE_100,
CANON_LIDE_110,
CANON_LIDE_120,
CANON_LIDE_200,
CANON_LIDE_210,
CANON_LIDE_220,
CANON_LIDE_700F,
DCT_DOCKETPORT_487,
HP_SCANJET_2300C,
HP_SCANJET_2400C,
HP_SCANJET_3670C,
HP_SCANJET_4850C,
HP_SCANJET_G4010,
HP_SCANJET_G4050,
HP_SCANJET_N6310,
MEDION_MD5345,
PANASONIC_KV_SS080,
PENTAX_DSMOBILE_600,
PLUSTEK_OPTICBOOK_3800,
PLUSTEK_OPTICFILM_7200I,
PLUSTEK_OPTICPRO_3600,
PLUSTEK_OPTICPRO_ST12,
PLUSTEK_OPTICPRO_ST24,
SYSCAN_DOCKETPORT_465,
SYSCAN_DOCKETPORT_467,
SYSCAN_DOCKETPORT_485,
SYSCAN_DOCKETPORT_665,
SYSCAN_DOCKETPORT_685,
UMAX_ASTRA_4500,
VISIONEER_7100,
VISIONEER_ROADWARRIOR,
VISIONEER_STROBE_XP100_REVISION3,
VISIONEER_STROBE_XP200,
VISIONEER_STROBE_XP300,
XEROX_2400,
XEROX_TRAVELSCANNER_100,
};
enum Genesys_Sensor_Type

Wyświetl plik

@ -1355,9 +1355,8 @@ void CommandSetGl124::slow_back_home(Genesys_Device* dev, bool wait_until_home)
return;
}
/* feed a little first */
if (dev->model->model_id == MODEL_CANON_LIDE_210)
{
// feed a little first
if (dev->model->model_id == ModelId::CANON_LIDE_210) {
gl124_feed(dev, 20, SANE_TRUE);
}
@ -2467,12 +2466,9 @@ static void gl124_init_gpio(Genesys_Device* dev)
int idx;
/* per model GPIO layout */
if (dev->model->model_id == MODEL_CANON_LIDE_110)
{
if (dev->model->model_id == ModelId::CANON_LIDE_110) {
idx = 0;
}
else if (dev->model->model_id == MODEL_CANON_LIDE_120)
{
} else if (dev->model->model_id == ModelId::CANON_LIDE_120) {
idx = 2;
}
else
@ -2498,7 +2494,8 @@ static void gl124_init_memory_layout(Genesys_Device* dev)
int idx = 0;
/* point to per model memory layout */
if (dev->model->model_id == MODEL_CANON_LIDE_110 ||dev->model->model_id == MODEL_CANON_LIDE_120)
if (dev->model->model_id == ModelId::CANON_LIDE_110 ||
dev->model->model_id == ModelId::CANON_LIDE_120)
{
idx = 0;
}

Wyświetl plik

@ -525,8 +525,7 @@ gl841_init_registers (Genesys_Device * dev)
DBG(DBG_proc, "%s\n", __func__);
dev->reg.clear();
if (dev->model->model_id == MODEL_CANON_LIDE_80)
{
if (dev->model->model_id == ModelId::CANON_LIDE_80) {
gl841_init_lide80(dev);
return ;
}

Wyświetl plik

@ -201,7 +201,7 @@ static void gl843_setup_sensor(Genesys_Device* dev, const Genesys_Sensor& sensor
regs->set8(custom_reg.address, custom_reg.value);
}
if (!(dev->model->flags & GENESYS_FLAG_FULL_HWDPI_MODE) &&
dev->model->model_id != MODEL_PLUSTEK_OPTICFILM_7200I)
dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7200I)
{
regs->set8(0x7d, 0x90);
}
@ -232,33 +232,32 @@ gl843_init_registers (Genesys_Device * dev)
/* default to KV-SS080 */
SETREG (0xa2, 0x0f);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
{
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
SETREG(0xa2, 0x1f);
}
SETREG (0x01, 0x00);
SETREG (0x02, 0x78);
SETREG (0x03, 0x1f);
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
if (dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C)
{
SETREG(0x03, 0x1d);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F) {
SETREG(0x03, 0x1c);
}
SETREG(0x04, 0x10);
if (dev->model->model_id == MODEL_PLUSTEK_OPTICFILM_7200I) {
if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I) {
SETREG(0x04, 0x22);
}
// fine tune upon device description
SETREG (0x05, 0x80);
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
if (dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C)
{
SETREG (0x05, 0x08);
}
@ -268,29 +267,29 @@ gl843_init_registers (Genesys_Device * dev)
// TODO: on 8600F the windows driver turns off GAIN4 which is recommended
SETREG (0x06, 0xd8); /* SCANMOD=110, PWRBIT and GAIN4 */
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
if (dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C)
{
SETREG(0x06, 0xd8); /* SCANMOD=110, PWRBIT and GAIN4 */
}
if (dev->model->model_id == MODEL_PLUSTEK_OPTICFILM_7200I) {
if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I) {
SETREG(0x06, 0xd0);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F) {
SETREG(0x06, 0xf0); /* SCANMOD=111, PWRBIT and no GAIN4 */
}
SETREG (0x08, 0x00);
SETREG (0x09, 0x00);
SETREG (0x0a, 0x00);
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
if (dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C)
{
SETREG(0x0a, 0x18);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F) {
SETREG(0x0a, 0x10);
}
@ -298,24 +297,24 @@ gl843_init_registers (Genesys_Device * dev)
// gl843_boot
SETREG (0x0b, 0x6a);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F) {
SETREG(0x0b, 0x69); // 16M only
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
SETREG(0x0b, 0x89);
}
if (dev->model->model_id == MODEL_PLUSTEK_OPTICFILM_7200I) {
if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I) {
SETREG(0x0b, 0x2a);
}
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
if (dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C)
{
SETREG(0x0b, 0x69);
}
if (dev->model->model_id != MODEL_CANON_CANOSCAN_8400F &&
dev->model->model_id != MODEL_PLUSTEK_OPTICFILM_7200I)
if (dev->model->model_id != ModelId::CANON_CANOSCAN_8400F &&
dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7200I)
{
SETREG (0x0c, 0x00);
}
@ -327,16 +326,16 @@ gl843_init_registers (Genesys_Device * dev)
SETREG(0x13, 0x00); // SENSOR_DEF
SETREG(0x14, 0x00); // SENSOR_DEF
SETREG(0x15, 0x00); // SENSOR_DEF
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F ||
dev->model->model_id == ModelId::CANON_CANOSCAN_8600F)
{
dev->reg.set16(REG_EXPR, 0x9c40);
dev->reg.set16(REG_EXPG, 0x9c40);
dev->reg.set16(REG_EXPB, 0x9c40);
}
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
if (dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C)
{
dev->reg.set16(REG_EXPR, 0x2c09);
dev->reg.set16(REG_EXPG, 0x22b8);
@ -358,18 +357,17 @@ gl843_init_registers (Genesys_Device * dev)
SETREG(0x1d, 0x04); // SENSOR_DEF
SETREG(0x1e, 0x10);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F ||
dev->model->model_id == ModelId::CANON_CANOSCAN_8600F)
{
SETREG(0x1e, 0x20);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F) {
SETREG(0x1e, 0xa0);
}
SETREG (0x1f, 0x01);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
{
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
SETREG(0x1f, 0xff);
}
@ -378,13 +376,13 @@ gl843_init_registers (Genesys_Device * dev)
SETREG(0x22, 0x01);
SETREG(0x23, 0x01);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F ||
dev->model->model_id == ModelId::CANON_CANOSCAN_8600F)
{
SETREG(0x22, 0xc8);
SETREG(0x23, 0xc8);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F) {
SETREG(0x22, 0x50);
SETREG(0x23, 0x50);
}
@ -406,7 +404,7 @@ gl843_init_registers (Genesys_Device * dev)
// DUMMY: CCD dummy and optically black pixel count
SETREG (0x34, 0x24);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F)
{
SETREG(0x34, 0x14);
}
@ -456,22 +454,22 @@ gl843_init_registers (Genesys_Device * dev)
// STOPTIM[0:4]: The stop duration between change of directions in
// backtracking
SETREG(0x5e, 0x23);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F) {
SETREG(0x5e, 0x3f);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F) {
SETREG(0x5e, 0x85);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
SETREG(0x5e, 0x1f);
}
//FMOVDEC: The number of deceleration steps in table 5 for auto-go-home
SETREG(0x5f, 0x01);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F) {
SETREG(0x5f, 0xf0);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
SETREG(0x5f, 0xf0);
}
@ -497,36 +495,34 @@ gl843_init_registers (Genesys_Device * dev)
// FSHDEC[0:7]: The number of deceleration steps after scanning is finished
// (table 3)
SETREG (0x69, 0x01);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
{
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
SETREG(0x69, 64);
}
// FMOVNO[0:7] The number of acceleration or deceleration steps for fast
// moving (table 4)
SETREG (0x6a, 0x04);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
{
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
SETREG(0x69, 64);
}
// GPIO-related register bits
SETREG(0x6b, 0x30);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F ||
dev->model->model_id == ModelId::CANON_CANOSCAN_8600F)
{
SETREG(0x6b, 0x72);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F) {
SETREG(0x6b, 0xb1);
}
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
if (dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C)
{
SETREG(0x6b, 0xf4);
}
if (dev->model->model_id == MODEL_PLUSTEK_OPTICFILM_7200I) {
if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I) {
SETREG(0x6b, 0x31);
}
@ -542,27 +538,27 @@ gl843_init_registers (Genesys_Device * dev)
SETREG(0x72, 0x04); // SENSOR_DEF
SETREG(0x73, 0x05); // SENSOR_DEF
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F) {
SETREG(0x70, 0x01);
SETREG(0x71, 0x03);
SETREG(0x72, 0x01);
SETREG(0x73, 0x03);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F) {
SETREG(0x70, 0x01);
SETREG(0x71, 0x03);
SETREG(0x72, 0x03);
SETREG(0x73, 0x04);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
SETREG(0x70, 0x00);
SETREG(0x71, 0x02);
SETREG(0x72, 0x02);
SETREG(0x73, 0x04);
}
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
if (dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C)
{
SETREG(0x70, 0x00);
SETREG(0x71, 0x02);
@ -583,7 +579,7 @@ gl843_init_registers (Genesys_Device * dev)
// various AFE settings
SETREG(0x7d, 0x00);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F) {
SETREG(0x7d, 0x20);
}
@ -597,21 +593,20 @@ gl843_init_registers (Genesys_Device * dev)
// VRHOME, VRMOVE, VRBACK, VRSCAN: Vref settings of the motor driver IC for
// moving in various situations.
SETREG(0x80, 0x00);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F) {
SETREG(0x80, 0x0c);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F) {
SETREG(0x80, 0x28);
}
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
if (dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C)
{
SETREG(0x80, 0x50);
}
if (dev->model->model_id != MODEL_CANON_CANOSCAN_4400F)
{
if (dev->model->model_id != ModelId::CANON_CANOSCAN_4400F) {
// NOTE: Historical code. None of the following 6 registers are
// documented in the datasheet. Their default value is 0, so probably it's
// not a bad idea to leave this here.
@ -624,16 +619,16 @@ gl843_init_registers (Genesys_Device * dev)
}
SETREG(0x87, 0x00);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
dev->model->model_id == MODEL_CANON_CANOSCAN_8400F ||
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F ||
dev->model->model_id == ModelId::CANON_CANOSCAN_8400F ||
dev->model->model_id == ModelId::CANON_CANOSCAN_8600F)
{
SETREG(0x87, 0x02);
}
// MTRPLS[0:7]: The width of the ADF motor trigger signal pulse.
if (dev->model->model_id != MODEL_CANON_CANOSCAN_8400F &&
dev->model->model_id != MODEL_PLUSTEK_OPTICFILM_7200I)
if (dev->model->model_id != ModelId::CANON_CANOSCAN_8400F &&
dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7200I)
{
SETREG(0x94, 0xff);
}
@ -644,16 +639,15 @@ gl843_init_registers (Genesys_Device * dev)
// ONDUR[0:15]: The duration of PWM ON phase for LAMP control
// OFFDUR[0:15]: The duration of PWM OFF phase for LAMP control
// both of the above are in system clocks
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
{
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
SETREG(0x98, 0x00);
SETREG(0x99, 0x00);
SETREG(0x9a, 0x00);
SETREG(0x9b, 0x00);
}
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
if (dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C)
{
// TODO: move to set for scan
SETREG(0x98, 0x03);
@ -664,28 +658,28 @@ gl843_init_registers (Genesys_Device * dev)
// RMADLY[0:1], MOTLAG, CMODE, STEPTIM, MULDMYLN, IFRS
SETREG(0x9d, 0x04);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
dev->model->model_id == MODEL_CANON_CANOSCAN_8400F ||
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F ||
dev->model->model_id == MODEL_PLUSTEK_OPTICFILM_7200I ||
dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F ||
dev->model->model_id == ModelId::CANON_CANOSCAN_8400F ||
dev->model->model_id == ModelId::CANON_CANOSCAN_8600F ||
dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I ||
dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C)
{
SETREG(0x9d, 0x08); // sets the multiplier for slope tables
}
// SEL3INV, TGSTIME[0:2], TGWTIME[0:2]
if (dev->model->model_id != MODEL_CANON_CANOSCAN_8400F &&
dev->model->model_id != MODEL_PLUSTEK_OPTICFILM_7200I)
if (dev->model->model_id != ModelId::CANON_CANOSCAN_8400F &&
dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7200I)
{
SETREG(0x9e, 0x00); // SENSOR_DEF
}
// RFHSET[0:4]: Refresh time of SDRAM in units of 2us
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F ||
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F ||
dev->model->model_id == ModelId::CANON_CANOSCAN_8600F)
{
SETREG(0xa2, 0x1f);
}
@ -693,43 +687,43 @@ gl843_init_registers (Genesys_Device * dev)
// 0xa6-0xa9: controls gpio, see gl843_gpio_init
// not documented
if (dev->model->model_id != MODEL_CANON_CANOSCAN_4400F &&
dev->model->model_id != MODEL_CANON_CANOSCAN_8400F &&
dev->model->model_id != MODEL_PLUSTEK_OPTICFILM_7200I)
if (dev->model->model_id != ModelId::CANON_CANOSCAN_4400F &&
dev->model->model_id != ModelId::CANON_CANOSCAN_8400F &&
dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7200I)
{
SETREG(0xaa, 0x00);
}
// GPOM9, MULSTOP[0-2], NODECEL, TB3TB1, TB5TB2, FIX16CLK. Not documented
if (dev->model->model_id != MODEL_CANON_CANOSCAN_8400F &&
dev->model->model_id != MODEL_PLUSTEK_OPTICFILM_7200I) {
if (dev->model->model_id != ModelId::CANON_CANOSCAN_8400F &&
dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7200I) {
SETREG(0xab, 0x50);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_4400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_4400F) {
SETREG(0xab, 0x00);
}
if (dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
if (dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C)
{
// BUG: this should apply to MODEL_CANON_CANOSCAN_8600F too, but due to previous bug
// BUG: this should apply to ModelId::CANON_CANOSCAN_8600F too, but due to previous bug
// the 8400F case overwrote it
SETREG(0xab, 0x40);
}
// VRHOME[3:2], VRMOVE[3:2], VRBACK[3:2]: Vref setting of the motor driver IC
// for various situations.
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F ||
dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C)
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F ||
dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C)
{
SETREG(0xac, 0x00);
}
dev->calib_reg = dev->reg;
if (dev->model->model_id == MODEL_PLUSTEK_OPTICFILM_7200I) {
if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I) {
gl843_set_ram_address(dev, 0x03ff00);
uint8_t data[32] = {
@ -1121,9 +1115,9 @@ static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
}
r = sanei_genesys_get_address (reg, REG03);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
r->value |= REG03_AVEENB;
else {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
r->value |= REG03_AVEENB;
} else {
r->value &= ~REG03_AVEENB;
}
@ -1370,8 +1364,8 @@ void CommandSetGl843::calculate_current_setup(Genesys_Device * dev,
start = SANE_UNFIX(dev->model->x_offset);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F ||
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F ||
dev->model->model_id == ModelId::CANON_CANOSCAN_8600F)
{
// FIXME: this is probably just an artifact of a bug elsewhere
start /= ccd_size_divisor;
@ -1607,7 +1601,7 @@ static void gl843_set_xpa_motor_power(Genesys_Device* dev, bool set)
DBG_HELPER(dbg);
uint8_t val;
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F) {
if (set) {
val = dev->read_register(0x6c);
@ -1631,7 +1625,7 @@ static void gl843_set_xpa_motor_power(Genesys_Device* dev, bool set)
val |= REGA9_GPO29;
dev->write_register(0xa9, val);
}
} else if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
} else if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
if (set) {
val = dev->read_register(REG6C);
val &= ~REG6C_GPIO14;
@ -1655,7 +1649,7 @@ static void gl843_set_xpa_motor_power(Genesys_Device* dev, bool set)
val &= ~REGA6_GPIO23;
dev->write_register(REGA6, val);
}
} else if (dev->model->model_id == MODEL_HP_SCANJET_G4050) {
} else if (dev->model->model_id == ModelId::HP_SCANJET_G4050) {
if (set) {
// set MULTFILM et GPOADF
val = dev->read_register(REG6B);
@ -1706,7 +1700,7 @@ static void gl843_set_xpa_lamp_power(Genesys_Device* dev, bool set)
DBG_HELPER(dbg);
struct LampSettings {
unsigned model_id;
ModelId model_id;
ScanMethod scan_method;
GenesysRegisterSettingSet regs_on;
GenesysRegisterSettingSet regs_off;
@ -1715,14 +1709,14 @@ static void gl843_set_xpa_lamp_power(Genesys_Device* dev, bool set)
// FIXME: BUG: we're not clearing the registers to the previous state when returning back when
// turning off the lamp
LampSettings settings[] = {
{ MODEL_CANON_CANOSCAN_8400F, ScanMethod::TRANSPARENCY, {
{ ModelId::CANON_CANOSCAN_8400F, ScanMethod::TRANSPARENCY, {
{ 0xa6, 0x34, 0xf4 },
{ 0xa7, 0xe0, 0xe0 }, // BUG: should be 0x03
}, {
{ 0xa6, 0x40, 0x70 },
}
},
{ MODEL_CANON_CANOSCAN_8400F, ScanMethod::TRANSPARENCY_INFRARED, {
{ ModelId::CANON_CANOSCAN_8400F, ScanMethod::TRANSPARENCY_INFRARED, {
{ 0x6c, 0x40, 0x40 },
{ 0xa6, 0x01, 0xff },
{ 0xa7, 0x03, 0x07 },
@ -1732,14 +1726,14 @@ static void gl843_set_xpa_lamp_power(Genesys_Device* dev, bool set)
{ 0xa7, 0x07, 0x07 },
}
},
{ MODEL_CANON_CANOSCAN_8600F, ScanMethod::TRANSPARENCY, {
{ ModelId::CANON_CANOSCAN_8600F, ScanMethod::TRANSPARENCY, {
{ 0xa6, 0x34, 0xf4 },
{ 0xa7, 0xe0, 0xe0 },
}, {
{ 0xa6, 0x40, 0x70 },
}
},
{ MODEL_CANON_CANOSCAN_8600F, ScanMethod::TRANSPARENCY_INFRARED, {
{ ModelId::CANON_CANOSCAN_8600F, ScanMethod::TRANSPARENCY_INFRARED, {
{ 0xa6, 0x00, 0xc0 },
{ 0xa7, 0xe0, 0xe0 },
{ 0x6c, 0x80, 0x80 },
@ -1748,12 +1742,12 @@ static void gl843_set_xpa_lamp_power(Genesys_Device* dev, bool set)
{ 0x6c, 0x00, 0x80 },
}
},
{ MODEL_PLUSTEK_OPTICFILM_7200I, ScanMethod::TRANSPARENCY, {
{ ModelId::PLUSTEK_OPTICFILM_7200I, ScanMethod::TRANSPARENCY, {
}, {
{ 0xa6, 0x40, 0x70 }, // BUG: remove this cleanup write, it was enabled by accident
}
},
{ MODEL_PLUSTEK_OPTICFILM_7200I, ScanMethod::TRANSPARENCY_INFRARED, {
{ ModelId::PLUSTEK_OPTICFILM_7200I, ScanMethod::TRANSPARENCY_INFRARED, {
{ 0xa8, 0x07, 0x07 },
}, {
{ 0xa8, 0x00, 0x07 },
@ -2278,7 +2272,7 @@ void CommandSetGl843::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
if ((dev->settings.scan_method == ScanMethod::TRANSPARENCY ||
dev->settings.scan_method == ScanMethod::TRANSPARENCY_INFRARED) &&
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F &&
dev->model->model_id == ModelId::CANON_CANOSCAN_8600F &&
dev->settings.xres == 4800)
{
float offset = SANE_UNFIX(dev->model->x_offset_ta);
@ -2396,8 +2390,8 @@ void CommandSetGl843::init_regs_for_scan(Genesys_Device* dev, const Genesys_Sens
start = SANE_UNFIX(dev->model->x_offset);
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F ||
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F ||
dev->model->model_id == ModelId::CANON_CANOSCAN_8600F)
{
// FIXME: this is probably just an artifact of a bug elsewhere
start /= sensor.get_ccd_size_divisor_for_dpi(dev->settings.xres);
@ -2690,7 +2684,7 @@ void CommandSetGl843::offset_calibration(Genesys_Device* dev, const Genesys_Sens
if ((dev->settings.scan_method == ScanMethod::TRANSPARENCY ||
dev->settings.scan_method == ScanMethod::TRANSPARENCY_INFRARED) &&
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F &&
dev->model->model_id == ModelId::CANON_CANOSCAN_8600F &&
dev->settings.xres == 4800)
{
start_pixel = SANE_UNFIX(dev->model->x_offset_ta);
@ -3115,7 +3109,7 @@ void CommandSetGl843::asic_boot(Genesys_Device* dev, bool cold) const
/* Set default values for registers */
gl843_init_registers (dev);
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
// turns on vref control for maximum current of the motor driver
dev->write_register(REG6B, 0x72);
} else {
@ -3131,12 +3125,12 @@ void CommandSetGl843::asic_boot(Genesys_Device* dev, bool cold) const
dev->write_register(REG0B, val);
dev->reg.find_reg(0x0b).value = val;
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8400F) {
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8400F) {
sanei_genesys_write_0x8c(dev, 0x1e, 0x01);
sanei_genesys_write_0x8c(dev, 0x10, 0xb4);
sanei_genesys_write_0x8c(dev, 0x0f, 0x02);
}
else if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F) {
else if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
sanei_genesys_write_0x8c(dev, 0x10, 0xc8);
} else {
sanei_genesys_write_0x8c(dev, 0x10, 0xb4);
@ -3145,12 +3139,14 @@ void CommandSetGl843::asic_boot(Genesys_Device* dev, bool cold) const
/* CLKSET */
int clock_freq = REG0B_48MHZ;
switch (dev->model->model_id) {
case MODEL_CANON_CANOSCAN_8600F:
case ModelId::CANON_CANOSCAN_8600F:
clock_freq = REG0B_60MHZ;
break;
case MODEL_PLUSTEK_OPTICFILM_7200I:
case ModelId::PLUSTEK_OPTICFILM_7200I:
clock_freq = REG0B_30MHZ;
break;
default:
break;
}
val = (dev->reg.find_reg(0x0b).value & ~REG0B_CLKSET) | clock_freq;
@ -3161,8 +3157,7 @@ void CommandSetGl843::asic_boot(Genesys_Device* dev, bool cold) const
/* prevent further writings by bulk write register */
dev->reg.remove_reg(0x0b);
if (dev->model->model_id != MODEL_CANON_CANOSCAN_8600F)
{
if (dev->model->model_id != ModelId::CANON_CANOSCAN_8600F) {
// set up end access
// FIXME: this is overwritten in gl843_init_gpio
dev->write_register(REGA7, 0x04);
@ -3464,8 +3459,7 @@ void CommandSetGl843::send_shading_data(Genesys_Device* dev, const Genesys_Senso
strpixel = dev->session.pixel_startx;
endpixel = dev->session.pixel_endx;
if (dev->model->model_id == MODEL_CANON_CANOSCAN_8600F)
{
if (dev->model->model_id == ModelId::CANON_CANOSCAN_8600F) {
int half_ccd_factor = dev->session.optical_resolution /
sensor.get_logical_hwdpi(dev->session.output_resolution);
strpixel /= half_ccd_factor * sensor.ccd_pixels_per_system_pixel();

Wyświetl plik

@ -194,8 +194,7 @@ gl847_init_registers (Genesys_Device * dev)
uint8_t val;
/* 700F class needs some different initial settings */
if (dev->model->model_id == MODEL_CANON_LIDE_700F)
{
if (dev->model->model_id == ModelId::CANON_LIDE_700F) {
lide700 = 1;
}
@ -1889,20 +1888,16 @@ static void gl847_init_memory_layout(Genesys_Device* dev)
/* point to per model memory layout */
idx = 0;
if (dev->model->model_id == MODEL_CANON_LIDE_100)
{
if (dev->model->model_id == ModelId::CANON_LIDE_100) {
idx = 0;
}
if (dev->model->model_id == MODEL_CANON_LIDE_200)
{
if (dev->model->model_id == ModelId::CANON_LIDE_200) {
idx = 1;
}
if (dev->model->model_id == MODEL_CANON_CANOSCAN_5600F)
{
if (dev->model->model_id == ModelId::CANON_CANOSCAN_5600F) {
idx = 2;
}
if (dev->model->model_id == MODEL_CANON_LIDE_700F)
{
if (dev->model->model_id == ModelId::CANON_LIDE_700F) {
idx = 3;
}

Wyświetl plik

@ -918,9 +918,9 @@ void sanei_genesys_set_lamp_power(Genesys_Device* dev, const Genesys_Sensor& sen
sanei_genesys_set_exposure(regs, sensor.exposure);
// we don't actually turn on lamp on infrared scan
if ((dev->model->model_id == MODEL_CANON_CANOSCAN_8400F ||
dev->model->model_id == MODEL_CANON_CANOSCAN_8600F ||
dev->model->model_id == MODEL_PLUSTEK_OPTICFILM_7200I) &&
if ((dev->model->model_id == ModelId::CANON_CANOSCAN_8400F ||
dev->model->model_id == ModelId::CANON_CANOSCAN_8600F ||
dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I) &&
dev->settings.scan_method == ScanMethod::TRANSPARENCY_INFRARED)
{
regs.find_reg(0x03).value &= ~REG03_LAMPPWR;
@ -935,10 +935,10 @@ void sanei_genesys_set_lamp_power(Genesys_Device* dev, const Genesys_Sensor& sen
}
if (dev->model->asic_type == AsicType::GL843) {
if (dev->model->model_id == MODEL_PANASONIC_KV_SS080 ||
dev->model->model_id == MODEL_HP_SCANJET_4850C ||
dev->model->model_id == MODEL_HP_SCANJET_G4010 ||
dev->model->model_id == MODEL_HP_SCANJET_G4050)
if (dev->model->model_id == ModelId::PANASONIC_KV_SS080 ||
dev->model->model_id == ModelId::HP_SCANJET_4850C ||
dev->model->model_id == ModelId::HP_SCANJET_G4010 ||
dev->model->model_id == ModelId::HP_SCANJET_G4050)
{
// BUG: datasheet says we shouldn't set exposure to zero
sanei_genesys_set_exposure(regs, {0, 0, 0});
@ -1475,7 +1475,7 @@ void compute_session(Genesys_Device* dev, ScanSession& s, const Genesys_Sensor&
// In quarter-CCD mode optical_pixels is 4x larger than the actual physical number
s.optical_pixels = align_int_up(s.optical_pixels, 2 * s.ccd_size_divisor);
if (dev->model->model_id == MODEL_PLUSTEK_OPTICFILM_7200I) {
if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I) {
s.optical_pixels = align_int_up(s.optical_pixels, 16);
}
}

Wyświetl plik

@ -66,7 +66,7 @@ void genesys_init_usb_device_tables()
model.name = "umax-astra-4500";
model.vendor = "UMAX";
model.model = "Astra 4500";
model.model_id = MODEL_UMAX_ASTRA_4500;
model.model_id = ModelId::UMAX_ASTRA_4500;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 300, 150, 75 };
@ -118,7 +118,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-lide-50";
model.vendor = "Canon";
model.model = "LiDE 35/40/50";
model.model_id = MODEL_CANON_LIDE_50;
model.model_id = ModelId::CANON_LIDE_50;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 1200, 600, 400, 300, 240, 200, 150, 75 };
@ -176,7 +176,7 @@ void genesys_init_usb_device_tables()
model.name = "panasonic-kv-ss080";
model.vendor = "Panasonic";
model.model = "KV-SS080";
model.model_id = MODEL_PANASONIC_KV_SS080;
model.model_id = ModelId::PANASONIC_KV_SS080;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 600, /* 500, 400,*/ 300, 200, 150, 100, 75 };
@ -230,7 +230,7 @@ void genesys_init_usb_device_tables()
model.name = "hewlett-packard-scanjet-4850c";
model.vendor = "Hewlett Packard";
model.model = "ScanJet 4850C";
model.model_id = MODEL_HP_SCANJET_4850C;
model.model_id = ModelId::HP_SCANJET_4850C;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100 };
@ -285,7 +285,7 @@ void genesys_init_usb_device_tables()
model.name = "hewlett-packard-scanjet-g4010";
model.vendor = "Hewlett Packard";
model.model = "ScanJet G4010";
model.model_id = MODEL_HP_SCANJET_G4010;
model.model_id = ModelId::HP_SCANJET_G4010;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100 };
@ -340,7 +340,7 @@ void genesys_init_usb_device_tables()
model.name = "hewlett-packard-scanjet-g4050";
model.vendor = "Hewlett Packard";
model.model = "ScanJet G4050";
model.model_id = MODEL_HP_SCANJET_G4050;
model.model_id = ModelId::HP_SCANJET_G4050;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100 };
@ -396,7 +396,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-canoscan-4400f";
model.vendor = "Canon";
model.model = "Canoscan 4400f";
model.model_id = MODEL_CANON_CANOSCAN_4400F;
model.model_id = ModelId::CANON_CANOSCAN_4400F;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 4800, 2400, 1200, 600, 400, 300, 200, 150, 100 };
@ -454,7 +454,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-canoscan-8400f";
model.vendor = "Canon";
model.model = "Canoscan 8400f";
model.model_id = MODEL_CANON_CANOSCAN_8400F;
model.model_id = ModelId::CANON_CANOSCAN_8400F;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 4800, 2400, 1200, 600, 400, 300, 200, 150, 100 };
@ -514,7 +514,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-canoscan-8600f";
model.vendor = "Canon";
model.model = "Canoscan 8600f";
model.model_id = MODEL_CANON_CANOSCAN_8600F;
model.model_id = ModelId::CANON_CANOSCAN_8600F;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 4800, 2400, 1200, 600, 400, 300 }; // TODO: resolutions for non-XPA mode
@ -574,7 +574,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-lide-100";
model.vendor = "Canon";
model.model = "LiDE 100";
model.model_id = MODEL_CANON_LIDE_100;
model.model_id = ModelId::CANON_LIDE_100;
model.asic_type = AsicType::GL847;
model.xdpi_values = { 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 };
@ -634,7 +634,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-lide-110";
model.vendor = "Canon";
model.model = "LiDE 110";
model.model_id = MODEL_CANON_LIDE_110;
model.model_id = ModelId::CANON_LIDE_110;
model.asic_type = AsicType::GL124;
model.xdpi_values = { 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 };
@ -692,7 +692,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-lide-120";
model.vendor = "Canon";
model.model = "LiDE 120";
model.model_id = MODEL_CANON_LIDE_120;
model.model_id = ModelId::CANON_LIDE_120;
model.asic_type = AsicType::GL124;
model.xdpi_values = { 4800, 2400, 1200, 600, 300, 150, 100, 75 };
@ -749,7 +749,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-lide-210";
model.vendor = "Canon";
model.model = "LiDE 210";
model.model_id = MODEL_CANON_LIDE_210;
model.model_id = ModelId::CANON_LIDE_210;
model.asic_type = AsicType::GL124;
model.xdpi_values = { 4800, 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 };
@ -809,7 +809,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-lide-220";
model.vendor = "Canon";
model.model = "LiDE 220";
model.model_id = MODEL_CANON_LIDE_220;
model.model_id = ModelId::CANON_LIDE_220;
model.asic_type = AsicType::GL124; // or a compatible one
model.xdpi_values = { 4800, 2400, 1200, 600, 300, 150, 100, 75 };
@ -868,7 +868,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-5600f";
model.vendor = "Canon";
model.model = "5600F";
model.model_id = MODEL_CANON_CANOSCAN_5600F;
model.model_id = ModelId::CANON_CANOSCAN_5600F;
model.asic_type = AsicType::GL847;
model.xdpi_values = { 1200, 600, 400, 300, 200, 150, 100, 75 };
@ -928,7 +928,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-lide-700f";
model.vendor = "Canon";
model.model = "LiDE 700F";
model.model_id = MODEL_CANON_LIDE_700F;
model.model_id = ModelId::CANON_LIDE_700F;
model.asic_type = AsicType::GL847;
model.xdpi_values = { 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 };
@ -987,7 +987,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-lide-200";
model.vendor = "Canon";
model.model = "LiDE 200";
model.model_id = MODEL_CANON_LIDE_200;
model.model_id = ModelId::CANON_LIDE_200;
model.asic_type = AsicType::GL847;
model.xdpi_values = { 4800, 2400, 1200, 600, 300, 200, 150, 100, 75 };
@ -1046,7 +1046,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-lide-60";
model.vendor = "Canon";
model.model = "LiDE 60";
model.model_id = MODEL_CANON_LIDE_60;
model.model_id = ModelId::CANON_LIDE_60;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 1200, 600, 300, 150, 75 };
@ -1104,7 +1104,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-lide-80";
model.vendor = "Canon";
model.model = "LiDE 80";
model.model_id = MODEL_CANON_LIDE_80;
model.model_id = ModelId::CANON_LIDE_80;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 1200, 600, 400, 300, 240, 150, 100, 75 };
@ -1161,7 +1161,7 @@ void genesys_init_usb_device_tables()
model.name = "hewlett-packard-scanjet-2300c";
model.vendor = "Hewlett Packard";
model.model = "ScanJet 2300c";
model.model_id = MODEL_HP_SCANJET_2300C;
model.model_id = ModelId::HP_SCANJET_2300C;
model.asic_type = AsicType::GL646;
// FIXME: the scanner supports 1200 ydpi, but we never scanned at this resolution so for now
@ -1220,7 +1220,7 @@ void genesys_init_usb_device_tables()
model.name = "hewlett-packard-scanjet-2400c";
model.vendor = "Hewlett Packard";
model.model = "ScanJet 2400c";
model.model_id = MODEL_HP_SCANJET_2400C;
model.model_id = ModelId::HP_SCANJET_2400C;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 300, 150, 100, 50 };
@ -1277,7 +1277,7 @@ void genesys_init_usb_device_tables()
model.name = "visioneer-strobe-xp200";
model.vendor = "Visioneer";
model.model = "Strobe XP200";
model.model_id = MODEL_VISIONEER_STROBE_XP200;
model.model_id = ModelId::VISIONEER_STROBE_XP200;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 600, 300, 200, 100, 75 };
@ -1333,7 +1333,7 @@ void genesys_init_usb_device_tables()
model.name = "hewlett-packard-scanjet-3670c";
model.vendor = "Hewlett Packard";
model.model = "ScanJet 3670c";
model.model_id = MODEL_HP_SCANJET_3670C;
model.model_id = ModelId::HP_SCANJET_3670C;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 300, 150, 100, 75 };
@ -1390,7 +1390,7 @@ void genesys_init_usb_device_tables()
model.name = "plustek-opticpro-st12";
model.vendor = "Plustek";
model.model = "OpticPro ST12";
model.model_id = MODEL_PLUSTEK_OPTICPRO_ST12;
model.model_id = ModelId::PLUSTEK_OPTICPRO_ST12;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 600, 300, 150, 75 };
@ -1441,7 +1441,7 @@ void genesys_init_usb_device_tables()
model.name = "plustek-opticpro-st24";
model.vendor = "Plustek";
model.model = "OpticPro ST24";
model.model_id = MODEL_PLUSTEK_OPTICPRO_ST24;
model.model_id = ModelId::PLUSTEK_OPTICPRO_ST24;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 300, 150, 75 };
@ -1496,7 +1496,7 @@ void genesys_init_usb_device_tables()
model.name = "medion-md5345-model";
model.vendor = "Medion";
model.model = "MD5345/MD6228/MD6471";
model.model_id = MODEL_MEDION_MD5345;
model.model_id = ModelId::MEDION_MD5345;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 400, 300, 200, 150, 100, 75, 50 };
@ -1556,7 +1556,7 @@ void genesys_init_usb_device_tables()
model.name = "visioneer-strobe-xp300";
model.vendor = "Visioneer";
model.model = "Strobe XP300";
model.model_id = MODEL_VISIONEER_STROBE_XP300;
model.model_id = ModelId::VISIONEER_STROBE_XP300;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
@ -1610,7 +1610,7 @@ void genesys_init_usb_device_tables()
model.name = "syscan-docketport-665";
model.vendor = "Syscan/Ambir";
model.model = "DocketPORT 665";
model.model_id = MODEL_SYSCAN_DOCKETPORT_665;
model.model_id = ModelId::SYSCAN_DOCKETPORT_665;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
@ -1664,7 +1664,7 @@ void genesys_init_usb_device_tables()
model.name = "visioneer-roadwarrior";
model.vendor = "Visioneer";
model.model = "Readwarrior";
model.model_id = MODEL_VISIONEER_ROADWARRIOR;
model.model_id = ModelId::VISIONEER_ROADWARRIOR;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
@ -1718,7 +1718,7 @@ void genesys_init_usb_device_tables()
model.name = "syscan-docketport-465";
model.vendor = "Syscan";
model.model = "DocketPORT 465";
model.model_id = MODEL_SYSCAN_DOCKETPORT_465;
model.model_id = ModelId::SYSCAN_DOCKETPORT_465;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
@ -1773,7 +1773,7 @@ void genesys_init_usb_device_tables()
model.name = "visioneer-xp100-revision3";
model.vendor = "Visioneer";
model.model = "XP100 Revision 3";
model.model_id = MODEL_VISIONEER_STROBE_XP100_REVISION3;
model.model_id = ModelId::VISIONEER_STROBE_XP100_REVISION3;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
@ -1827,7 +1827,7 @@ void genesys_init_usb_device_tables()
model.name = "pentax-dsmobile-600";
model.vendor = "Pentax";
model.model = "DSmobile 600";
model.model_id = MODEL_PENTAX_DSMOBILE_600;
model.model_id = ModelId::PENTAX_DSMOBILE_600;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
@ -1883,7 +1883,7 @@ void genesys_init_usb_device_tables()
model.name = "syscan-docketport-467";
model.vendor = "Syscan";
model.model = "DocketPORT 467";
model.model_id = MODEL_SYSCAN_DOCKETPORT_467;
model.model_id = ModelId::SYSCAN_DOCKETPORT_467;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
@ -1936,7 +1936,7 @@ void genesys_init_usb_device_tables()
model.name = "syscan-docketport-685";
model.vendor = "Syscan/Ambir";
model.model = "DocketPORT 685";
model.model_id = MODEL_SYSCAN_DOCKETPORT_685;
model.model_id = ModelId::SYSCAN_DOCKETPORT_685;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
@ -1992,7 +1992,7 @@ void genesys_init_usb_device_tables()
model.name = "syscan-docketport-485";
model.vendor = "Syscan/Ambir";
model.model = "DocketPORT 485";
model.model_id = MODEL_SYSCAN_DOCKETPORT_485;
model.model_id = ModelId::SYSCAN_DOCKETPORT_485;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
@ -2047,7 +2047,7 @@ void genesys_init_usb_device_tables()
model.name = "dct-docketport-487";
model.vendor = "DCT";
model.model = "DocketPORT 487";
model.model_id = MODEL_DCT_DOCKETPORT_487;
model.model_id = ModelId::DCT_DOCKETPORT_487;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
@ -2103,7 +2103,7 @@ void genesys_init_usb_device_tables()
model.name = "visioneer-7100-model";
model.vendor = "Visioneer";
model.model = "OneTouch 7100";
model.model_id = MODEL_VISIONEER_7100;
model.model_id = ModelId::VISIONEER_7100;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 400, 300, 200, 150, 100, 75, 50 };
@ -2163,7 +2163,7 @@ void genesys_init_usb_device_tables()
model.name = "xerox-2400-model";
model.vendor = "Xerox";
model.model = "OneTouch 2400";
model.model_id = MODEL_XEROX_2400;
model.model_id = ModelId::XEROX_2400;
model.asic_type = AsicType::GL646;
model.xdpi_values = { 1200, 600, 400, 300, 200, 150, 100, 75, 50 };
@ -2223,7 +2223,7 @@ void genesys_init_usb_device_tables()
model.name = "xerox-travelscanner";
model.vendor = "Xerox";
model.model = "Travelscanner 100";
model.model_id = MODEL_XEROX_TRAVELSCANNER_100;
model.model_id = ModelId::XEROX_TRAVELSCANNER_100;
model.asic_type = AsicType::GL841;
model.xdpi_values = { 600, 300, 150, 75 };
@ -2278,7 +2278,7 @@ void genesys_init_usb_device_tables()
model.name = "plustek-opticbook-3600";
model.vendor = "PLUSTEK";
model.model = "OpticBook 3600";
model.model_id = MODEL_PLUSTEK_OPTICPRO_3600;
model.model_id = ModelId::PLUSTEK_OPTICPRO_3600;
model.asic_type = AsicType::GL841;
model.xdpi_values = { /*1200,*/ 600, 400, 300, 200, 150, 100, 75 };
model.ydpi_values = { /*2400,*/ 1200, 600, 400, 300, 200, 150, 100, 75 };
@ -2333,7 +2333,7 @@ void genesys_init_usb_device_tables()
model.name = "plustek-opticfilm-7200i";
model.vendor = "PLUSTEK";
model.model = "OpticFilm 7200i";
model.model_id = MODEL_PLUSTEK_OPTICFILM_7200I;
model.model_id = ModelId::PLUSTEK_OPTICFILM_7200I;
model.asic_type = AsicType::GL843;
model.xdpi_values = { 7200, 3600, 1800, 900 };
model.ydpi_values = { 7200, 3600, 1800, 900 };
@ -2393,7 +2393,7 @@ void genesys_init_usb_device_tables()
model.name = "hewlett-packard-scanjet-N6310";
model.vendor = "Hewlett Packard";
model.model = "ScanJet N6310";
model.model_id = MODEL_HP_SCANJET_N6310;
model.model_id = ModelId::HP_SCANJET_N6310;
model.asic_type = AsicType::GL847;
model.xdpi_values = { 2400, 1200, 600, 400, 300, 200, 150, 100, 75 };
@ -2453,7 +2453,7 @@ void genesys_init_usb_device_tables()
model.name = "plustek-opticbook-3800";
model.vendor = "PLUSTEK";
model.model = "OpticBook 3800";
model.model_id = MODEL_PLUSTEK_OPTICBOOK_3800;
model.model_id = ModelId::PLUSTEK_OPTICBOOK_3800;
model.asic_type = AsicType::GL845;
model.xdpi_values = { 1200, 600, 300, 150, 100, 75 };
@ -2507,7 +2507,7 @@ void genesys_init_usb_device_tables()
model.name = "canon-image-formula-101";
model.vendor = "Canon";
model.model = "Image Formula 101";
model.model_id = MODEL_CANON_IMAGE_FORMULA_101;
model.model_id = ModelId::CANON_IMAGE_FORMULA_101;
model.asic_type = AsicType::GL846;
model.xdpi_values = { 1200, 600, 300, 150, 100, 75 };