LCOV - code coverage report
Current view: top level - firmware/controllers/trigger/decoders - trigger_toyota.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 46 46 100.0 %
Date: 2024-05-06 20:32:19 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /*
       2             :  * @file trigger_toyota.cpp
       3             :  *
       4             :  * https://thedeltaecho.wordpress.com/2010/03/14/2jz-ge-cam-crank-signals/
       5             :  *
       6             :  * @date Dec 14, 2015
       7             :  * @author Andrey Belomutskiy, (c) 2012-2020
       8             :  */
       9             : 
      10             : #include "pch.h"
      11             : 
      12             : #include "trigger_toyota.h"
      13             : 
      14             : /**
      15             :  * https://rusefi.com/forum/viewtopic.php?f=5&t=1720
      16             :  */
      17           1 : void initialize2jzGE3_34_simulation_shape(TriggerWaveform *s) {
      18           1 :         s->initialize(FOUR_STROKE_CAM_SENSOR, SyncEdge::Rise);
      19             : 
      20           1 :         float camD = 720 / 6; // 120
      21             : 
      22           1 :         float crankDelta = 720 / 36 / 2; // 10
      23             : 
      24           1 :         float camAngle = 1;
      25           1 :         float crankAngle = 2 * crankDelta; // skipping two teeth
      26             : 
      27          11 :         for (int i = 0; i < 10; i++) {
      28          10 :                 s->addEvent720(crankAngle + 5, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
      29          10 :                 s->addEvent720(crankAngle + crankDelta, TriggerValue::FALL, TriggerWheel::T_SECONDARY); // 120
      30          10 :                 crankAngle += 10;
      31             :         } // 2 + 10
      32             : 
      33           1 :         camAngle += camD;
      34           1 :         s->addEvent720(camAngle, TriggerValue::RISE, TriggerWheel::T_PRIMARY); // 120
      35           1 :         s->addEvent720(camAngle + 3, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
      36             : 
      37          13 :         for (int i = 0; i < 12; i++) {
      38          12 :                 s->addEvent720(crankAngle + 5, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
      39          12 :                 s->addEvent720(crankAngle + crankDelta, TriggerValue::FALL, TriggerWheel::T_SECONDARY); // 120
      40          12 :                 crankAngle += 10;
      41             :         } // 2 + 22
      42             : 
      43             : 
      44           1 :         camAngle += camD;
      45             : 
      46          13 :         for (int i = 0; i < 12; i++) {
      47          12 :                 s->addEvent720(crankAngle + 5, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
      48          12 :                 s->addEvent720(crankAngle + crankDelta, TriggerValue::FALL, TriggerWheel::T_SECONDARY); // 120
      49          12 :                 crankAngle += crankDelta;
      50             :         } // 2 + 34
      51             : 
      52           1 :         camAngle += camD;
      53           1 :         s->addEvent720(camAngle, TriggerValue::RISE, TriggerWheel::T_PRIMARY); // 360
      54           1 :         s->addEvent720(camAngle + 3, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
      55             : 
      56           1 :         crankAngle += 20; // skipping two teeth one more time
      57          11 :         for (int i = 0; i < 10; i++) {
      58          10 :                 s->addEvent720(crankAngle + 5, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
      59          10 :                 s->addEvent720(crankAngle + crankDelta, TriggerValue::FALL, TriggerWheel::T_SECONDARY); // 120
      60          10 :                 crankAngle += crankDelta;
      61             :         } // 2 + 10
      62             : 
      63           1 :         camAngle += camD;
      64             : 
      65          13 :         for (int i = 0; i < 12; i++) {
      66          12 :                 s->addEvent720(crankAngle + 5, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
      67          12 :                 s->addEvent720(crankAngle + crankDelta, TriggerValue::FALL, TriggerWheel::T_SECONDARY); // 120
      68          12 :                 crankAngle += crankDelta;
      69             :         } // 2 + 22
      70             : 
      71           1 :         camAngle += camD;
      72           1 :         s->addEvent720(camAngle, TriggerValue::RISE, TriggerWheel::T_PRIMARY); // 600
      73           1 :         s->addEvent720(camAngle + 3, TriggerValue::FALL, TriggerWheel::T_PRIMARY);
      74             : 
      75             : 
      76          13 :         for (int i = 0; i < 12; i++) {
      77          12 :                 s->addEvent720(crankAngle + 5, TriggerValue::RISE, TriggerWheel::T_SECONDARY);
      78          12 :                 s->addEvent720(crankAngle + crankDelta, TriggerValue::FALL, TriggerWheel::T_SECONDARY); // 120
      79          12 :                 crankAngle += 10;
      80             :         } // 2 + 32
      81           1 :         camAngle += camD;
      82             : 
      83           1 :         s->shapeWithoutTdc = true;
      84           1 :         s->isSynchronizationNeeded = false;
      85           1 : }

Generated by: LCOV version 1.14