GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/controllers/can/test_obd2.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 219 0 219
Functions: 100.0% 42 0 42
Branches: 41.0% 216 0 527
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 #include "can_msg_tx.h"
4 #include "can.h"
5 #include "can_listener.h"
6 #include "obd2.h"
7
8
9 4 TEST(CanObd2, obdSendPacket)
10 {
11
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
12
13
1/1
✓ Branch 1 taken 1 time.
1 obdSendPacket(0, PID_RPM, 1, 0xff, 0);
14
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_TRUE(txCanBuffer.getCount());
15
16
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame frame = txCanBuffer.get();
17
18
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(frame.data8[0], 3); // correct data size
19
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(frame.data8[1], 0X40); // correct header
20
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(frame.data8[2], PID_RPM); // correct PID
21
22 // clear shared buffer
23
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
24
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
25 2 }
26
27 4 TEST(CanObd2, handleGetDataRequest_SUPPORTED_PIDS_01_20)
28 {
29
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
30
31 1 CANRxFrame frame;
32 1 frame.data8[2] = PID_SUPPORTED_PIDS_REQUEST_01_20;
33
34
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
35
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame rxFrame = txCanBuffer.get();
36
37
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 6); // correct data size
38
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0X41); // correct header
39
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_SUPPORTED_PIDS_REQUEST_01_20); // correct PID
40
41 // clear shared buffer
42
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
43
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
44 2 }
45
46 4 TEST(CanObd2, handleGetDataRequest_SUPPORTED_PIDS_21_40)
47 {
48
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
49
50 1 CANRxFrame frame;
51 1 frame.data8[2] = PID_SUPPORTED_PIDS_REQUEST_21_40;
52
53
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
54
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame rxFrame = txCanBuffer.get();
55
56
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 6); // correct data size
57
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0x41); // correct header
58
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_SUPPORTED_PIDS_REQUEST_21_40); // correct PID
59
60 // clear shared buffer
61
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
62
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
63 2 }
64
65 4 TEST(CanObd2, handleGetDataRequest_SUPPORTED_PIDS_41_60)
66 {
67
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
68
69 1 CANRxFrame frame;
70 1 frame.data8[2] = PID_SUPPORTED_PIDS_REQUEST_41_60;
71
72
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
73
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame rxFrame = txCanBuffer.get();
74
75
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 6); // correct data size
76
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0x41); // correct header
77
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_SUPPORTED_PIDS_REQUEST_41_60); // correct PID
78
79 // clear shared buffer
80
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
81
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
82 2 }
83
84
85 4 TEST(CanObd2, handleGetDataRequest_SUPPORTED_PID_ENGINE_LOAD)
86 {
87
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
88
89 1 CANRxFrame frame;
90 1 frame.data8[2] = PID_ENGINE_LOAD;
91
92
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
93
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame rxFrame = txCanBuffer.get();
94
95
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 3); // correct data size
96
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0x41); // correct header
97
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_ENGINE_LOAD); // correct PID
98
3/7
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
1 EXPECT_EQ(rxFrame.data8[3], getFuelingLoad() * ODB_TPS_BYTE_PERCENT); // correct value
99
100 // clear shared buffer
101
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
102
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
103 2 }
104
105
106 4 TEST(CanObd2, handleGetDataRequest_PID_COOLANT_TEMP)
107 {
108
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
109
110 1 CANRxFrame frame;
111 1 frame.data8[2] = PID_COOLANT_TEMP;
112
113
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
114
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame rxFrame = txCanBuffer.get();
115
116
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 3); // correct data size
117
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0x41); // correct header
118
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_COOLANT_TEMP); // correct PID
119
3/7
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
1 EXPECT_EQ(rxFrame.data8[3], Sensor::getOrZero(SensorType::Clt) + ODB_TEMP_EXTRA); // correct value
120
121 // clear shared buffer
122
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
123
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
124 2 }
125
126 4 TEST(CanObd2, handleGetDataRequest_PID_STFT_BANK1_2)
127 {
128
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
129
130 1 CANRxFrame frame;
131 1 frame.data8[2] = PID_STFT_BANK1;
132
133
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
134
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame rxFrame = txCanBuffer.get();
135
136
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 3); // correct data size
137
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0x41); // correct header
138
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_STFT_BANK1); // correct PID
139
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[3], 128 * engine->engineState.stftCorrection[0]); // correct value
140
141 1 frame.data8[2] = PID_STFT_BANK2;
142
143
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
144
1/1
✓ Branch 1 taken 1 time.
1 rxFrame = txCanBuffer.get();
145
146
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 3); // correct data size
147
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0x41); // correct header
148
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_STFT_BANK2); // correct PID
149
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[3], 128 * engine->engineState.stftCorrection[0]); // correct value
150
151 // clear shared buffer
152
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
153
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
154 2 }
155
156 4 TEST(CanObd2, handleGetDataRequest_PID_INTAKE_MAP)
157 {
158
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
159
160 1 CANRxFrame frame;
161 1 frame.data8[2] = PID_INTAKE_MAP;
162
163
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
164
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame rxFrame = txCanBuffer.get();
165
166
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 3); // correct data size
167
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0x41); // correct header
168
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_INTAKE_MAP); // correct PID
169
3/7
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
1 EXPECT_EQ(rxFrame.data8[3], Sensor::getOrZero(SensorType::Map)); // correct value
170
171 // clear shared buffer
172
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
173
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
174 2 }
175
176 4 TEST(CanObd2, handleGetDataRequest_PID_RPM)
177 {
178
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
179
180 1 CANRxFrame frame;
181 1 frame.data8[2] = PID_RPM;
182
183
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
184
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame rxFrame = txCanBuffer.get();
185
186
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 4); // correct data size
187
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0x41); // correct header
188
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_RPM); // correct PID
189
190
1/1
✓ Branch 1 taken 1 time.
1 int rpm = Sensor::getOrZero(SensorType::Rpm) * ODB_RPM_MULT;
191
192
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[3], (rpm >> 0) & 0xff); // correct value
193
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[4], (rpm >> 8) & 0xff); // correct value
194
195 // clear shared buffer
196
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
197
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
198 2 }
199
200 4 TEST(CanObd2, handleGetDataRequest_PID_SPEED)
201 {
202
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
203
204 1 CANRxFrame frame;
205 1 frame.data8[2] = PID_SPEED;
206
207
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
208
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame rxFrame = txCanBuffer.get();
209
210
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 3); // correct data size
211
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0x41); // correct header
212
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_SPEED); // correct PID
213
3/7
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
1 EXPECT_EQ(rxFrame.data8[3], Sensor::getOrZero(SensorType::VehicleSpeed)); // correct value
214
215 // clear shared buffer
216
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
217
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
218 2 }
219
220
221 4 TEST(CanObd2, handleGetDataRequest_PID_INTAKE_TEMP)
222 {
223
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
224
225 1 CANRxFrame frame;
226 1 frame.data8[2] = PID_INTAKE_TEMP;
227
228
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
229
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame rxFrame = txCanBuffer.get();
230
231
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 3); // correct data size
232
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0x41); // correct header
233
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_INTAKE_TEMP); // correct PID
234
3/7
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
1 EXPECT_EQ(rxFrame.data8[3], Sensor::getOrZero(SensorType::Iat) + ODB_TEMP_EXTRA); // correct value
235
236 // clear shared buffer
237
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
238
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
239 2 }
240
241 4 TEST(CanObd2, handleGetDataRequest_PID_INTAKE_MAF)
242 {
243
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
244
245 1 CANRxFrame frame;
246 1 frame.data8[2] = PID_INTAKE_MAF;
247
248
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
249
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame rxFrame = txCanBuffer.get();
250
251
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 4); // correct data size
252
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0x41); // correct header
253
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_INTAKE_MAF); // correct PID
254
255
1/1
✓ Branch 1 taken 1 time.
1 int maf = Sensor::getOrZero(SensorType::Maf) * 100.0f;
256
257
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[3], (maf >> 0) & 0xff); // correct value
258
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[4], (maf >> 8) & 0xff); // correct value
259
260 // clear shared buffer
261
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
262
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
263 2 }
264
265 4 TEST(CanObd2, handleGetDataRequest_PID_THROTTLE)
266 {
267
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
268
269 1 CANRxFrame frame;
270 1 frame.data8[2] = PID_THROTTLE;
271
272
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
273
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame rxFrame = txCanBuffer.get();
274
275
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 3); // correct data size
276
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0x41); // correct header
277
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_THROTTLE); // correct PID
278
3/7
✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
1 EXPECT_EQ(rxFrame.data8[3], Sensor::getOrZero(SensorType::Tps1) * ODB_TPS_BYTE_PERCENT); // correct value
279
280 // clear shared buffer
281
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
282
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
283 2 }
284
285
286 4 TEST(CanObd2, handleGetDataRequest_PID_FUEL_AIR_RATIO_1)
287 {
288
1/1
✓ Branch 2 taken 1 time.
1 EngineTestHelper eth(engine_type_e::TEST_ENGINE);
289
290 1 CANRxFrame frame;
291 1 frame.data8[2] = PID_FUEL_AIR_RATIO_1;
292
293
1/1
✓ Branch 1 taken 1 time.
1 handleGetDataRequest(frame, 0);
294
1/1
✓ Branch 2 taken 1 time.
1 CANTxFrame rxFrame = txCanBuffer.get();
295
296
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[0], 6); // correct data size
297
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[1], 0x41); // correct header
298
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[2], PID_FUEL_AIR_RATIO_1); // correct PID
299
300
2/2
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
1 float lambda = clampF(0, Sensor::getOrZero(SensorType::Lambda1), 1.99f);
301 1 uint16_t scaled = (lambda * 32768);
302
303
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[3], ((scaled << 16) >> 0) & 0xff); // correct value
304
2/6
✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
1 EXPECT_EQ(rxFrame.data8[4], ((scaled << 16) >> 8) & 0xff); // correct value
305
306
307 // clear shared buffer
308
1/1
✓ Branch 1 taken 1 time.
1 txCanBuffer.clear();
309
2/7
✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_FALSE(txCanBuffer.getCount());
310 2 }
311