genesys: Add 4800dpi support for Canon LiDE 210.

Based on USB logs from Windows driver.
merge-requests/213/head^2
Matthew Petroff 2020-03-24 19:44:17 -04:00
rodzic dd78511072
commit 74f2af604b
4 zmienionych plików z 66 dodań i 12 usunięć

Wyświetl plik

@ -1229,6 +1229,40 @@ void CommandSetGl124::send_shading_data(Genesys_Device* dev, const Genesys_Senso
ptr[2+pixels*3]=src[2+segcnt*3];
ptr[3+pixels*3]=src[3+segcnt*3];
break;
case 8:
ptr[0+pixels*0]=src[0+segcnt*0];
ptr[1+pixels*0]=src[1+segcnt*0];
ptr[2+pixels*0]=src[2+segcnt*0];
ptr[3+pixels*0]=src[3+segcnt*0];
ptr[0+pixels*1]=src[0+segcnt*2];
ptr[1+pixels*1]=src[1+segcnt*2];
ptr[2+pixels*1]=src[2+segcnt*2];
ptr[3+pixels*1]=src[3+segcnt*2];
ptr[0+pixels*2]=src[0+segcnt*4];
ptr[1+pixels*2]=src[1+segcnt*4];
ptr[2+pixels*2]=src[2+segcnt*4];
ptr[3+pixels*2]=src[3+segcnt*4];
ptr[0+pixels*3]=src[0+segcnt*6];
ptr[1+pixels*3]=src[1+segcnt*6];
ptr[2+pixels*3]=src[2+segcnt*6];
ptr[3+pixels*3]=src[3+segcnt*6];
ptr[0+pixels*4]=src[0+segcnt*1];
ptr[1+pixels*4]=src[1+segcnt*1];
ptr[2+pixels*4]=src[2+segcnt*1];
ptr[3+pixels*4]=src[3+segcnt*1];
ptr[0+pixels*5]=src[0+segcnt*3];
ptr[1+pixels*5]=src[1+segcnt*3];
ptr[2+pixels*5]=src[2+segcnt*3];
ptr[3+pixels*5]=src[3+segcnt*3];
ptr[0+pixels*6]=src[0+segcnt*5];
ptr[1+pixels*6]=src[1+segcnt*5];
ptr[2+pixels*6]=src[2+segcnt*5];
ptr[3+pixels*6]=src[3+segcnt*5];
ptr[0+pixels*7]=src[0+segcnt*7];
ptr[1+pixels*7]=src[1+segcnt*7];
ptr[2+pixels*7]=src[2+segcnt*7];
ptr[3+pixels*7]=src[3+segcnt*7];
break;
}
/* next shading coefficient */

Wyświetl plik

@ -789,16 +789,15 @@ void genesys_init_usb_device_tables()
model.resolutions = {
{
{ ScanMethod::FLATBED },
// BUG: 4800 resolution crashes
{ /*4800,*/ 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 },
{ /*4800,*/ 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 },
{ 4800, 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 },
{ 4800, 2400, 1200, 600, /* 400,*/ 300, 150, 100, 75 },
}
};
model.bpp_gray_values = { 8, 16 };
model.bpp_color_values = { 8, 16 };
model.x_offset = 2.2;
model.x_offset = 2.1;
model.y_offset = 8.7;
model.x_size = 216.70;
model.y_size = 297.5;

Wyświetl plik

@ -400,6 +400,8 @@ void genesys_init_motor_tables()
StepType::HALF, 10528});
motor.profiles.push_back({MotorSlope::create_from_steps(62496, 10432, 4),
StepType::QUARTER, 20864});
motor.profiles.push_back({MotorSlope::create_from_steps(62496, 10432, 4),
StepType::EIGHTH, 41536});
s_motors->push_back(std::move(motor));

Wyświetl plik

