From c0cbe626b647425c07d9edd409a84dccdf9e04bf Mon Sep 17 00:00:00 2001 From: Andrey Date: Sat, 3 Jul 2021 12:43:01 -0400 Subject: [PATCH] Nissan VVT trigger decoder fix #2887 TDD is amazing we are done here! --- firmware/config/engines/nissan_vq.cpp | 3 +++ firmware/config/engines/nissan_vq.h | 3 +++ unit_tests/tests/trigger/test_nissan_vq_vvt.cpp | 17 ++++++++--------- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/firmware/config/engines/nissan_vq.cpp b/firmware/config/engines/nissan_vq.cpp index c542eb1435..2dde2b354f 100644 --- a/firmware/config/engines/nissan_vq.cpp +++ b/firmware/config/engines/nissan_vq.cpp @@ -13,4 +13,7 @@ void setHellen121nissan(DECLARE_CONFIG_PARAMETER_SIGNATURE) { engineConfiguration->trigger.type = TT_NISSAN_VQ; engineConfiguration->vvtMode[0] = VVT_NISSAN_VQ; + + engineConfiguration->vvtOffsets[0] = NISSAN_VQ_VVT_OFFSET; + engineConfiguration->vvtOffsets[1 * CAMS_PER_BANK] = NISSAN_VQ_VVT_OFFSET - NISSAN_VQ_CAM_OFFSET; } diff --git a/firmware/config/engines/nissan_vq.h b/firmware/config/engines/nissan_vq.h index 0fed5dd805..f9f432dc78 100644 --- a/firmware/config/engines/nissan_vq.h +++ b/firmware/config/engines/nissan_vq.h @@ -9,4 +9,7 @@ #include "engine_configuration.h" +#define NISSAN_VQ_VVT_OFFSET -27.5 +#define NISSAN_VQ_CAM_OFFSET 360 + void setHellen121nissan(DECLARE_CONFIG_PARAMETER_SIGNATURE); diff --git a/unit_tests/tests/trigger/test_nissan_vq_vvt.cpp b/unit_tests/tests/trigger/test_nissan_vq_vvt.cpp index d2d9e870e6..0d466aab50 100644 --- a/unit_tests/tests/trigger/test_nissan_vq_vvt.cpp +++ b/unit_tests/tests/trigger/test_nissan_vq_vvt.cpp @@ -7,6 +7,7 @@ #include "engine_test_helper.h" #include "trigger_nissan.h" +#include "nissan_vq.h" class TriggerCallback { public: @@ -71,8 +72,6 @@ TEST(nissan, vq_vvt) { int cyclesCount = 36; - angle_t offsetBetweenCams = 360; - { static TriggerWaveform crank; initializeNissanVQcrank(&crank); @@ -84,6 +83,8 @@ TEST(nissan, vq_vvt) { // crank being FOUR_STROKE_THREE_TIMES_CRANK_SENSOR means 120 degrees cycle duration which does not match cam shaft cycle duration float vvtTimeScale = 1 / 1.5; + angle_t testVvtOffset = 2; + { static TriggerWaveform vvt; initializeNissanVQvvt(&vvt); @@ -92,7 +93,7 @@ TEST(nissan, vq_vvt) { /* timeScale */ vvtTimeScale, cyclesCount / 6, true, /* vvtBankIndex */ 0, - /* vvtOffset */ 0 + /* vvtOffset */ testVvtOffset PASS_ENGINE_PARAMETER_SUFFIX); } @@ -104,7 +105,7 @@ TEST(nissan, vq_vvt) { /* timeScale */ vvtTimeScale, cyclesCount / 6, true, /* vvtBankIndex */1, - /* vvtOffset */ offsetBetweenCams + /* vvtOffset */ testVvtOffset + NISSAN_VQ_CAM_OFFSET PASS_ENGINE_PARAMETER_SUFFIX); } @@ -121,10 +122,8 @@ TEST(nissan, vq_vvt) { ASSERT_TRUE(tc->vvtState[0][0].getShaftSynchronized()); ASSERT_TRUE(tc->vvtState[1][0].getShaftSynchronized()); - angle_t firstVVTangle = 27.5; - ASSERT_NEAR(firstVVTangle, tc->vvtPosition[0][0], EPS2D); - ASSERT_NEAR(firstVVTangle + offsetBetweenCams, tc->vvtPosition[1][0], EPS2D); + ASSERT_NEAR(-testVvtOffset, tc->vvtPosition[0][0], EPS2D); + ASSERT_NEAR(-testVvtOffset, tc->vvtPosition[1][0], EPS2D); - // todo - EXPECT_EQ(1, eth.recentWarnings()->getCount()); + EXPECT_EQ(0, eth.recentWarnings()->getCount()); }