From 2ad4a9df1e2528532b2f98c59bb182a23a54e020 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Fri, 13 Aug 2021 23:48:45 -0700 Subject: [PATCH] actually remove FSIO idle stuff (#3150) * debug mode * pid cleanup * more dead * more dead * wow more dead * much dead many death wow --- firmware/console/status_loop.cpp | 4 -- .../controllers/actuators/idle_thread.cpp | 37 +------------------ firmware/controllers/actuators/idle_thread.h | 2 - .../algo/auto_generated_commonenum.cpp | 4 +- firmware/controllers/algo/engine_parts.h | 4 -- firmware/controllers/algo/rusefi_enums.h | 2 +- firmware/integration/rusefi_config.txt | 4 +- firmware/tunerstudio/rusefi.input | 2 - firmware/util/math/pid.h | 4 +- unit_tests/tests/test_idle_controller.cpp | 35 ------------------ 10 files changed, 8 insertions(+), 90 deletions(-) diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index c3119181e5..e3309398c5 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -799,10 +799,6 @@ void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels DECLARE_ tsOutputChannels->debugFloatField6 = getFsioOutputValue(12 PASS_ENGINE_PARAMETER_SUFFIX); tsOutputChannels->debugFloatField7 = getFsioOutputValue(13 PASS_ENGINE_PARAMETER_SUFFIX); break; - case DBG_FSIO_SPECIAL: - tsOutputChannels->debugFloatField1 = ENGINE(fsioState.fsioIdleOffset); - tsOutputChannels->debugFloatField2 = ENGINE(fsioState.fsioIdleMinValue); - break; #endif /* EFI_FSIO */ case DBG_VEHICLE_SPEED_SENSOR: tsOutputChannels->debugIntField1 = engine->engineState.vssEventCounter; diff --git a/firmware/controllers/actuators/idle_thread.cpp b/firmware/controllers/actuators/idle_thread.cpp index b848e78b7b..2370ecce30 100644 --- a/firmware/controllers/actuators/idle_thread.cpp +++ b/firmware/controllers/actuators/idle_thread.cpp @@ -56,31 +56,7 @@ static bool wasResetPid = false; static bool mustResetPid = false; static efitimeus_t restoreAfterPidResetTimeUs = 0; - -class PidWithOverrides : public PidIndustrial { -public: - float getOffset() const override { -#if EFI_UNIT_TEST - EXPAND_Engine; -#endif - return parameters->offset; - } - - float getMinValue() const override { -#if EFI_UNIT_TEST - EXPAND_Engine; -#endif - float result = parameters->minValue; -#if EFI_FSIO - if (engineConfiguration->useFSIO13ForIdleMinValue) { - return result + ENGINE(fsioState.fsioIdleMinValue); - } -#endif /* EFI_FSIO */ - return result; - } -}; - -static PidWithOverrides industrialWithOverrideIdlePid; +static PidIndustrial industrialWithOverrideIdlePid; #if EFI_IDLE_PID_CIC // Use PID with CIC integrator @@ -96,14 +72,6 @@ Pid * getIdlePid(DECLARE_ENGINE_PARAMETER_SIGNATURE) { return &industrialWithOverrideIdlePid; } -float getIdlePidOffset(DECLARE_ENGINE_PARAMETER_SIGNATURE) { - return getIdlePid(PASS_ENGINE_PARAMETER_SIGNATURE)->getOffset(); -} - -float getIdlePidMinValue(DECLARE_ENGINE_PARAMETER_SIGNATURE) { - return getIdlePid(PASS_ENGINE_PARAMETER_SIGNATURE)->getMinValue(); -} - static uint32_t lastCrankingCyclesCounter = 0; static float lastCrankingIacPosition; @@ -188,9 +156,6 @@ int IdleController::getTargetRpm(float clt) const { // Bump for AC target += engine->acSwitchState ? CONFIG(acIdleRpmBump) : 0; - // Bump by FSIO - target += engine->fsioState.fsioIdleTargetRPMAdjustment; - return target; } diff --git a/firmware/controllers/actuators/idle_thread.h b/firmware/controllers/actuators/idle_thread.h index c161122af3..99012c9b4b 100644 --- a/firmware/controllers/actuators/idle_thread.h +++ b/firmware/controllers/actuators/idle_thread.h @@ -94,9 +94,7 @@ void setIdleDFactor(float value); void setIdleMode(idle_mode_e value DECLARE_ENGINE_PARAMETER_SUFFIX); void setTargetIdleRpm(int value); void onConfigurationChangeIdleCallback(engine_configuration_s *previousConfiguration); -float getIdlePidOffset(DECLARE_ENGINE_PARAMETER_SIGNATURE); Pid * getIdlePid(DECLARE_ENGINE_PARAMETER_SIGNATURE); -float getIdlePidMinValue(DECLARE_ENGINE_PARAMETER_SIGNATURE); void startPedalPins(DECLARE_ENGINE_PARAMETER_SIGNATURE); void stopPedalPins(DECLARE_ENGINE_PARAMETER_SIGNATURE); diff --git a/firmware/controllers/algo/auto_generated_commonenum.cpp b/firmware/controllers/algo/auto_generated_commonenum.cpp index 7d31f30408..75f0b04cd1 100644 --- a/firmware/controllers/algo/auto_generated_commonenum.cpp +++ b/firmware/controllers/algo/auto_generated_commonenum.cpp @@ -256,8 +256,8 @@ case DBG_FSIO_EXPRESSION_1_7: return "DBG_FSIO_EXPRESSION_1_7"; case DBG_FSIO_EXPRESSION_8_14: return "DBG_FSIO_EXPRESSION_8_14"; -case DBG_FSIO_SPECIAL: - return "DBG_FSIO_SPECIAL"; +case DBG_UNUSED_42: + return "DBG_UNUSED_42"; case DBG_FUEL_PID_CORRECTION: return "DBG_FUEL_PID_CORRECTION"; case DBG_GPPWM: diff --git a/firmware/controllers/algo/engine_parts.h b/firmware/controllers/algo/engine_parts.h index f7507997a3..1b02e8c8ff 100644 --- a/firmware/controllers/algo/engine_parts.h +++ b/firmware/controllers/algo/engine_parts.h @@ -74,13 +74,9 @@ class FsioState { public: FsioState(); float fsioTimingAdjustment = 0; - float fsioIdleTargetRPMAdjustment = 0; float servoValues[SERVO_COUNT]; float fsioLastValue[FSIO_COMMAND_COUNT]; - float fsioIdleOffset = 0; - float fsioIdleMinValue = 0; - float fsioRpmHardLimit; #if EFI_UNIT_TEST diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h index db616e8a1b..17d901c383 100644 --- a/firmware/controllers/algo/rusefi_enums.h +++ b/firmware/controllers/algo/rusefi_enums.h @@ -814,7 +814,7 @@ typedef enum { DBG_ETB_AUTOTUNE = 39, DBG_COMPOSITE_LOG = 40, DBG_FSIO_EXPRESSION_8_14 = 41, - DBG_FSIO_SPECIAL = 42, + DBG_UNUSED_42 = 42, DBG_INJECTOR_COMPENSATION = 43, DBG_DYNO_VIEW = 44, // todo: because of getEnumOptionsForTunerStudio 'getEnumOptionsForTunerStudio' would not work here diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 2c281dbd2c..89649e42a1 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -289,7 +289,7 @@ float baseFuel;+Base mass of the per-cylinder fuel injected during cranking. Thi int16_t rpm;+This sets the RPM limit below which the ECU will use cranking fuel and ignition logic, typically this is around 350-450rpm. \nset cranking_rpm X;"RPM", 1, 0, 0, 3000, 0 end_struct -#define debug_mode_e_enum "Alternator PID", "TPS acceleration enrichment", "GPPWM", "Idle Control", "Engine Load accl enrich", "Trigger Counters", "FSIO_ADC", "VVT1 PID", "VVT input", "Cranking", "Timing", "Closed-loop fuel corr PID", "VSS", "SD card", "sr5", "Knock", "mode16", "Electronic Throttle", "Executor", "Bench Test / TS commands", "Aux Valves", "Analog inputs #1", "INSTANT_RPM", "FSIO_EXPRESSION_1_7", "Status", "CJ125", "CAN", "MAP", "Metrics", "ETB#2", "Ion Sense", "TLE8888", "Analog inputs #2", "Dwell Metric", "INVALID", "ETB Logic", "Boost Control", "Start/Stop", "Launch", "ETB Autotune", "FSIO_COMPOSITE_LOG", "FSIO_EXPRESSION_8_14", "FSIO_SPECIAL", "Injector Compensation", "Dyno_View", "Logic_Analyzer", "rusEFI Wideband", "TCU", "Lua", "VVT2 PID", "VVT3 PID", "VVT4 PID", "mode 52", "mode 53" +#define debug_mode_e_enum "Alternator PID", "TPS acceleration enrichment", "GPPWM", "Idle Control", "Engine Load accl enrich", "Trigger Counters", "FSIO_ADC", "VVT1 PID", "VVT input", "Cranking", "Timing", "Closed-loop fuel corr PID", "VSS", "SD card", "sr5", "Knock", "mode16", "Electronic Throttle", "Executor", "Bench Test / TS commands", "Aux Valves", "Analog inputs #1", "INSTANT_RPM", "FSIO_EXPRESSION_1_7", "Status", "CJ125", "CAN", "MAP", "Metrics", "ETB#2", "Ion Sense", "TLE8888", "Analog inputs #2", "Dwell Metric", "INVALID", "ETB Logic", "Boost Control", "Start/Stop", "Launch", "ETB Autotune", "FSIO_COMPOSITE_LOG", "FSIO_EXPRESSION_8_14", "INVALID", "Injector Compensation", "Dyno_View", "Logic_Analyzer", "rusEFI Wideband", "TCU", "Lua", "VVT2 PID", "VVT3 PID", "VVT4 PID", "mode 52", "mode 53" custom debug_mode_e 4 bits, U32, @OFFSET@, [0:5], @@debug_mode_e_enum@@ #define VM_VVT_INACTIVE 0 @@ -898,7 +898,7 @@ pin_output_mode_e hip9011IntHoldPinMode; uint32_t verboseCanBaseAddress;;"", 1, 0, 0, 536870911, 0 uint8_t mc33_hvolt;;"v", 1, 0, 40, 70, 0 - uint8_t fsio_visible acIdleExtraMin;+Additional idle PID minValue while A/C is active;"Percent", 1, 0, 0, 255, 0 + uint8_t unused761;;"", 1, 0, 0, 255, 0 output_pin_e acFanPin;+Optional Radiator Fan used with A/C pin_output_mode_e acFanPinMode; diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 133a926342..8d9d94ff3f 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -2690,9 +2690,7 @@ cmd_set_engine_type_default = "@@TS_IO_TEST_COMMAND_char@@\x00\x31\x00\x00" field = "antiwindupFreq", idle_antiwindupFreq field = "D-factor", idleRpmPid_dFactor field = "Offset", idleRpmPid_offset - field = "A/C Offset extra", acIdleExtraOffset field = "Min", idleRpmPid_minValue - field = "A/C Min extra", acIdleExtraMin field = "Max", idleRpmPid_maxValue field = "iTerm Min", idlerpmpid_iTermMin field = "iTerm Max", idlerpmpid_iTermMax diff --git a/firmware/util/math/pid.h b/firmware/util/math/pid.h index e023fe85eb..c56f50f08d 100644 --- a/firmware/util/math/pid.h +++ b/firmware/util/math/pid.h @@ -52,8 +52,8 @@ public: float getP(void) const; float getI(void) const; float getD(void) const; - virtual float getOffset(void) const; - virtual float getMinValue(void) const; + float getOffset() const; + float getMinValue() const; float getIntegration(void) const; float getPrevError(void) const; void setErrorAmplification(float coef); diff --git a/unit_tests/tests/test_idle_controller.cpp b/unit_tests/tests/test_idle_controller.cpp index 53fb0b378c..cd88c70330 100644 --- a/unit_tests/tests/test_idle_controller.cpp +++ b/unit_tests/tests/test_idle_controller.cpp @@ -12,45 +12,10 @@ #include "fsio_impl.h" #include "idle_thread.h" #include "electronic_throttle.h" -#include "vehicle_speed.h" using ::testing::StrictMock; using ::testing::_; -extern IdleController idleControllerInstance; -extern int timeNowUs; - -TEST(idle, fsioPidParameters) { - WITH_ENGINE_TEST_HELPER(MIATA_NA6_MAP); - - engineConfiguration->idleRpmPid.offset = 40; - engineConfiguration->acIdleExtraOffset = 10; - - engineConfiguration->idleRpmPid.minValue = 30; - engineConfiguration->acIdleExtraMin = 30; - - ASSERT_EQ(1, hasAcToggle(PASS_ENGINE_PARAMETER_SIGNATURE)); - setMockState(engineConfiguration->acSwitch, true); - timeNowUs += MS2US(15); - ASSERT_TRUE(getAcToggle(PASS_ENGINE_PARAMETER_SIGNATURE)); - - eth.engine.periodicSlowCallback(PASS_ENGINE_PARAMETER_SIGNATURE); - ASSERT_EQ(40, getIdlePidOffset(PASS_ENGINE_PARAMETER_SIGNATURE)); - ASSERT_EQ(30, getIdlePidMinValue(PASS_ENGINE_PARAMETER_SIGNATURE)); - - setMockState(engineConfiguration->acSwitch, false); - timeNowUs += MS2US(15); - ASSERT_FALSE(getAcToggle(PASS_ENGINE_PARAMETER_SIGNATURE)); - - eth.engine.periodicSlowCallback(PASS_ENGINE_PARAMETER_SIGNATURE); - - // todo finish this unit test! -// timeNowUs = MS2US(700); - idleControllerInstance.update(); -// ASSERT_EQ(0, engine->acSwitchLastChangeTime); -// ASSERT_EQ(1, engine->acSwitchState); -} - using ICP = IIdleController::Phase; TEST(idle_v2, timingPid) {