Line | Branch | Decision | Exec | Source |
---|---|---|---|---|
1 | #include "pch.h" | |||
2 | ||||
3 | #include "AemXSeriesLambda.h" | |||
4 | ||||
5 | 4 | TEST(CanWideband, AcceptFrameId0) { | ||
6 |
1/1✓ Branch 2 taken 1 time.
|
1 | AemXSeriesWideband dut(0, SensorType::Lambda1); | |
7 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
8 | ||||
9 | 1 | CANRxFrame frame; | ||
10 | ||||
11 | // AEM uses extended CAN ID! | |||
12 | 1 | frame.IDE = true; | ||
13 | 1 | frame.DLC = 8; | ||
14 | ||||
15 | 1 | engineConfiguration->canWbo[0].type = AEM; | ||
16 | ||||
17 | // Check that the AEM format frame is accepted | |||
18 | 1 | frame.EID = 0x180; | ||
19 |
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(dut.acceptFrame(0, frame)); | |
20 | ||||
21 | // Check that the AEM frame with standard CAN ID is not accepted | |||
22 | 1 | frame.IDE = false; | ||
23 | 1 | frame.SID = 0x180; | ||
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(dut.acceptFrame(0, frame)); | |
25 | ||||
26 | // Now switch to RusEFI | |||
27 | 1 | engineConfiguration->canWbo[0].type = RUSEFI; | ||
28 | ||||
29 | // Check that the rusEFI standard data is accepted | |||
30 | 1 | frame.IDE = false; | ||
31 | 1 | frame.SID = 0x190; | ||
32 |
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(dut.acceptFrame(0, frame)); | |
33 | ||||
34 | // Check that the rusEFI extended data is accepted | |||
35 | 1 | frame.SID = 0x191; | ||
36 |
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(dut.acceptFrame(0, frame)); | |
37 | ||||
38 | // Check that the rusEFI frames with extended CAN ID are not accepted | |||
39 | 1 | frame.IDE = true; | ||
40 | 1 | frame.EID = 0x190; | ||
41 |
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(dut.acceptFrame(0, frame)); | |
42 | 1 | frame.EID = 0x191; | ||
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(dut.acceptFrame(0, frame)); | |
44 | 2 | } | ||
45 | ||||
46 | 4 | TEST(CanWideband, AcceptFrameId1) { | ||
47 |
1/1✓ Branch 2 taken 1 time.
|
1 | AemXSeriesWideband dut(1, SensorType::Lambda2); | |
48 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
49 | ||||
50 | 1 | CANRxFrame frame; | ||
51 | ||||
52 | // AEM uses extended CAN ID! | |||
53 | 1 | frame.IDE = true; | ||
54 | 1 | frame.DLC = 8; | ||
55 | ||||
56 | 1 | engineConfiguration->canWbo[1].type = AEM; | ||
57 | 1 | engineConfiguration->canWbo[1].aemId = WBO_AEM_ID2; | ||
58 | ||||
59 | // Check that the AEM format frame is accepted | |||
60 | 1 | frame.EID = 0x181; | ||
61 |
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(dut.acceptFrame(0, frame)); | |
62 | ||||
63 | // Now switch to RusEFI | |||
64 | 1 | engineConfiguration->canWbo[1].type = RUSEFI; | ||
65 | 1 | engineConfiguration->canWbo[1].reId = WBO_RE_ID2; | ||
66 | ||||
67 | // Check that the rusEFI standard data is accepted | |||
68 | 1 | frame.IDE = false; | ||
69 | 1 | frame.SID = 0x192; | ||
70 |
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(dut.acceptFrame(0, frame)); | |
71 | ||||
72 | // Check that the rusEFI extended data is accepted | |||
73 | 1 | frame.SID = 0x193; | ||
74 |
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(dut.acceptFrame(0, frame)); | |
75 | 2 | } | ||
76 | ||||
77 | class AemXSeriesWidebandWrapper: AemXSeriesWideband { | |||
78 | public: | |||
79 | using AemXSeriesWideband::AemXSeriesWideband; | |||
80 | using AemXSeriesWideband::decodeAemXSeries; | |||
81 | using AemXSeriesWideband::Register; | |||
82 | }; | |||
83 | ||||
84 | 4 | TEST(CanWideband,DecodeAemXSeriesInvalidLambda){ | ||
85 |
1/1✓ Branch 2 taken 1 time.
|
1 | AemXSeriesWidebandWrapper wbo(0, SensorType::Lambda1); | |
86 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
87 | 1 | CANRxFrame frame; | ||
88 | ||||
89 | 1 | engineConfiguration->canWbo[0].type = AEM; | ||
90 | ||||
91 | // AEM uses extended CAN ID! | |||
92 | 1 | frame.IDE = true; | ||
93 | 1 | frame.EID = 0x180; | ||
94 | ||||
95 | 1 | frame.DLC = 8; | ||
96 | ||||
97 | 1 | frame.data8[0] = 0x1F; | ||
98 | 1 | frame.data8[1] = 0x40; | ||
99 | 1 | frame.data8[2] = 0; | ||
100 | 1 | frame.data8[3] = 0; | ||
101 | 1 | frame.data8[4] = 0x79; | ||
102 | 1 | frame.data8[5] = 0x6E; | ||
103 | 1 | frame.data8[6] = 0b01000000; | ||
104 | 1 | frame.data8[7] = 0; | ||
105 | ||||
106 |
3/8✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
|
1 | EXPECT_FALSE(wbo.decodeAemXSeries(frame, getTimeNowNt())); | |
107 | 2 | } | ||
108 | ||||
109 | 4 | TEST(CanWideband,DecodeAemXSeriesSensorFault){ | ||
110 |
1/1✓ Branch 2 taken 1 time.
|
1 | AemXSeriesWidebandWrapper wbo(0, SensorType::Lambda1); | |
111 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
112 | 1 | CANRxFrame frame; | ||
113 | ||||
114 | 1 | engineConfiguration->canWbo[0].type = AEM; | ||
115 | ||||
116 | // AEM uses extended CAN ID! | |||
117 | 1 | frame.IDE = true; | ||
118 | 1 | frame.EID = 0x180; | ||
119 | ||||
120 | 1 | frame.DLC = 8; | ||
121 | ||||
122 | 1 | frame.data8[0] = 0x1F; | ||
123 | 1 | frame.data8[1] = 0x40; | ||
124 | 1 | frame.data8[2] = 0; | ||
125 | 1 | frame.data8[3] = 0; | ||
126 | 1 | frame.data8[4] = 0x79; | ||
127 | 1 | frame.data8[5] = 0x6E; | ||
128 | 1 | frame.data8[6] = 0; | ||
129 | 1 | frame.data8[7] = 0b00000010; | ||
130 | ||||
131 |
3/8✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
|
1 | EXPECT_FALSE(wbo.decodeAemXSeries(frame, getTimeNowNt())); | |
132 | 2 | } | ||
133 | ||||
134 | ||||
135 | 4 | TEST(CanWideband,DecodeAemXSeriesValidLambda){ | ||
136 |
1/1✓ Branch 2 taken 1 time.
|
1 | AemXSeriesWidebandWrapper wbo(0, SensorType::Lambda1); | |
137 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
138 | // we dont call initLambda on the tests init code. so we need to register this sensor on the test | |||
139 |
1/1✓ Branch 1 taken 1 time.
|
1 | smoothedLambda1Sensor.Register(); | |
140 | ||||
141 | 1 | engineConfiguration->canWbo[0].type = AEM; | ||
142 | ||||
143 | // only this tests needs register | |||
144 |
1/1✓ Branch 1 taken 1 time.
|
1 | wbo.Register(); | |
145 | ||||
146 | 1 | CANRxFrame frame; | ||
147 | ||||
148 | // AEM uses extended CAN ID! | |||
149 | 1 | frame.IDE = true; | ||
150 | 1 | frame.EID = 0x180; | ||
151 | ||||
152 | 1 | frame.DLC = 8; | ||
153 | ||||
154 | 1 | frame.data8[0] = 0x2F; // 8000, lambda 0.8 | ||
155 | 1 | frame.data8[1] = 0x00; | ||
156 | 1 | frame.data8[2] = 0; | ||
157 | 1 | frame.data8[3] = 0; | ||
158 | 1 | frame.data8[4] = 0; | ||
159 | 1 | frame.data8[5] = 0; | ||
160 | 1 | frame.data8[6] = | ||
161 | 1 << 1 | // LSU 4.9 detected | |||
162 | 1 << 7; // Data valid | |||
163 | 1 | frame.data8[7] = 0; | ||
164 | ||||
165 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | wbo.decodeAemXSeries(frame, getTimeNowNt()); | |
166 | ||||
167 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(1.2032f, Sensor::get(SensorType::Lambda1).value_or(-1)); | |
168 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(1.2032f, Sensor::get(SensorType::SmoothedLambda1).value_or(-1)); | |
169 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::resetRegistry(); | |
170 | 2 | } | ||
171 | ||||
172 | 4 | TEST(CanWideband, DecodeValidAemFormat) { | ||
173 |
1/1✓ Branch 2 taken 1 time.
|
1 | AemXSeriesWideband dut(0, SensorType::Lambda1); | |
174 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
175 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.Register(); | |
176 | ||||
177 | 1 | engineConfiguration->canWbo[0].type = AEM; | ||
178 | ||||
179 | // check not set | |||
180 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(-1, Sensor::get(SensorType::Lambda1).value_or(-1)); | |
181 | ||||
182 | 1 | CANRxFrame frame; | ||
183 | ||||
184 | // AEM uses extended CAN ID! | |||
185 | 1 | frame.IDE = true; | ||
186 | 1 | frame.EID = 0x180; | ||
187 | ||||
188 | 1 | frame.DLC = 8; | ||
189 | ||||
190 | 1 | frame.data8[0] = 0x1F; | ||
191 | 1 | frame.data8[1] = 0x40; | ||
192 | 1 | frame.data8[2] = 0; | ||
193 | 1 | frame.data8[3] = 0; | ||
194 | 1 | frame.data8[4] = 0; | ||
195 | 1 | frame.data8[5] = 0; | ||
196 | 1 | frame.data8[6] = | ||
197 | 1 << 1 | // LSU 4.9 detected | |||
198 | 1 << 7; // Data valid | |||
199 | 1 | frame.data8[7] = 0; | ||
200 | ||||
201 | // check that lambda updates | |||
202 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | dut.processFrame(0, frame, getTimeNowNt()); | |
203 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(0.8f, Sensor::get(SensorType::Lambda1).value_or(-1)); | |
204 | ||||
205 | ||||
206 | // Now check invalid data | |||
207 | 1 | frame.data8[6] = | ||
208 | 1 << 1 | // LSU 4.9 detected | |||
209 | 0 << 7; // Data INVALID | |||
210 | ||||
211 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | dut.processFrame(0, frame, getTimeNowNt()); | |
212 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(-1, Sensor::get(SensorType::Lambda1).value_or(-1)); | |
213 | ||||
214 | ||||
215 | // Now check sensor fault | |||
216 | 1 | frame.data8[6] = | ||
217 | 1 << 1 | // LSU 4.9 detected | |||
218 | 1 << 7; // Data valid | |||
219 | 1 | frame.data8[7] = 1 << 6; // Sensor fault! | ||
220 | ||||
221 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | dut.processFrame(0, frame, getTimeNowNt()); | |
222 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(-1, Sensor::get(SensorType::Lambda1).value_or(-1)); | |
223 | ||||
224 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::resetRegistry(); | |
225 | 2 | } | ||
226 | ||||
227 | #include "wideband_firmware/for_rusefi/wideband_can.h" | |||
228 | ||||
229 | 4 | TEST(CanWideband, DecodeRusefiStandard) | ||
230 | { | |||
231 |
1/1✓ Branch 2 taken 1 time.
|
1 | AemXSeriesWideband dut(0, SensorType::Lambda1); | |
232 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
233 | // we dont call initLambda on the tests init code. so we need to register this sensor on the test | |||
234 |
1/1✓ Branch 1 taken 1 time.
|
1 | smoothedLambda1Sensor.Register(); | |
235 | ||||
236 | 1 | engineConfiguration->canWbo[0].type = RUSEFI; | ||
237 | ||||
238 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.Register(); | |
239 | ||||
240 | 1 | CANRxFrame frame; | ||
241 | 1 | frame.SID = 0x190; | ||
242 | 1 | frame.IDE = false; | ||
243 | 1 | frame.DLC = 8; | ||
244 | ||||
245 | // version | |||
246 | 1 | frame.data8[0] = RUSEFI_WIDEBAND_VERSION; | ||
247 | ||||
248 | // valid | |||
249 | 1 | frame.data8[1] = 1; | ||
250 | ||||
251 | // data = 0.7 lambda | |||
252 | 1 | *reinterpret_cast<uint16_t*>(&frame.data8[2]) = 7000; | ||
253 | ||||
254 | // data = 1234 deg C | |||
255 | 1 | *reinterpret_cast<uint16_t*>(&frame.data8[4]) = 1234; | ||
256 | ||||
257 | 1 | CANRxFrame diagFrame; | ||
258 | 1 | diagFrame.SID = 0x191; | ||
259 | 1 | diagFrame.IDE = false; | ||
260 | 1 | diagFrame.DLC = 8; | ||
261 | ||||
262 | // ESR | |||
263 | 1 | *reinterpret_cast<uint16_t*>(&diagFrame.data8[0]) = 720; | ||
264 | ||||
265 | // nernst DC | |||
266 | 1 | *reinterpret_cast<uint16_t*>(&diagFrame.data8[2]) = 450; | ||
267 | ||||
268 | // PumpDuty | |||
269 | 1 | diagFrame.data8[4] = 127; | ||
270 | ||||
271 | // Status | |||
272 | 1 | diagFrame.data8[5] = 0; | ||
273 | ||||
274 | // HeaterDuty | |||
275 | 1 | diagFrame.data8[6] = 127; | ||
276 | ||||
277 | // check not set | |||
278 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(-1, Sensor::get(SensorType::Lambda1).value_or(-1)); | |
279 | ||||
280 | // check that lambda updates | |||
281 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | dut.processFrame(0, frame, getTimeNowNt()); | |
282 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | dut.processFrame(0, diagFrame, getTimeNowNt()); | |
283 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(0.7f, Sensor::get(SensorType::Lambda1).value_or(-1)); | |
284 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(0.7f, Sensor::get(SensorType::SmoothedLambda1).value_or(-1)); | |
285 | ||||
286 | // Check that temperature updates | |||
287 |
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(dut.tempC, 1234); | |
288 | ||||
289 | // Check that valid bit is respected (should be invalid now) | |||
290 | 1 | frame.data8[1] = 0; | ||
291 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | dut.processFrame(0, frame, getTimeNowNt()); | |
292 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | dut.processFrame(0, diagFrame, getTimeNowNt()); | |
293 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(-1, Sensor::get(SensorType::Lambda1).value_or(-1)); | |
294 | ||||
295 | // ...but no error until egine is runnig | |||
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((uint8_t)wbo::Fault::NotAllowed, dut.faultCode); | |
297 | ||||
298 | // Now driver should handle valid bit and error states from wbo | |||
299 | 1 | engine->engineState.heaterControlEnabled = true; | ||
300 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | dut.processFrame(0, frame, getTimeNowNt()); | |
301 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | dut.processFrame(0, diagFrame, getTimeNowNt()); | |
302 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(-1, Sensor::get(SensorType::Lambda1).value_or(-1)); | |
303 | ||||
304 | // make valid again, but report WBO error in diagnostic frame | |||
305 | 1 | frame.data8[1] = 1; | ||
306 | 1 | diagFrame.data8[5] = (uint8_t)wbo::Fault::SensorNoHeatSupply; | ||
307 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | dut.processFrame(0, frame, getTimeNowNt()); | |
308 |
2/2✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
|
1 | dut.processFrame(0, diagFrame, getTimeNowNt()); | |
309 |
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((uint8_t)wbo::Fault::SensorNoHeatSupply, dut.faultCode); | |
310 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_FLOAT_EQ(0.7f, Sensor::get(SensorType::Lambda1).value_or(-1)); | |
311 | 2 | } | ||
312 | ||||
313 | 4 | TEST(CanWideband, DecodeRusefiStandardWrongVersion) | ||
314 | { | |||
315 |
1/1✓ Branch 2 taken 1 time.
|
1 | AemXSeriesWideband dut(0, SensorType::Lambda1); | |
316 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
317 | ||||
318 | 1 | engineConfiguration->canWbo[0].type = RUSEFI; | ||
319 | ||||
320 |
1/1✓ Branch 1 taken 1 time.
|
1 | dut.Register(); | |
321 | ||||
322 | 1 | CANRxFrame frame; | ||
323 | 1 | frame.SID = 0x190; | ||
324 | 1 | frame.IDE = false; | ||
325 | 1 | frame.DLC = 8; | ||
326 | ||||
327 | // version - WRONG VERSION ON PURPOSE! | |||
328 | 1 | frame.data8[0] = RUSEFI_WIDEBAND_VERSION_MIN - 1; | ||
329 | ||||
330 |
6/24✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 27 not taken.
✗ Branch 32 not taken.
✗ Branch 35 not taken.
✓ Branch 42 taken 1 time.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 49 not taken.
✗ Branch 54 not taken.
✗ Branch 57 not taken.
✗ Branch 63 not taken.
✗ Branch 67 not taken.
✗ Branch 70 not taken.
✗ Branch 75 not taken.
✗ Branch 78 not taken.
|
1 | EXPECT_FATAL_ERROR(dut.processFrame(0, frame, getTimeNowNt())); | |
331 | 2 | } | ||
332 |