From ce30439d68aa6035e046a91c4fb2224f74d31bd2 Mon Sep 17 00:00:00 2001 From: rusEfi Date: Tue, 28 Apr 2015 22:04:41 -0400 Subject: [PATCH] auto-sync --- firmware/controllers/map_averaging.cpp | 13 ++++++++----- .../simulator/rusEfiFunctionalTest.cpp | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/firmware/controllers/map_averaging.cpp b/firmware/controllers/map_averaging.cpp index 46a526a74a..78358341c1 100644 --- a/firmware/controllers/map_averaging.cpp +++ b/firmware/controllers/map_averaging.cpp @@ -179,20 +179,23 @@ static void mapAveragingCallback(trigger_event_e ckpEventType, uint32_t index DE perRevolution = perRevolutionCounter; perRevolutionCounter = 0; - MAP_sensor_config_s * config = &engineConfiguration->map; - angle_t currentAngle = TRIGGER_SHAPE(eventAngles[index]); - angle_t samplingStart = interpolate2d(rpm, config->samplingAngleBins, config->samplingAngle, MAP_ANGLE_SIZE) - currentAngle; - angle_t samplingDuration = interpolate2d(rpm, config->samplingWindowBins, config->samplingWindow, MAP_WINDOW_SIZE); + angle_t samplingStart = engine->engineState.mapAveragingStart - currentAngle; + fixAngle(samplingStart); + + angle_t samplingDuration = engine->engineState.mapAveragingDuration; if (samplingDuration <= 0) { firmwareError("map sampling angle should be positive"); return; } - fixAngle(samplingStart); angle_t samplingEnd = samplingStart + samplingDuration; fixAngle(samplingEnd); + if (cisnan(samplingEnd)) { + // value is not yet prepared + return; + } int structIndex = getRevolutionCounter() % 2; // todo: schedule this based on closest trigger event, same as ignition works diff --git a/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp b/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp index 055ab4aea1..954cb1db07 100644 --- a/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp +++ b/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp @@ -111,7 +111,7 @@ void rusEfiFunctionalTest(void) { } #endif - initPeriodicEvents(engine); + initPeriodicEvents(PASS_ENGINE_PARAMETER_F); } void printPendingMessages(void) {