LCOV - code coverage report
Current view: top level - firmware/controllers/trigger/decoders - trigger_chrysler.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 207 418 49.5 %
Date: 2024-05-05 20:50:36 Functions: 8 9 88.9 %

          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 : }

Generated by: LCOV version 1.14