Delayed A/C compressor switch #922

This commit is contained in:
rusefi 2019-09-11 19:30:36 -04:00
parent 34c6e790fd
commit 5ac8545060
12 changed files with 162 additions and 33 deletions

View File

@ -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,

View File

@ -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

View File

@ -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");

View File

@ -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";

View File

@ -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 > |"

View File

@ -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

Binary file not shown.

View File

@ -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<String> 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())

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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());
}
}

View File

@ -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);
}