From 886a88bad3623e77ba7ba8882cc938e189a528a4 Mon Sep 17 00:00:00 2001 From: rusefi Date: Mon, 27 May 2019 16:12:59 -0400 Subject: [PATCH] fix #799 --- firmware/controllers/algo/engine2.cpp | 7 ++++++- unit_tests/tests/test_fuel_map.cpp | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/firmware/controllers/algo/engine2.cpp b/firmware/controllers/algo/engine2.cpp index 5c29fe843a..f59c051239 100644 --- a/firmware/controllers/algo/engine2.cpp +++ b/firmware/controllers/algo/engine2.cpp @@ -215,7 +215,12 @@ void EngineState::periodicFastCallback(DECLARE_ENGINE_PARAMETER_SIGNATURE) { /** * *0.01 because of https://sourceforge.net/p/rusefi/tickets/153/ */ - currentRawVE = veMap.getValue(rpm, CONFIGB(useTPSBasedVeTable) ? tps : map); + if (CONFIGB(useTPSBasedVeTable)) { + // todo: should we have 'veTpsMap' fuel_Map3D_t variable here? + currentRawVE = interpolate3d(tps, CONFIG(ignitionTpsBins), IGN_TPS_COUNT, rpm, config->veRpmBins, FUEL_RPM_COUNT, veMap.pointers); + } else { + currentRawVE = veMap.getValue(rpm, map); + } // get VE from the separate table for Idle if (CONFIG(useSeparateVeForIdle)) { float idleVe = interpolate2d("idleVe", rpm, config->idleVeBins, config->idleVe, IDLE_VE_CURVE_SIZE); diff --git a/unit_tests/tests/test_fuel_map.cpp b/unit_tests/tests/test_fuel_map.cpp index 07ebd8c91f..3508f55116 100644 --- a/unit_tests/tests/test_fuel_map.cpp +++ b/unit_tests/tests/test_fuel_map.cpp @@ -254,6 +254,6 @@ TEST(fuel, testTpsBasedVeDefect799) { setMockTpsValue(7 PASS_ENGINE_PARAMETER_SUFFIX); engine->engineState.periodicFastCallback(PASS_ENGINE_PARAMETER_SIGNATURE); - // we have a problem - we get value on the edge of the MAP axis, not middle of TPS axis - ASSERT_EQ(100, engine->engineState.currentRawVE); + // value in the middle of the map as expected + ASSERT_EQ(107, engine->engineState.currentRawVE); }