diff --git a/firmware/controllers/algo/rusefi_types.h b/firmware/controllers/algo/rusefi_types.h index 886da19955..4a176913b3 100644 --- a/firmware/controllers/algo/rusefi_types.h +++ b/firmware/controllers/algo/rusefi_types.h @@ -134,7 +134,7 @@ typedef void (*VoidIntVoidPtr)(int, void*); typedef void (*VoidFloat)(float); typedef void (*VoidFloatFloat)(float, float); typedef void (*VoidFloatFloatFloat)(float, float, float); -typedef void (*VoidFloatFloatFloatFloatFloat)(float, float, float, float, float); +typedef void (*VoidFloatFloatFloatFloat)(float, float, float, float); typedef void (*VoidFloatFloatVoidPtr)(float, float, void*); typedef void (*VoidIntInt)(int, int); typedef void (*VoidIntIntVoidPtr)(int, int, void*); diff --git a/firmware/controllers/bench_test.cpp b/firmware/controllers/bench_test.cpp index 9626a85575..bfd836751e 100644 --- a/firmware/controllers/bench_test.cpp +++ b/firmware/controllers/bench_test.cpp @@ -72,9 +72,8 @@ static void benchOff(OutputPin* output) { output->setValue(false); } -static void runBench(OutputPin *output, float startDelayMs, float onTimeMs, float offTimeMs, +static void runBench(OutputPin *output, float onTimeMs, float offTimeMs, int count) { - int startDelayUs = MS2US(maxF(0.1, startDelayMs)); int onTimeUs = MS2US(maxF(0.1, onTimeMs)); int offTimeUs = MS2US(maxF(0.1, offTimeMs)); @@ -86,8 +85,6 @@ static void runBench(OutputPin *output, float startDelayMs, float onTimeMs, floa efiPrintf("Running bench: ON_TIME=%d us OFF_TIME=%d us Counter=%d", onTimeUs, offTimeUs, count); efiPrintf("output on %s", hwPortname(output->brainPin)); - chThdSleepMicroseconds(startDelayUs); - isRunningBench = true; for (int i = 0; isRunningBench && i < count; i++) { @@ -115,15 +112,13 @@ static bool isBenchTestPending = false; static bool widebandUpdatePending = false; static float onTime; static float offTime; -static float startDelayMs; static int count; static OutputPin* pinX; static chibios_rt::CounterSemaphore benchSemaphore(0); -static void pinbench(float startdelay, float ontime, float offtime, int iterations, OutputPin* pinParam) +static void pinbench(float ontime, float offtime, int iterations, OutputPin* pinParam) { - startDelayMs = startdelay; onTime = ontime; offTime = offtime; count = iterations; @@ -139,58 +134,58 @@ static void cancelBenchTest() { /*==========================================================================*/ -static void doRunFuelInjBench(size_t humanIndex, float delay, float onTime, float offTime, int count) { +static void doRunFuelInjBench(size_t humanIndex, float onTime, float offTime, int count) { if (humanIndex < 1 || humanIndex > engineConfiguration->cylindersCount) { efiPrintf("Invalid index: %d", humanIndex); return; } - pinbench(delay, onTime, offTime, count, &enginePins.injectors[humanIndex - 1]); + pinbench(onTime, offTime, count, &enginePins.injectors[humanIndex - 1]); } -static void doRunSparkBench(size_t humanIndex, float delay, float onTime, float offTime, int count) { +static void doRunSparkBench(size_t humanIndex, float onTime, float offTime, int count) { if (humanIndex < 1 || humanIndex > engineConfiguration->cylindersCount) { efiPrintf("Invalid index: %d", humanIndex); return; } - pinbench(delay, onTime, offTime, count, &enginePins.coils[humanIndex - 1]); + pinbench(onTime, offTime, count, &enginePins.coils[humanIndex - 1]); } -static void doRunSolenoidBench(size_t humanIndex, float delay, float onTime, float offTime, int count) { +static void doRunSolenoidBench(size_t humanIndex, float onTime, float offTime, int count) { if (humanIndex < 1 || humanIndex > TCU_SOLENOID_COUNT) { efiPrintf("Invalid index: %d", humanIndex); return; } - pinbench(delay, onTime, offTime, count, &enginePins.tcuSolenoids[humanIndex - 1]); + pinbench(onTime, offTime, count, &enginePins.tcuSolenoids[humanIndex - 1]); } -static void doRunBenchTestLuaOutput(size_t humanIndex, float delay, float onTime, float offTime, int count) { +static void doRunBenchTestLuaOutput(size_t humanIndex, float onTime, float offTime, int count) { if (humanIndex < 1 || humanIndex > LUA_PWM_COUNT) { efiPrintf("Invalid index: %d", humanIndex); return; } - pinbench(delay, onTime, offTime, count, &enginePins.luaOutputPins[humanIndex - 1]); + pinbench(onTime, offTime, count, &enginePins.luaOutputPins[humanIndex - 1]); } /** - * delay 100, cylinder #2, 5ms ON, 1000ms OFF, repeat 3 times - * fuelInjBenchExt 100 2 5 1000 3 + * cylinder #2, 5ms ON, 1000ms OFF, repeat 3 times + * fuelInjBenchExt 2 5 1000 3 */ -static void fuelInjBenchExt(float delay, float humanIndex, float onTime, float offTime, float count) { - doRunFuelInjBench((int)humanIndex, delay, onTime, offTime, (int)count); +static void fuelInjBenchExt(float humanIndex, float onTime, float offTime, float count) { + doRunFuelInjBench((int)humanIndex, onTime, offTime, (int)count); } /** * fuelbench 5 1000 2 */ static void fuelInjBench(float onTime, float offTime, float count) { - fuelInjBenchExt(0.0, 1, onTime, offTime, count); + fuelInjBenchExt(1, onTime, offTime, count); } /** - * sparkbench2 0 1 5 1000 2 + * sparkbench2 1 5 1000 2 */ -static void sparkBenchExt(float delay, float humanIndex, float onTime, float offTime, float count) { - doRunSparkBench((int)humanIndex, delay, onTime, offTime, (int)count); +static void sparkBenchExt(float humanIndex, float onTime, float offTime, float count) { + doRunSparkBench((int)humanIndex, onTime, offTime, (int)count); } /** @@ -198,27 +193,27 @@ static void sparkBenchExt(float delay, float humanIndex, float onTime, float off * 5 ms ON, 400 ms OFF, two times */ static void sparkBench(float onTime, float offTime, float count) { - sparkBenchExt(0.0, 1, onTime, offTime, count); + sparkBenchExt(1, onTime, offTime, count); } /** - * delay 100, solenoid #2, 1000ms ON, 1000ms OFF, repeat 3 times - * tcusolbench 100 2 1000 1000 3 + * solenoid #2, 1000ms ON, 1000ms OFF, repeat 3 times + * tcusolbench 2 1000 1000 3 */ -static void tcuSolenoidBench(float delay, float humanIndex, float onTime, float offTime, float count) { - doRunSolenoidBench((int)humanIndex, delay, onTime, offTime, (int)count); +static void tcuSolenoidBench(float humanIndex, float onTime, float offTime, float count) { + doRunSolenoidBench((int)humanIndex, onTime, offTime, (int)count); } /** - * delay 100, channel #1, 5ms ON, 1000ms OFF, repeat 3 times - * fsiobench2 100 1 5 1000 3 + * channel #1, 5ms ON, 1000ms OFF, repeat 3 times + * fsiobench2 1 5 1000 3 */ -static void luaOutBench2(float delay, float humanIndex, float onTime, float offTime, float count) { - doRunBenchTestLuaOutput((int)humanIndex, delay, onTime, offTime, (int)count); +static void luaOutBench2(float humanIndex, float onTime, float offTime, float count) { + doRunBenchTestLuaOutput((int)humanIndex, onTime, offTime, (int)count); } static void fanBenchExt(float onTime) { - pinbench(0.0, onTime, 100.0, 1.0, &enginePins.fanRelay); + pinbench(onTime, 100.0, 1.0, &enginePins.fanRelay); } void fanBench(void) { @@ -226,26 +221,26 @@ void fanBench(void) { } void fan2Bench(void) { - pinbench(0.0, 3000.0, 100.0, 1.0, &enginePins.fanRelay2); + pinbench(3000.0, 100.0, 1.0, &enginePins.fanRelay2); } /** * we are blinking for 16 seconds so that one can click the button and walk around to see the light blinking */ void milBench(void) { - pinbench(0.0, 500.0, 500.0, 16, &enginePins.checkEnginePin); + pinbench(500.0, 500.0, 16, &enginePins.checkEnginePin); } void starterRelayBench(void) { - pinbench(0.0, 6000.0, 100.0, 1, &enginePins.starterControl); + pinbench(6000.0, 100.0, 1, &enginePins.starterControl); } static void fuelPumpBenchExt(float durationMs) { - pinbench(0.0, durationMs, 100.0, 1.0, &enginePins.fuelPumpRelay); + pinbench(durationMs, 100.0, 1.0, &enginePins.fuelPumpRelay); } void acRelayBench(void) { - pinbench(0.0, 1000.0, 100.0, 1, &enginePins.acRelay); + pinbench(1000.0, 100.0, 1, &enginePins.acRelay); } static void mainRelayBench(void) { @@ -254,7 +249,7 @@ static void mainRelayBench(void) { } static void hpfpValveBench(void) { - pinbench(1000.0, 20.0, engineConfiguration->benchTestOffTime, engineConfiguration->benchTestCount, &enginePins.hpfpValve); + pinbench(20.0, engineConfiguration->benchTestOffTime, engineConfiguration->benchTestCount, &enginePins.hpfpValve); } void fuelPumpBench(void) { @@ -271,7 +266,7 @@ private: if (isBenchTestPending) { isBenchTestPending = false; - runBench(pinX, startDelayMs, onTime, offTime, count); + runBench(pinX, onTime, offTime, count); } if (widebandUpdatePending) { @@ -438,28 +433,28 @@ void executeTSCommand(uint16_t subsystem, uint16_t index) { case TS_IGNITION_CATEGORY: if (!running) { - doRunSparkBench(index, 300.0, engineConfiguration->benchTestOnTime, + doRunSparkBench(index, engineConfiguration->benchTestOnTime, engineConfiguration->benchTestOffTime, engineConfiguration->benchTestCount); } break; case TS_INJECTOR_CATEGORY: if (!running) { - doRunFuelInjBench(index, 300.0 , engineConfiguration->benchTestOnTime, + doRunFuelInjBench(index, engineConfiguration->benchTestOnTime, engineConfiguration->benchTestOffTime, engineConfiguration->benchTestCount); } break; case TS_SOLENOID_CATEGORY: if (!running) { - doRunSolenoidBench(index, 300.0, 1000.0, + doRunSolenoidBench(index, 1000.0, 1000.0, engineConfiguration->benchTestCount); } break; case TS_LUA_OUTPUT_CATEGORY: if (!running) { - doRunBenchTestLuaOutput(index, 300.0, 4.0, + doRunBenchTestLuaOutput(index, 4.0, engineConfiguration->benchTestOffTime, engineConfiguration->benchTestCount); } break; @@ -534,12 +529,12 @@ void initBenchTest() { addConsoleActionF("fuelpumpbench2", fuelPumpBenchExt); addConsoleActionFFF(CMD_FUEL_BENCH, fuelInjBench); - addConsoleActionFFFFF("fuelbench2", fuelInjBenchExt); + addConsoleActionFFFF("fuelbench2", fuelInjBenchExt); addConsoleActionFFF(CMD_SPARK_BENCH, sparkBench); - addConsoleActionFFFFF("sparkbench2", sparkBenchExt); + addConsoleActionFFFF("sparkbench2", sparkBenchExt); - addConsoleActionFFFFF("tcusolbench", tcuSolenoidBench); + addConsoleActionFFFF("tcusolbench", tcuSolenoidBench); addConsoleAction(CMD_AC_RELAY_BENCH, acRelayBench); @@ -558,7 +553,7 @@ void initBenchTest() { addConsoleAction(CMD_MIL_BENCH, milBench); addConsoleAction(CMD_HPFP_BENCH, hpfpValveBench); - addConsoleActionFFFFF("luabench2", luaOutBench2); + addConsoleActionFFFF("luabench2", luaOutBench2); instance.start(); onConfigurationChangeBenchTest(); } diff --git a/firmware/util/cli_registry.cpp b/firmware/util/cli_registry.cpp index bca1b70b85..454c1262db 100644 --- a/firmware/util/cli_registry.cpp +++ b/firmware/util/cli_registry.cpp @@ -138,8 +138,8 @@ void addConsoleActionFFF(const char *token, VoidFloatFloatFloat callback) { doAddAction(token, FLOAT_FLOAT_FLOAT_PARAMETER, (Void) callback, NULL); } -void addConsoleActionFFFFF(const char *token, VoidFloatFloatFloatFloatFloat callback) { - doAddAction(token, FLOAT_FLOAT_FLOAT_FLOAT_FLOAT_PARAMETER, (Void) callback, NULL); +void addConsoleActionFFFF(const char *token, VoidFloatFloatFloatFloat callback) { + doAddAction(token, FLOAT_FLOAT_FLOAT_FLOAT_PARAMETER, (Void) callback, NULL); } void addConsoleActionFFP(const char *token, VoidFloatFloatVoidPtr callback, void *param) { @@ -167,8 +167,9 @@ static int getParameterCount(action_type_e parameterType) { case STRING3_PARAMETER: case FLOAT_FLOAT_FLOAT_PARAMETER: return 3; + case FLOAT_FLOAT_FLOAT_FLOAT_PARAMETER: + return 4; case STRING5_PARAMETER: - case FLOAT_FLOAT_FLOAT_FLOAT_FLOAT_PARAMETER: return 5; default: return -1; @@ -402,18 +403,18 @@ int handleActionWithParameter(TokenCallback *current, char *argv[], int argc) { (*callbackS)(value[0], value[1], value[2]); return 0; } - case FLOAT_FLOAT_FLOAT_FLOAT_FLOAT_PARAMETER: + case FLOAT_FLOAT_FLOAT_FLOAT_PARAMETER: { - float value[5]; - for (int i = 0; i < 5; i++) { + float value[4]; + for (int i = 0; i < 4; i++) { value[i] = atoff(argv[i]); if (cisnan(value[i])) { efiPrintf("invalid float [%s]", argv[i]); return -1; } } - VoidFloatFloatFloatFloatFloat callbackS = (VoidFloatFloatFloatFloatFloat) current->callback; - (*callbackS)(value[0], value[1], value[2], value[3], value[4]); + VoidFloatFloatFloatFloat callbackS = (VoidFloatFloatFloatFloat) current->callback; + (*callbackS)(value[0], value[1], value[2], value[3]); return 0; } case INT_FLOAT_PARAMETER: diff --git a/firmware/util/cli_registry.h b/firmware/util/cli_registry.h index 98b4579fa2..c868d065f9 100644 --- a/firmware/util/cli_registry.h +++ b/firmware/util/cli_registry.h @@ -28,7 +28,7 @@ typedef enum { TWO_INTS_PARAMETER_P, FLOAT_FLOAT_PARAMETER, FLOAT_FLOAT_FLOAT_PARAMETER, - FLOAT_FLOAT_FLOAT_FLOAT_FLOAT_PARAMETER, + FLOAT_FLOAT_FLOAT_FLOAT_PARAMETER, FLOAT_FLOAT_PARAMETER_P, INT_FLOAT_PARAMETER, } action_type_e; @@ -71,7 +71,7 @@ void addConsoleActionNANF(const char *token, VoidFloat callback); void addConsoleActionFF(const char *token, VoidFloatFloat callback); void addConsoleActionFFF(const char *token, VoidFloatFloatFloat callback); -void addConsoleActionFFFFF(const char *token, VoidFloatFloatFloatFloatFloat callback); +void addConsoleActionFFFF(const char *token, VoidFloatFloatFloatFloat callback); void addConsoleActionFFP(const char *token, VoidFloatFloatVoidPtr callback, void *param); void addConsoleActionS(const char *token, VoidCharPtr callback);