GCC Code Coverage Report


Directory: ./
File: firmware/controllers/trigger/decoders/trigger_toyota.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 55 0 55
Functions: 100.0% 2 0 2
Branches: 100.0% 12 0 12
Decisions: 100.0% 12 - 12

Line Branch Decision Exec Source
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
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 10 times.
✓ Decision 'false' taken 1 time.
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
2/2
✓ Branch 0 taken 12 times.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 12 times.
✓ Decision 'false' taken 1 time.
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
2/2
✓ Branch 0 taken 12 times.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 12 times.
✓ Decision 'false' taken 1 time.
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
2/2
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 10 times.
✓ Decision 'false' taken 1 time.
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
2/2
✓ Branch 0 taken 12 times.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 12 times.
✓ Decision 'false' taken 1 time.
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
2/2
✓ Branch 0 taken 12 times.
✓ Branch 1 taken 1 time.
2/2
✓ Decision 'true' taken 12 times.
✓ Decision 'false' taken 1 time.
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 }
86
87 1 void initializeUzCam(TriggerWaveform *s) {
88 1 s->initialize(FOUR_STROKE_CAM_SENSOR, SyncEdge::RiseOnly);
89 1 int width = 5;
90
91 1 s->addToothRiseFall(135, width);
92 1 s->addToothRiseFall(270, width);
93 1 s->addToothRiseFall(360, width);
94
95 1 s->setTriggerSynchronizationGap4(/*gapIndex*/0, 1.5);
96 1 s->setTriggerSynchronizationGap4(/*gapIndex*/1, 0.67);
97 1 }
98