diff --git a/firmware/console/binary/generated/live_data_fragments.cpp b/firmware/console/binary/generated/live_data_fragments.cpp new file mode 100644 index 0000000000..3628927a8a --- /dev/null +++ b/firmware/console/binary/generated/live_data_fragments.cpp @@ -0,0 +1,22 @@ +// generated by gen_live_documentation.sh / UsagesReader.java +#include "pch.h" +#include "FragmentEntry.h" + +#include "tunerstudio.h" +static FragmentEntry fragments[] = { + FragmentEntry((const uint8_t *)getStructAddr(LDS_high_pressure_fuel_pump), sizeof(high_pressure_fuel_pump_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_injector_model), sizeof(injector_model_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_launch_control_state), sizeof(launch_control_state_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_boost_control), sizeof(boost_control_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_ac_control), sizeof(ac_control_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_fan_control), sizeof(fan_control_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_fuel_pump_control), sizeof(fuel_pump_control_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_main_relay), sizeof(main_relay_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_engine_state), sizeof(engine_state_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_tps_accel_state), sizeof(tps_accel_state_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_trigger_central), sizeof(trigger_central_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_trigger_state), sizeof(trigger_state_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_wall_fuel_state), sizeof(wall_fuel_state_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_idle_state), sizeof(idle_state_s)), + FragmentEntry((const uint8_t *)getStructAddr(LDS_ignition_state), sizeof(ignition_state_s)), +} diff --git a/firmware/console/binary/generated/live_data_ids.h b/firmware/console/binary/generated/live_data_ids.h index f405202178..72bfb38f22 100644 --- a/firmware/console/binary/generated/live_data_ids.h +++ b/firmware/console/binary/generated/live_data_ids.h @@ -8,7 +8,7 @@ LDS_launch_control_state, LDS_boost_control, LDS_ac_control, LDS_fan_control, -LDS_fuel_pump, +LDS_fuel_pump_control, LDS_main_relay, LDS_engine_state, LDS_tps_accel_state, diff --git a/firmware/console/binary/tunerstudio.cpp b/firmware/console/binary/tunerstudio.cpp index c9d6f2e76d..6a089d6547 100644 --- a/firmware/console/binary/tunerstudio.cpp +++ b/firmware/console/binary/tunerstudio.cpp @@ -170,7 +170,7 @@ static void handlePageSelectCommand(TsChannelBase *tsChannel, ts_response_format #if EFI_TUNER_STUDIO -static const void * getStructAddr(live_data_e structId) { +const void * getStructAddr(live_data_e structId) { switch (structId) { #if EFI_HPFP case LDS_high_pressure_fuel_pump: @@ -188,12 +188,12 @@ static const void * getStructAddr(live_data_e structId) { return static_cast(&engine->module().unmock()); case LDS_fan_control: return static_cast(&engine->fan1); - case LDS_fuel_pump: + case LDS_fuel_pump_control: return static_cast(&engine->module().unmock()); case LDS_main_relay: return static_cast(&engine->module().unmock()); case LDS_engine_state: - return static_cast(&engine->engineState); + return static_cast(&engine->engineState); case LDS_tps_accel_state: return static_cast(&engine->tpsAccelEnrichment); case LDS_trigger_central: @@ -201,7 +201,7 @@ static const void * getStructAddr(live_data_e structId) { case LDS_trigger_state: return static_cast(&engine->triggerCentral.triggerState); case LDS_wall_fuel_state: - return static_cast(&engine->injectionEvents.elements[0].wallFuel); + return static_cast(&engine->injectionEvents.elements[0].wallFuel); case LDS_idle_state: return static_cast(&engine->module().unmock()); case LDS_ignition_state: diff --git a/firmware/console/binary/tunerstudio.h b/firmware/console/binary/tunerstudio.h index 9cd4b75314..d64c75c7f5 100644 --- a/firmware/console/binary/tunerstudio.h +++ b/firmware/console/binary/tunerstudio.h @@ -30,6 +30,7 @@ void tunerStudioDebug(TsChannelBase* tsChannel, const char *msg); void tunerStudioError(TsChannelBase* tsChannel, const char *msg); uint8_t* getWorkingPageAddr(); +const void * getStructAddr(live_data_e structId); #if EFI_TUNER_STUDIO #include "thread_controller.h" diff --git a/firmware/console/binary/tunerstudio.mk b/firmware/console/binary/tunerstudio.mk index 77f2403d23..02c9d2adf8 100644 --- a/firmware/console/binary/tunerstudio.mk +++ b/firmware/console/binary/tunerstudio.mk @@ -2,6 +2,7 @@ TUNERSTUDIO_SRC_CPP = $(PROJECT_DIR)/console/binary/tunerstudio_io.cpp \ $(PROJECT_DIR)/console/binary/tunerstudio_io_serial.cpp \ $(PROJECT_DIR)/console/binary/tunerstudio_io_serial_ports.cpp \ + $(PROJECT_DIR)/console/binary/generated/live_data_fragments.cpp \ $(PROJECT_DIR)/console/binary/ts_can_channel.cpp \ $(PROJECT_DIR)/console/binary/serial_can.cpp \ $(PROJECT_DIR)/console/binary/tunerstudio.cpp \ diff --git a/firmware/controllers/actuators/fuel_pump.h b/firmware/controllers/actuators/fuel_pump.h index 096a742c5f..57d025cb02 100644 --- a/firmware/controllers/actuators/fuel_pump.h +++ b/firmware/controllers/actuators/fuel_pump.h @@ -1,7 +1,7 @@ #pragma once #include "engine_module.h" -#include "fuel_pump_generated.h" +#include "fuel_pump_control_generated.h" class FuelPumpController : public EngineModule, public fuel_pump_control_s { public: diff --git a/firmware/controllers/actuators/fuel_pump.txt b/firmware/controllers/actuators/fuel_pump_control.txt similarity index 100% rename from firmware/controllers/actuators/fuel_pump.txt rename to firmware/controllers/actuators/fuel_pump_control.txt diff --git a/firmware/controllers/actuators/fuel_pump_generated.h b/firmware/controllers/actuators/fuel_pump_control_generated.h similarity index 89% rename from firmware/controllers/actuators/fuel_pump_generated.h rename to firmware/controllers/actuators/fuel_pump_control_generated.h index 634abb4cc0..bc0a442591 100644 --- a/firmware/controllers/actuators/fuel_pump_generated.h +++ b/firmware/controllers/actuators/fuel_pump_control_generated.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) controllers/actuators/fuel_pump.txt Wed Jan 05 06:47:26 UTC 2022 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) controllers/actuators\fuel_pump_control.txt Wed Apr 13 20:37:15 EDT 2022 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -105,4 +105,4 @@ struct fuel_pump_control_s { }; // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) controllers/actuators/fuel_pump.txt Wed Jan 05 06:47:26 UTC 2022 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) controllers/actuators\fuel_pump_control.txt Wed Apr 13 20:37:15 EDT 2022 diff --git a/firmware/controllers/algo/engine_state.h b/firmware/controllers/algo/engine_state.h index 451c035608..dbd89336dc 100644 --- a/firmware/controllers/algo/engine_state.h +++ b/firmware/controllers/algo/engine_state.h @@ -23,7 +23,7 @@ struct LuaAdjustments { bool brakePedalState = false; }; -class EngineState : public engine_state2_s { +class EngineState : public engine_state_s { public: EngineState(); void periodicFastCallback(); diff --git a/firmware/controllers/algo/engine_state.txt b/firmware/controllers/algo/engine_state.txt index 458cf37616..e6be28fc1b 100644 --- a/firmware/controllers/algo/engine_state.txt +++ b/firmware/controllers/algo/engine_state.txt @@ -1,6 +1,6 @@ -struct_no_prefix engine_state2_s +struct_no_prefix engine_state_s struct_no_prefix speed_density_s diff --git a/firmware/controllers/algo/engine_state_generated.h b/firmware/controllers/algo/engine_state_generated.h index e761f3aea0..7509fd2e44 100644 --- a/firmware/controllers/algo/engine_state_generated.h +++ b/firmware/controllers/algo/engine_state_generated.h @@ -1,4 +1,4 @@ -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) controllers/algo/engine_state.txt Wed Jan 05 06:47:26 UTC 2022 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) controllers/algo\engine_state.txt Wed Apr 13 20:37:15 EDT 2022 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once @@ -196,8 +196,8 @@ struct running_fuel_s { /** total size 28*/ }; -// start of engine_state2_s -struct engine_state2_s { +// start of engine_state_s +struct engine_state_s { /** * offset 0 */ @@ -275,4 +275,4 @@ struct engine_state2_s { }; // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) controllers/algo/engine_state.txt Wed Jan 05 06:47:26 UTC 2022 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) controllers/algo\engine_state.txt Wed Apr 13 20:37:15 EDT 2022 diff --git a/firmware/controllers/algo/wall_fuel.h b/firmware/controllers/algo/wall_fuel.h index 5501b21990..c0ee7533b4 100644 --- a/firmware/controllers/algo/wall_fuel.h +++ b/firmware/controllers/algo/wall_fuel.h @@ -9,7 +9,7 @@ * Wall wetting, also known as fuel film * See https://github.com/rusefi/rusefi/issues/151 for the theory */ -class WallFuel : public wall_fuel_state { +class WallFuel : public wall_fuel_state_s { public: /** * @param desiredMassGrams desired fuel quantity, in grams diff --git a/firmware/controllers/algo/wall_fuel_state.txt b/firmware/controllers/algo/wall_fuel_state.txt index 3d8406d2da..13b7a4754a 100644 --- a/firmware/controllers/algo/wall_fuel_state.txt +++ b/firmware/controllers/algo/wall_fuel_state.txt @@ -1,4 +1,4 @@ -struct_no_prefix wall_fuel_state +struct_no_prefix wall_fuel_state_s float wallFuelCorrection;* fuel injection time correction to account for wall wetting effect, for current cycle floatms_t wallFuel;Amount of fuel on the wall, in ms of injector open time, for each injector. ! wall_fuel_state diff --git a/firmware/controllers/algo/wall_fuel_state_generated.h b/firmware/controllers/algo/wall_fuel_state_generated.h index b8337aa34a..542c16acab 100644 --- a/firmware/controllers/algo/wall_fuel_state_generated.h +++ b/firmware/controllers/algo/wall_fuel_state_generated.h @@ -1,10 +1,10 @@ -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) controllers/algo/wall_fuel_state.txt Wed Jan 05 06:47:26 UTC 2022 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) controllers/algo\wall_fuel_state.txt Wed Apr 13 20:40:04 EDT 2022 // by class com.rusefi.output.CHeaderConsumer // begin #pragma once #include "rusefi_types.h" -// start of wall_fuel_state -struct wall_fuel_state { +// start of wall_fuel_state_s +struct wall_fuel_state_s { /** * * fuel injection time correction to account for wall wetting effect, for current cycle * offset 0 @@ -19,4 +19,4 @@ struct wall_fuel_state { }; // end -// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) controllers/algo/wall_fuel_state.txt Wed Jan 05 06:47:26 UTC 2022 +// this section was generated automatically by rusEFI tool ConfigDefinition.jar based on (unknown script) controllers/algo\wall_fuel_state.txt Wed Apr 13 20:40:04 EDT 2022 diff --git a/firmware/integration/LiveData.yaml b/firmware/integration/LiveData.yaml index b36e45328d..761e3008ba 100644 --- a/firmware/integration/LiveData.yaml +++ b/firmware/integration/LiveData.yaml @@ -9,7 +9,7 @@ Usages: boost_control: [ "BoostControl.java", "controllers/actuators" ] ac_control: [ "AcControl.java", "controllers/actuators" ] fan_control: [ "FanControl.java", "controllers/actuators" ] - fuel_pump: [ "FuelPump.java", "controllers/actuators" ] + fuel_pump_control: [ "FuelPump.java", "controllers/actuators" ] main_relay: [ "MainRelay.java", "controllers/actuators" ] #todo: handle ETB pid and Idle pid which point at same pid_state.txt #pid_state: [ "PidState.java", "util/math" ] diff --git a/java_tools/ConfigDefinition.jar b/java_tools/ConfigDefinition.jar index 5312afb66a..82676b3831 100644 Binary files a/java_tools/ConfigDefinition.jar and b/java_tools/ConfigDefinition.jar differ diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/ldmp/UsagesReader.java b/java_tools/configuration_definition/src/main/java/com/rusefi/ldmp/UsagesReader.java index 59a9c99253..c839c86ae5 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/ldmp/UsagesReader.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/ldmp/UsagesReader.java @@ -1,15 +1,16 @@ package com.rusefi.ldmp; import com.rusefi.ConfigDefinition; -import com.rusefi.util.SystemOut; import org.yaml.snakeyaml.Yaml; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.TreeMap; public class UsagesReader { public static void main(String[] args) throws IOException { @@ -21,12 +22,21 @@ public class UsagesReader { Yaml yaml = new Yaml(); Map data = yaml.load(new FileReader(yamlFileName)); - StringBuilder enumContent = new StringBuilder("// generated by gen_live_documentation.sh / UsagesReader.java\n" + + String header = "// generated by gen_live_documentation.sh / UsagesReader.java\n"; + StringBuilder enumContent = new StringBuilder(header + "#pragma once\n" + "\n" + "typedef enum {\n"); - Map liveDocs = (Map) data.get("Usages"); + StringBuilder fragmentsContent = new StringBuilder( + header + + "#include \"pch.h\"\n" + + "#include \"FragmentEntry.h\"\n\n" + + "#include \"tunerstudio.h\"\n" + + "static FragmentEntry fragments[] = {\n"); + + + LinkedHashMap liveDocs = (LinkedHashMap) data.get("Usages"); for (Map.Entry entry : liveDocs.entrySet()) { String name = (String) entry.getKey(); System.out.println(" " + name); @@ -35,6 +45,7 @@ public class UsagesReader { String javaName = (String) elements.get(0); String folder = (String) elements.get(1); +// String macroName = elements.size() > 2 ? ((String)elements.get(2)).trim() : ""; ConfigDefinition.main(new String[]{ @@ -48,12 +59,27 @@ public class UsagesReader { folder + File.separator + name + "_generated.h" }); - enumContent.append("LDS_" + name + ",\n"); + String enumName = "LDS_" + name; + String type = name + "_s"; // convention + enumContent.append(enumName + ",\n"); + + fragmentsContent + .append("\tFragmentEntry((const uint8_t *)getStructAddr(") + .append(enumName) + .append("), sizeof(") + .append(type) + .append(")),\n"); } enumContent.append("} live_data_e;\n"); try (FileWriter fw = new FileWriter("console/binary/generated/live_data_ids.h")) { fw.write(enumContent.toString()); } + + fragmentsContent.append("};\n"); + + try (FileWriter fw = new FileWriter("console/binary/generated/live_data_fragments.cpp")) { + fw.write(fragmentsContent.toString()); + } } }