From 8a6bc372a9ac2ff39250e4b3b6c9883d66916059 Mon Sep 17 00:00:00 2001 From: andreika-git Date: Fri, 26 Apr 2024 19:38:16 +0300 Subject: [PATCH] Add custom board config, menu, tables https://github.com/rusefi/rusefi/issues/6352 --- firmware/gen_config_common.sh | 23 +++++++++++++++---- firmware/integration/rusefi_config.txt | 2 ++ firmware/tunerstudio/tunerstudio.template.ini | 5 ++++ .../main/java/com/rusefi/ReaderStateImpl.java | 18 ++++++++++++--- 4 files changed, 41 insertions(+), 7 deletions(-) diff --git a/firmware/gen_config_common.sh b/firmware/gen_config_common.sh index ac2522b7ac..45235df9a3 100755 --- a/firmware/gen_config_common.sh +++ b/firmware/gen_config_common.sh @@ -2,10 +2,22 @@ COMMON_GEN_CONFIG_PREFIX=" -DSystemOut.name=logs/gen_config_${SHORT_BOARD_NAME} \ -jar ../java_tools/configuration_definition/build/libs/config_definition-all.jar" -BOARD_OPTIONS_FILE="${BOARD_DIR}/board_options.ini" -if [ ! -f $BOARD_OPTIONS_FILE ]; then - BOARD_OPTIONS_FILE="tunerstudio/empty_board_options.ini" -fi +set_board_file() { + local var=$1 + local file_path=$2 + local default_file="tunerstudio/empty_board_options.ini" + + if [ ! -f "$file_path" ]; then + eval "$var=\"$default_file\"" + else + eval "$var=\"$file_path\"" + fi +} + +set_board_file BOARD_CONFIG_FILE "${BOARD_DIR}/board_config.txt" +set_board_file BOARD_OPTIONS_FILE "${BOARD_DIR}/board_options.ini" +set_board_file BOARD_MENU_FILE "${BOARD_DIR}/board_menu.ini" +set_board_file BOARD_TABLES_FILE "${BOARD_DIR}/board_tables.ini" COMMON_GEN_CONFIG=" -readfile OUTPUTS_SECTION_FROM_FILE console/binary/generated/output_channels.ini \ @@ -13,7 +25,10 @@ COMMON_GEN_CONFIG=" -readfile LIVE_DATA_MENU_FROM_FILE console/binary/generated/fancy_menu.ini \ -readfile LIVE_DATA_PANELS_FROM_FILE console/binary/generated/fancy_content.ini \ -readfile LIVE_DATA_GAUGES_FROM_FILE console/binary/generated/gauges.ini \ + -readfile BOARD_CONFIG_FROM_FILE ${BOARD_CONFIG_FILE} \ -readfile BOARD_OPTIONS_FROM_FILE ${BOARD_OPTIONS_FILE} \ + -readfile BOARD_MENU_FROM_FILE ${BOARD_MENU_FILE} \ + -readfile BOARD_TABLES_FROM_FILE ${BOARD_TABLES_FILE} \ -ts_destination tunerstudio \ -triggerInputFolder ../unit_tests \ -with_c_defines false \ diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 88b10b0f26..7daad0df94 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -1988,6 +1988,8 @@ uint8_t[TCU_TABLE_WIDTH] tcu_shiftSpeed43;;"MPH", 1, 0, 0, 255, 0 float tcu_shiftTime;;"ms", 1, 0, 0, 3000, 0 +@@BOARD_CONFIG_FROM_FILE@@ + end_struct #define CMD_SET_SENSOR_MOCK "set_sensor_mock" diff --git a/firmware/tunerstudio/tunerstudio.template.ini b/firmware/tunerstudio/tunerstudio.template.ini index 25b6ce7801..2a4ec54c33 100644 --- a/firmware/tunerstudio/tunerstudio.template.ini +++ b/firmware/tunerstudio/tunerstudio.template.ini @@ -900,6 +900,7 @@ curve = rangeMatrix, "Range Switch Input Matrix" [TableEditor] ; table_id, map3d_id, "title", page +@@BOARD_TABLES_FROM_FILE@@ ; move table into a panel? or find a way to add a link to https://rusefi.com/s/tpstps https://github.com/rusefi/rusefi/issues/5130 table = tpsTpsAccelTbl, tpsTpsAccelMap, "TPS/TPS Acceleration Extra Fuel(ms)", 1 @@ -2122,6 +2123,10 @@ menuDialog = main subMenu = std_separator subMenu = fancyHardwareDialog, "Fancy Hardware"@@if_ts_show_fancy_hardware subMenu = fancyOptionsDialog, "Fancy Options"@@if_ts_show_fancy_options + + @@BOARD_MENU_FROM_FILE@@ + subMenu = std_separator + subMenu = tractionEtbTableTbl, "Traction Control ETB Drop" subMenu = tractionTimingTableTbl, "Traction Control Timing Adjustment" subMenu = tractionIgnitionSkipDialog, "Traction Control Skip Ignition" diff --git a/java_tools/configuration_definition_base/src/main/java/com/rusefi/ReaderStateImpl.java b/java_tools/configuration_definition_base/src/main/java/com/rusefi/ReaderStateImpl.java index 019aa63202..c888dd3e26 100644 --- a/java_tools/configuration_definition_base/src/main/java/com/rusefi/ReaderStateImpl.java +++ b/java_tools/configuration_definition_base/src/main/java/com/rusefi/ReaderStateImpl.java @@ -33,6 +33,7 @@ public class ReaderStateImpl implements ReaderState { private static final String END_STRUCT = "end_struct"; private static final String STRUCT_NO_PREFIX = "struct_no_prefix "; private static final String STRUCT = "struct "; + private static final String VARIABLE_PREFIX = "@@"; // used to update other files private final List inputFiles = new ArrayList<>(); private final Stack stack = new Stack<>(); @@ -249,11 +250,22 @@ public class ReaderStateImpl implements ReaderState { for (ConfigurationConsumer consumer : consumers) consumer.startFile(); + List lines = new ArrayList<>(); + String lineReaded; + while ((lineReaded = definitionReader.readLine()) != null) { + lineReaded = ToolUtil.trimLine(lineReaded); + if (lineReaded.startsWith(VARIABLE_PREFIX)) { + String lineExpanded = variableRegistry.applyVariables(lineReaded); + String sublines[] = lineExpanded.split("\\r?\\n"); + lines.addAll(Arrays.asList(sublines)); + } else { + lines.add(lineReaded); + } + } + int lineIndex = 0; - String line; - while ((line = definitionReader.readLine()) != null) { + for (final String line : lines) { lineIndex++; - line = ToolUtil.trimLine(line); /** * we should ignore empty lines and comments */