diff --git a/firmware/controllers/actuators/electronic_throttle.cpp b/firmware/controllers/actuators/electronic_throttle.cpp index b536b60dde..c03474ed97 100644 --- a/firmware/controllers/actuators/electronic_throttle.cpp +++ b/firmware/controllers/actuators/electronic_throttle.cpp @@ -315,9 +315,6 @@ expected EtbController::getSetpointEtb() { // 100% target from table -> 100% target position idlePosition = interpolateClamped(0, etbIdleAddition, 100, 100, targetFromTable); - // Apply any adjustment from Lua - luaAdjustment = engine->engineState.luaAdjustments.etbTargetPositionAdd; - percent_t targetPosition = idlePosition + luaAdjustment; // Apply any adjustment that this throttle alone needs diff --git a/firmware/controllers/actuators/electronic_throttle_impl.h b/firmware/controllers/actuators/electronic_throttle_impl.h index 5dd311b320..2ff062958f 100644 --- a/firmware/controllers/actuators/electronic_throttle_impl.h +++ b/firmware/controllers/actuators/electronic_throttle_impl.h @@ -24,7 +24,7 @@ #define ETB_LOOP_FREQUENCY 500 #define DEFAULT_ETB_PWM_FREQUENCY 800 -class EtbController : public IEtbController, electronic_throttle_s { +class EtbController : public IEtbController, public electronic_throttle_s { public: bool init(etb_function_e function, DcMotor *motor, pid_s *pidParameters, const ValueProvider3D* pedalMap, bool initializeThrottles) override; void setIdlePosition(percent_t pos) override; diff --git a/firmware/controllers/algo/advance_map.h b/firmware/controllers/algo/advance_map.h index a44d754ddd..a6d6ab2505 100644 --- a/firmware/controllers/algo/advance_map.h +++ b/firmware/controllers/algo/advance_map.h @@ -19,5 +19,8 @@ size_t getMultiSparkCount(int rpm); class IgnitionState : public ignition_state_s { public: + IgnitionState() { + luaTimingMult = 1; + } floatms_t getSparkDwell(int rpm); }; diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index 3bd1d5c689..d1f1507ae5 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -40,6 +40,7 @@ #include "gear_detector.h" #include "advance_map.h" #include "fan_control.h" +#include "electronic_throttle_impl.h" #ifndef EFI_UNIT_TEST #error EFI_UNIT_TEST must be defined! @@ -166,7 +167,7 @@ public: PinRepository pinRepository; - IEtbController *etbControllers[ETB_COUNT] = {nullptr}; + EtbController *etbControllers[ETB_COUNT] = {nullptr}; IFuelComputer *fuelComputer = nullptr; type_list< diff --git a/firmware/controllers/algo/engine2.cpp b/firmware/controllers/algo/engine2.cpp index be66d0b091..9c435ec0f6 100644 --- a/firmware/controllers/algo/engine2.cpp +++ b/firmware/controllers/algo/engine2.cpp @@ -143,7 +143,7 @@ void EngineState::periodicFastCallback() { injectionOffset = getInjectionOffset(rpm, fuelLoad); float ignitionLoad = getIgnitionLoad(); - float advance = getAdvance(rpm, ignitionLoad) * luaAdjustments.ignitionTimingMult + luaAdjustments.ignitionTimingAdd; + float advance = getAdvance(rpm, ignitionLoad) * engine->ignitionState.luaTimingMult + engine->ignitionState.luaTimingAdd; // compute per-bank fueling for (size_t i = 0; i < STFT_BANK_COUNT; i++) { diff --git a/firmware/controllers/algo/engine_state.h b/firmware/controllers/algo/engine_state.h index dbd89336dc..3288239df4 100644 --- a/firmware/controllers/algo/engine_state.h +++ b/firmware/controllers/algo/engine_state.h @@ -14,11 +14,9 @@ #include "engine_state_generated.h" struct LuaAdjustments { - float ignitionTimingAdd = 0; - float ignitionTimingMult = 1; float fuelAdd = 0; float fuelMult = 1; - float etbTargetPositionAdd = 0; + bool clutchUpState = false; bool brakePedalState = false; }; diff --git a/firmware/controllers/lua/lua_hooks.cpp b/firmware/controllers/lua/lua_hooks.cpp index 591a7bcbb6..b7013ac8fd 100644 --- a/firmware/controllers/lua/lua_hooks.cpp +++ b/firmware/controllers/lua/lua_hooks.cpp @@ -522,7 +522,7 @@ void configureRusefiLuaHooks(lua_State* l) { lua_register(l, "setTimingMult", [](lua_State* l) { - engine->engineState.luaAdjustments.ignitionTimingMult = luaL_checknumber(l, 1); + engine->ignitionState.luaTimingMult = luaL_checknumber(l, 1); return 0; }); lua_register(l, "setFuelAdd", [](lua_State* l) { @@ -534,7 +534,10 @@ void configureRusefiLuaHooks(lua_State* l) { return 0; }); lua_register(l, "setEtbAdd", [](lua_State* l) { - engine->engineState.luaAdjustments.etbTargetPositionAdd = luaL_checknumber(l, 1); + auto luaAdjustment = luaL_checknumber(l, 1); + for (int i = 0 ; i < ETB_COUNT; i++) { + engine->etbControllers[i]->luaAdjustment = luaAdjustment; + } return 0; }); @@ -602,7 +605,7 @@ void configureRusefiLuaHooks(lua_State* l) { }); lua_register(l, "setTimingAdd", [](lua_State* l) { - engine->engineState.luaAdjustments.ignitionTimingAdd = luaL_checknumber(l, 1); + engine->ignitionState.luaTimingAdd = luaL_checknumber(l, 1); return 0; }); diff --git a/java_console/models/src/main/java/com/rusefi/core/Sensor.java b/java_console/models/src/main/java/com/rusefi/core/Sensor.java index 519d3f82ae..c343b830aa 100644 --- a/java_console/models/src/main/java/com/rusefi/core/Sensor.java +++ b/java_console/models/src/main/java/com/rusefi/core/Sensor.java @@ -157,11 +157,14 @@ public enum Sensor { instantMAP("Instant " + GAUGE_NAME_MAP, SensorCategory.SENSOR_INPUTS, FieldType.UINT16, 514, 1.0 / PACK_MULT_PRESSURE, 20, 300, "kPa"), - baseDwell("", SensorCategory.SENSOR_INPUTS, FieldType.INT, 972, 1.0, -1.0, -1.0, ""), - dwellVoltageCorrection("", SensorCategory.SENSOR_INPUTS, FieldType.INT, 976, 1.0, -1.0, -1.0, ""), - etb_idlePosition("", SensorCategory.SENSOR_INPUTS, FieldType.INT, 980, 1.0, -1.0, -1.0, ""), - trim("", SensorCategory.SENSOR_INPUTS, FieldType.INT, 984, 1.0, -1.0, -1.0, ""), - luaAdjustment("", SensorCategory.SENSOR_INPUTS, FieldType.INT, 988, 1.0, -1.0, -1.0, ""), + targetRpmAcBump("targetRpmAcBump", SensorCategory.SENSOR_INPUTS, FieldType.INT, 968, 1.0, -1.0, -1.0, ""), + baseDwell("baseDwell", SensorCategory.SENSOR_INPUTS, FieldType.INT, 972, 1.0, -1.0, -1.0, ""), + dwellVoltageCorrection("dwellVoltageCorrection", SensorCategory.SENSOR_INPUTS, FieldType.INT, 976, 1.0, -1.0, -1.0, ""), + luaTimingAdd("luaTimingAdd", SensorCategory.SENSOR_INPUTS, FieldType.INT, 980, 1.0, -1.0, -1.0, ""), + luaTimingMult("luaTimingMult", SensorCategory.SENSOR_INPUTS, FieldType.INT, 984, 1.0, -1.0, -1.0, ""), + etb_idlePosition("idlePosition", SensorCategory.SENSOR_INPUTS, FieldType.INT, 988, 1.0, -1.0, -1.0, ""), + trim("trim", SensorCategory.SENSOR_INPUTS, FieldType.INT, 992, 1.0, -1.0, -1.0, ""), + luaAdjustment("luaAdjustment", SensorCategory.SENSOR_INPUTS, FieldType.INT, 996, 1.0, -1.0, -1.0, ""), // Synthetic (console only) channels ETB_CONTROL_QUALITY("ETB metric", SensorCategory.SNIFFING, "", 100),