@ -2675,7 +2675,7 @@ void genesys_init_sensor_tables()
sensor = Genesys_Sensor();
sensor.sensor_id = SensorId::CIS_CANON_LIDE_210; // gl124
sensor.optical_res = 2400;
sensor.optical_res = 4800;
sensor.ccd_size_divisor = 2;
sensor.black_pixels = 87;
sensor.dummy_pixel = 16;
@ -2701,7 +2701,7 @@ void genesys_init_sensor_tables()
};
CustomSensorSettings custom_settings[] = {
{ { 75 }, 600, 150, 300, 2768, { 388, 574, 393 }, Ratio{1, 4}, 4,
{ { 75 }, 600, 150, 300, 2768, { 388, 574, 393 }, Ratio{1, 8}, 4,
std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
@ -2720,7 +2720,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
}
},
{ { 100 }, 600, 200, 300, 2768, { 388, 574, 393 }, Ratio{1, 4}, 3,
{ { 100 }, 600, 200, 300, 2768, { 388, 574, 393 }, Ratio{1, 8}, 3,
std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
@ -2739,7 +2739,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
}
},
{ { 150 }, 600, 300, 300, 2768, { 388, 574, 393 }, Ratio{1, 4}, 2,
{ { 150 }, 600, 300, 300, 2768, { 388, 574, 393 }, Ratio{1, 8}, 2,
std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
@ -2758,7 +2758,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
}
},
{ { 300 }, 600, 600, 300, 2768, { 388, 574, 393 }, Ratio{1, 4}, 1,
{ { 300 }, 600, 600, 300, 2768, { 388, 574, 393 }, Ratio{1, 8}, 1,
std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
@ -2777,7 +2777,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
}
},
{ { 600 }, 600, 600, 600, 5360, { 388, 574, 393 }, Ratio{1, 4}, 1,
{ { 600 }, 600, 600, 600, 5360, { 388, 574, 393 }, Ratio{1, 8}, 1,
std::vector<unsigned>{}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
@ -2796,7 +2796,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x21 },
}
},
{ { 1200 }, 1200, 1200, 1200, 10528, { 388, 574, 393 }, Ratio{1, 4}, 1, {0, 1}, {
{ { 1200 }, 1200, 1200, 1200, 10528, { 388, 574, 393 }, Ratio{1, 8}, 1, {0, 1}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x08 },
@ -2814,7 +2814,7 @@ void genesys_init_sensor_tables()
{ 0x98, 0x22 },
},
},
{ { 2400 }, 2400, 2400, 2400, 20864, { 6839, 8401, 6859 }, Ratio{1, 4}, 1,
{ { 2400 }, 2400, 2400, 2400, 20864, { 6839, 8401, 6859 }, Ratio{1, 8}, 1,
{0, 2, 1, 3}, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
@ -2832,6 +2832,25 @@ void genesys_init_sensor_tables()
{ 0x96, 0x00 }, { 0x97, 0xa3 },
{ 0x98, 0x24 },
},
},
{ { 4800 }, 4800, 4800, 4800, 41536, { 9735, 14661, 11345 }, Ratio{1, 8}, 1,
{ 0, 2, 4, 6, 1, 3, 5, 7 }, {
// { 0x16, 0x00 }, // FIXME: check if default value is different
{ 0x16, 0x10 }, { 0x17, 0x04 }, { 0x18, 0x00 }, { 0x19, 0x01 },
{ 0x1a, 0x30 }, { 0x1b, 0x00 }, { 0x1c, 0x02 }, { 0x1d, 0x01 }, { 0x20, 0x04 },
{ 0x52, 0x00 }, { 0x53, 0x02 }, { 0x54, 0x04 }, { 0x55, 0x06 },
{ 0x56, 0x04 }, { 0x57, 0x04 }, { 0x58, 0x04 }, { 0x59, 0x04 },
{ 0x5a, 0x1a }, { 0x5b, 0x00 }, { 0x5c, 0xc0 },
{ 0x61, 0x20 },
// { 0x70, 0x00 }, // FIXME: check if default value is different
{ 0x74, 0x00 }, { 0x75, 0x00 }, { 0x76, 0x1e },
{ 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x9f },
{ 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x55 },
{ 0x88, 0x12 }, { 0x89, 0x47 },
{ 0x93, 0x00 }, { 0x94, 0x14 }, { 0x95, 0x30 },
{ 0x96, 0x00 }, { 0x97, 0xa5 },
{ 0x98, 0x28 },
},
}
};