diff --git a/firmware/controllers/core/fsio_core.h b/firmware/controllers/core/fsio_core.h index 0a107805ff..ed816931b3 100644 --- a/firmware/controllers/core/fsio_core.h +++ b/firmware/controllers/core/fsio_core.h @@ -37,8 +37,6 @@ typedef enum { LE_METHOD_COOLANT = 101, LE_METHOD_FAN = 102, LE_METHOD_TIME_SINCE_BOOT = 103, - LE_METHOD_FAN_ON_SETTING = 104, - LE_METHOD_FAN_OFF_SETTING = 105, LE_METHOD_TPS = 106, LE_METHOD_MAF = 107, LE_METHOD_INTAKE_AIR = 108, diff --git a/firmware/controllers/core/fsio_impl.cpp b/firmware/controllers/core/fsio_impl.cpp index 1b91858413..c9a9ba0b5d 100644 --- a/firmware/controllers/core/fsio_impl.cpp +++ b/firmware/controllers/core/fsio_impl.cpp @@ -52,8 +52,6 @@ static LENameOrdinalPair leCoolant(LE_METHOD_COOLANT, "coolant"); static LENameOrdinalPair leIsCoolantBroken(LE_METHOD_IS_COOLANT_BROKEN, "is_clt_broken"); static LENameOrdinalPair leAcToggle(LE_METHOD_AC_TOGGLE, "ac_on_switch"); static LENameOrdinalPair leTimeSinceAcToggle(LE_METHOD_TIME_SINCE_AC_TOGGLE, "time_since_ac_on_switch"); -static LENameOrdinalPair leFanOnSetting(LE_METHOD_FAN_ON_SETTING, "fan_on_setting"); -static LENameOrdinalPair leFanOffSetting(LE_METHOD_FAN_OFF_SETTING, "fan_off_setting"); static LENameOrdinalPair leTimeSinceBoot(LE_METHOD_TIME_SINCE_BOOT, "time_since_boot"); static LENameOrdinalPair leFsioSetting(LE_METHOD_FSIO_SETTING, "fsio_setting"); static LENameOrdinalPair leFsioTable(LE_METHOD_FSIO_TABLE, "fsio_table"); @@ -66,6 +64,8 @@ static LENameOrdinalPair leCrankingRpm(LE_METHOD_CRANKING_RPM, "cranking_rpm"); static LENameOrdinalPair leStartupFuelPumpDuration(LE_METHOD_STARTUP_FUEL_PUMP_DURATION, "startup_fuel_pump_duration"); static LENameOrdinalPair leInShutdown(LE_METHOD_IN_SHUTDOWN, "in_shutdown"); +#include "fsio_names.def" + #define LE_EVAL_POOL_SIZE 32 extern EnginePins enginePins; @@ -136,10 +136,6 @@ float getEngineValue(le_action_e action DECLARE_ENGINE_PARAMETER_SUFFIX) { case LE_METHOD_TIME_SINCE_BOOT: return getTimeNowSeconds(); - case LE_METHOD_FAN_OFF_SETTING: - return engineConfiguration->fanOffTemperature; - case LE_METHOD_FAN_ON_SETTING: - return engineConfiguration->fanOnTemperature; case LE_METHOD_STARTUP_FUEL_PUMP_DURATION: return engineConfiguration->startUpFuelPumpDuration; @@ -364,16 +360,13 @@ static const char * action2String(le_action_e action) { return "cranking_rpm"; case LE_METHOD_COOLANT: return "CLT"; - case LE_METHOD_FAN_ON_SETTING: - return "fan_on"; - case LE_METHOD_FAN_OFF_SETTING: - return "fan_off"; case LE_METHOD_FAN: return "fan"; case LE_METHOD_STARTUP_FUEL_PUMP_DURATION: return "startup_fuel_pump_duration"; case LE_METHOD_IN_SHUTDOWN: return "in_shutdown"; +#include "fsio_strings.def" default: { // this is here to make compiler happy diff --git a/firmware/controllers/generated/fsio_names.def b/firmware/controllers/generated/fsio_names.def new file mode 100644 index 0000000000..4244e5c56f --- /dev/null +++ b/firmware/controllers/generated/fsio_names.def @@ -0,0 +1,24 @@ +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 18:41:30 EDT 2019 + +// by class com.rusefi.output.FileFsioSettingsConsumer +static LENameOrdinalPair lefanOnTemperature(FSIO_SETTING_FANONTEMPERATURE, "cfg_fanOnTemperature"); +static LENameOrdinalPair lefanOffTemperature(FSIO_SETTING_FANOFFTEMPERATURE, "cfg_fanOffTemperature"); +static LENameOrdinalPair lealternatorControl_offset(FSIO_SETTING_ALTERNATORCONTROL_OFFSET, "cfg_alternatorControl_offset"); +static LENameOrdinalPair lealternatorControl_minValue(FSIO_SETTING_ALTERNATORCONTROL_MINVALUE, "cfg_alternatorControl_minValue"); +static LENameOrdinalPair leetb_offset(FSIO_SETTING_ETB_OFFSET, "cfg_etb_offset"); +static LENameOrdinalPair leetb_minValue(FSIO_SETTING_ETB_MINVALUE, "cfg_etb_minValue"); +static LENameOrdinalPair leidleRpmPid_offset(FSIO_SETTING_IDLERPMPID_OFFSET, "cfg_idleRpmPid_offset"); +static LENameOrdinalPair leidleRpmPid_minValue(FSIO_SETTING_IDLERPMPID_MINVALUE, "cfg_idleRpmPid_minValue"); +static LENameOrdinalPair lestartUpFuelPumpDuration(FSIO_SETTING_STARTUPFUELPUMPDURATION, "cfg_startUpFuelPumpDuration"); +static LENameOrdinalPair lefuelClosedLoopPid_offset(FSIO_SETTING_FUELCLOSEDLOOPPID_OFFSET, "cfg_fuelClosedLoopPid_offset"); +static LENameOrdinalPair lefuelClosedLoopPid_minValue(FSIO_SETTING_FUELCLOSEDLOOPPID_MINVALUE, "cfg_fuelClosedLoopPid_minValue"); +static LENameOrdinalPair leauxPid1_offset(FSIO_SETTING_AUXPID1_OFFSET, "cfg_auxPid1_offset"); +static LENameOrdinalPair leauxPid1_minValue(FSIO_SETTING_AUXPID1_MINVALUE, "cfg_auxPid1_minValue"); +static LENameOrdinalPair leauxPid2_offset(FSIO_SETTING_AUXPID2_OFFSET, "cfg_auxPid2_offset"); +static LENameOrdinalPair leauxPid2_minValue(FSIO_SETTING_AUXPID2_MINVALUE, "cfg_auxPid2_minValue"); +static LENameOrdinalPair leauxPid3_offset(FSIO_SETTING_AUXPID3_OFFSET, "cfg_auxPid3_offset"); +static LENameOrdinalPair leauxPid3_minValue(FSIO_SETTING_AUXPID3_MINVALUE, "cfg_auxPid3_minValue"); +static LENameOrdinalPair leauxPid4_offset(FSIO_SETTING_AUXPID4_OFFSET, "cfg_auxPid4_offset"); +static LENameOrdinalPair leauxPid4_minValue(FSIO_SETTING_AUXPID4_MINVALUE, "cfg_auxPid4_minValue"); +static LENameOrdinalPair leidleTimingPid_offset(FSIO_SETTING_IDLETIMINGPID_OFFSET, "cfg_idleTimingPid_offset"); +static LENameOrdinalPair leidleTimingPid_minValue(FSIO_SETTING_IDLETIMINGPID_MINVALUE, "cfg_idleTimingPid_minValue"); diff --git a/firmware/controllers/generated/fsio_strings.def b/firmware/controllers/generated/fsio_strings.def new file mode 100644 index 0000000000..ef2468dc58 --- /dev/null +++ b/firmware/controllers/generated/fsio_strings.def @@ -0,0 +1,45 @@ +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on integration\rusefi_config.txt Wed Sep 11 19:17:01 EDT 2019 + +// by class com.rusefi.output.FileFsioSettingsConsumer + case FSIO_SETTING_FANONTEMPERATURE: + return "cfg_fanOnTemperature"; + case FSIO_SETTING_FANOFFTEMPERATURE: + return "cfg_fanOffTemperature"; + case FSIO_SETTING_ALTERNATORCONTROL_OFFSET: + return "cfg_alternatorControl_offset"; + case FSIO_SETTING_ALTERNATORCONTROL_MINVALUE: + return "cfg_alternatorControl_minValue"; + case FSIO_SETTING_ETB_OFFSET: + return "cfg_etb_offset"; + case FSIO_SETTING_ETB_MINVALUE: + return "cfg_etb_minValue"; + case FSIO_SETTING_IDLERPMPID_OFFSET: + return "cfg_idleRpmPid_offset"; + case FSIO_SETTING_IDLERPMPID_MINVALUE: + return "cfg_idleRpmPid_minValue"; + case FSIO_SETTING_STARTUPFUELPUMPDURATION: + return "cfg_startUpFuelPumpDuration"; + case FSIO_SETTING_FUELCLOSEDLOOPPID_OFFSET: + return "cfg_fuelClosedLoopPid_offset"; + case FSIO_SETTING_FUELCLOSEDLOOPPID_MINVALUE: + return "cfg_fuelClosedLoopPid_minValue"; + case FSIO_SETTING_AUXPID1_OFFSET: + return "cfg_auxPid1_offset"; + case FSIO_SETTING_AUXPID1_MINVALUE: + return "cfg_auxPid1_minValue"; + case FSIO_SETTING_AUXPID2_OFFSET: + return "cfg_auxPid2_offset"; + case FSIO_SETTING_AUXPID2_MINVALUE: + return "cfg_auxPid2_minValue"; + case FSIO_SETTING_AUXPID3_OFFSET: + return "cfg_auxPid3_offset"; + case FSIO_SETTING_AUXPID3_MINVALUE: + return "cfg_auxPid3_minValue"; + case FSIO_SETTING_AUXPID4_OFFSET: + return "cfg_auxPid4_offset"; + case FSIO_SETTING_AUXPID4_MINVALUE: + return "cfg_auxPid4_minValue"; + case FSIO_SETTING_IDLETIMINGPID_OFFSET: + return "cfg_idleTimingPid_offset"; + case FSIO_SETTING_IDLETIMINGPID_MINVALUE: + return "cfg_idleTimingPid_minValue"; diff --git a/firmware/controllers/system_fsio.h b/firmware/controllers/system_fsio.h index 4213195e6b..8c32f58184 100644 --- a/firmware/controllers/system_fsio.h +++ b/firmware/controllers/system_fsio.h @@ -13,8 +13,8 @@ // Andrey Belomutskiy, (c) 2012-2017 // -// Human-readable: (fan and (coolant > fan_off_setting)) | (coolant > fan_on_setting) | is_clt_broken -#define FAN_CONTROL_LOGIC "fan coolant fan_off_setting > and coolant fan_on_setting > | is_clt_broken |" +// Human-readable: (fan and (coolant > cfg_fanOffTemperature)) | (coolant > cfg_fanOnTemperature) | is_clt_broken +#define FAN_CONTROL_LOGIC "fan coolant cfg_fanOffTemperature > and coolant cfg_fanOnTemperature > | is_clt_broken |" // Human-readable: (time_since_boot < startup_fuel_pump_duration) | (rpm > 0) #define FUEL_PUMP_LOGIC "time_since_boot startup_fuel_pump_duration < rpm 0 > |" diff --git a/firmware/gen_config.bat b/firmware/gen_config.bat index d7980a60b3..8a3ddc14d3 100644 --- a/firmware/gen_config.bat +++ b/firmware/gen_config.bat @@ -22,6 +22,8 @@ java -DSystemOut.name=gen_config ^ -c_destination controllers\generated\engine_configuration_generated_structures.h ^ -c_fsio_constants controllers\generated\fsio_enums_generated.def ^ -c_fsio_getters controllers\generated\fsio_getters.def ^ + -c_fsio_names controllers\generated\fsio_names.def ^ + -c_fsio_strings controllers\generated\fsio_strings.def ^ -java_destination ../java_console/models/src/com/rusefi/config/generated/Fields.java ^ -romraider_destination ../java_console/rusefi.xml ^ -skip build/config.gen diff --git a/java_tools/ConfigDefinition.jar b/java_tools/ConfigDefinition.jar index eaaf2f1dfc..b937768f74 100644 Binary files a/java_tools/ConfigDefinition.jar and b/java_tools/ConfigDefinition.jar differ diff --git a/java_tools/configuration_definition/src/com/rusefi/ConfigDefinition.java b/java_tools/configuration_definition/src/com/rusefi/ConfigDefinition.java index c66966d079..9257d537c4 100644 --- a/java_tools/configuration_definition/src/com/rusefi/ConfigDefinition.java +++ b/java_tools/configuration_definition/src/com/rusefi/ConfigDefinition.java @@ -30,6 +30,8 @@ public class ConfigDefinition { private static final String KEY_C_DESTINATION = "-c_destination"; private static final String KEY_C_FSIO_CONSTANTS = "-c_fsio_constants"; private static final String KEY_C_FSIO_GETTERS = "-c_fsio_getters"; + private static final String KEY_C_FSIO_NAMES = "-c_fsio_names"; + private static final String KEY_C_FSIO_STRING = "-c_fsio_strings"; private static final String KEY_C_DEFINES = "-c_defines"; private static final String KEY_WITH_C_DEFINES = "-with_c_defines"; private static final String KEY_JAVA_DESTINATION = "-java_destination"; @@ -68,6 +70,8 @@ public class ConfigDefinition { String destCDefinesFileName = null; String destCFsioConstantsFileName = null; String destCFsioGettersFileName = null; + String namesCFileName = null; + String stringsCFileName = null; String javaDestinationFileName = null; String romRaiderDestination = null; List prependFiles = new ArrayList<>(); @@ -85,6 +89,10 @@ public class ConfigDefinition { destCHeaderFileName = args[i + 1]; } else if (key.equals(KEY_C_FSIO_GETTERS)) { destCFsioGettersFileName = args[i + 1]; + } else if (key.equals(KEY_C_FSIO_STRING)) { + stringsCFileName = args[i + 1]; + } else if (key.equals(KEY_C_FSIO_NAMES)) { + namesCFileName = args[i + 1]; } else if (key.equals(KEY_C_FSIO_CONSTANTS)) { destCFsioConstantsFileName = args[i + 1]; } else if (key.equals(KEY_ZERO_INIT)) { @@ -141,7 +149,11 @@ public class ConfigDefinition { } if (destCFsioConstantsFileName != null || destCFsioGettersFileName != null) { - destinations.add(new FileFsioSettingsConsumer(state, destCFsioConstantsFileName, destCFsioGettersFileName)); + destinations.add(new FileFsioSettingsConsumer(state, + destCFsioConstantsFileName, + destCFsioGettersFileName, + namesCFileName, + stringsCFileName)); } if (destinations.isEmpty()) diff --git a/java_tools/configuration_definition/src/com/rusefi/output/FileFsioSettingsConsumer.java b/java_tools/configuration_definition/src/com/rusefi/output/FileFsioSettingsConsumer.java index 5c46c74701..76511b520e 100644 --- a/java_tools/configuration_definition/src/com/rusefi/output/FileFsioSettingsConsumer.java +++ b/java_tools/configuration_definition/src/com/rusefi/output/FileFsioSettingsConsumer.java @@ -5,34 +5,49 @@ import com.rusefi.ReaderState; import com.rusefi.util.LazyFile; import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; import static com.rusefi.ConfigDefinition.EOL; public class FileFsioSettingsConsumer extends FsioSettingsConsumer { private final LazyFile enumFile; private final LazyFile gettersFile; + private final LazyFile namesFile; + private final LazyFile stringsFile; - public FileFsioSettingsConsumer(ReaderState state, String destCFsioConstantsFileName, String destCFsioGettersFileName) { + public FileFsioSettingsConsumer(ReaderState state, + String destCFsioConstantsFileName, + String destCFsioGettersFileName, + String namesCFileName, + String stringsCFileName) { super(state); enumFile = new LazyFile(destCFsioConstantsFileName); gettersFile = new LazyFile(destCFsioGettersFileName); + namesFile = new LazyFile(namesCFileName); + stringsFile = new LazyFile(stringsCFileName); } @Override public void startFile() { - enumFile.write("// this file " + ConfigDefinition.MESSAGE + ConfigDefinition.EOL + EOL); - enumFile.write("// by " + getClass() + EOL); - - gettersFile.write("// this file " + ConfigDefinition.MESSAGE + ConfigDefinition.EOL + EOL); - gettersFile.write("// by " + getClass() + EOL); + for (LazyFile file : Arrays.asList(enumFile, gettersFile, stringsFile, namesFile)) { + file.write("// this file " + ConfigDefinition.MESSAGE + ConfigDefinition.EOL + EOL); + file.write("// by " + getClass() + EOL); + } } @Override public void endFile() throws IOException { - enumFile.write(enumDefinition.toString()); + enumFile.write(getEnumDefinition()); enumFile.close(); gettersFile.write(getContent()); gettersFile.close(); + + namesFile.write(getNames()); + namesFile.close(); + + stringsFile.write(getStrings()); + stringsFile.close(); } } diff --git a/java_tools/configuration_definition/src/com/rusefi/output/FsioSettingsConsumer.java b/java_tools/configuration_definition/src/com/rusefi/output/FsioSettingsConsumer.java index 965da0e458..f373db6b78 100644 --- a/java_tools/configuration_definition/src/com/rusefi/output/FsioSettingsConsumer.java +++ b/java_tools/configuration_definition/src/com/rusefi/output/FsioSettingsConsumer.java @@ -14,7 +14,9 @@ import java.util.List; public abstract class FsioSettingsConsumer implements ConfigurationConsumer { private final CharArrayWriter content = new CharArrayWriter(); - protected final CharArrayWriter enumDefinition = new CharArrayWriter(); + private final CharArrayWriter enumDefinition = new CharArrayWriter(); + private final CharArrayWriter names = new CharArrayWriter(); + private final CharArrayWriter strings = new CharArrayWriter(); private final ReaderState state; private int currentIndex = 1000; @@ -59,7 +61,8 @@ public abstract class FsioSettingsConsumer implements ConfigurationConsumer { String nameWithPrefix = prefix + configField.getName(); - String enumName = "FSIO_SETTING_" + nameWithPrefix.replaceAll("\\.", "_").toUpperCase(); + String nameWithPrefixUnderscore = nameWithPrefix.replaceAll("\\.", "_"); + String enumName = "FSIO_SETTING_" + nameWithPrefixUnderscore.toUpperCase(); enumDefinition.append("\t" + enumName + " = " + currentIndex++ + ",\n"); @@ -69,7 +72,23 @@ public abstract class FsioSettingsConsumer implements ConfigurationConsumer { content.append("\tcase " + enumName + ":\n"); content.append("\t\treturn engineConfiguration->" + cFieldName + ";\n"); + + String rusEfiName = "\"cfg_" + nameWithPrefixUnderscore + "\""; + + strings.append("\tcase " + enumName + ":\n"); + strings.append("\t\treturn " + rusEfiName + ";\n"); + + names.append("static LENameOrdinalPair le" + nameWithPrefixUnderscore + "(" + enumName + ", " + rusEfiName + ");\n"); } } + public String getNames() { + return names.toString(); + } + + + public String getStrings() { + return strings.toString(); + } + } diff --git a/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java b/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java index ad3fec5345..83c47f4f67 100644 --- a/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java +++ b/java_tools/configuration_definition/src/com/rusefi/test/ConfigFieldParserTest.java @@ -125,6 +125,32 @@ public class ConfigFieldParserTest { "\tFSIO_SETTING_ETB2_OFFSET = 1006,\n" + "\tFSIO_SETTING_ETB2_MINVALUE = 1007,\n", fsioSettingsConsumer.getEnumDefinition()); + + assertEquals("static LENameOrdinalPair leoffset(FSIO_SETTING_OFFSET, \"cfg_offset\");\n" + + "static LENameOrdinalPair leminValue(FSIO_SETTING_MINVALUE, \"cfg_minValue\");\n" + + "static LENameOrdinalPair lealternatorControl_offset(FSIO_SETTING_ALTERNATORCONTROL_OFFSET, \"cfg_alternatorControl_offset\");\n" + + "static LENameOrdinalPair lealternatorControl_minValue(FSIO_SETTING_ALTERNATORCONTROL_MINVALUE, \"cfg_alternatorControl_minValue\");\n" + + "static LENameOrdinalPair leetb1_offset(FSIO_SETTING_ETB1_OFFSET, \"cfg_etb1_offset\");\n" + + "static LENameOrdinalPair leetb1_minValue(FSIO_SETTING_ETB1_MINVALUE, \"cfg_etb1_minValue\");\n" + + "static LENameOrdinalPair leetb2_offset(FSIO_SETTING_ETB2_OFFSET, \"cfg_etb2_offset\");\n" + + "static LENameOrdinalPair leetb2_minValue(FSIO_SETTING_ETB2_MINVALUE, \"cfg_etb2_minValue\");\n", fsioSettingsConsumer.getNames()); + + assertEquals("\tcase FSIO_SETTING_OFFSET:\n" + + "\t\treturn \"cfg_offset\";\n" + + "\tcase FSIO_SETTING_MINVALUE:\n" + + "\t\treturn \"cfg_minValue\";\n" + + "\tcase FSIO_SETTING_ALTERNATORCONTROL_OFFSET:\n" + + "\t\treturn \"cfg_alternatorControl_offset\";\n" + + "\tcase FSIO_SETTING_ALTERNATORCONTROL_MINVALUE:\n" + + "\t\treturn \"cfg_alternatorControl_minValue\";\n" + + "\tcase FSIO_SETTING_ETB1_OFFSET:\n" + + "\t\treturn \"cfg_etb1_offset\";\n" + + "\tcase FSIO_SETTING_ETB1_MINVALUE:\n" + + "\t\treturn \"cfg_etb1_minValue\";\n" + + "\tcase FSIO_SETTING_ETB2_OFFSET:\n" + + "\t\treturn \"cfg_etb2_offset\";\n" + + "\tcase FSIO_SETTING_ETB2_MINVALUE:\n" + + "\t\treturn \"cfg_etb2_minValue\";\n", fsioSettingsConsumer.getStrings()); } } diff --git a/unit_tests/tests/test_logic_expression.cpp b/unit_tests/tests/test_logic_expression.cpp index 345ed2df27..54d573a4c6 100644 --- a/unit_tests/tests/test_logic_expression.cpp +++ b/unit_tests/tests/test_logic_expression.cpp @@ -31,9 +31,8 @@ float getEngineValue(le_action_e action DECLARE_ENGINE_PARAMETER_SUFFIX) { return mockCrankingRpm; case LE_METHOD_TIME_SINCE_BOOT: return mockTimeSinceBoot; - case LE_METHOD_FAN_ON_SETTING: - return 0; - case LE_METHOD_FAN_OFF_SETTING: + case FSIO_SETTING_FANONTEMPERATURE: + case FSIO_SETTING_FANOFFTEMPERATURE: return 0; case LE_METHOD_VBATT: return 12; @@ -211,8 +210,8 @@ TEST(misc, testLogicExpressions) { ASSERT_EQ(0, c.calcLogValue[0]); } - testExpression("fan_off_setting", 0); - testExpression("coolant fan_off_setting >", 1); + testExpression("cfg_fanOffTemperature", 0); + testExpression("coolant cfg_fanOffTemperature >", 1); testExpression("0 1 &", 0); testExpression("0 1 |", 1); @@ -228,9 +227,5 @@ TEST(misc, testLogicExpressions) { testExpression("cranking_rpm", 200); testExpression(STARTER_BLOCK, 0); testExpression("rpm cranking_rpm > ", 1); - } - mockRpm = 900; - testExpression("fan NOT coolant 90 > AND fan coolant 85 > AND OR", 1); - }