diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index 53108038bf..270c2be45a 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -313,8 +313,8 @@ static void showFuelInfo2(float rpm, float engineLoad) { scheduleMsg(&logger2, "cranking fuel: %f", getCrankingFuel(&engine)); if (engine.rpmCalculator->isRunning()) { - float iatCorrection = getIatCorrection(getIntakeAirTemperature(engineConfiguration2)); - float cltCorrection = getCltCorrection(getCoolantTemperature(engineConfiguration2)); + float iatCorrection = getIatCorrection(engineConfiguration, getIntakeAirTemperature(engineConfiguration2)); + float cltCorrection = getCltCorrection(engineConfiguration, getCoolantTemperature(engineConfiguration2)); float injectorLag = getInjectorLag(engineConfiguration, getVBatt()); scheduleMsg(&logger2, "rpm=%f engineLoad=%f", rpm, engineLoad); scheduleMsg(&logger2, "baseFuel=%f", baseFuel); diff --git a/firmware/controllers/algo/fuel_math.cpp b/firmware/controllers/algo/fuel_math.cpp index ec4fc4f69d..62caaa4289 100644 --- a/firmware/controllers/algo/fuel_math.cpp +++ b/firmware/controllers/algo/fuel_math.cpp @@ -72,13 +72,17 @@ static int getNumberOfInjections(engine_configuration_s const *engineConfigurati * @returns Length of fuel injection, in milliseconds */ float getFuelMs(int rpm, Engine *engine) { + engine_configuration_s *engineConfiguration = engine->engineConfiguration; + float theoreticalInjectionLength; if (isCranking()) { - return getCrankingFuel(engine) / getNumberOfInjections(engine->engineConfiguration, engine->engineConfiguration->crankingInjectionMode); + theoreticalInjectionLength = getCrankingFuel(engine) / getNumberOfInjections(engineConfiguration, engineConfiguration->crankingInjectionMode); } else { float baseFuel = getBaseFuel(engine, rpm); float fuelPerCycle = getRunningFuel(baseFuel, engine, rpm); - return fuelPerCycle / getNumberOfInjections(engine->engineConfiguration, engine->engineConfiguration->injectionMode); + theoreticalInjectionLength = fuelPerCycle / getNumberOfInjections(engineConfiguration, engine->engineConfiguration->injectionMode); } + float injectorLag = getInjectorLag(engineConfiguration, getVBatt()); + return theoreticalInjectionLength + injectorLag; } // todo: start using 'engine' parameter and not 'extern' @@ -86,19 +90,15 @@ float getRunningFuel(float baseFuel, Engine *engine, int rpm) { engine_configuration_s *engineConfiguration = engine->engineConfiguration; float iatCorrection = getIatCorrection(engineConfiguration, getIntakeAirTemperature(engine->engineConfiguration2)); float cltCorrection = getCltCorrection(engineConfiguration, getCoolantTemperature(engine->engineConfiguration2)); - float injectorLag = getInjectorLag(engineConfiguration, getVBatt()); #if EFI_ACCEL_ENRICHMENT float accelEnrichment = getAccelEnrichment(); // todo: accelEnrichment #endif /* EFI_ACCEL_ENRICHMENT */ - return baseFuel * cltCorrection * iatCorrection + injectorLag; + return baseFuel * cltCorrection * iatCorrection; } -extern Engine engine; -extern engine_configuration_s *engineConfiguration; - static Map3D1616 fuelMap; /** diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index 8b3c198417..6b8cc1717d 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -116,7 +116,7 @@ static void updateErrorCodes(void) { /** * technically we can set error codes right inside the getMethods, but I a bit on a fence about it */ - setError(isValidIntakeAirTemperature(getIntakeAirTemperature()), OBD_Intake_Air_Temperature_Circuit_Malfunction); + setError(isValidIntakeAirTemperature(getIntakeAirTemperature(engineConfiguration2)), OBD_Intake_Air_Temperature_Circuit_Malfunction); setError(isValidCoolantTemperature(getCoolantTemperature(engineConfiguration2)), OBD_Engine_Coolant_Temperature_Circuit_Malfunction); } diff --git a/firmware/controllers/lcd_controller.cpp b/firmware/controllers/lcd_controller.cpp index af29e6a11b..9ef60621bf 100644 --- a/firmware/controllers/lcd_controller.cpp +++ b/firmware/controllers/lcd_controller.cpp @@ -41,12 +41,13 @@ static char * prepareVBattMapLine(char *buffer) { } static char * prepareCltIatTpsLine(char *buffer) { + engine_configuration2_s *engineConfiguration2 = engine.engineConfiguration2; char *ptr = buffer; *ptr++ = 'C'; - ptr = ftoa(ptr, getCoolantTemperature(engine.engineConfiguration2), 10.0f); + ptr = ftoa(ptr, getCoolantTemperature(engineConfiguration2), 10.0f); ptr = appendStr(ptr, " C"); - ptr = ftoa(ptr, getIntakeAirTemperature(), 10.0f); + ptr = ftoa(ptr, getIntakeAirTemperature(engineConfiguration2), 10.0f); ptr = appendStr(ptr, " TP"); ptr = itoa10(ptr, (int) getTPS()); diff --git a/firmware/controllers/settings.cpp b/firmware/controllers/settings.cpp index 97fe2e135e..c396fe402d 100644 --- a/firmware/controllers/settings.cpp +++ b/firmware/controllers/settings.cpp @@ -293,7 +293,7 @@ static void printTemperatureInfo(void) { scheduleMsg(&logger, "CLT sensing error"); } printThermistor("IAT", &engineConfiguration2->iat); - if (!isValidIntakeAirTemperature(getIntakeAirTemperature())) { + if (!isValidIntakeAirTemperature(getIntakeAirTemperature(engineConfiguration2))) { scheduleMsg(&logger, "IAT sensing error"); } diff --git a/unit_tests/test_fuel_map.cpp b/unit_tests/test_fuel_map.cpp index 05ec2c81a3..43a4541bee 100644 --- a/unit_tests/test_fuel_map.cpp +++ b/unit_tests/test_fuel_map.cpp @@ -55,7 +55,7 @@ void testFuelMap(void) { // because all the correction tables are zero printf("*************************************************** getRunningFuel 1\r\n"); float baseFuel = getBaseTableFuel(eth.engine.engineConfiguration, 5, getEngineLoadT(ð.engine)); - assertEqualsM("base fuel", 5.5, getRunningFuel(baseFuel, ð.engine, 5)); + assertEqualsM("base fuel", 5.0, getRunningFuel(baseFuel, ð.engine, 5)); printf("*************************************************** setting IAT table\r\n"); for (int i = 0; i < IAT_CURVE_SIZE; i++) { diff --git a/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp b/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp index f9c5671b51..228db2f47f 100644 --- a/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp +++ b/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp @@ -81,7 +81,7 @@ void rusEfiFunctionalTest(void) { resetConfigurationExt(NULL, FORD_ASPIRE_1996, engineConfiguration, engineConfiguration2); - initThermistors(); + initThermistors(&engine); initAlgo(engineConfiguration); initRpmCalculator();