diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index 3d97baeb2c..c740701a00 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -772,5 +772,5 @@ int getRusEfiVersion(void) { if (initBootloader() != 0) return 123; #endif /* EFI_BOOTLOADER_INCLUDE_CODE */ - return 20190130; + return 20190131; } diff --git a/firmware/controllers/math/config_engine_specs.h b/firmware/controllers/math/config_engine_specs.h index 403aa77a25..4284d1e990 100644 --- a/firmware/controllers/math/config_engine_specs.h +++ b/firmware/controllers/math/config_engine_specs.h @@ -35,5 +35,7 @@ #endif /* EFI_UNIT_TEST */ #define get_operationMode CONFIG_ACCESS_FOR_CONFIG_HEADER_ONLY(operationMode) +#define get_specs_displacement CONFIG_ACCESS_FOR_CONFIG_HEADER_ONLY(specs.displacement) +#define get_injector_flow CONFIG_ACCESS_FOR_CONFIG_HEADER_ONLY(injector.flow) #endif /* CONTROLLERS_MATH_CONFIG_ENGINE_SPECS_H_ */ diff --git a/firmware/controllers/math/speed_density.cpp b/firmware/controllers/math/speed_density.cpp index c2ddbf3735..cf0f29d21a 100644 --- a/firmware/controllers/math/speed_density.cpp +++ b/firmware/controllers/math/speed_density.cpp @@ -14,6 +14,7 @@ #include "engine.h" #include "engine_math.h" #include "maf2map.h" +#include "config_engine_specs.h" #define rpmMin 500 #define rpmMax 8000 @@ -82,27 +83,25 @@ float getTCharge(int rpm, float tps, float coolantTemp, float airTemp DECLARE_EN /** * @return air mass in grams */ -static float getCycleAirMass(float volumetricEfficiency, float MAP, float tempK DECLARE_ENGINE_PARAMETER_SUFFIX) { - // todo: pre-calculate cylinder displacement to save one division - float cylinderDisplacement = CONFIG(specs.displacement); - return (cylinderDisplacement * volumetricEfficiency * MAP) / (GAS_R * tempK); +static float getCycleAirMass(float volumetricEfficiency, float MAP, float tempK DECLARE_GLOBAL_SUFFIX) { + return (get_specs_displacement * volumetricEfficiency * MAP) / (GAS_R * tempK); } -float getCylinderAirMass(float volumetricEfficiency, float MAP, float tempK DECLARE_ENGINE_PARAMETER_SUFFIX) { - return getCycleAirMass(volumetricEfficiency, MAP, tempK PASS_ENGINE_PARAMETER_SUFFIX) - / CONFIG(specs.cylindersCount); +float getCylinderAirMass(float volumetricEfficiency, float MAP, float tempK DECLARE_GLOBAL_SUFFIX) { + return getCycleAirMass(volumetricEfficiency, MAP, tempK PASS_GLOBAL_SUFFIX) + / get_specs_displacement; } /** * @return per cylinder injection time, in seconds */ -float sdMath(float airMass, float AFR DECLARE_ENGINE_PARAMETER_SUFFIX) { +float sdMath(float airMass, float AFR DECLARE_GLOBAL_SUFFIX) { /** * todo: pre-calculate gramm/second injector flow to save one multiplication * open question if that's needed since that's just a multiplication */ - float injectorFlowRate = cc_minute_to_gramm_second(CONFIG(injector.flow)); + float injectorFlowRate = cc_minute_to_gramm_second(get_injector_flow); /** * injection_pulse_duration = fuel_mass / injector_flow * fuel_mass = air_mass / target_afr @@ -117,7 +116,7 @@ EXTERN_ENGINE; /** * @return per cylinder injection time, in Milliseconds */ -floatms_t getSpeedDensityFuel(float map DECLARE_ENGINE_PARAMETER_SUFFIX) { +floatms_t getSpeedDensityFuel(float map DECLARE_GLOBAL_SUFFIX) { /** * most of the values are pre-calculated for performance reasons */ @@ -128,10 +127,10 @@ floatms_t getSpeedDensityFuel(float map DECLARE_ENGINE_PARAMETER_SUFFIX) { } efiAssert(CUSTOM_ERR_ASSERT, !cisnan(map), "NaN map", 0); - float adjustedMap = map + engine->engineLoadAccelEnrichment.getEngineLoadEnrichment(PASS_ENGINE_PARAMETER_SIGNATURE); + float adjustedMap = map + engine->engineLoadAccelEnrichment.getEngineLoadEnrichment(PASS_GLOBAL_SIGNATURE); efiAssert(CUSTOM_ERR_ASSERT, !cisnan(adjustedMap), "NaN adjustedMap", 0); - float airMass = getCylinderAirMass(ENGINE(engineState.currentVE), adjustedMap, tChargeK PASS_ENGINE_PARAMETER_SUFFIX); + float airMass = getCylinderAirMass(ENGINE(engineState.currentVE), adjustedMap, tChargeK PASS_GLOBAL_SUFFIX); if (cisnan(airMass)) { warning(CUSTOM_ERR_6685, "NaN airMass"); return 0; @@ -142,7 +141,7 @@ floatms_t getSpeedDensityFuel(float map DECLARE_ENGINE_PARAMETER_SUFFIX) { #endif /*EFI_PRINTF_FUEL_DETAILS */ engine->engineState.airMass = airMass; - return sdMath(airMass, ENGINE(engineState.targetAFR) PASS_ENGINE_PARAMETER_SUFFIX) * 1000; + return sdMath(airMass, ENGINE(engineState.targetAFR) PASS_GLOBAL_SUFFIX) * 1000; } static const baro_corr_table_t default_baro_corr = {