sane-project-backends/backend/genesys/tables_motor_profile.cpp

1479 wiersze
72 KiB
C++

/* sane - Scanner Access Now Easy.
Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
This file is part of the SANE package.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA.
As a special exception, the authors of SANE give permission for
additional uses of the libraries contained in this release of SANE.
The exception is that, if you link a SANE library with other files
to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public
License. Your use of that executable is in no way restricted on
account of linking the SANE library code into it.
This exception does not, however, invalidate any other reasons why
the executable file might be covered by the GNU General Public
License.
If you submit changes to SANE to the maintainers to be included in
a subsequent release, you agree by submitting the changes that
those changes may be distributed with this exception intact.
If you write modifications of your own for SANE, it is your choice
whether to permit this exception to apply to your modifications.
If you do not wish that, delete this exception notice.
*/
#define DEBUG_DECLARE_ONLY
#include "low.h"
namespace genesys {
// This file contains reference motor slope tables.
// The tables are directly extracted from USB logs, with a termination value of 0
static uint32_t kvss080[] = {
44444, 34188, 32520, 29630, 26666, 24242, 22222, 19048, 16666, 15686,
14814, 14034, 12402, 11110, 8888, 7618, 6666, 5926, 5228, 4678,
4172, 3682, 3336, 3074, 2866, 2702, 2566, 2450, 2352, 2266,
2188, 2118, 2056, 2002, 1950, 1904, 1860, 1820, 1784, 1748,
1716, 1684, 1656, 1628, 1600, 1576, 1552, 1528, 1506, 1486,
1466, 1446, 1428, 1410, 1394, 1376, 1360, 1346, 1330, 1316,
1302, 1288, 1276, 1264, 1250, 1238, 1228, 1216, 1206, 1194,
1184, 1174, 1164, 1154, 1146, 1136, 1128, 1120, 1110, 1102,
1094, 1088, 1080, 1072, 1064, 1058, 1050, 1044, 1038, 1030,
1024, 1018, 1012, 1006, 1000, 994, 988, 984, 978, 972,
968, 962, 958, 952, 948, 942, 938, 934, 928, 924,
920, 916, 912, 908, 904, 900, 896, 892, 888, 884,
882, 878, 874, 870, 868, 864, 860, 858, 854, 850,
848, 844, 842, 838, 836, 832, 830, 826, 824, 822,
820, 816, 814, 812, 808, 806, 804, 802, 800, 796,
794, 792, 790, 788, 786, 784, 782, 778, 776, 774,
772, 770, 768, 766, 764, 762, 760, 758, 756, 754,
752, 750, 750, 748, 746, 744, 742, 740, 738, 736,
734, 734, 732, 730, 728, 726, 724, 724, 722, 720,
718, 716, 716, 714, 712, 710, 710, 708, 706, 704,
704, 702, 700, 698, 698, 696, 694, 694, 692, 690,
690, 688, 686, 686, 684, 682, 682, 680, 678, 678,
676, 674, 674, 672, 672, 670, 668, 668, 666, 666,
664, 662, 662, 660, 660, 658, 656, 656, 654, 654,
652, 652, 650, 650, 648, 646, 646, 644, 644, 642,
642, 640, 640, 638, 638, 636, 636, 636, 634, 634,
632, 632, 630, 630, 628, 628, 626, 626, 624, 624,
624, 622, 622, 620, 620, 618, 618, 618, 616, 616,
614, 614, 612, 612, 612, 610, 610, 608, 608, 608,
606, 606, 606, 604, 604, 602, 602, 602, 600, 600,
600, 598, 598, 596, 596, 596, 594, 594, 594, 592,
592, 592, 590, 590, 590, 588, 588, 588, 586, 586,
586, 584, 584, 584, 582, 582, 582, 590, 590, 590,
588, 588, 588, 586, 586, 586, 584, 584, 584, 582,
582, 582, 580, 580, 580, 578, 578, 578, 576, 576,
576, 576, 574, 574, 574, 572, 572, 572, 570, 570,
570, 568, 568, 568, 568, 566, 566, 566, 564, 564,
564, 562, 562, 562, 562, 560, 560, 560, 558, 558,
558, 558, 556, 556, 556, 554, 554, 554, 552, 552,
552, 552, 550, 550, 550, 548, 548, 548, 548, 546,
546, 546, 546, 544, 544, 544, 542, 542, 542, 542,
540, 540, 540, 538, 538, 538, 538, 536, 536, 536,
536, 534, 534, 534, 534, 532, 532, 532, 530, 530,
530, 530, 528, 528, 528, 528, 526, 526, 526, 526,
524, 524, 524, 524, 522, 522, 522, 522, 520, 520,
520, 520, 518, 518, 518, 516, 516, 516, 516, 514,
514, 514, 514, 514, 512, 512, 512, 512, 510, 510,
510, 510, 508, 508, 508, 508, 506, 506, 506, 506,
504, 504, 504, 504, 502, 502, 502, 502, 500, 500,
500, 500, 0
};
static uint32_t g4050_fast[] = {
7842, 5898, 4384, 4258, 4152, 4052, 3956, 3864, 3786, 3714,
3632, 3564, 3498, 3444, 3384, 3324, 3276, 3228, 3174, 3128,
3086, 3044, 3002, 2968, 2930, 2892, 2860, 2824, 2794, 2760,
2732, 2704, 2676, 2650, 2618, 2594, 2568, 2548, 2524, 2500,
2478, 2454, 2436, 2414, 2392, 2376, 2354, 2338, 2318, 2302,
2282, 2266, 2252, 2232, 2218, 2202, 2188, 2174, 2160, 2142,
2128, 2116, 2102, 2088, 2076, 2062, 2054, 2040, 2028, 2020,
2014, 2008, 2004, 2002, 2002, 2002, 1946, 1882, 1826, 1770,
1716, 1662, 1612, 1568, 1526, 1488, 1454, 1422, 1390, 1362,
1336, 1310, 1288, 1264, 1242, 1222, 1204, 1184, 1166, 1150,
1134, 1118, 1104, 1090, 1076, 1064, 1050, 1038, 1026, 1016,
1004, 994, 984, 972, 964, 954, 944, 936, 928, 920,
910, 902, 896, 888, 880, 874, 866, 860, 854, 848,
840, 834, 828, 822, 816, 812, 806, 800, 796, 790,
784, 780, 776, 770, 766, 760, 756, 752, 748, 744,
740, 736, 732, 728, 724, 720, 716, 712, 708, 704,
702, 698, 694, 690, 688, 684, 682, 678, 674, 672,
668, 666, 662, 660, 656, 654, 650, 648, 646, 644,
640, 638, 636, 632, 630, 628, 624, 622, 620, 618,
616, 614, 610, 608, 606, 604, 602, 600, 598, 596,
594, 592, 590, 588, 586, 584, 582, 580, 578, 576,
574, 572, 570, 568, 566, 564, 564, 562, 560, 558,
556, 554, 552, 552, 550, 548, 546, 546, 544, 542,
540, 538, 538, 536, 534, 532, 532, 530, 528, 528,
526, 524, 522, 522, 520, 518, 518, 516, 514, 514,
512, 512, 510, 508, 508, 506, 504, 504, 502, 502,
500, 498, 498, 496, 496, 494, 494, 492, 490, 490,
488, 488, 486, 486, 484, 484, 482, 480, 480, 478,
478, 476, 476, 474, 474, 472, 472, 470, 470, 468,
468, 468, 466, 466, 464, 464, 462, 462, 460, 460,
458, 458, 456, 456, 456, 454, 454, 452, 452, 450,
450, 450, 448, 448, 446, 446, 444, 444, 444, 442,
442, 440, 440, 440, 438, 438, 438, 436, 436, 434,
434, 434, 432, 432, 432, 430, 430, 428, 428, 428,
426, 426, 426, 424, 424, 424, 422, 422, 422, 420,
420, 420, 418, 418, 418, 416, 416, 416, 414, 414,
414, 412, 412, 412, 410, 410, 410, 408, 408, 408,
406, 406, 406, 404, 404, 404, 404, 402, 402, 402,
400, 400, 400, 400, 398, 398, 398, 396, 396, 396,
396, 394, 394, 394, 392, 392, 392, 392, 390, 390,
390, 388, 388, 388, 388, 386, 386, 386, 386, 384,
384, 384, 384, 382, 382, 382, 382, 380, 380, 380,
380, 378, 378, 378, 378, 376, 376, 376, 376, 376,
374, 374, 374, 374, 374, 372, 372, 372, 372, 372,
370, 370, 370, 370, 370, 368, 368, 368, 368, 368,
366, 366, 366, 366, 366, 364, 364, 364, 364, 364,
364, 362, 362, 362, 362, 362, 360, 360, 360, 360,
360, 360, 358, 358, 358, 358, 358, 358, 356, 356,
356, 356, 356, 356, 354, 354, 354, 354, 354, 352,
352, 352, 352, 352, 352, 350, 350, 350, 350, 350,
350, 350, 348, 348, 348, 348, 348, 348, 346, 346,
346, 346, 346, 346, 344, 344, 344, 344, 344, 344,
344, 342, 342, 342, 342, 342, 342, 340, 340, 340,
340, 340, 340, 340, 338, 338, 338, 338, 338, 338,
338, 336, 336, 336, 336, 336, 336, 336, 334, 334,
334, 334, 334, 334, 334, 332, 332, 332, 332, 332,
332, 332, 332, 330, 330, 330, 330, 330, 330, 330,
328, 328, 328, 328, 328, 328, 328, 328, 326, 326,
326, 326, 326, 326, 326, 324, 324, 324, 324, 324,
324, 324, 324, 322, 322, 322, 322, 322, 322, 322,
322, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
320, 320, 320, 320, 320, 320, 320, 320, 320, 320,
0
};
static uint32_t g4050_high[] = {
28032, 28032, 28032, 28032, 28032, 28032, 28032, 28032, 27668, 27024,
26479, 25975, 25402, 24926, 24465, 24087, 23667, 23248, 22912, 22576,
22198, 21877, 21583, 21289, 20996, 20758, 20492, 20226, 20002, 19751,
19541, 19303, 19107, 18911, 18715, 18534, 18310, 18142, 17960, 17820,
17652, 17485, 17331, 17163, 17037, 16883, 16729, 16617, 16463, 16352,
16212, 16100, 15960, 15848, 15750, 15610, 15512, 15400, 15302, 15204,
15107, 14981, 14883, 14799, 14701, 14603, 14519, 14421, 14365, 14267,
14183, 14127, 14085, 14043, 14016, 14002, 14002, 14002, 13610, 13162,
12771, 12379, 12001, 11624, 11274, 10966, 10672, 10407, 10169, 9945,
9721, 9525, 9344, 9162, 9008, 8840, 8686, 8546, 8420, 8280,
8155, 8043, 7931, 7819, 7721, 7623, 7525, 7441, 7343, 7259,
7175, 7105, 7021, 6952, 6882, 6798, 6742, 6672, 6602, 6546,
6490, 6434, 6364, 6308, 6266, 6210, 6154, 6112, 6056, 6014,
5972, 5930, 5874, 5833, 5791, 5749, 5707, 5679, 5637, 5595,
5567, 5525, 5483, 5455, 5427, 5385, 5357, 5315, 5287, 5259,
5231, 5203, 5175, 5147, 5119, 5091, 5063, 5035, 5007, 4979,
4951, 4923, 4909, 4881, 4853, 4825, 4811, 4783, 4769, 4741,
4713, 4699, 4672, 4658, 4630, 4616, 4588, 4574, 4546, 4532,
4518, 4504, 4476, 4462, 4448, 4420, 4406, 4392, 4364, 4350,
4336, 4322, 4308, 4294, 4266, 4252, 4238, 4224, 4210, 4196,
4182, 4168, 4154, 4140, 4126, 4112, 4098, 4084, 4070, 4056,
4042, 4028, 4014, 4000, 3986, 3972, 3958, 3944, 3944, 3930,
3916, 3902, 3888, 3874, 3860, 3860, 3846, 3832, 3818, 3818,
3804, 3790, 3776, 3762, 3762, 3748, 3734, 3720, 3720, 3706,
3692, 3692, 3678, 3664, 3650, 3650, 3636, 3622, 3622, 3608,
3594, 3594, 3580, 3580, 3566, 3552, 3552, 3538, 3524, 3524,
3510, 3510, 3497, 3483, 3483, 3469, 3469, 3455, 3455, 3441,
3427, 3427, 3413, 3413, 3399, 3399, 3385, 3385, 3371, 3357,
3357, 3343, 3343, 3329, 3329, 3315, 3315, 3301, 3301, 3287,
3287, 3273, 3273, 3273, 3259, 3259, 3245, 3245, 3231, 3231,
3217, 3217, 3203, 3203, 3189, 3189, 3189, 3175, 3175, 3161,
3161, 3147, 3147, 3147, 3133, 3133, 3119, 3119, 3105, 3105,
3105, 3091, 3091, 3077, 3077, 3077, 3063, 3063, 3063, 3049,
3049, 3035, 3035, 3035, 3021, 3021, 3021, 3007, 3007, 2993,
2993, 2993, 2979, 2979, 2979, 2965, 2965, 2965, 2951, 2951,
2951, 2937, 2937, 2937, 2923, 2923, 2923, 2909, 2909, 2909,
2895, 2895, 2895, 2881, 2881, 2881, 2867, 2867, 2867, 2853,
2853, 2853, 2839, 2839, 2839, 2825, 2825, 2825, 2825, 2811,
2811, 2811, 2797, 2797, 2797, 2797, 2783, 2783, 2783, 2769,
2769, 2769, 2769, 2755, 2755, 2755, 2741, 2741, 2741, 2741,
2727, 2727, 2727, 2713, 2713, 2713, 2713, 2699, 2699, 2699,
2699, 2685, 2685, 2685, 2685, 2671, 2671, 2671, 2671, 2657,
2657, 2657, 2657, 2643, 2643, 2643, 2643, 2629, 2629, 2629,
2629, 2629, 2615, 2615, 2615, 2615, 2615, 2601, 2601, 2601,
2601, 2601, 2587, 2587, 2587, 2587, 2587, 2573, 2573, 2573,
2573, 2573, 2559, 2559, 2559, 2559, 2559, 2545, 2545, 2545,
2545, 2545, 2545, 2531, 2531, 2531, 2531, 2531, 2517, 2517,
2517, 2517, 2517, 2517, 2503, 2503, 2503, 2503, 2503, 2503,
2489, 2489, 2489, 2489, 2489, 2489, 2475, 2475, 2475, 2475,
2475, 2461, 2461, 2461, 2461, 2461, 2461, 2447, 2447, 2447,
2447, 2447, 2447, 2447, 2433, 2433, 2433, 2433, 2433, 2433,
2419, 2419, 2419, 2419, 2419, 2419, 2405, 2405, 2405, 2405,
2405, 2405, 2405, 2391, 2391, 2391, 2391, 2391, 2391, 2377,
2377, 2377, 2377, 2377, 2377, 2377, 2363, 2363, 2363, 2363,
2363, 2363, 2363, 2349, 2349, 2349, 2349, 2349, 2349, 2349,
2336, 2336, 2336, 2336, 2336, 2336, 2336, 2322, 2322, 2322,
2322, 2322, 2322, 2322, 2322, 2308, 2308, 2308, 2308, 2308,
2308, 2308, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294,
2280, 2280, 2280, 2280, 2280, 2280, 2280, 2266, 2266, 2266,
2266, 2266, 2266, 2266, 2266, 2252, 2252, 2252, 2252, 2252,
2252, 2252, 2252, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238, 2238,
2238, 2238, 0
};
static uint32_t g4050_max[] = {
42752, 42752, 42752, 42752, 42752, 42752, 42752, 42752, 41824, 31456,
23381, 22709, 22144, 21610, 21098, 20608, 20192, 19808, 19370, 19008,
18656, 18368, 18048, 17728, 17472, 17216, 16928, 16682, 16458, 16234,
16010, 15829, 15626, 15424, 15253, 15061, 14901, 14720, 14570, 14421,
14272, 14133, 13962, 13834, 13696, 13589, 13461, 13333, 13216, 13088,
12992, 12874, 12757, 12672, 12554, 12469, 12362, 12277, 12170, 12085,
12010, 11904, 11829, 11744, 11669, 11594, 11520, 11424, 11349, 11285,
11210, 11136, 11072, 10997, 10954, 10880, 10816, 10773, 10741, 10709,
10688, 10677, 10677, 10677, 10378, 10037, 9738, 9440, 9152, 8864,
8597, 8362, 8138, 7936, 7754, 7584, 7413, 7264, 7125, 6986,
6869, 6741, 6624, 6517, 6421, 6314, 6218, 6133, 6048, 5962,
5888, 5813, 5738, 5674, 5600, 5536, 5472, 5418, 5354, 5301,
5248, 5184, 5141, 5088, 5034, 4992, 4949, 4906, 4853, 4810,
4778, 4736, 4693, 4661, 4618, 4586, 4554, 4522, 4480, 4448,
4416, 4384, 4352, 4330, 4298, 4266, 4245, 4213, 4181, 4160,
4138, 4106, 4085, 4053, 4032, 4010, 3989, 3968, 3946, 3925,
3904, 3882, 3861, 3840, 3818, 3797, 3776, 3754, 3744, 3722,
3701, 3680, 3669, 3648, 3637, 3616, 3594, 3584, 3562, 3552,
3530, 3520, 3498, 3488, 3466, 3456, 3445, 3434, 3413, 3402,
3392, 3370, 3360, 3349, 3328, 3317, 3306, 3296, 3285, 3274,
3253, 3242, 3232, 3221, 3210, 3200, 3189, 3178, 3168, 3157,
3146, 3136, 3125, 3114, 3104, 3093, 3082, 3072, 3061, 3050,
3040, 3029, 3018, 3008, 3008, 2997, 2986, 2976, 2965, 2954,
2944, 2944, 2933, 2922, 2912, 2912, 2901, 2890, 2880, 2869,
2869, 2858, 2848, 2837, 2837, 2826, 2816, 2816, 2805, 2794,
2784, 2784, 2773, 2762, 2762, 2752, 2741, 2741, 2730, 2730,
2720, 2709, 2709, 2698, 2688, 2688, 2677, 2677, 2666, 2656,
2656, 2645, 2645, 2634, 2634, 2624, 2613, 2613, 2602, 2602,
2592, 2592, 2581, 2581, 2570, 2560, 2560, 2549, 2549, 2538,
2538, 2528, 2528, 2517, 2517, 2506, 2506, 2496, 2496, 2496,
2485, 2485, 2474, 2474, 2464, 2464, 2453, 2453, 2442, 2442,
2432, 2432, 2432, 2421, 2421, 2410, 2410, 2400, 2400, 2400,
2389, 2389, 2378, 2378, 2368, 2368, 2368, 2357, 2357, 2346,
2346, 2346, 2336, 2336, 2336, 2325, 2325, 2314, 2314, 2314,
2304, 2304, 2304, 2293, 2293, 2282, 2282, 2282, 2272, 2272,
2272, 2261, 2261, 2261, 2250, 2250, 2250, 2240, 2240, 2240,
2229, 2229, 2229, 2218, 2218, 2218, 2208, 2208, 2208, 2197,
2197, 2197, 2186, 2186, 2186, 2176, 2176, 2176, 2165, 2165,
2165, 2154, 2154, 2154, 2154, 2144, 2144, 2144, 2133, 2133,
2133, 2133, 2122, 2122, 2122, 2112, 2112, 2112, 2112, 2101,
2101, 2101, 2090, 2090, 2090, 2090, 2080, 2080, 2080, 2069,
2069, 2069, 2069, 2058, 2058, 2058, 2058, 2048, 2048, 2048,
2048, 2037, 2037, 2037, 2037, 2026, 2026, 2026, 2026, 2016,
2016, 2016, 2016, 2005, 2005, 2005, 2005, 2005, 1994, 1994,
1994, 1994, 1994, 1984, 1984, 1984, 1984, 1984, 1973, 1973,
1973, 1973, 1973, 1962, 1962, 1962, 1962, 1962, 1952, 1952,
1952, 1952, 1952, 1941, 1941, 1941, 1941, 1941, 1941, 1930,
1930, 1930, 1930, 1930, 1920, 1920, 1920, 1920, 1920, 1920,
1909, 1909, 1909, 1909, 1909, 1909, 1898, 1898, 1898, 1898,
1898, 1898, 1888, 1888, 1888, 1888, 1888, 1877, 1877, 1877,
1877, 1877, 1877, 1866, 1866, 1866, 1866, 1866, 1866, 1866,
1856, 1856, 1856, 1856, 1856, 1856, 1845, 1845, 1845, 1845,
1845, 1845, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1824,
1824, 1824, 1824, 1824, 1824, 1813, 1813, 1813, 1813, 1813,
1813, 1813, 1802, 1802, 1802, 1802, 1802, 1802, 1802, 1792,
1792, 1792, 1792, 1792, 1792, 1792, 1781, 1781, 1781, 1781,
1781, 1781, 1781, 1770, 1770, 1770, 1770, 1770, 1770, 1770,
1770, 1760, 1760, 1760, 1760, 1760, 1760, 1760, 1749, 1749,
1749, 1749, 1749, 1749, 1749, 1749, 1738, 1738, 1738, 1738,
1738, 1738, 1738, 1728, 1728, 1728, 1728, 1728, 1728, 1728,
1728, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1717, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706,
1706, 1706, 1706, 1706, 1706, 1706, 1706, 1706, 0
};
static uint32_t g4050_xpa[] = {
9422, 5978, 4736, 4028, 3560, 3220, 2914, 2756, 2588, 2448,
2328, 2224, 2132, 2052, 1978, 1914, 1854, 1800, 1752, 1706,
1664, 1626, 1588, 1554, 1522, 1492, 1464, 1438, 1412, 1388,
1366, 1344, 1324, 1304, 1284, 1268, 1250, 1232, 1218, 1202,
1188, 1172, 1160, 1146, 1134, 1120, 1110, 1098, 1086, 1076,
1066, 1056, 1046, 1036, 1026, 1018, 1008, 1000, 992, 984,
976, 968, 960, 952, 946, 938, 932, 924, 918, 912,
906, 898, 892, 888, 882, 876, 870, 864, 860, 854,
848, 844, 838, 834, 828, 824, 820, 814, 810, 806,
802, 798, 794, 790, 786, 782, 778, 774, 770, 766,
762, 758, 754, 752, 748, 744, 740, 738, 734, 730,
728, 724, 722, 718, 716, 712, 710, 706, 704, 700,
698, 696, 692, 690, 686, 684, 682, 678, 676, 674,
672, 668, 666, 664, 662, 660, 656, 654, 652, 650,
648, 646, 644, 642, 638, 636, 634, 632, 630, 628,
626, 624, 622, 620, 618, 616, 614, 612, 612, 610,
608, 606, 604, 602, 600, 598, 596, 594, 594, 592,
590, 588, 586, 584, 584, 582, 580, 578, 576, 576,
574, 572, 570, 570, 568, 566, 564, 564, 562, 560,
560, 558, 556, 554, 554, 552, 550, 550, 548, 546,
546, 544, 542, 542, 540, 540, 538, 536, 536, 534,
532, 532, 530, 530, 528, 526, 526, 524, 524, 522,
522, 520, 518, 518, 516, 516, 514, 514, 512, 512,
510, 508, 508, 506, 506, 504, 504, 502, 502, 500,
500, 498, 498, 496, 496, 494, 494, 492, 492, 492,
490, 490, 488, 488, 486, 486, 484, 484, 482, 482,
480, 480, 480, 478, 478, 476, 476, 474, 474, 474,
472, 472, 470, 470, 468, 468, 468, 466, 466, 464,
464, 464, 462, 462, 462, 460, 460, 458, 458, 458,
456, 456, 454, 454, 454, 452, 452, 452, 450, 450,
450, 448, 448, 446, 446, 446, 444, 444, 444, 442,
442, 442, 440, 440, 440, 438, 438, 438, 436, 436,
436, 434, 434, 434, 432, 432, 432, 430, 430, 430,
430, 428, 428, 428, 426, 426, 426, 424, 424, 424,
424, 422, 422, 422, 420, 420, 420, 418, 418, 418,
418, 416, 416, 416, 414, 414, 414, 414, 412, 412,
412, 412, 410, 410, 410, 408, 408, 408, 408, 406,
406, 406, 406, 404, 404, 404, 404, 402, 402, 402,
402, 400, 400, 400, 400, 398, 398, 398, 398, 396,
396, 396, 396, 394, 394, 394, 394, 392, 392, 392,
392, 392, 390, 390, 390, 390, 388, 388, 388, 388,
386, 386, 386, 386, 386, 384, 384, 384, 384, 384,
382, 382, 382, 382, 380, 380, 380, 380, 380, 378,
378, 378, 378, 378, 376, 376, 376, 376, 376, 374,
374, 374, 374, 374, 372, 372, 372, 372, 372, 370,
370, 370, 370, 370, 368, 368, 368, 368, 368, 366,
366, 366, 366, 366, 364, 364, 364, 364, 364, 364,
362, 362, 362, 362, 362, 360, 360, 360, 360, 360,
360, 358, 358, 358, 358, 358, 358, 356, 356, 356,
356, 356, 354, 354, 354, 354, 354, 354, 352, 352,
352, 352, 352, 352, 350, 350, 350, 350, 350, 350,
350, 348, 348, 348, 348, 348, 348, 346, 346, 346,
346, 346, 346, 344, 344, 344, 344, 344, 344, 344,
342, 342, 342, 342, 342, 342, 340, 340, 340, 340,
340, 340, 340, 338, 338, 338, 338, 338, 338, 338,
336, 336, 336, 336, 336, 336, 336, 334, 334, 334,
334, 334, 334, 334, 332, 332, 332, 332, 332, 332,
332, 330, 330, 330, 330, 330, 330, 330, 330, 328,
328, 328, 328, 328, 328, 328, 326, 326, 326, 326,
326, 326, 326, 326, 324, 324, 324, 324, 324, 324,
324, 324, 322, 322, 322, 322, 322, 322, 322, 322,
320, 320, 320, 320, 320, 320, 320, 320, 318, 318,
318, 318, 318, 318, 318, 318, 318, 316, 316, 316,
316, 316, 316, 316, 316, 314, 314, 314, 314, 314,
314, 314, 314, 314, 312, 312, 312, 312, 312, 312,
312, 312, 312, 310, 310, 310, 310, 310, 310, 310,
310, 310, 308, 308, 308, 308, 308, 308, 308, 308,
308, 306, 306, 306, 306, 306, 306, 306, 306, 306,
306, 304, 304, 304, 304, 304, 304, 304, 304, 304,
302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
300, 300, 300, 300, 300, 300, 300, 300, 300, 300,
298, 298, 298, 298, 298, 298, 298, 298, 298, 298,
298, 296, 296, 296, 296, 296, 296, 296, 296, 296,
296, 294, 294, 294, 294, 294, 294, 294, 294, 294,
294, 294, 292, 292, 292, 292, 292, 292, 292, 292,
292, 292, 292, 290, 290, 290, 290, 290, 290, 290,
290, 290, 290, 290, 288, 288, 288, 288, 288, 288,
288, 288, 288, 288, 288, 288, 286, 286, 286, 286,
286, 286, 286, 286, 286, 286, 286, 286, 284, 284,
284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
282, 282, 282, 282, 282, 282, 282, 282, 282, 282,
282, 282, 280, 280, 280, 280, 280, 280, 280, 280,
280, 280, 280, 280, 280, 278, 278, 278, 278, 278,
278, 278, 278, 278, 278, 278, 278, 278, 276, 276,
276, 276, 276, 276, 276, 276, 276, 276, 276, 276,
276, 274, 274, 274, 274, 274, 274, 274, 274, 274,
274, 274, 274, 274, 274, 272, 272, 272, 272, 272,
272, 272, 272, 272, 272, 272, 272, 272, 272, 270,
270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
270, 270, 270, 268, 268, 268, 268, 268, 268, 268,
268, 268, 268, 268, 268, 268, 268, 268, 266, 266,
266, 266, 266, 266, 266, 266, 266, 266, 266, 266,
266, 266, 266, 264, 264, 264, 264, 264, 264, 264,
264, 264, 264, 264, 264, 264, 264, 264, 262, 262,
262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
262, 262, 262, 262, 260, 260, 260, 260, 260, 260,
260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
258, 258, 258, 258, 258, 258, 258, 258, 258, 258,
258, 258, 258, 258, 258, 258, 256, 256, 256, 256,
256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
256, 256, 256, 254, 254, 254, 254, 254, 254, 254,
254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
0
};
static uint32_t motor_speeds_cs4400f_1[] = {
49152, 49152, 31144, 23652, 19538, 16822, 14908, 13442, 12288, 11356,
10590, 9922, 9362, 8886, 8456, 8064, 7728, 7418, 7148, 6882,
6664, 6446, 6252, 6060, 5890, 5740, 5586, 5450, 5322, 5198,
5080, 4968, 4868, 4766, 4674, 4584, 4500, 4418, 4338, 4262,
4194, 4122, 4058, 3996, 3932, 3874, 3816, 3766, 3712, 3662,
3610, 3566, 3518, 3474, 3430, 3388, 3350, 3310, 3272, 3236,
3200, 3164, 3130, 3096, 3062, 3032, 3000, 2972, 2942, 2914,
2884, 2858, 2832, 2806, 2780, 2756, 2732, 2708, 2686, 2662,
2640, 2618, 2596, 2576, 2554, 2536, 2516, 2496, 2478, 2458,
2440, 2422, 2404, 2388, 2370, 2354, 2338, 2320, 2306, 2290,
2276, 2258, 2244, 2230, 2216, 2202, 2188, 2174, 2162, 2148,
2134, 2122, 2108, 2096, 2084, 2072, 2060, 2048, 2036, 2026,
2014, 2002, 1992, 1982, 1970, 1960, 1950, 1940, 1928, 1920,
1908, 1900, 1890, 1880, 1872, 1862, 1852, 1844, 1834, 1826,
1818, 1808, 1800, 1792, 1784, 1776, 1768, 1760, 1752, 1742,
1736, 1728, 1720, 1712, 1704, 1698, 1690, 1684, 1676, 1670,
1662, 1656, 1648, 1642, 1634, 1628, 1622, 1616, 1608, 1602,
1596, 1590, 1584, 1578, 1572, 1566, 1560, 1554, 1548, 1542,
1536, 1532, 1526, 1520, 1514, 1508, 1504, 1498, 1492, 1488,
1482, 1478, 1472, 1466, 1462, 1456, 1452, 1446, 1442, 1438,
1432, 1428, 1424, 1418, 1414, 1410, 1404, 1400, 1396, 1390,
1386, 1382, 1378, 1374, 1370, 1364, 1360, 1356, 1352, 1348,
1344, 1340, 1336, 1332, 1328, 1324, 1320, 1316, 1312, 1308,
1304, 1302, 1298, 1294, 1290, 1286, 1282, 1278, 1276, 1272,
1268, 1264, 1262, 1258, 1254, 1250, 1248, 1244, 1240, 1238,
1234, 1230, 1228, 1224, 1222, 1218, 1214, 1212, 1208, 1206,
1202, 1200, 1196, 1194, 1190, 1186, 1184, 1182, 1178, 1176,
1172, 1170, 1166, 1164, 1162, 1158, 1156, 1152, 1150, 1148,
1144, 1142, 1138, 1136, 1134, 1130, 1128, 1126, 1122, 1120,
1118, 1116, 1112, 1110, 1108, 1106, 1102, 1100, 1098, 1096,
1092, 1090, 1088, 1086, 1082, 1080, 1078, 1076, 1074, 1072,
1068, 1066, 1064, 1062, 1060, 1058, 1056, 1054, 1052, 1048,
1046, 1044, 1042, 1040, 1038, 1036, 1034, 1032, 1030, 1028,
1026, 1024, 1022, 1020, 1018, 1016, 1014, 1012, 1010, 1008,
1006, 1004, 1002, 1000, 998, 996, 994, 992, 990, 988,
986, 984, 982, 980, 978, 976, 974, 972, 972, 970,
968, 966, 964, 962, 960, 958, 956, 956, 954, 952,
950, 948, 946, 944, 944, 942, 940, 938, 936, 934,
934, 932, 930, 928, 926, 926, 924, 922, 920, 918,
918, 916, 914, 912, 912, 910, 908, 906, 904, 904,
902, 900, 898, 898, 896, 894, 892, 892, 890, 888,
888, 886, 884, 882, 882, 880, 878, 878, 876, 874,
874, 872, 870, 868, 868, 866, 864, 864, 862, 860,
860, 858, 856, 856, 854, 852, 852, 850, 848, 848,
846, 846, 844, 842, 842, 840, 838, 838, 836, 834,
834, 832, 832, 830, 828, 828, 826, 826, 824, 822,
822, 820, 820, 818, 816, 816, 814, 814, 812, 812,
810, 808, 808, 806, 806, 804, 802, 802, 800, 800,
798, 798, 796, 796, 794, 792, 792, 790, 790, 788,
788, 786, 786, 784, 784, 782, 782, 780, 780, 778,
778, 776, 774, 774, 772, 772, 770, 770, 768, 768,
766, 766, 764, 764, 762, 762, 760, 760, 758, 758,
758, 756, 756, 754, 754, 752, 752, 750, 750, 748,
748, 746, 746, 744, 744, 742, 742, 740, 740, 738,
738, 738, 736, 736, 734, 734, 732, 732, 730, 730,
730, 728, 728, 726, 726, 724, 724, 722, 722, 722,
720, 720, 718, 718, 718, 716, 716, 714, 714, 712,
712, 712, 710, 710, 708, 708, 708, 706, 706, 704,
704, 702, 702, 702, 700, 700, 698, 698, 698, 696,
696, 694, 694, 694, 692, 692, 692, 690, 690, 688,
688, 688, 686, 686, 684, 684, 684, 682, 682, 682,
680, 680, 680, 678, 678, 676, 676, 676, 674, 674,
674, 672, 672, 670, 670, 670, 668, 668, 668, 666,
666, 666, 664, 664, 664, 662, 662, 660, 660, 660,
658, 658, 658, 656, 656, 656, 654, 654, 654, 652,
652, 652, 650, 650, 650, 648, 648, 648, 646, 646,
646, 644, 644, 644, 642, 642, 642, 640, 640, 640,
640, 638, 638, 638, 636, 636, 636, 634, 634, 634,
632, 632, 632, 630, 630, 630, 630, 628, 628, 628,
626, 626, 626, 624, 624, 624, 624, 622, 622, 622,
620, 620, 620, 618, 618, 618, 618, 616, 616, 616,
614, 614, 614, 614, 612, 612, 612, 610, 610, 610,
610, 608, 608, 608, 606, 606, 606, 606, 604, 604,
604, 604, 602, 602, 602, 600, 600, 600, 600, 598,
598, 598, 598, 596, 596, 596, 594, 594, 594, 594,
592, 592, 592, 592, 590, 590, 590, 590, 588, 588,
588, 586, 586, 586, 586, 584, 584, 584, 584, 582,
582, 582, 582, 580, 580, 580, 580, 578, 578, 578,
578, 576, 576, 576, 576, 574, 574, 574, 574, 574,
572, 572, 572, 572, 570, 570, 570, 570, 568, 568,
568, 568, 566, 566, 566, 566, 564, 564, 564, 564,
564, 562, 562, 562, 562, 560, 560, 560, 560, 558,
558, 558, 558, 558, 556, 556, 556, 556, 554, 554,
554, 554, 554, 552, 552, 552, 552, 550, 550, 550,
550, 550, 548, 548, 548, 548, 546, 546, 546, 546,
546, 544, 544, 544, 544, 544, 542, 542, 542, 542,
540, 540, 540, 540, 540, 538, 538, 538, 538, 538,
536, 536, 536, 536, 536, 534, 534, 534, 534, 534,
532, 532, 532, 532, 532, 530, 530, 530, 530, 530,
528, 528, 528, 528, 528, 526, 526, 526, 526, 526,
524, 524, 524, 524, 524, 522, 522, 522, 522, 522,
520, 520, 520, 520, 520, 520, 518, 518, 518, 518,
518, 516, 516, 516, 516, 516, 514, 514, 514, 514,
514, 514, 512, 512, 512, 512, 512, 510, 510, 510,
510, 510, 510, 508, 508, 508, 508, 508, 506, 506,
506, 506, 506, 506, 504, 504, 504, 504, 504, 502,
502, 502, 502, 502, 502, 500, 500, 500, 500, 500,
500, 498, 498, 498, 498, 498, 498, 496, 496, 496,
496, 496, 496, 494, 494, 494, 494, 494, 494, 492,
492, 492, 492, 492, 492, 490, 490, 490, 490, 490,
490, 488, 488, 488, 488, 488, 488, 486, 486, 486,
486, 486, 486, 484, 484, 484, 484, 484, 484, 484,
0, 0, 0, 0, 0
};
static uint32_t cs8400f_fast[] = {
8743, 8205, 7017, 6201, 4938, 4016, 3371, 2966, 2682, 2469,
2296, 2159, 2041, 1942, 1857, 1782, 1716, 1656, 1602, 1554,
1510, 1470, 1432, 1398, 1366, 1336, 1309, 1282, 1258, 1235,
1213, 1193, 1173, 1154, 1137, 1120, 1104, 1089, 1074, 1060,
1047, 1034, 1022, 1010, 998, 987, 976, 966, 956, 946,
937, 928, 919, 911, 902, 894, 887, 879, 872, 864,
858, 851, 844, 838, 832, 825, 819, 814, 808, 802,
797, 792, 786, 781, 776, 771, 766, 762, 757, 753,
748, 744, 740, 736, 731, 728, 724, 720, 716, 712,
709, 705, 701, 698, 695, 691, 688, 685, 682, 679,
675, 672, 669, 666, 664, 661, 658, 655, 652, 650,
647, 644, 642, 639, 637, 634, 632, 629, 627, 625,
622, 620, 618, 616, 613, 611, 609, 607, 605, 603,
601, 599, 597, 595, 593, 591, 589, 587, 585, 583,
581, 580, 578, 576, 574, 573, 571, 569, 567, 566,
564, 563, 561, 559, 558, 556, 555, 553, 552, 550,
549, 547, 546, 544, 543, 542, 540, 539, 537, 536,
535, 533, 532, 531, 529, 528, 527, 526, 524, 523,
522, 521, 519, 518, 517, 516, 515, 514, 512, 511,
510, 509, 508, 507, 506, 505, 504, 502, 501, 500,
499, 498, 497, 496, 495, 494, 493, 492, 491, 490,
489, 488, 488, 487, 486, 485, 484, 483, 482, 481,
480, 479, 478, 477, 477, 476, 475, 474, 473, 472,
472, 471, 470, 469, 468, 467, 467, 466, 465, 464,
464, 463, 462, 461, 460, 460, 459, 458, 457, 457,
456, 455, 454, 454, 453, 452, 452, 451, 450, 449,
449, 448, 448, 447, 446, 446, 445, 444, 444, 443,
442, 442, 441, 440, 440, 439, 438, 438, 437, 437,
436, 435, 435, 434, 434, 433, 432, 432, 431, 431,
430, 429, 429, 428, 428, 427, 427, 426, 425, 425,
424, 424, 423, 423, 422, 422, 421, 421, 420, 420,
419, 419, 418, 417, 417, 416, 416, 416, 415, 414,
414, 414, 413, 412, 412, 412, 411, 411, 410, 410,
409, 409, 408, 408, 407, 407, 406, 406, 406, 405,
405, 404, 404, 403, 403, 402, 402, 402, 401, 401,
400, 400, 399, 399, 398, 398, 398, 397, 397, 396,
396, 396, 395, 395, 394, 394, 394, 393, 393, 392,
392, 392, 391, 391, 391, 390, 390, 389, 389, 389,
388, 388, 387, 387, 387, 386, 386, 385, 385, 385,
384, 384, 384, 383, 383, 383, 382, 382, 382, 381,
381, 381, 380, 380, 380, 379, 379, 379, 378, 378,
378, 377, 377, 377, 376, 376, 376, 375, 375, 375,
374, 374, 374, 373, 373, 373, 372, 372, 372, 371,
371, 371, 370, 370, 370, 370, 369, 369, 369, 368,
368, 368, 368, 367, 367, 367, 367, 366, 366, 366,
365, 365, 365, 365, 364, 364, 364, 363, 363, 363,
363, 362, 362, 362, 362, 361, 361, 361, 360, 360,
360, 360, 359, 359, 359, 358, 358, 358, 358, 357,
357, 357, 356, 356, 356, 356, 355, 355, 355, 355,
354, 354, 354, 354, 354, 353, 353, 353, 353, 352,
352, 352, 352, 352, 351, 351, 351, 351, 350, 350,
350, 350, 350, 349, 349, 349, 349, 348, 348, 348,
348, 348, 347, 347, 347, 347, 346, 346, 346, 346,
346, 345, 345, 345, 345, 344, 344, 344, 344, 344,
343, 343, 343, 343, 342, 342, 342, 342, 342, 341,
341, 341, 341, 340, 340, 340, 340, 340, 339, 339,
339, 339, 338, 338, 338, 338, 338, 337, 337, 337,
337, 337, 337, 336, 336, 336, 336, 336, 336, 335,
335, 335, 335, 335, 335, 334, 334, 334, 334, 334,
334, 333, 333, 333, 333, 333, 333, 332, 332, 332,
332, 332, 332, 331, 331, 331, 331, 331, 331, 330,
330, 330, 330, 330, 330, 329, 329, 329, 329, 329,
329, 328, 328, 328, 328, 328, 328, 327, 327, 327,
327, 327, 327, 326, 326, 326, 326, 326, 326, 325,
325, 325, 325, 325, 325, 324, 324, 324, 324, 324,
324, 323, 323, 323, 323, 323, 323, 322, 322, 322,
322, 322, 322, 321, 321, 321, 321, 321, 321, 320,
320, 320, 320, 320, 320, 319, 319, 319, 319, 319,
319, 318, 318, 318, 318, 318, 318, 317, 317, 317,
317, 317, 317, 316, 316, 316, 316, 316, 316, 315,
315, 315, 315, 315, 315, 314, 314, 314, 314, 314,
314, 313, 313, 313, 313, 313, 313, 312, 312, 312,
312, 312, 312, 311, 311, 311, 311, 311, 311, 310,
310, 310, 310, 310, 310, 309, 309, 309, 309, 309,
309, 308, 308, 308, 308, 308, 308, 307, 307, 307,
307, 307, 307, 306, 306, 306, 306, 306, 306, 305,
305, 305, 305, 305, 305, 304, 304, 304, 304, 304,
304, 303, 303, 303, 303, 303, 303, 302, 302, 302,
302, 302, 302, 302, 301, 301, 301, 301, 301, 301,
301, 301, 301, 300, 300, 300, 300, 300, 300, 300,
300, 300, 300, 300, 0, 0, 0, 0, 0
};
static uint32_t motor_speeds_cs8600f[] = {
54612, 54612, 34604, 26280, 21708, 18688, 16564, 14936, 13652, 12616,
11768, 11024, 10400, 9872, 9392, 8960, 8584, 8240, 7940, 7648,
7404, 7160, 6948, 6732, 6544, 6376, 6208, 6056, 5912, 5776,
5644, 5520, 5408, 5292, 5192, 5092, 5000, 4908, 4820, 4736,
4660, 4580, 4508, 4440, 4368, 4304, 4240, 4184, 4124, 4068,
4012, 3960, 3908, 3860, 3808, 3764, 3720, 3676, 3636, 3592,
3552, 3516, 3476, 3440, 3400, 3368, 3332, 3300, 3268, 3236,
3204, 3176, 3148, 3116, 3088, 3060, 3036, 3008, 2984, 2956,
2932, 2908, 2884, 2860, 2836, 2816, 2796, 2772, 2752, 2732,
2708, 2692, 2672, 2652, 2632, 2616, 2596, 2576, 2560, 2544,
2528, 2508, 2492, 2476, 2460, 2444, 2432, 2416, 2400, 2384,
2372, 2356, 2344, 2328, 2316, 2304, 2288, 2276, 2260, 2252,
2236, 2224, 2212, 2200, 2188, 2176, 2164, 2156, 2144, 2132,
2120, 2108, 2100, 2088, 2080, 2068, 2056, 2048, 2036, 2028,
2020, 2008, 2000, 1988, 1980, 1972, 1964, 1952, 1944, 1936,
1928, 1920, 1912, 1900, 1892, 1884, 1876, 1868, 1860, 1856,
1848, 1840, 1832, 1824, 1816, 1808, 1800, 1796, 1788, 1780,
1772, 1764, 1760, 1752, 1744, 1740, 1732, 1724, 1720, 1712,
1708, 1700, 1692, 1688, 1680, 1676, 1668, 1664, 1656, 1652,
1644, 1640, 1636, 1628, 1624, 1616, 1612, 1608, 1600, 1596,
1592, 1584, 1580, 1576, 1568, 1564, 1560, 1556, 1548, 1544,
1540, 1536, 1528, 1524, 1520, 1516, 1512, 1508, 1500, 0
};
static uint32_t motor_speeds_plustek_7200i_1[] = {
11000, 11000, 0
};
static uint32_t motor_speeds_plustek_7200i_2[] = {
15880, 15880, 0
};
static std::uint32_t motor_speeds_plustek_7300_1[] = {
31250, 3105, 2266, 1883, 1653, 1512, 1512, 0
};
static std::uint32_t motor_speeds_plustek_7500i_1[] = {
31250, 3105, 2266, 1883, 1653, 1512, 1512, 0
};
static std::uint32_t motor_speeds_plustek_7500i_2[] = {
31250, 3105, 2266, 1883, 1653, 1493, 1375, 1375, 0
};
/* TODO:
1800 dpi: 31250, 3105, 3025, 3025
3600 dpi: 31250, 6050, 6050
7200 dpi: 31250, 12100, 12100
isrd:
1800 dpi: 31250, 3105, 2750, 2750
3600 dpi: 31250, 5500, 5500,
7200 dpi: 31250, 11000, 11000,
*/
StaticInit<std::vector<Motor_Profile>> gl843_motor_profiles;
void genesys_init_motor_profile_tables_gl843()
{
gl843_motor_profiles.init();
auto profile = Motor_Profile();
profile.motor_id = MotorId::KVSS080;
profile.exposure = 8000;
profile.step_type = StepType::HALF;
profile.table = kvss080;
gl843_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::G4050;
profile.exposure = 8016;
profile.step_type = StepType::HALF;
profile.table = g4050_fast;
gl843_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::G4050;
profile.exposure = 15624;
profile.step_type = StepType::HALF;
profile.table = g4050_xpa;
gl843_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::G4050;
profile.exposure = 42752;
profile.step_type = StepType::QUARTER;
profile.table = g4050_max;
gl843_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::G4050;
profile.exposure = 56064;
profile.step_type = StepType::HALF;
profile.table = g4050_high;
gl843_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_4400F;
profile.exposure = 11640;
profile.step_type = StepType::HALF;
profile.table = motor_speeds_cs4400f_1;
gl843_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_8400F;
profile.exposure = 50000;
profile.step_type = StepType::QUARTER;
profile.table = cs8400f_fast;
gl843_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_8600F;
profile.exposure = 0x59d8;
profile.step_type = StepType::QUARTER;
profile.table = motor_speeds_cs8600f; // FIXME: if the exposure is lower then we'll select another motor
gl843_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::PLUSTEK_OPTICFILM_7200I;
profile.exposure = 0x19c8;
profile.step_type = StepType::HALF;
profile.table = motor_speeds_plustek_7200i_1;
gl843_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::PLUSTEK_OPTICFILM_7200I;
profile.exposure = 0x2538;
profile.step_type = StepType::HALF;
profile.table = motor_speeds_plustek_7200i_2;
gl843_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::PLUSTEK_OPTICFILM_7300;
profile.exposure = 0x2f44;
profile.step_type = StepType::QUARTER;
profile.table = motor_speeds_plustek_7300_1;
gl843_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::PLUSTEK_OPTICFILM_7500I;
profile.exposure = 0x2f44;
profile.step_type = StepType::QUARTER;
profile.table = motor_speeds_plustek_7500i_1;
gl843_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::PLUSTEK_OPTICFILM_7500I;
profile.exposure = 0x2af8;
profile.step_type = StepType::QUARTER;
profile.table = motor_speeds_plustek_7500i_2;
gl843_motor_profiles->push_back(profile);
}
/* base motor slopes in full step unit */
/* target=((exposure * dpi) / base_dpi)>>step_type; */
static uint32_t img101_high[] = {
22000, 22000, 22000, 18450, 15974, 14284, 13054, 12076, 11286, 10660,
10100, 9632, 9224, 8864, 8532, 8250, 7986, 7750, 7530, 7330,
7142, 6972, 6810, 6656, 6518, 6384, 6264, 6150, 6038, 5930,
5834, 5732, 5642, 5560, 5476, 5398, 5324, 5252, 5180, 5112,
5050, 4990, 4926, 4868, 4816, 4760, 4708, 4658, 4608, 4562,
4516, 4472, 4428, 4384, 4344, 4306, 4266, 4230, 4194, 4156,
4122, 4088, 4054, 4022, 3990, 3960, 3930, 3900, 3872, 3842,
3816, 3790, 3762, 3736, 3710, 3686, 3662, 3638, 3614, 3590,
3570, 3548, 3526, 3506, 3484, 3462, 3442, 3424, 3402, 3384,
3366, 3346, 3328, 3310, 3292, 3276, 3258, 3242, 3224, 3208,
3192, 3176, 3162, 3146, 3130, 3114, 3100, 3086, 3072, 3058,
3044, 3030, 3016, 3002, 2990, 2976, 2964, 2950, 2938, 2926,
2914, 2902, 2890, 2878, 2866, 2854, 2844, 2832, 2820, 2810,
2800, 2790, 2778, 2768, 2756, 2748, 2738, 2726, 2716, 2708,
2698, 2688, 2678, 2668, 2660, 2650, 2642, 2632, 2624, 2616,
2606, 2598, 2588, 2580, 2572, 2564, 2556, 2548, 2540, 2530,
2522, 2516, 2508, 2500, 2492, 2486, 2476, 2470, 2462, 2454,
2448, 2440, 2434, 2426, 2420, 2412, 2406, 2400, 2392, 2386,
2378, 2372, 2366, 2360, 2354, 2346, 2340, 2334, 2328, 2322,
2314, 2310, 2304, 2296, 2292, 2286, 2280, 2274, 2268, 2262,
2256, 2252, 2246, 2240, 2234, 2230, 2224, 2218, 2214, 2208,
2202, 2196, 2192, 2188, 2182, 2176, 2172, 2166, 2162, 2156,
2152, 2146, 2142, 2136, 2132, 2128, 2124, 2118, 2114, 2108,
2104, 2100, 2096, 2092, 2086, 2082, 2078, 2072, 2068, 2064,
2060, 2056, 2052, 2048, 2044, 2038, 2034, 2030, 2026, 2022,
2018, 2014, 2010, 2006, 2002, 1998, 1994, 1990, 1988, 1984,
1980, 1976, 1972, 1968, 1964, 1960, 1956, 1952, 1950, 1946,
1942, 1938, 1934, 1932, 1928, 1924, 1920, 1918, 1914, 1910,
1908, 1904, 1900, 1898, 1894, 1890, 1888, 1884, 1880, 1878,
1874, 1870, 1868, 1864, 1862, 1858, 1854, 1852, 1848, 1846,
1842, 1840, 1836, 1834, 1830, 1828, 1824, 1822, 1818, 1816,
1812, 1810, 1806, 1804, 1800, 1798, 1794, 1792, 1790, 1786,
1784, 1780, 1778, 1776, 1772, 1770, 1768, 1764, 1762, 1758,
1756, 1754, 1752, 1748, 1746, 1744, 1740, 1738, 1736, 1734,
1730, 1728, 1726, 1724, 1720, 1718, 1716, 1714, 1710, 1708,
1706, 1704, 1700, 1698, 1696, 1694, 1692, 1688, 1686, 1684,
1682, 1680, 1676, 1674, 1672, 1670, 1668, 1666, 1664, 1662,
1660, 1656, 1654, 1652, 1650, 1648, 1646, 1644, 1642, 1638,
1636, 1634, 1632, 1630, 1628, 1626, 1624, 1622, 1620, 1618,
1616, 1614, 1612, 1610, 1608, 1606, 1604, 1602, 1600, 1598,
1596, 1594, 1592, 1590, 1588, 1586, 1584, 1582, 1580, 1578,
1576, 1574, 1572, 1570, 1568, 1566, 1564, 1562, 1560, 1558,
1556, 1556, 1554, 1552, 1550, 1548, 1546, 1544, 1542, 1540,
1538, 1536, 1536, 1534, 1532, 1530, 1528, 1526, 1524, 1522,
1522, 1520, 1518, 1516, 1514, 1512, 1510, 1510, 1508, 1506,
1504, 1502, 1500, 1500, 1498, 1496, 1494, 1492, 1490, 1490,
1488, 1486, 1484, 1482, 1482, 1480, 1478, 1476, 1474, 1474,
1472, 1470, 1468, 1466, 1466, 1464, 1462, 1460, 1460, 1458,
1456, 1454, 1454, 1452, 1450, 1448, 1448, 1446, 1444, 1442,
1442, 1440, 1438, 1438, 1436, 1434, 1432, 1432, 1430, 1428,
1426, 1426, 1424, 1422, 1422, 1420, 1418, 1418, 1416, 1414,
1412, 1412, 1410, 1408, 1408, 1406, 1404, 1404, 1402, 1400,
1400, 1398, 1396, 1394, 1394, 1392, 1390, 1390, 1388, 1388,
1386, 1384, 1384, 1382, 1380, 1380, 1378, 1376, 1376, 1374,
1374, 1372, 1370, 1370, 1368, 1366, 1366, 1364, 1362, 1362,
1360, 1360, 1358, 1356, 1356, 1354, 1352, 1352, 1350, 1350,
1348, 1348, 1346, 1344, 1344, 1342, 1340, 1340, 1338, 1338,
1336, 1336, 1334, 1332, 1332, 1330, 1330, 1328, 1328, 1326,
1324, 1324, 1322, 1322, 1320, 1318, 1318, 1316, 1316, 1314,
1314, 1312, 1310, 1310, 1308, 1308, 1306, 1306, 1304, 1304,
1302, 1302, 1300, 1300, 1298, 1298, 1296, 1294, 1294, 1292,
1292, 1290, 1290, 1288, 1288, 1286, 1286, 1284, 1284, 1282,
1282, 1280, 1280, 1278, 1278, 1276, 1276, 1274, 1272, 1272,
1270, 1270, 1270, 1268, 1268, 1266, 1264, 1264, 1262, 1262,
1260, 1260, 1260, 1258, 1258, 1256, 1254, 1254, 1254, 1252,
1252, 1250, 1250, 1248, 1248, 1246, 1246, 1244, 1244, 1242,
1242, 1240, 1240, 1238, 1238, 1236, 1236, 1236, 1234, 1234,
1232, 1232, 1230, 1230, 1228, 1228, 1226, 1226, 1226, 1224,
1224, 1222, 1222, 1220, 1220, 1218, 1218, 1218, 1216, 1216,
1214, 1214, 1212, 1212, 1210, 1210, 1210, 1208, 1208, 1206,
1206, 1204, 1204, 1204, 1202, 1202, 1200, 1200, 1198, 1198,
1198, 1196, 1196, 1194, 1194, 1192, 1192, 1192, 1190, 1190,
1188, 1188, 1188, 1186, 1186, 1184, 1184, 1182, 1182, 1182,
1180, 1180, 1180, 1178, 1178, 1176, 1176, 1174, 1174, 1174,
1172, 1172, 1172, 1170, 1170, 1168, 1168, 1168, 1166, 1166,
1164, 1164, 1164, 1162, 1162, 1160, 1160, 1160, 1158, 1158,
1156, 1156, 1156, 1154, 1154, 1154, 1152, 1152, 1152, 1150,
1150, 1148, 1148, 1148, 1146, 1146, 1146, 1144, 1144, 1142,
1142, 1142, 1140, 1140, 1140, 1138, 1138, 1136, 1136, 1136,
1134, 1134, 1134, 1132, 1132, 1132, 1130, 1130, 1130, 1128,
1128, 1126, 1126, 1126, 1124, 1124, 1124, 1122, 1122, 1122,
1120, 1120, 1120, 1118, 1118, 1118, 1116, 1116, 1116, 1114,
1114, 1114, 1112, 1112, 1112, 1110, 1110, 1110, 1108, 1108,
1108, 1106, 1106, 1106, 1104, 1104, 1104, 1102, 1102, 1102,
1100, 1100, 1100, 1098, 1098, 1098, 1096, 1096, 1096, 1094,
1094, 1094, 1092, 1092, 1092, 1090, 1090, 1090, 1088, 1088,
1088, 1086, 1086, 1086, 1086, 1084, 1084, 1084, 1082, 1082,
1082, 1080, 1080, 1080, 1078, 1078, 1078, 1078, 1076, 1076,
1076, 1074, 1074, 1074, 1072, 1072, 1072, 1072, 1070, 1070,
1070, 1068, 1068, 1068, 1066, 1066, 1066, 1064, 1064, 1064,
1064, 1062, 1062, 1062, 1060, 1060, 1060, 1058, 1058, 1058,
1058, 1056, 1056, 1056, 1054, 1054, 1054, 1054, 1052, 1052,
1052, 1050, 1050, 1050, 1050, 1048, 1048, 1048, 1046, 1046,
1046, 1046, 1044, 1044, 1044, 1044, 1042, 1042, 1042, 1040,
1040, 1040, 1040, 1038, 1038, 1038, 1036, 1036, 1036, 1036,
1034, 1034, 1034, 1034, 1032, 1032, 1032, 1030, 1030, 1030,
1030, 1028, 1028, 1028, 1028, 1026, 1026, 1026, 1026, 1024,
1024, 1024, 1022, 1022, 1022, 1022, 1020, 1020, 1020, 1020,
1018, 1018, 1018, 1018, 1016, 1016, 1016, 1016, 1014, 1014,
1014, 1014, 1012, 1012, 1012, 1012, 1010, 1010, 1010, 1010,
1008, 1008, 1008, 1008, 1006, 1006, 1006, 1006, 1004, 1004,
1004, 1004, 1002, 1002, 1002, 1002, 1000, 1000, 1000, 1000,
0
};
StaticInit<std::vector<Motor_Profile>> gl846_motor_profiles;
void genesys_init_motor_profile_tables_gl846()
{
gl846_motor_profiles.init();
auto profile = Motor_Profile();
profile.motor_id = MotorId::IMG101;
profile.exposure = 11000;
profile.step_type = StepType::HALF;
profile.table = img101_high;
gl846_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::PLUSTEK_OPTICBOOK_3800;
profile.exposure = 11000;
profile.step_type = StepType::HALF;
profile.table = img101_high;
gl846_motor_profiles->push_back(profile);
}
/* base motor sopes in full step unit */
/* target=((exposure * dpi) / base_dpi)>>step_type; */
static uint32_t lide200_base[] = {
46876, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2336,
2329, 2322, 2314, 2307, 2300, 2292, 2285, 2278, 2271, 2263,
2256, 2249, 2241, 2234, 2227, 2219, 2212, 2205, 2198, 2190,
2183, 2176, 2168, 2161, 2154, 2146, 2139, 2132, 2125, 2117,
2110, 2103, 2095, 2088, 2081, 2073, 2066, 2059, 2052, 2044,
2037, 2030, 2022, 2015, 2008, 2001, 1993, 1986, 1979, 1971,
1964, 1957, 1949, 1942, 1935, 1928, 1920, 1913, 1906, 1898,
1891, 1884, 1876, 1869, 1862, 1855, 1847, 1840, 1833, 1825,
1818, 1811, 1803, 1796, 1789, 1782, 1774, 1767, 1760, 1752,
1745, 1738, 1731, 1723, 1716, 1709, 1701, 1694, 1687, 1679,
1672, 1665, 1658, 1650, 1643, 1636, 1628, 1621, 1614, 1606,
1599, 1592, 1585, 1577, 1570, 1563, 1555, 1548, 1541, 1533,
1526, 1519, 1512, 1504, 1497, 1490, 1482, 1475, 1468, 1461,
1453, 1446, 1439, 1431, 1424, 1417, 1409, 1402, 1395, 1388,
1380, 1373, 1366, 1358, 1351, 1344, 1336, 1329, 1322, 1315,
1307, 1300, 1293, 1285, 1278, 1271, 1263, 1256, 1249, 1242,
1234, 1227, 1220, 1212, 1205, 1198, 1191, 1183, 1176, 1169,
1161, 1154, 1147, 1139, 1132, 1125, 1118, 1110, 1103, 1096,
1088, 1081, 1074, 1066, 1059, 1052, 1045, 1037, 1030, 1023,
1015, 1008, 1001, 993, 986, 979, 972, 964, 957, 950,
942, 935, 928, 921, 913, 906, 899, 891, 884, 877,
869, 862, 855, 848, 840, 833, 826, 818, 811, 804,
796, 789, 782, 775, 767, 760, 753, 745, 738, 731,
723, 716, 709, 702, 694, 687, 680, 672, 665, 658,
651, 643, 636, 629, 621, 614, 607, 599, 592, 585,
578, 570, 563, 556, 534, 534, 0
};
static uint32_t lide200_medium[] = {
46876, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136,
8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136,
8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136, 8136,
8136, 8136, 2343, 2336, 2329, 2322, 2314, 2307, 2300, 2292,
2285, 2278, 2271, 2263, 2256, 2249, 2241, 2234, 2227, 2219,
2212, 2205, 2198, 2190, 2183, 2176, 2168, 2161, 2154, 2146,
2139, 2132, 2125, 2117, 2110, 2103, 2095, 2088, 2081, 2073,
2066, 2059, 2052, 2044, 2037, 2030, 2022, 2015, 2008, 2001,
1993, 1986, 1979, 1971, 1964, 1957, 1949, 1942, 1935, 1928,
1920, 1913, 1906, 1898, 1891, 1884, 1876, 1869, 1862, 1855,
1847, 1840, 1833, 1825, 1818, 1811, 1803, 1796, 1789, 1782,
1774, 1767, 1760, 1752, 1745, 1738, 1731, 1723, 1716, 1709,
1701, 1694, 1687, 1679, 1672, 1665, 1658, 1650, 1643, 1636,
1628, 1621, 1614, 1606, 1599, 1592, 1585, 1577, 1570, 1563,
1555, 1548, 1541, 1533, 1526, 1519, 1512, 1504, 1497, 1490,
1482, 1475, 1468, 1461, 1453, 1446, 1439, 1431, 1424, 1417,
1409, 1402, 1395, 1388, 1380, 1373, 1366, 1358, 1351, 1344,
1336, 1329, 1322, 1315, 1307, 1300, 1293, 1285, 1278, 1271,
1263, 1256, 1249, 1242, 1234, 1227, 1220, 1212, 1205, 1198,
1191, 1183, 1176, 1169, 1161, 1154, 1147, 1139, 1132, 1125,
1118, 1110, 1103, 1096, 1088, 1081, 1074, 1066, 1059, 1052,
1045, 1037, 1030, 1023, 1015, 1008, 1001, 993, 986, 979,
972, 964, 957, 950, 942, 935, 928, 921, 913, 906,
899, 891, 884, 877, 869, 862, 855, 848, 840, 833,
826, 818, 811, 804, 796, 789, 782, 775, 767, 760,
753, 745, 738, 731, 723, 716, 709, 702, 694, 687,
680, 672, 665, 658, 651, 643, 636, 629, 621, 614,
607, 599, 592, 585, 578, 570, 563, 556, 534, 534,
0
};
static uint32_t lide200_high[] = {
31680, 31680, 31680, 31680, 31680, 31680, 31680, 31680, 31680, 31680,
31680, 31680, 31680, 31680, 31680, 31680, 31680, 2219, 2212, 2205,
2198, 2190, 2183, 2176, 2168, 2161, 2154, 2146, 2139, 2132,
2125, 2117, 2110, 2103, 2095, 2088, 2081, 2073, 2066, 2059,
2052, 2044, 2037, 2030, 2022, 2015, 2008, 2001, 1993, 1986,
1979, 1971, 1964, 1957, 1949, 1942, 1935, 1928, 1920, 1913,
1906, 1898, 1891, 1884, 1876, 1869, 1862, 1855, 1847, 1840,
1833, 1825, 1818, 1811, 1803, 1796, 1789, 1782, 1774, 1767,
1760, 1752, 1745, 1738, 1731, 1723, 1716, 1709, 1701, 1694,
1687, 1679, 1672, 1665, 1658, 1650, 1643, 1636, 1628, 1621,
1614, 1606, 1599, 1592, 1585, 1577, 1570, 1563, 1555, 1548,
1541, 1533, 1526, 1519, 1512, 1504, 1497, 1490, 1482, 1475,
1468, 1461, 1453, 1446, 1439, 1431, 1424, 1417, 1409, 1402,
1395, 1388, 1380, 1373, 1366, 1358, 1351, 1344, 1336, 1329,
1322, 1315, 1307, 1300, 1293, 1285, 1278, 1271, 1263, 1256,
1249, 1242, 1234, 1227, 1220, 1212, 1205, 1198, 1191, 1183,
1176, 1169, 1161, 1154, 1147, 1139, 1132, 1125, 1118, 1110,
1103, 1096, 1088, 1081, 1074, 1066, 1059, 1052, 1045, 1037,
1030, 1023, 1015, 1008, 1001, 993, 986, 979, 972, 964,
957, 950, 942, 935, 928, 921, 913, 906, 899, 891,
884, 877, 869, 862, 855, 848, 840, 833, 826, 818,
811, 804, 796, 789, 782, 775, 767, 760, 753, 745,
738, 731, 723, 716, 709, 702, 694, 687, 680, 672,
665, 658, 651, 643, 636, 629, 621, 614, 607, 599,
592, 585, 578, 570, 563, 556, 534, 534, 0
};
static uint32_t lide700_medium[] = {
46876, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2342, 2302,
2286, 2274, 2266, 2258, 2252, 2244, 2240, 2234, 2228, 2224,
2218, 2216, 2210, 2208, 2202, 2200, 2194, 2192, 2190, 2186,
2182, 2180, 2176, 2174, 2172, 2170, 2166, 2162, 2160, 2156,
2154, 2152, 2150, 2150, 2146, 2144, 2142, 2140, 2136, 2134,
2132, 2130, 2130, 2128, 2124, 2122, 2120, 2120, 2118, 2116,
2112, 2112, 2110, 2108, 2106, 2106, 2104, 2102, 2102, 2098,
2096, 2094, 2094, 2092, 2090, 2090, 2086, 2084, 2084, 2082,
2082, 2080, 2078, 2078, 2076, 2074, 2074, 2070, 2070, 2068,
2066, 2066, 2064, 2064, 2062, 2062, 2060, 2058, 2058, 2054,
2054, 2052, 2052, 2050, 2050, 2048, 2048, 2046, 2046, 2044,
2042, 2042, 2040, 2040, 2038, 2038, 2034, 2034, 2032, 2032,
2030, 2030, 2028, 2028, 2026, 2026, 2022, 2022
};
static uint32_t lide700_high[] = {
46876, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864, 15864,
15864, 15864, 15864, 15864, 15864, 15864
};
/**
* database of motor profiles
*/
StaticInit<std::vector<Motor_Profile>> gl847_motor_profiles;
void genesys_init_motor_profile_tables_gl847()
{
gl847_motor_profiles.init();
auto profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_100;
profile.exposure = 2848;
profile.step_type = StepType::HALF;
profile.table = lide200_base;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_100;
profile.exposure = 1424;
profile.step_type = StepType::HALF;
profile.table = lide200_base;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_100;
profile.exposure = 1432;
profile.step_type = StepType::HALF;
profile.table = lide200_base;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_100;
profile.exposure = 2712;
profile.step_type = StepType::QUARTER;
profile.table = lide200_medium;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_100;
profile.exposure = 5280;
profile.step_type = StepType::EIGHTH;
profile.table = lide200_high;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_200;
profile.exposure = 2848;
profile.step_type = StepType::HALF;
profile.table = lide200_base;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_200;
profile.exposure = 1424;
profile.step_type = StepType::HALF;
profile.table = lide200_base;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_200;
profile.exposure = 1432;
profile.step_type = StepType::HALF;
profile.table = lide200_base;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_200;
profile.exposure = 2712;
profile.step_type = StepType::QUARTER;
profile.table = lide200_medium;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_200;
profile.exposure = 5280;
profile.step_type = StepType::EIGHTH;
profile.table = lide200_high;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_200;
profile.exposure = 10416;
profile.step_type = StepType::EIGHTH;
profile.table = lide200_high;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_700;
profile.exposure = 2848;
profile.step_type = StepType::HALF;
profile.table = lide200_base;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_700;
profile.exposure = 1424;
profile.step_type = StepType::HALF;
profile.table = lide200_base;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_700;
profile.exposure = 1504;
profile.step_type = StepType::HALF;
profile.table = lide200_base;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_700;
profile.exposure = 2696;
profile.step_type = StepType::HALF;
profile.table = lide700_medium;
gl847_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_700;
profile.exposure = 10576;
profile.step_type = StepType::EIGHTH;
profile.table = lide700_high;
gl847_motor_profiles->push_back(profile);
}
static uint32_t lide210_fast[] = {
62496, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2051,
1432, 1372, 1323, 1280, 1246, 1216, 1188, 1163, 1142, 1121,
1101, 1084, 1068, 1051, 1036, 1020, 1007, 995, 983, 971,
959, 949, 938, 929, 917, 908, 900, 891, 882, 874,
866, 857, 849, 843, 835, 829, 821, 816, 808, 802,
795, 789, 784, 778, 773, 765, 760, 755, 749, 744,
739, 734, 731, 726, 721, 716, 711, 707, 702, 698,
693, 690, 685, 682, 677, 672, 669, 665, 662, 657,
654, 650, 647, 644, 639, 637, 632, 629, 626, 622,
619, 617, 614, 610, 607, 604, 601, 599, 595, 592,
589, 587, 584, 581, 579, 576, 572, 570, 567, 564,
562, 559, 557, 554, 552, 549, 547, 544, 542, 539,
538, 536, 533, 531, 529, 526, 524, 522, 519, 518,
516, 513, 511, 509, 506, 505, 503, 501, 498, 497,
495, 493, 491, 490, 487, 485, 483, 482, 480, 477,
476, 474, 472, 470, 469, 467, 465, 464, 462, 460,
458, 456, 455, 453, 451, 450, 448, 447, 445, 444,
442, 440, 439, 437, 436, 434, 433, 431, 430, 428,
427, 425, 423, 422, 420, 419, 417, 417, 415, 414,
413, 411, 410, 408, 407, 405, 404, 402, 401, 400,
399, 398, 396, 395, 393, 392, 391, 390, 389, 387,
386, 385, 383, 382, 381, 380, 379, 377, 376, 375,
374, 373, 371, 370, 369, 368, 367, 366, 364, 363,
363, 361, 360, 359, 358, 357, 356, 355, 353, 352,
352, 350, 349, 348, 347, 346, 345, 344, 343, 342,
341, 340, 339, 338, 335, 335, 0
};
static uint32_t lide110_ok[] = {
62496, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2051,
1961, 1901, 1852, 1809, 1775, 1745, 1717, 1692, 1671, 1650,
1630, 1613, 1597, 1580, 1565, 1549, 1536, 1524, 1512, 1500,
1488, 1478, 1467, 1458, 1446, 1437, 1429, 1420, 1411, 1403,
1395, 1386, 1378, 1372, 1364, 1358, 1350, 1345, 1337, 1331,
1324, 1318, 1313, 1307, 1302, 1294, 1289, 1284, 1278, 1273,
1268, 1263, 1260, 1255, 1250, 1245, 1240, 1236, 1231, 1227,
1222, 1219, 1214, 1211, 1206, 1201, 1198, 1194, 1191, 1186,
1183, 1179, 1176, 1173, 1168, 1166, 1161, 1158, 1155, 1151,
1148, 1146, 1143, 1139, 1136, 1133, 1130, 1128, 1124, 1121,
1118, 1116, 1113, 1110, 1108, 1105, 1101, 1099, 1096, 1093,
1091, 1088, 1086, 1083, 1081, 1078, 1076, 1073, 1071, 1068,
1067, 1065, 1062, 1060, 1058, 1055, 1053, 1051, 1048, 1047,
1045, 1042, 1040, 1038, 1035, 1034, 1032, 1030, 1027, 1026,
1024, 1022, 1020, 1019, 1016, 1014, 1012, 1011, 1009, 1006,
1005, 1003, 1001, 999, 998, 996, 994, 993, 991, 989,
987, 985, 984, 982, 980, 979, 977, 976, 974, 973,
971, 969, 968, 966, 965, 963, 962, 960, 959, 957,
956, 954, 952, 951, 949, 948, 946, 946, 944, 943,
942, 940, 939, 937, 936, 934, 933, 931, 930, 929,
928, 927, 925, 924, 922, 921, 920, 919, 918, 916,
915, 914, 912, 911, 910, 909, 908, 906, 905, 904,
903, 902, 900, 899, 898, 897, 896, 895, 893, 892,
892, 890, 889, 888, 887, 886, 885, 884, 882, 881,
881, 879, 878, 877, 876, 875, 874, 873, 872, 871,
870, 869, 868, 867, 864, 857, 849, 843, 835, 829,
821, 816, 808, 802, 795, 789, 784, 778, 773, 765,
760, 755, 749, 744, 739, 734, 731, 726, 721, 716,
711, 707, 702, 698, 693, 690, 685, 682, 677, 672,
669, 665, 662, 657, 654, 650, 647, 644, 639, 637,
632, 629, 626, 622, 619, 617, 614, 610, 607, 604,
601, 599, 595, 592, 589, 587, 584, 581, 579, 576,
572, 570, 567, 564, 562, 559, 557, 554, 552, 549,
547, 544, 542, 539, 538, 536, 533, 531, 529, 526,
524, 522, 519, 518, 516, 513, 511, 509, 506, 505,
503, 501, 498, 497, 495, 493, 491, 490, 487, 485,
483, 482, 480, 477, 476, 474, 472, 470, 469, 467,
465, 464, 462, 460, 458, 456, 455, 453, 451, 450,
448, 447, 445, 444, 442, 440, 439, 437, 436, 434,
433, 431, 430, 428, 427, 425, 423, 422, 420, 419,
417, 417, 415, 414, 413, 411, 410, 408, 407, 405,
404, 402, 401, 400, 399, 398, 396, 395, 393, 392,
391, 390, 389, 387, 386, 385, 383, 382, 381, 380,
379, 377, 376, 375, 374, 373, 371, 370, 369, 368,
367, 366, 364, 363, 363, 361, 360, 359, 358, 357,
356, 355, 353, 352, 352, 350, 349, 348, 347, 346,
345, 344, 343, 342, 341, 340, 339, 338, 335, 335,
0
};
static uint32_t lide120_fast[] = {
62496, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 1957,
1845, 1768, 1710, 1665, 1624, 1588, 1557, 1529, 1504, 1481,
1458, 1440, 1420, 1403, 1386, 1370, 1356, 1343, 1329, 1316,
1303, 1293, 1280, 1270, 1260, 1250, 1241, 1231, 1222, 1214,
1206, 1197, 1189, 1182, 1174, 1167, 1160, 1153, 1147, 1140,
1133, 1128, 1121, 1116, 1110, 1104, 1099, 1093, 1088, 1082,
1077, 1072, 1067, 1062, 1058, 1053, 1049, 1045, 1040, 1035,
1032, 1027, 1023, 1020, 1015, 1012, 1008, 1004, 1000, 997,
993, 989, 985, 982, 979, 975, 972, 969, 966, 963,
959, 956, 953, 950, 947, 945, 942, 939, 936, 933,
930, 928, 925, 922, 920, 917, 914, 911, 909, 907,
904, 902, 899, 897, 895, 892, 890, 888, 886, 883,
881, 879, 876, 874, 872, 870, 864, 864, 0
};
static uint32_t lide120_ok[] = {
62496, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2343, 2286,
2264, 2248, 2232, 2221, 2211, 2205, 2195, 2190, 2180, 2175,
2170, 2160, 2155, 2150, 2145, 2140, 2135, 2130, 2125, 2121,
2116, 2111, 2106, 2106, 2102, 2097, 2092, 2087, 2087, 2083,
2078, 2074, 2074, 2069, 2064, 2064, 2060, 2055, 2055, 2051,
2051, 2046, 2042, 2042, 2038, 2038, 2033, 2029, 2029, 2024,
2024, 2020, 2010, 2010, 670*2, 0
};
static uint32_t lide110_slow[] = { 62496, 7896, 2632, 0 };
static uint32_t lide120_slow[] = { 62464, 7896, 2632, 0 };
static uint32_t lide110_max[] = { 62496, 31296, 10432, 0 };
static uint32_t lide120_max[] = { 62592, 62592, 41728, 31296, 10432, 0 };
static uint32_t lide210_max[] = { 62496, 31296, 20864, 10432, 0 };
StaticInit<std::vector<Motor_Profile>> gl124_motor_profiles;
void genesys_init_motor_profile_tables_gl124()
{
gl124_motor_profiles.init();
// NEXT LPERIOD=PREVIOUS*2-192
Motor_Profile profile;
profile.motor_id = MotorId::CANON_LIDE_110;
profile.exposure = 2768;
profile.step_type = StepType::FULL;
profile.table = lide210_fast;
gl124_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_110;
profile.exposure = 5360;
profile.step_type = StepType::HALF;
profile.table = lide110_ok;
gl124_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_110;
profile.exposure = 10528;
profile.step_type = StepType::HALF;
profile.table = lide110_slow;
gl124_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_110;
profile.exposure = 20864;
profile.step_type = StepType::QUARTER;
profile.table = lide110_max;
gl124_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_120;
profile.exposure = 4608;
profile.step_type = StepType::FULL;
profile.table = lide120_fast;
gl124_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_120;
profile.exposure = 5360;
profile.step_type = StepType::HALF;
profile.table = lide120_ok;
gl124_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_120;
profile.exposure = 10528;
profile.step_type = StepType::QUARTER;
profile.table = lide120_slow;
gl124_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_120;
profile.exposure = 20864;
profile.step_type = StepType::QUARTER;
profile.table = lide120_max;
gl124_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_210;
profile.exposure = 2768;
profile.step_type = StepType::FULL;
profile.table = lide210_fast;
gl124_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_210;
profile.exposure = 5360;
profile.step_type = StepType::HALF;
profile.table = lide110_ok;
gl124_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_210;
profile.exposure = 10528;
profile.step_type = StepType::HALF;
profile.table = lide110_slow;
gl124_motor_profiles->push_back(profile);
profile = Motor_Profile();
profile.motor_id = MotorId::CANON_LIDE_210;
profile.exposure = 20864;
profile.step_type = StepType::QUARTER;
profile.table = lide210_max;
gl124_motor_profiles->push_back(profile);
}
void genesys_init_motor_profile_tables()
{
genesys_init_motor_profile_tables_gl843();
genesys_init_motor_profile_tables_gl846();
genesys_init_motor_profile_tables_gl847();
genesys_init_motor_profile_tables_gl124();
}
} // namespace genesys