1 /* sane - Scanner Access Now Easy.
2
3 Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
4
5 This file is part of the SANE package.
6
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License as
9 published by the Free Software Foundation; either version 2 of the
10 License, or (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
21 #define DEBUG_DECLARE_ONLY
22
23 #include "low.h"
24
25 namespace genesys {
26
27 StaticInit<std::vector<Genesys_Motor>> s_motors;
28
genesys_init_motor_tables()29 void genesys_init_motor_tables()
30 {
31 s_motors.init();
32
33 MotorProfile profile;
34
35 Genesys_Motor motor;
36 motor.id = MotorId::UMAX;
37 motor.base_ydpi = 2400;
38 motor.profiles.push_back({MotorSlope::create_from_steps(11000, 3000, 128), StepType::FULL, 0});
39 motor.profiles.push_back({MotorSlope::create_from_steps(11000, 3000, 128), StepType::HALF, 0});
40 s_motors->push_back(std::move(motor));
41
42
43 motor = Genesys_Motor();
44 motor.id = MotorId::MD_5345; // MD5345/6228/6471
45 motor.base_ydpi = 2400;
46 motor.profiles.push_back({MotorSlope::create_from_steps(2000, 1375, 128), StepType::FULL, 0});
47 motor.profiles.push_back({MotorSlope::create_from_steps(2000, 1375, 128), StepType::HALF, 0});
48 s_motors->push_back(std::move(motor));
49
50
51 motor = Genesys_Motor();
52 motor.id = MotorId::ST24;
53 motor.base_ydpi = 2400;
54 motor.profiles.push_back({MotorSlope::create_from_steps(2289, 2100, 128), StepType::FULL, 0});
55 motor.profiles.push_back({MotorSlope::create_from_steps(2289, 2100, 128), StepType::HALF, 0});
56 s_motors->push_back(std::move(motor));
57
58
59 motor = Genesys_Motor();
60 motor.id = MotorId::HP3670;
61 motor.base_ydpi = 1200;
62 motor.profiles.push_back({MotorSlope::create_from_steps(11000, 3000, 128), StepType::FULL, 0});
63 motor.profiles.push_back({MotorSlope::create_from_steps(11000, 3000, 128), StepType::HALF, 0});
64 s_motors->push_back(std::move(motor));
65
66
67 motor = Genesys_Motor();
68 motor.id = MotorId::HP2400;
69 motor.base_ydpi = 1200;
70 motor.profiles.push_back({MotorSlope::create_from_steps(11000, 3000, 128), StepType::FULL, 0});
71 motor.profiles.push_back({MotorSlope::create_from_steps(11000, 3000, 128), StepType::HALF, 0});
72 s_motors->push_back(std::move(motor));
73
74
75 motor = Genesys_Motor();
76 motor.id = MotorId::HP2300;
77 motor.base_ydpi = 1200;
78 motor.profiles.push_back({MotorSlope::create_from_steps(3200, 1200, 128), StepType::FULL, 0});
79 motor.profiles.push_back({MotorSlope::create_from_steps(3200, 1200, 128), StepType::HALF, 0});
80 s_motors->push_back(std::move(motor));
81
82
83 motor = Genesys_Motor();
84 motor.id = MotorId::CANON_LIDE_35;
85 motor.base_ydpi = 1200;
86
87 profile = MotorProfile{MotorSlope::create_from_steps(3500, 1300, 150), StepType::HALF, 0};
88 profile.resolutions = { 75, 150, 200, 300, 600 };
89 motor.profiles.push_back(profile);
90
91 profile = MotorProfile{MotorSlope::create_from_steps(3500, 1300, 150), StepType::QUARTER, 0};
92 profile.resolutions = { 1200, 2400 };
93 motor.profiles.push_back(profile);
94
95 profile = MotorProfile{MotorSlope::create_from_steps(3500, 1400, 150), StepType::FULL, 0};
96 profile.resolutions = { 75, 150, 200, 300 };
97 motor.fast_profiles.push_back(profile);
98
99 profile = MotorProfile{MotorSlope::create_from_steps(6000, 3000, 100), StepType::FULL, 0};
100 profile.resolutions = { 600, 1200, 2400 };
101 motor.fast_profiles.push_back(profile);
102
103 s_motors->push_back(std::move(motor));
104
105
106 motor = Genesys_Motor();
107 motor.id = MotorId::CANON_LIDE_60;
108 motor.base_ydpi = 1200;
109
110 profile = MotorProfile{MotorSlope::create_from_steps(3500, 1400, 150), StepType::HALF, 0};
111 motor.profiles.push_back(profile);
112
113 profile = MotorProfile{MotorSlope::create_from_steps(3500, 1400, 150), StepType::FULL, 0};
114 profile.resolutions = { 75, 150, 300 };
115 motor.fast_profiles.push_back(profile);
116
117 profile = MotorProfile{MotorSlope::create_from_steps(6000, 3000, 100), StepType::FULL, 0};
118 profile.resolutions = { 600, 1200, 2400 };
119 motor.fast_profiles.push_back(profile);
120
121 s_motors->push_back(std::move(motor));
122
123
124 motor = Genesys_Motor();
125 motor.id = MotorId::CANON_LIDE_90;
126 motor.base_ydpi = 1200;
127 profile = {MotorSlope::create_from_steps(8000, 3000, 200), StepType::FULL, 0};
128 profile.resolutions = { 150, 300 };
129 motor.profiles.push_back(profile);
130
131 profile = {MotorSlope::create_from_steps(7000, 3000, 200), StepType::HALF, 0};
132 profile.resolutions = { 600, 1200 };
133 motor.profiles.push_back(profile);
134
135 profile = {MotorSlope::create_from_steps(7000, 3000, 200), StepType::QUARTER, 0};
136 profile.resolutions = { 2400 };
137 motor.profiles.push_back(profile);
138 s_motors->push_back(std::move(motor));
139
140
141 motor = Genesys_Motor();
142 motor.id = MotorId::XP200;
143 motor.base_ydpi = 600;
144 motor.profiles.push_back({MotorSlope::create_from_steps(3500, 1300, 60), StepType::FULL, 0});
145 motor.profiles.push_back({MotorSlope::create_from_steps(3500, 1300, 60), StepType::HALF, 0});
146 motor.fast_profiles.push_back({MotorSlope::create_from_steps(3500, 1300, 60), StepType::FULL, 0});
147 s_motors->push_back(std::move(motor));
148
149
150 motor = Genesys_Motor();
151 motor.id = MotorId::XP300;
152 motor.base_ydpi = 300;
153 // works best with GPIO10, GPIO14 off
154 profile = MotorProfile{MotorSlope::create_from_steps(3700, 3700, 2), StepType::FULL, 0};
155 profile.resolutions = {}; // used during fast moves
156 motor.profiles.push_back(profile);
157
158 // FIXME: this motor profile is useless
159 profile = MotorProfile{MotorSlope::create_from_steps(11000, 11000, 2), StepType::HALF, 0};
160 profile.resolutions = {75, 150, 300, 600};
161 motor.profiles.push_back(profile);
162
163 profile = MotorProfile{MotorSlope::create_from_steps(3700, 3700, 2), StepType::FULL, 0};
164 motor.fast_profiles.push_back(profile);
165 s_motors->push_back(std::move(motor));
166
167
168 motor = Genesys_Motor();
169 motor.id = MotorId::DP665;
170 motor.base_ydpi = 750;
171
172 profile = MotorProfile{MotorSlope::create_from_steps(3000, 2500, 10), StepType::FULL, 0};
173 profile.resolutions = {75, 150};
174 motor.profiles.push_back(profile);
175
176 // FIXME: this motor profile is useless
177 profile = MotorProfile{MotorSlope::create_from_steps(11000, 11000, 2), StepType::HALF, 0};
178 profile.resolutions = {300, 600, 1200};
179 motor.profiles.push_back(profile);
180
181 profile = MotorProfile{MotorSlope::create_from_steps(3000, 2500, 10), StepType::FULL, 0};
182 motor.fast_profiles.push_back(profile);
183 s_motors->push_back(std::move(motor));
184
185
186 motor = Genesys_Motor();
187 motor.id = MotorId::ROADWARRIOR;
188 motor.base_ydpi = 750;
189
190 profile = MotorProfile{MotorSlope::create_from_steps(3000, 2600, 10), StepType::FULL, 0};
191 profile.resolutions = {75, 150};
192 motor.profiles.push_back(profile);
193
194 // FIXME: this motor profile is useless
195 profile = MotorProfile{MotorSlope::create_from_steps(11000, 11000, 2), StepType::HALF, 0};
196 profile.resolutions = {300, 600, 1200};
197 motor.profiles.push_back(profile);
198
199 profile = MotorProfile{MotorSlope::create_from_steps(3000, 2600, 10), StepType::FULL, 0};
200 motor.fast_profiles.push_back(profile);
201 s_motors->push_back(std::move(motor));
202
203
204 motor = Genesys_Motor();
205 motor.id = MotorId::DSMOBILE_600;
206 motor.base_ydpi = 750;
207
208 profile = MotorProfile{MotorSlope::create_from_steps(6666, 3700, 8), StepType::FULL, 0};
209 profile.resolutions = {75, 150};
210 motor.profiles.push_back(profile);
211
212 profile = MotorProfile{MotorSlope::create_from_steps(6666, 3700, 8), StepType::HALF, 0};
213 profile.resolutions = {300, 600, 1200};
214 motor.profiles.push_back(profile);
215
216 profile = MotorProfile{MotorSlope::create_from_steps(6666, 3700, 8), StepType::FULL, 0};
217 motor.fast_profiles.push_back(profile);
218 s_motors->push_back(std::move(motor));
219
220
221 motor = Genesys_Motor();
222 motor.id = MotorId::CANON_LIDE_100;
223 motor.base_ydpi = 1200;
224 motor.profiles.push_back({MotorSlope::create_from_steps(46876, 864, 255),
225 StepType::HALF, 1432});
226 motor.profiles.push_back({MotorSlope::create_from_steps(46876, 864, 279),
227 StepType::QUARTER, 2712});
228 motor.profiles.push_back({MotorSlope::create_from_steps(31680, 864, 247),
229 StepType::EIGHTH, 5280});
230 s_motors->push_back(std::move(motor));
231
232
233 motor = Genesys_Motor();
234 motor.id = MotorId::CANON_LIDE_200;
235 motor.base_ydpi = 1200;
236 motor.profiles.push_back({MotorSlope::create_from_steps(46876, 864, 255),
237 StepType::HALF, 1432});
238 motor.profiles.push_back({MotorSlope::create_from_steps(46876, 864, 279),
239 StepType::QUARTER, 2712});
240 motor.profiles.push_back({MotorSlope::create_from_steps(31680, 864, 247),
241 StepType::EIGHTH, 5280});
242 motor.profiles.push_back({MotorSlope::create_from_steps(31680, 864, 247),
243 StepType::EIGHTH, 10416});
244 s_motors->push_back(std::move(motor));
245
246
247 motor = Genesys_Motor();
248 motor.id = MotorId::CANON_LIDE_700;
249 motor.base_ydpi = 1200;
250 motor.profiles.push_back({MotorSlope::create_from_steps(46876, 534, 255),
251 StepType::HALF, 1424});
252 motor.profiles.push_back({MotorSlope::create_from_steps(46876, 534, 255),
253 StepType::HALF, 1504});
254 motor.profiles.push_back({MotorSlope::create_from_steps(46876, 2022, 127),
255 StepType::HALF, 2696});
256 motor.profiles.push_back({MotorSlope::create_from_steps(46876, 534, 255),
257 StepType::HALF, 2848});
258 motor.profiles.push_back({MotorSlope::create_from_steps(46876, 15864, 2),
259 StepType::EIGHTH, 10576});
260 s_motors->push_back(std::move(motor));
261
262
263 motor = Genesys_Motor();
264 motor.id = MotorId::KVSS080;
265 motor.base_ydpi = 1200;
266 motor.profiles.push_back({MotorSlope::create_from_steps(44444, 500, 489),
267 StepType::HALF, 8000});
268 s_motors->push_back(std::move(motor));
269
270
271 motor = Genesys_Motor();
272 motor.id = MotorId::G4050;
273 motor.base_ydpi = 2400;
274 motor.profiles.push_back({MotorSlope::create_from_steps(7842, 320, 602),
275 StepType::HALF, 8016});
276 motor.profiles.push_back({MotorSlope::create_from_steps(9422, 254, 1004),
277 StepType::HALF, 15624});
278 motor.profiles.push_back({MotorSlope::create_from_steps(28032, 2238, 604),
279 StepType::HALF, 56064});
280 motor.profiles.push_back({MotorSlope::create_from_steps(42752, 1706, 610),
281 StepType::QUARTER, 42752});
282 s_motors->push_back(std::move(motor));
283
284
285 motor = Genesys_Motor();
286 motor.id = MotorId::CANON_4400F;
287 motor.base_ydpi = 2400;
288
289 profile = MotorProfile();
290 profile.slope = MotorSlope::create_from_steps(28597 * 2, 727 * 2, 200);
291 profile.step_type = StepType::QUARTER;
292 profile.motor_vref = 1;
293 profile.resolutions = { 300, 600 };
294 motor.profiles.push_back(std::move(profile));
295
296 profile = MotorProfile();
297 profile.slope = MotorSlope::create_from_steps(28597 * 2, 727 * 2, 200);
298 profile.step_type = StepType::QUARTER;
299 profile.motor_vref = 0;
300 profile.resolutions = { 1200, 2400, 4800, 9600 };
301 motor.profiles.push_back(std::move(profile));
302
303 profile = MotorProfile();
304 profile.slope = MotorSlope::create_from_steps(28597 * 2, 279 * 2, 1000);
305 profile.step_type = StepType::QUARTER;
306 profile.motor_vref = 0;
307 motor.fast_profiles.push_back(std::move(profile));
308
309 s_motors->push_back(std::move(motor));
310
311
312 motor = Genesys_Motor();
313 motor.id = MotorId::CANON_5600F;
314 motor.base_ydpi = 2400;
315
316 // FIXME: real limit is 134, but for some reason the motor can't acquire that speed.
317 profile = MotorProfile();
318 profile.slope = MotorSlope::create_from_steps(2500 * 2, 134 * 2, 1000);
319 profile.step_type = StepType::HALF;
320 profile.motor_vref = 0;
321 profile.resolutions = { 75, 150 };
322 motor.profiles.push_back(std::move(profile));
323
324 profile = MotorProfile();
325 profile.slope = MotorSlope::create_from_steps(2500 * 2, 200 * 2, 1000);
326 profile.step_type = StepType::QUARTER;
327 profile.motor_vref = 0;
328 profile.resolutions = { 300, 600, 1200, 2400, 4800 };
329 motor.profiles.push_back(std::move(profile));
330
331 profile = MotorProfile();
332 profile.slope = MotorSlope::create_from_steps(2500 * 2, 200 * 2, 1000);
333 profile.step_type = StepType::QUARTER;
334 profile.motor_vref = 0;
335 motor.fast_profiles.push_back(std::move(profile));
336
337 s_motors->push_back(std::move(motor));
338
339
340 motor = Genesys_Motor();
341 motor.id = MotorId::CANON_8400F;
342 motor.base_ydpi = 1600;
343
344 profile = MotorProfile();
345 profile.slope = MotorSlope::create_from_steps(20202 * 4, 333 * 4, 100);
346 profile.step_type = StepType::QUARTER;
347 profile.motor_vref = 0;
348 profile.resolutions = VALUE_FILTER_ANY;
349 profile.scan_methods = { ScanMethod::FLATBED };
350 motor.profiles.push_back(std::move(profile));
351
352 profile = MotorProfile();
353 profile.slope = MotorSlope::create_from_steps(65535 * 4, 333 * 4, 100);
354 profile.step_type = StepType::QUARTER;
355 profile.motor_vref = 2;
356 profile.resolutions = VALUE_FILTER_ANY;
357 profile.scan_methods = { ScanMethod::TRANSPARENCY, ScanMethod::TRANSPARENCY_INFRARED };
358 motor.profiles.push_back(std::move(profile));
359
360 profile = MotorProfile();
361 profile.slope = MotorSlope::create_from_steps(65535 * 4, 333 * 4, 200);
362 profile.step_type = StepType::QUARTER;
363 profile.motor_vref = 2;
364 profile.resolutions = VALUE_FILTER_ANY;
365 profile.scan_methods = VALUE_FILTER_ANY;
366 motor.fast_profiles.push_back(std::move(profile));
367
368 s_motors->push_back(std::move(motor));
369
370
371 motor = Genesys_Motor();
372 motor.id = MotorId::CANON_8600F;
373 motor.base_ydpi = 2400;
374
375 profile = MotorProfile();
376 profile.slope = MotorSlope::create_from_steps(54612, 1500, 219);
377 profile.step_type = StepType::QUARTER;
378 profile.motor_vref = 3;
379 profile.resolutions = { 300, 600 };
380 profile.scan_methods = { ScanMethod::FLATBED };
381 motor.profiles.push_back(std::move(profile));
382
383 profile = MotorProfile();
384 profile.slope = MotorSlope::create_from_steps(54612, 1500, 219);
385 profile.step_type = StepType::QUARTER;
386 profile.motor_vref = 2;
387 profile.resolutions = { 1200, 2400 };
388 profile.scan_methods = { ScanMethod::FLATBED };
389 motor.profiles.push_back(std::move(profile));
390
391 profile = MotorProfile();
392 profile.slope = MotorSlope::create_from_steps(54612, 1500, 219);
393 profile.step_type = StepType::QUARTER;
394 profile.motor_vref = 2;
395 profile.resolutions = { 4800 };
396 profile.scan_methods = { ScanMethod::FLATBED };
397 motor.profiles.push_back(std::move(profile));
398
399 profile = MotorProfile();
400 profile.slope = MotorSlope::create_from_steps(54612, 1500, 219);
401 profile.step_type = StepType::QUARTER;
402 profile.motor_vref = 2;
403 profile.resolutions = { 300, 600 };
404 profile.scan_methods = { ScanMethod::TRANSPARENCY,
405 ScanMethod::TRANSPARENCY_INFRARED };
406 motor.profiles.push_back(std::move(profile));
407
408 profile = MotorProfile();
409 profile.slope = MotorSlope::create_from_steps(54612, 1500, 219);
410 profile.step_type = StepType::QUARTER;
411 profile.motor_vref = 1;
412 profile.resolutions = { 1200, 2400 };
413 profile.scan_methods = { ScanMethod::TRANSPARENCY,
414 ScanMethod::TRANSPARENCY_INFRARED };
415 motor.profiles.push_back(std::move(profile));
416
417 profile = MotorProfile();
418 profile.slope = MotorSlope::create_from_steps(54612, 1500, 219);
419 profile.step_type = StepType::QUARTER;
420 profile.motor_vref = 0;
421 profile.resolutions = { 4800 };
422 profile.scan_methods = { ScanMethod::TRANSPARENCY,
423 ScanMethod::TRANSPARENCY_INFRARED };
424 motor.profiles.push_back(std::move(profile));
425
426 profile = MotorProfile();
427 profile.slope = MotorSlope::create_from_steps(59240, 582, 1020);
428 profile.step_type = StepType::QUARTER;
429 profile.motor_vref = 2;
430 motor.fast_profiles.push_back(std::move(profile));
431
432 s_motors->push_back(std::move(motor));
433
434
435 motor = Genesys_Motor();
436 motor.id = MotorId::CANON_LIDE_110;
437 motor.base_ydpi = 4800;
438 motor.profiles.push_back({MotorSlope::create_from_steps(62496, 335, 255),
439 StepType::FULL, 2768});
440 motor.profiles.push_back({MotorSlope::create_from_steps(62496, 335, 469),
441 StepType::HALF, 5360});
442 motor.profiles.push_back({MotorSlope::create_from_steps(62496, 2632, 3),
443 StepType::HALF, 10528});
444 motor.profiles.push_back({MotorSlope::create_from_steps(62496, 10432, 3),
445 StepType::QUARTER, 20864});
446 s_motors->push_back(std::move(motor));
447
448
449 motor = Genesys_Motor();
450 motor.id = MotorId::CANON_LIDE_120;
451 motor.base_ydpi = 4800;
452 motor.profiles.push_back({MotorSlope::create_from_steps(62496, 864, 127),
453 StepType::FULL, 4608});
454 motor.profiles.push_back({MotorSlope::create_from_steps(62496, 1338, 63),
455 StepType::HALF, 5360});
456 motor.profiles.push_back({MotorSlope::create_from_steps(62464, 2632, 3),
457 StepType::QUARTER, 10528});
458 motor.profiles.push_back({MotorSlope::create_from_steps(62592, 10432, 5),
459 StepType::QUARTER, 20864});
460 s_motors->push_back(std::move(motor));
461
462
463 motor = Genesys_Motor();
464 motor.id = MotorId::CANON_LIDE_210;
465 motor.base_ydpi = 4800;
466 motor.profiles.push_back({MotorSlope::create_from_steps(62496, 335, 255),
467 StepType::FULL, 2768});
468 motor.profiles.push_back({MotorSlope::create_from_steps(62496, 335, 469),
469 StepType::HALF, 5360});
470 motor.profiles.push_back({MotorSlope::create_from_steps(62496, 2632, 3),
471 StepType::HALF, 10528});
472 motor.profiles.push_back({MotorSlope::create_from_steps(62496, 10432, 4),
473 StepType::QUARTER, 20864});
474 motor.profiles.push_back({MotorSlope::create_from_steps(62496, 10432, 4),
475 StepType::EIGHTH, 41536});
476 s_motors->push_back(std::move(motor));
477
478
479 motor = Genesys_Motor();
480 motor.id = MotorId::PLUSTEK_OPTICPRO_3600;
481 motor.base_ydpi = 1200;
482
483 profile = MotorProfile{MotorSlope::create_from_steps(3500, 1300, 60), StepType::FULL, 0};
484 profile.resolutions = {75, 100, 150, 200};
485 motor.profiles.push_back(profile);
486
487 // FIXME: this motor profile is almost useless
488 profile = MotorProfile{MotorSlope::create_from_steps(3500, 3250, 60), StepType::HALF, 0};
489 profile.resolutions = {300, 400, 600, 1200};
490 motor.profiles.push_back(profile);
491
492 profile = MotorProfile{MotorSlope::create_from_steps(3500, 1300, 60), StepType::FULL, 0};
493 motor.fast_profiles.push_back(profile);
494 s_motors->push_back(std::move(motor));
495
496
497 motor = Genesys_Motor();
498 motor.id = MotorId::PLUSTEK_OPTICFILM_7200;
499 motor.base_ydpi = 3600;
500
501 profile = MotorProfile();
502 profile.slope = MotorSlope::create_from_steps(20000 * 2, 600 * 2, 200);
503 profile.step_type = StepType::HALF;
504 profile.motor_vref = 0;
505 motor.profiles.push_back(std::move(profile));
506
507 s_motors->push_back(std::move(motor));
508
509
510 motor = Genesys_Motor();
511 motor.id = MotorId::PLUSTEK_OPTICFILM_7200I;
512 motor.base_ydpi = 3600;
513
514 profile = MotorProfile();
515 profile.slope = MotorSlope::create_from_steps(34722 * 2, 454 * 2, 40);
516 profile.step_type = StepType::HALF;
517 profile.motor_vref = 3;
518 motor.profiles.push_back(std::move(profile));
519
520 profile = MotorProfile();
521 profile.slope = MotorSlope::create_from_steps(34722 * 2, 454 * 2, 40);
522 profile.step_type = StepType::HALF;
523 profile.motor_vref = 0;
524 motor.fast_profiles.push_back(std::move(profile));
525
526 s_motors->push_back(std::move(motor));
527
528
529 motor = Genesys_Motor();
530 motor.id = MotorId::PLUSTEK_OPTICFILM_7300;
531 motor.base_ydpi = 3600;
532
533 profile = MotorProfile();
534 profile.slope = MotorSlope::create_from_steps(56818 * 4, 454 * 4, 30);
535 profile.step_type = StepType::QUARTER;
536 profile.motor_vref = 3;
537 motor.profiles.push_back(std::move(profile));
538
539 profile = MotorProfile();
540 profile.slope = MotorSlope::create_from_steps(56818 * 4, 454 * 4, 30);
541 profile.step_type = StepType::QUARTER;
542 profile.motor_vref = 0;
543 motor.fast_profiles.push_back(std::move(profile));
544
545 s_motors->push_back(std::move(motor));
546
547
548 motor = Genesys_Motor();
549 motor.id = MotorId::PLUSTEK_OPTICFILM_7400;
550 motor.base_ydpi = 3600;
551
552 profile = MotorProfile();
553 profile.slope = MotorSlope::create_from_steps(64102 * 4, 400 * 4, 30);
554 profile.step_type = StepType::QUARTER;
555 profile.motor_vref = 3;
556 motor.profiles.push_back(profile);
557 motor.fast_profiles.push_back(profile);
558 s_motors->push_back(std::move(motor));
559
560
561 motor = Genesys_Motor();
562 motor.id = MotorId::PLUSTEK_OPTICFILM_7500I;
563 motor.base_ydpi = 3600;
564
565 profile = MotorProfile();
566 profile.slope = MotorSlope::create_from_steps(56818 * 4, 454 * 4, 30);
567 profile.step_type = StepType::QUARTER;
568 profile.motor_vref = 3;
569 motor.profiles.push_back(std::move(profile));
570
571 profile = MotorProfile();
572 profile.slope = MotorSlope::create_from_steps(56818 * 4, 454 * 4, 30);
573 profile.step_type = StepType::QUARTER;
574 profile.motor_vref = 0;
575 motor.fast_profiles.push_back(std::move(profile));
576
577 s_motors->push_back(std::move(motor));
578
579
580 motor = Genesys_Motor();
581 motor.id = MotorId::PLUSTEK_OPTICFILM_8200I;
582 motor.base_ydpi = 3600;
583
584 profile = MotorProfile();
585 profile.slope = MotorSlope::create_from_steps(64102 * 4, 400 * 4, 100);
586 profile.step_type = StepType::QUARTER;
587 profile.motor_vref = 3;
588 motor.profiles.push_back(profile);
589 motor.fast_profiles.push_back(profile);
590 s_motors->push_back(std::move(motor));
591
592
593 motor = Genesys_Motor();
594 motor.id = MotorId::IMG101;
595 motor.base_ydpi = 600;
596 motor.profiles.push_back({MotorSlope::create_from_steps(22000, 1000, 1017),
597 StepType::HALF, 11000});
598 s_motors->push_back(std::move(motor));
599
600
601 motor = Genesys_Motor();
602 motor.id = MotorId::PLUSTEK_OPTICBOOK_3800;
603 motor.base_ydpi = 600;
604 motor.profiles.push_back({MotorSlope::create_from_steps(22000, 1000, 1017),
605 StepType::HALF, 11000});
606 s_motors->push_back(std::move(motor));
607
608
609 motor = Genesys_Motor();
610 motor.id = MotorId::CANON_LIDE_80;
611 motor.base_ydpi = 2400;
612 motor.profiles.push_back({MotorSlope::create_from_steps(9560, 1912, 31), StepType::FULL, 0});
613 s_motors->push_back(std::move(motor));
614 }
615
616 } // namespace genesys
617