| Line | Branch | Decision | Exec | Source |
|---|---|---|---|---|
| 1 | /* | |||
| 2 | * @file test_can_bmw_e46.cpp | |||
| 3 | * | |||
| 4 | * @date: dic 30, 2025 | |||
| 5 | * @author FDSoftware | |||
| 6 | */ | |||
| 7 | ||||
| 8 | ||||
| 9 | #include "pch.h" | |||
| 10 | #include "can_msg_tx.h" | |||
| 11 | #include "can.h" | |||
| 12 | #include "can_dash.h" | |||
| 13 | #include "can_bmw.h" | |||
| 14 | ||||
| 15 | 4 | TEST(CanDash, BMW_e46) { | ||
| 16 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 17 | 1 | engineConfiguration->canNbcType = CAN_BUS_BMW_E46; | ||
| 18 | ||||
| 19 |
1/1✓ Branch 1 taken 1 time.
|
1 | engine->rpmCalculator.setRpmValue(1500); | |
| 20 |
1/1✓ Branch 1 taken 1 time.
|
1 | Sensor::setMockValue(SensorType::Clt, 70); | |
| 21 | ||||
| 22 |
1/1✓ Branch 2 taken 1 time.
|
1 | CanCycle cycle(0); | |
| 23 | ||||
| 24 |
1/1✓ Branch 1 taken 1 time.
|
1 | updateDash(cycle); | |
| 25 | ||||
| 26 |
3/7✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_EQ(txCanBuffer.getCount(), 2); | |
| 27 | ||||
| 28 | // First frame: CAN_BMW_E46_RPM (0x316) | |||
| 29 |
1/1✓ Branch 2 taken 1 time.
|
1 | CANTxFrame frame1 = txCanBuffer.get(); | |
| 30 |
2/6✓ Branch 4 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 13 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(frame1.SID, CAN_BMW_E46_RPM); | |
| 31 |
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(frame1.data8[0], 0x05); // ASC message | |
| 32 |
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(frame1.data8[1], 0x0C); // Indexed Engine Torque | |
| 33 | // data8[2-3]: RPM 1500 * 6.4 = 9600 = 0x25 | 0x80 | |||
| 34 |
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(frame1.data8[2], 0x80); | |
| 35 |
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(frame1.data8[3], 0x25); | |
| 36 |
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(frame1.data8[4], 0x0C); | |
| 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(frame1.data8[5], 0x15); | |
| 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(frame1.data8[6], 0x00); | |
| 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(frame1.data8[7], 0x35); | |
| 40 | ||||
| 41 | // Second frame: CAN_BMW_E46_DME2 (0x329) | |||
| 42 |
1/1✓ Branch 2 taken 1 time.
|
1 | CANTxFrame frame2 = txCanBuffer.get(); | |
| 43 |
2/6✓ Branch 4 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 13 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(frame2.SID, CAN_BMW_E46_DME2); | |
| 44 |
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(frame2.data8[0], 0x11); | |
| 45 | // data8[1]: CLT converted (70 + 48.373) / 0.75; = 157.83 ≈ 0x9D | |||
| 46 |
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(frame2.data8[1], 0x9D); | |
| 47 |
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(frame2.data8[2], 0x00); // baro sensor | |
| 48 |
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(frame2.data8[3], 0x08); | |
| 49 |
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(frame2.data8[4], 0x00); // TPS_VIRT_CRU_CAN | |
| 50 |
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(frame2.data8[5], 0x00); // not used, TPS | |
| 51 |
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(frame2.data8[6], 0x00); // brake system status | |
| 52 |
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(frame2.data8[7], 0x00); // not used | |
| 53 | 2 | } | ||
| 54 |