Line data Source code
1 : /**
2 : * @file trigger_chrysler.cpp
3 : *
4 : * @date Mar 24, 2014
5 : * @author Andrey Belomutskiy, (c) 2012-2020
6 : */
7 :
8 : #include "pch.h"
9 :
10 : #include "trigger_chrysler.h"
11 : #include "trigger_universal.h"
12 :
13 2 : void initDodgeRam(TriggerWaveform *s) {
14 :
15 2 : s->initialize(FOUR_STROKE_CAM_SENSOR, SyncEdge::Rise);
16 :
17 2 : s->isSynchronizationNeeded = false;
18 :
19 2 : addSkippedToothTriggerEvents(TriggerWheel::T_SECONDARY, s, 8, 0, 0.06, -25, 360, 0, 720);
20 :
21 2 : s->addEvent720(360, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
22 :
23 2 : addSkippedToothTriggerEvents(TriggerWheel::T_SECONDARY, s, 8, 0, 0.06, 360 - 25, 360, 0, 720);
24 :
25 2 : s->addEvent720(720, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
26 2 : }
27 :
28 0 : void configureNeon2003TriggerWaveformCrank(TriggerWaveform *s) {
29 0 : s->initialize(FOUR_STROKE_CRANK_SENSOR, SyncEdge::RiseOnly);
30 :
31 0 : s->setTriggerSynchronizationGap(3);
32 :
33 0 : s->addEvent360(25, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
34 0 : s->addEvent360(30, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
35 0 : s->addEvent360(35, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
36 0 : s->addEvent360(40, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
37 0 : s->addEvent360(45, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
38 0 : s->addEvent360(50, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
39 0 : s->addEvent360(55, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
40 0 : s->addEvent360(60, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
41 0 : s->addEvent360(65, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
42 0 : s->addEvent360(70, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
43 0 : s->addEvent360(75, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
44 0 : s->addEvent360(80, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
45 0 : s->addEvent360(85, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
46 0 : s->addEvent360(90, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
47 0 : s->addEvent360(95, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
48 0 : s->addEvent360(100, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
49 0 : s->addEvent360(105, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
50 0 : s->addEvent360(110, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
51 0 : s->addEvent360(115, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
52 0 : s->addEvent360(120, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
53 0 : s->addEvent360(125, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
54 0 : s->addEvent360(130, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
55 0 : s->addEvent360(135, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
56 0 : s->addEvent360(140, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
57 0 : s->addEvent360(145,TriggerValue::FALL, TriggerWheel::T_PRIMARY);
58 0 : s->addEvent360(150, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
59 0 : s->addEvent360(155, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
60 0 : s->addEvent360(160, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
61 0 : s->addEvent360(165, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
62 0 : s->addEvent360(170, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
63 0 : s->addEvent360(175, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
64 0 : s->addEvent360(180, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
65 0 : s->addEvent360(185, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
66 : // gap 25
67 0 : s->addEvent360(210, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
68 0 : s->addEvent360(215, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
69 0 : s->addEvent360(220, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
70 0 : s->addEvent360(225, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
71 0 : s->addEvent360(230, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
72 0 : s->addEvent360(235, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
73 0 : s->addEvent360(240, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
74 0 : s->addEvent360(245, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
75 0 : s->addEvent360(250, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
76 0 : s->addEvent360(255, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
77 0 : s->addEvent360(260, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
78 0 : s->addEvent360(265, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
79 0 : s->addEvent360(270, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
80 0 : s->addEvent360(275, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
81 0 : s->addEvent360(280, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
82 0 : s->addEvent360(285, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
83 0 : s->addEvent360(290, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
84 0 : s->addEvent360(295, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
85 0 : s->addEvent360(300, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
86 0 : s->addEvent360(305, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
87 0 : s->addEvent360(310, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
88 0 : s->addEvent360(315, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
89 0 : s->addEvent360(320, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
90 0 : s->addEvent360(325, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
91 0 : s->addEvent360(330, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
92 0 : s->addEvent360(335, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
93 0 : s->addEvent360(340, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
94 0 : s->addEvent360(345, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
95 0 : s->addEvent360(350, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
96 0 : s->addEvent360(355, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
97 0 : s->addEvent360(360, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
98 0 : }
99 :
100 5 : void configureNeon2003TriggerWaveformCam(TriggerWaveform *s) {
101 : // todo: move sync point so that two channel does not have false trigger issues
102 5 : bool useOnlyPrimary = true;
103 :
104 5 : s->initialize(FOUR_STROKE_CAM_SENSOR, SyncEdge::Rise);
105 :
106 5 : s->tdcPosition = 496;
107 :
108 : /**
109 : * ratio sequence is:
110 : gap=2.17/1.46
111 : gap=0.33/2.17
112 : gap=1.06/0.33
113 : gap=2.73/1.06
114 : gap=0.47/2.73
115 : gap=0.71/0.47
116 : gap=1.43/0.71
117 : *
118 : */
119 :
120 : // these values only work well for 'useFronOnly' mode!!!
121 5 : s->setTriggerSynchronizationGap2(0.75, 1.5);
122 5 : s->setTriggerSynchronizationGap3(1, 0.65, 1.25);
123 :
124 5 : float EPS_ANGLE = 0.3;
125 :
126 :
127 5 : if (useOnlyPrimary) {
128 5 : s->addEvent720(144, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
129 5 : s->addEvent720(180, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
130 :
131 5 : s->addEvent720(216, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
132 5 : s->addEvent720(252, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
133 :
134 5 : s->addEvent720(288, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
135 5 : s->addEvent720(324, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
136 :
137 5 : s->addEvent720(360, TriggerValue::RISE, TriggerWheel::T_PRIMARY); // width = 144
138 5 : s->addEvent720(504, TriggerValue::FALL, TriggerWheel::T_PRIMARY); // width = 36
139 5 : s->addEvent720(540, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
140 5 : s->addEvent720(576, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
141 5 : s->addEvent720(612, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
142 5 : s->addEvent720(648, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
143 5 : s->addEvent720(684, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
144 5 : s->addEvent720(720, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
145 :
146 : } else {
147 : /**
148 : * 7 primary (four narrow + one wide + two narrow)
149 : * 64 secondary (one wide + 15 narrow + 16 narrow + one wide + 15 narrow + 16 narrow)
150 : *
151 : */
152 :
153 0 : s->useOnlyPrimaryForSync = true;
154 :
155 0 : s->addEvent720(25, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
156 0 : s->addEvent720(30, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
157 0 : s->addEvent720(35, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
158 0 : s->addEvent720(40, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
159 0 : s->addEvent720(45, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
160 0 : s->addEvent720(50, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
161 0 : s->addEvent720(55, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
162 0 : s->addEvent720(60, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
163 0 : s->addEvent720(65, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
164 0 : s->addEvent720(70, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
165 0 : s->addEvent720(75, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
166 0 : s->addEvent720(80, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
167 0 : s->addEvent720(85, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
168 0 : s->addEvent720(90, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
169 0 : s->addEvent720(95, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
170 0 : s->addEvent720(100, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
171 0 : s->addEvent720(105, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
172 0 : s->addEvent720(110, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
173 0 : s->addEvent720(115, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
174 0 : s->addEvent720(120, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
175 0 : s->addEvent720(125, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
176 0 : s->addEvent720(130, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
177 0 : s->addEvent720(135, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
178 0 : s->addEvent720(140, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
179 :
180 0 : s->addEvent720(144, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
181 :
182 0 : s->addEvent720(145,TriggerValue::FALL, TriggerWheel::T_SECONDARY);
183 0 : s->addEvent720(150, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
184 0 : s->addEvent720(155, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
185 0 : s->addEvent720(160, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
186 0 : s->addEvent720(165, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
187 0 : s->addEvent720(170, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
188 0 : s->addEvent720(175, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
189 0 : s->addEvent720(180 - EPS_ANGLE, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
190 :
191 0 : s->addEvent720(180, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
192 :
193 0 : s->addEvent720(185, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
194 0 : s->addEvent720(210, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
195 0 : s->addEvent720(215, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
196 :
197 0 : s->addEvent720(216, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
198 :
199 0 : s->addEvent720(220, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
200 0 : s->addEvent720(225, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
201 0 : s->addEvent720(230, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
202 0 : s->addEvent720(235, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
203 0 : s->addEvent720(240, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
204 0 : s->addEvent720(245, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
205 0 : s->addEvent720(250, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
206 :
207 0 : s->addEvent720(252, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
208 :
209 0 : s->addEvent720(255, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
210 :
211 0 : s->addEvent720(260, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
212 0 : s->addEvent720(265, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
213 0 : s->addEvent720(270, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
214 0 : s->addEvent720(275, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
215 0 : s->addEvent720(280, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
216 0 : s->addEvent720(285, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
217 :
218 0 : s->addEvent720(288, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
219 :
220 0 : s->addEvent720(290, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
221 0 : s->addEvent720(295, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
222 0 : s->addEvent720(300, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
223 0 : s->addEvent720(305, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
224 0 : s->addEvent720(310, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
225 0 : s->addEvent720(315, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
226 0 : s->addEvent720(320, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
227 :
228 0 : s->addEvent720(324, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
229 :
230 0 : s->addEvent720(325, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
231 0 : s->addEvent720(330, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
232 0 : s->addEvent720(335, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
233 0 : s->addEvent720(340, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
234 0 : s->addEvent720(345, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
235 0 : s->addEvent720(350, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
236 0 : s->addEvent720(355, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
237 0 : s->addEvent720(360 - EPS_ANGLE, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
238 :
239 0 : s->addEvent720(360, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
240 :
241 0 : s->addEvent720(385, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
242 0 : s->addEvent720(390, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
243 0 : s->addEvent720(395, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
244 0 : s->addEvent720(400, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
245 0 : s->addEvent720(405, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
246 0 : s->addEvent720(410, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
247 0 : s->addEvent720(415, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
248 0 : s->addEvent720(420, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
249 0 : s->addEvent720(425, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
250 0 : s->addEvent720(430, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
251 0 : s->addEvent720(435, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
252 0 : s->addEvent720(440, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
253 0 : s->addEvent720(445, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
254 0 : s->addEvent720(450, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
255 0 : s->addEvent720(455, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
256 0 : s->addEvent720(460, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
257 0 : s->addEvent720(465, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
258 0 : s->addEvent720(470, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
259 0 : s->addEvent720(475, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
260 0 : s->addEvent720(480, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
261 0 : s->addEvent720(485, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
262 0 : s->addEvent720(490, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
263 0 : s->addEvent720(495, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
264 0 : s->addEvent720(500, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
265 :
266 0 : s->addEvent720(504, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
267 :
268 0 : s->addEvent720(505, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
269 0 : s->addEvent720(510, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
270 0 : s->addEvent720(515, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
271 0 : s->addEvent720(520, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
272 0 : s->addEvent720(525, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
273 0 : s->addEvent720(530, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
274 0 : s->addEvent720(535, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
275 0 : s->addEvent720(540 - EPS_ANGLE, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
276 :
277 0 : s->addEvent720(540, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
278 :
279 0 : s->addEvent720(545, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
280 0 : s->addEvent720(570, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
281 0 : s->addEvent720(575, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
282 :
283 0 : s->addEvent720(576, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
284 0 : s->addEvent720(580, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
285 0 : s->addEvent720(585, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
286 0 : s->addEvent720(590, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
287 0 : s->addEvent720(595, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
288 0 : s->addEvent720(600, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
289 0 : s->addEvent720(605, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
290 0 : s->addEvent720(610, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
291 :
292 0 : s->addEvent720(612, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
293 0 : s->addEvent720(615, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
294 0 : s->addEvent720(620, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
295 0 : s->addEvent720(625, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
296 0 : s->addEvent720(630, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
297 0 : s->addEvent720(635, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
298 0 : s->addEvent720(640, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
299 0 : s->addEvent720(645, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
300 :
301 0 : s->addEvent720(648, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
302 0 : s->addEvent720(650, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
303 0 : s->addEvent720(655, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
304 0 : s->addEvent720(660, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
305 0 : s->addEvent720(665, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
306 0 : s->addEvent720(670, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
307 0 : s->addEvent720(675, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
308 0 : s->addEvent720(680, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
309 :
310 0 : s->addEvent720(684, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
311 0 : s->addEvent720(685, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
312 0 : s->addEvent720(690, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
313 0 : s->addEvent720(695, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
314 0 : s->addEvent720(700, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
315 0 : s->addEvent720(705, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
316 0 : s->addEvent720(710, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
317 0 : s->addEvent720(715, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
318 0 : s->addEvent720(720 - EPS_ANGLE, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
319 0 : s->addEvent720(720, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
320 : }
321 5 : }
322 :
323 1 : void configureDodgeStratusTriggerWaveform(TriggerWaveform *s) {
324 1 : s->initialize(FOUR_STROKE_CAM_SENSOR, SyncEdge::RiseOnly);
325 1 : s->tdcPosition = 150;
326 :
327 1 : float w = 7;
328 1 : float g = 20;
329 1 : s->setTriggerSynchronizationGap2(CHRYSLER_NGC6_GAP - 0.25,
330 : CHRYSLER_NGC6_GAP + 0.4);
331 :
332 1 : float base = 0;
333 : // 2 teeth
334 1 : float angle = base + 120.0 - w;
335 1 : s->addEvent720(angle, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
336 1 : s->addEvent720(angle + w, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
337 1 : angle += g;
338 1 : s->addEvent720(angle, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
339 1 : s->addEvent720(angle + w, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
340 :
341 1 : base += 120;
342 : // 3 teeth
343 1 : angle = base + 120.0 - w;
344 1 : s->addEvent720(angle, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
345 1 : s->addEvent720(angle + w, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
346 1 : angle += g;
347 1 : s->addEvent720(angle, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
348 1 : s->addEvent720(angle + w, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
349 1 : angle += g;
350 1 : s->addEvent720(angle, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
351 1 : s->addEvent720(angle + w, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
352 :
353 1 : base += 120;
354 : // 2 teeth
355 1 : angle = base + 120.0 - w;
356 1 : s->addEvent720(angle, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
357 1 : s->addEvent720(angle + w, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
358 1 : angle += g;
359 1 : s->addEvent720(angle, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
360 1 : s->addEvent720(angle + w, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
361 :
362 1 : base += 120;
363 : // just one
364 1 : angle = base + 120.0 - w;
365 1 : s->addEvent720(angle, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
366 1 : s->addEvent720(angle + w, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
367 :
368 1 : base += 120;
369 : // 3 teeth
370 1 : angle = base + 120.0 - w;
371 1 : s->addEvent720(angle, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
372 1 : s->addEvent720(angle + w, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
373 1 : angle += g;
374 1 : s->addEvent720(angle, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
375 1 : s->addEvent720(angle + w, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
376 1 : angle += g;
377 1 : s->addEvent720(angle, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
378 1 : s->addEvent720(angle + w, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
379 :
380 1 : base += 120;
381 : // just one again
382 1 : angle = base + 120.0 - w;
383 1 : s->addEvent720(angle, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
384 1 : s->addEvent720(angle + w, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
385 1 : }
386 :
387 6 : void configureNeon1995TriggerWaveformOnlyCrank(TriggerWaveform *s) {
388 6 : s->initialize(FOUR_STROKE_CRANK_SENSOR, SyncEdge::Rise);
389 :
390 : // Nominal gap 3.25
391 6 : s->setTriggerSynchronizationGap3(0, 1.6, 4.5);
392 :
393 : // Nominal gap 1.0
394 6 : s->setTriggerSynchronizationGap3(1, 0.5, 1.5);
395 6 : s->setTriggerSynchronizationGap3(2, 0.5, 1.5);
396 :
397 : // Nominal gap 0.168
398 6 : s->setTriggerSynchronizationGap3(3, 0.1, 0.3);
399 :
400 6 : s->tdcPosition = 279;
401 :
402 : // voodoo magic - we always need 720 at the end
403 6 : int base = 59;
404 :
405 6 : s->addEvent360(base + 0, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
406 6 : s->addEvent360(base + 60, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
407 6 : s->addEvent360(base + 75, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
408 6 : s->addEvent360(base + 82, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
409 6 : s->addEvent360(base + 96, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
410 6 : s->addEvent360(base + 102, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
411 6 : s->addEvent360(base + 116, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
412 6 : s->addEvent360(base + 122, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
413 :
414 6 : s->addEvent360(base + 235, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
415 6 : s->addEvent360(base + 242, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
416 6 : s->addEvent360(base + 255, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
417 6 : s->addEvent360(base + 261, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
418 6 : s->addEvent360(base + 275, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
419 6 : s->addEvent360(base + 281, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
420 6 : s->addEvent360(base + 295, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
421 6 : s->addEvent360(base + 301, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
422 6 : }
423 :
424 1 : void initJeep18_2_2_2(TriggerWaveform *s) {
425 1 : s->initialize(FOUR_STROKE_CAM_SENSOR, SyncEdge::RiseOnly);
426 1 : s->isSynchronizationNeeded = false;
427 1 : s->tdcPosition = 581;
428 :
429 1 : float off = 212;
430 :
431 1 : s->addEvent720(534 - 720 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
432 1 : s->addEvent720(536 - 720 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
433 1 : s->addEvent720(554 - 720 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
434 1 : s->addEvent720(556 - 720 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
435 1 : s->addEvent720(574 - 720 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
436 1 : s->addEvent720(576 - 720 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
437 1 : s->addEvent720(594 - 720 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
438 1 : s->addEvent720(596 - 720 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
439 :
440 1 : s->addEvent720(654 - 720 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
441 1 : s->addEvent720(656 - 720 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
442 1 : s->addEvent720(674 - 720 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
443 1 : s->addEvent720(676 - 720 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
444 1 : s->addEvent720(694 - 720 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
445 1 : s->addEvent720(696 - 720 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
446 1 : s->addEvent720(714 - 720 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
447 1 : s->addEvent720(716 - 720 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
448 :
449 :
450 1 : s->addEvent720(54 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
451 1 : s->addEvent720(56 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
452 1 : s->addEvent720(74 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
453 1 : s->addEvent720(76 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
454 1 : s->addEvent720(94 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
455 1 : s->addEvent720(96 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
456 1 : s->addEvent720(114 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
457 1 : s->addEvent720(116 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
458 :
459 1 : s->addEvent720(148 + off, TriggerValue::RISE, TriggerWheel::T_PRIMARY); // 360
460 :
461 1 : s->addEvent720(174 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
462 1 : s->addEvent720(176 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
463 1 : s->addEvent720(194 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
464 1 : s->addEvent720(196 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
465 1 : s->addEvent720(214 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
466 1 : s->addEvent720(216 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
467 1 : s->addEvent720(234 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
468 1 : s->addEvent720(236 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
469 :
470 1 : s->addEvent720(294 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
471 1 : s->addEvent720(296 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
472 1 : s->addEvent720(314 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
473 1 : s->addEvent720(316 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
474 1 : s->addEvent720(334 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
475 1 : s->addEvent720(336 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
476 1 : s->addEvent720(354 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
477 1 : s->addEvent720(356 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
478 :
479 1 : s->addEvent720(414 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
480 1 : s->addEvent720(416 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
481 1 : s->addEvent720(434 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
482 1 : s->addEvent720(436 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
483 1 : s->addEvent720(454 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
484 1 : s->addEvent720(456 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
485 1 : s->addEvent720(474 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
486 1 : s->addEvent720(476 + off, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
487 :
488 1 : s->addEvent720(508 + off, TriggerValue::FALL, TriggerWheel::T_PRIMARY); // 720
489 :
490 1 : }
491 :
492 4 : static void add4cylblock(int off, TriggerWaveform *s) {
493 4 : s->addEvent720(114 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
494 4 : s->addEvent720(114 + off + 2, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
495 :
496 4 : s->addEvent720(134 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
497 4 : s->addEvent720(134 + off + 2, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
498 :
499 4 : s->addEvent720(154 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
500 4 : s->addEvent720(154 + off + 2, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
501 :
502 4 : s->addEvent720(174 + off, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
503 4 : s->addEvent720(174 + off + 2, TriggerValue::FALL, TriggerWheel::T_SECONDARY);
504 4 : }
505 :
506 : // TT_JEEP_4_CYL
507 1 : void initJeep_XJ_4cyl_2500(TriggerWaveform *s) {
508 1 : s->initialize(FOUR_STROKE_CAM_SENSOR, SyncEdge::RiseOnly);
509 1 : s->isSynchronizationNeeded = false;
510 1 : s->tdcPosition = 720 - 236;
511 :
512 1 : float offset = 124;
513 :
514 1 : add4cylblock(offset - 180, s);
515 1 : add4cylblock(offset, s);
516 :
517 1 : s->addEvent720(236 + offset, TriggerValue::RISE, TriggerWheel::T_PRIMARY); // 360
518 :
519 1 : add4cylblock(offset + 180, s);
520 1 : add4cylblock(offset + 360, s);
521 :
522 1 : s->addEvent720(596 + offset, TriggerValue::FALL, TriggerWheel::T_PRIMARY); // 720
523 :
524 1 : }
525 :
526 1 : void configureChryslerNGC_36_2_2(TriggerWaveform *s) {
527 1 : s->initialize(FOUR_STROKE_CAM_SENSOR, SyncEdge::RiseOnly);
528 :
529 1 : float wide = 30 * 2;
530 1 : float narrow = 10 * 2;
531 :
532 1 : s->setTriggerSynchronizationGap(3.5);
533 15 : for (int i = 1; i < 15; i++) {
534 14 : s->setTriggerSynchronizationGap3(/*gapIndex*/i, TRIGGER_GAP_DEVIATION_LOW, TRIGGER_GAP_DEVIATION_HIGH);
535 : }
536 1 : s->setTriggerSynchronizationGap3(/*gapIndex*/15, 0.4 * TRIGGER_GAP_DEVIATION_LOW, 0.4 * TRIGGER_GAP_DEVIATION_HIGH);
537 :
538 1 : float base = 0;
539 :
540 15 : for (int i = 0; i < 14; i++) {
541 14 : s->addEventAngle(base + narrow / 2, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
542 14 : s->addEventAngle(base + narrow, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
543 14 : base += narrow;
544 : }
545 :
546 1 : s->addEventAngle(base + narrow / 2, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
547 1 : base += narrow / 2;
548 1 : s->addEventAngle(base + wide, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
549 1 : base += wide;
550 :
551 17 : for (int i = 0; i < 16; i++) {
552 16 : s->addEventAngle(base + narrow / 2, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
553 16 : s->addEventAngle(base + narrow, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
554 16 : base += narrow;
555 : }
556 :
557 : // one small tooth at the end of the engine cycle
558 1 : s->addEventAngle(s->getCycleDuration() - narrow / 2, TriggerValue::RISE, TriggerWheel::T_PRIMARY);
559 1 : s->addEventAngle(s->getCycleDuration(), TriggerValue::FALL, TriggerWheel::T_PRIMARY);
560 1 : }
|