diff --git a/firmware/console/binary/FragmentEntry.h b/firmware/console/binary/FragmentEntry.h index a00b184974..97fd4aaae6 100644 --- a/firmware/console/binary/FragmentEntry.h +++ b/firmware/console/binary/FragmentEntry.h @@ -9,12 +9,19 @@ struct FragmentEntry { FragmentEntry(const uint8_t *data, size_t size) { + init(data, size); + } + + FragmentEntry() { + } + + const uint8_t *data = nullptr; + size_t size = 0; + + void init(const uint8_t *data, size_t size) { this->data = data; this->size = size; } - - const uint8_t *data; - size_t size; }; void copyRange(uint8_t *destination, FragmentEntry *fragments, size_t dataOffset, size_t dataLength); diff --git a/firmware/console/binary/tunerstudio.cpp b/firmware/console/binary/tunerstudio.cpp index 615b0f7fad..cb30c241fd 100644 --- a/firmware/console/binary/tunerstudio.cpp +++ b/firmware/console/binary/tunerstudio.cpp @@ -171,29 +171,37 @@ static void handlePageSelectCommand(TsChannelBase *tsChannel, ts_response_format #if EFI_TUNER_STUDIO const void * getStructAddr(live_data_e structId) { +#if EFI_UNIT_TEST if (engine == nullptr) { -#if ! EFI_UNIT_TEST - firmwareError(OBD_PCM_Processor_Fault, "getStructAddr: No engine reference"); -#endif return nullptr; } +#endif switch (structId) { + case LDS_high_pressure_fuel_pump: #if EFI_HPFP return static_cast(&engine->module().unmock()); #else return nullptr; // explicit null to confirm that this struct is handled #endif // EFI_HPFP + case LDS_launch_control_state: +#if EFI_LAUNCH_CONTROL return static_cast(&engine->launchController); +#else + return nullptr; // explicit null to confirm that this struct is handled +#endif // EFI_LAUNCH_CONTROL + case LDS_injector_model: return static_cast(&engine->module().unmock()); + case LDS_boost_control: #if EFI_BOOST_CONTROL return static_cast(&engine->boostController); #else return nullptr; // explicit null to confirm that this struct is handled #endif // EFI_BOOST_CONTROL + case LDS_ac_control: return static_cast(&engine->module().unmock()); case LDS_fan_control: diff --git a/java_tools/ConfigDefinition.jar b/java_tools/ConfigDefinition.jar index dfbc861aca..1de9aa22f7 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 69aa880420..b206a68235 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 @@ -28,16 +28,18 @@ public class UsagesReader { "\n" + "typedef enum {\n"); + LinkedHashMap liveDocs = (LinkedHashMap) data.get("Usages"); + StringBuilder fragmentsContent = new StringBuilder( header + "#include \"pch.h\"\n" + "#include \"FragmentEntry.h\"\n\n" + "#include \"tunerstudio.h\"\n" + - "/*\n" + - "static FragmentEntry fragments[] = {\n"); + "static FragmentEntry fragments[" + liveDocs.size() + "];\n\n" + + "void initFragments() {\n"); + int index = 0; - LinkedHashMap liveDocs = (LinkedHashMap) data.get("Usages"); for (Map.Entry entry : liveDocs.entrySet()) { String name = (String) entry.getKey(); System.out.println(" " + name); @@ -65,11 +67,14 @@ public class UsagesReader { enumContent.append(enumName + ",\n"); fragmentsContent - .append("\tFragmentEntry((const uint8_t *)getStructAddr(") + .append("\tfragments[") + .append(index++) + .append("].init(") + .append("(const uint8_t *)getStructAddr(") .append(enumName) .append("), sizeof(") .append(type) - .append(")),\n"); + .append("));\n"); } enumContent.append("} live_data_e;\n"); @@ -79,8 +84,6 @@ public class UsagesReader { fragmentsContent.append("};\n"); - fragmentsContent.append("*/\n"); - try (FileWriter fw = new FileWriter("console/binary/generated/live_data_fragments.cpp")) { fw.write(fragmentsContent.toString()); }