From 3575962da641602c9ebb7b7515577fd1aacd5bf7 Mon Sep 17 00:00:00 2001 From: rusefi Date: Mon, 4 May 2020 22:31:47 -0400 Subject: [PATCH 01/20] docs --- firmware/controllers/trigger/decoders/trigger_toyota.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/firmware/controllers/trigger/decoders/trigger_toyota.cpp b/firmware/controllers/trigger/decoders/trigger_toyota.cpp index debf994fa8..3d987eb317 100644 --- a/firmware/controllers/trigger/decoders/trigger_toyota.cpp +++ b/firmware/controllers/trigger/decoders/trigger_toyota.cpp @@ -9,6 +9,12 @@ #include "trigger_toyota.h" +/** + * TT_2JZ_1_12 + * One cam + 12 crank + * http://rusefi.com/images/triggers/trigger_29.png + */ + void initialize2jzGE1_12(TriggerWaveform *s) { s->initialize(FOUR_STROKE_CAM_SENSOR); @@ -43,6 +49,9 @@ void initialize2jzGE1_12(TriggerWaveform *s) { s->isSynchronizationNeeded = false; } +/** + * https://rusefi.com/forum/viewtopic.php?f=5&t=1720 + */ void initialize2jzGE3_34(TriggerWaveform *s) { setToothedWheelConfiguration(s, 36, 2, FOUR_STROKE_CRANK_SENSOR); From fa83c5cddfc6b7a9002fb89da3f07e384ab8d99b Mon Sep 17 00:00:00 2001 From: rusefi Date: Mon, 4 May 2020 23:10:18 -0400 Subject: [PATCH 02/20] progress --- .../src/com/rusefi/FiringOrderTSLogic.java | 43 +++++++++++-------- .../rusefi/test/FiringOrderTSLogicTest.java | 2 +- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/java_console/models/src/com/rusefi/FiringOrderTSLogic.java b/java_console/models/src/com/rusefi/FiringOrderTSLogic.java index 5ed9766ab5..75926dc68f 100644 --- a/java_console/models/src/com/rusefi/FiringOrderTSLogic.java +++ b/java_console/models/src/com/rusefi/FiringOrderTSLogic.java @@ -14,21 +14,25 @@ import java.util.Map; public class FiringOrderTSLogic { private static final String FIRING_ORDER_PREFIX = "FO_"; - private static final Map ordinal2order = new HashMap<>(); - private static int maxOrdinal; public static void main(String[] args) throws IOException { invoke("../firmware/controllers/algo/firing_order.h"); } - public static void invoke(String fileName) throws IOException { - readFiringOrders(fileName); + public static String invoke(String fileName) throws IOException { + State state = new State(); - for (int i = 2; i <= maxOrdinal; i++) - processId(i); + readFiringOrders(fileName, state); + + StringBuilder sb = new StringBuilder(); + for (int i = 2; i <= state.maxOrdinal; i++) { + String line = processId(i, state); + sb.append(line).append("\r\n"); + } + return sb.toString(); } - private static void readFiringOrders(String fileName) throws IOException { + private static void readFiringOrders(String fileName, State state) throws IOException { BufferedReader br = new BufferedReader(new FileReader(fileName)); String line; @@ -39,11 +43,11 @@ public class FiringOrderTSLogic { continue; } line = line.substring(index + FIRING_ORDER_PREFIX.length()); - parseLine(line); + parseLine(line, state); } } - public static void parseLine(String line) { + public static void parseLine(String line, State state) { line = line.replaceAll("[\\s]*\\,.*", ""); line = line.replaceAll("[\\s\\,]", ""); System.out.println("Processing " + line); @@ -54,16 +58,16 @@ public class FiringOrderTSLogic { System.out.println("order " + Arrays.toString(order) + ": " + ordinal); - maxOrdinal = Math.max(ordinal, maxOrdinal); - ordinal2order.put(ordinal, order); + state.maxOrdinal = Math.max(ordinal, state.maxOrdinal); + state.ordinal2order.put(ordinal, order); } - private static void processId(int cylinderId) { + private static String processId(int cylinderId, State state) { StringBuilder logic = new StringBuilder(); - for (Map.Entry e : ordinal2order.entrySet()) { + for (Map.Entry e : state.ordinal2order.entrySet()) { Integer ordinal = e.getKey(); String[] order = e.getValue(); if (order.length % 2 != 0) { @@ -87,9 +91,14 @@ public class FiringOrderTSLogic { } String result = logic.length() == 0 ? "" : "|| (" + logic + ")"; - - - System.out.println("#define ignitionPin" + cylinderId + "logic" + " " + result + ""); - + String output = "#define ignitionPin" + cylinderId + "logic" + " " + result + ""; + System.out.println(output); + return output; } + + public static class State { + final Map ordinal2order = new HashMap<>(); + int maxOrdinal; + } + } diff --git a/java_console/models/src/com/rusefi/test/FiringOrderTSLogicTest.java b/java_console/models/src/com/rusefi/test/FiringOrderTSLogicTest.java index 5c9247fca4..658f49a445 100644 --- a/java_console/models/src/com/rusefi/test/FiringOrderTSLogicTest.java +++ b/java_console/models/src/com/rusefi/test/FiringOrderTSLogicTest.java @@ -6,6 +6,6 @@ import org.junit.Test; public class FiringOrderTSLogicTest { @Test public void parseFiringOrderLine() { - FiringOrderTSLogic.parseLine("FO_1_3_4_2 = 1, // typical inline 4"); + FiringOrderTSLogic.parseLine("FO_1_3_4_2 = 1, // typical inline 4", new FiringOrderTSLogic.State()); } } From 48fc6d91d94c01777656d6ad3f45a4762d1d6431 Mon Sep 17 00:00:00 2001 From: rusefi Date: Mon, 4 May 2020 23:38:19 -0400 Subject: [PATCH 03/20] better location --- .../src/com/rusefi/FiringOrderTSLogic.java | 0 .../src/com/rusefi/test/FiringOrderTSLogicTest.java | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {java_console/models => java_tools/configuration_definition}/src/com/rusefi/FiringOrderTSLogic.java (100%) rename {java_console/models => java_tools/configuration_definition}/src/com/rusefi/test/FiringOrderTSLogicTest.java (100%) diff --git a/java_console/models/src/com/rusefi/FiringOrderTSLogic.java b/java_tools/configuration_definition/src/com/rusefi/FiringOrderTSLogic.java similarity index 100% rename from java_console/models/src/com/rusefi/FiringOrderTSLogic.java rename to java_tools/configuration_definition/src/com/rusefi/FiringOrderTSLogic.java diff --git a/java_console/models/src/com/rusefi/test/FiringOrderTSLogicTest.java b/java_tools/configuration_definition/src/com/rusefi/test/FiringOrderTSLogicTest.java similarity index 100% rename from java_console/models/src/com/rusefi/test/FiringOrderTSLogicTest.java rename to java_tools/configuration_definition/src/com/rusefi/test/FiringOrderTSLogicTest.java From a208078f7cbe6340d07ce4a29e15ff7e692dfb8f Mon Sep 17 00:00:00 2001 From: rusefi Date: Mon, 4 May 2020 23:38:32 -0400 Subject: [PATCH 04/20] haha notes --- firmware/controllers/algo/firing_order.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/firmware/controllers/algo/firing_order.h b/firmware/controllers/algo/firing_order.h index 9bed06331b..e59b3e6aaa 100644 --- a/firmware/controllers/algo/firing_order.h +++ b/firmware/controllers/algo/firing_order.h @@ -35,6 +35,8 @@ typedef enum { FO_1_2_3_4_5_6 = 9, FO_1_6_3_2_5_4 = 13, // EG33 + // todo: one day we shall support 7 cylinder radial, probably not before one actually approaches us + // 8 cylinder FO_1_8_4_3_6_5_7_2 = 5, FO_1_8_7_2_6_5_4_3 = 11, @@ -43,6 +45,7 @@ typedef enum { FO_1_3_7_2_6_5_4_8 = 20, // Ford 5.0 HO and 351W // 9 cylinder - for instance radial :) + // PS: Matt says that 9cyl is actually 1-3-5-7-9-2-4-6-8 or 1-8-6-4-2-9-7-5-3 for reverse rotation FO_1_2_3_4_5_6_7_8_9 = 21, // 10 cylinder From 75d76f850d96393bdd6c4f6a3c851919ebd5498b Mon Sep 17 00:00:00 2001 From: rusefi Date: Mon, 4 May 2020 23:54:28 -0400 Subject: [PATCH 05/20] progress - firing order logic to be re-evaluated every time we generate --- firmware/gen_config.bat | 1 + firmware/gen_config_board.bat | 1 + firmware/integration/rusefi_config.txt | 13 ------------- firmware/tunerstudio/rusefi.input | 12 +----------- .../runConfigurations/FiringOrderTSLogic.xml | 2 +- java_tools/ConfigDefinition.jar | Bin 156473 -> 164319 bytes .../src/com/rusefi/ConfigDefinition.java | 11 ++++++++++- .../src/com/rusefi/FiringOrderTSLogic.java | 7 +++++-- .../src/com/rusefi/VariableRegistry.java | 5 ++++- 9 files changed, 23 insertions(+), 29 deletions(-) diff --git a/firmware/gen_config.bat b/firmware/gen_config.bat index 4be42cbce6..ae8c5fc406 100644 --- a/firmware/gen_config.bat +++ b/firmware/gen_config.bat @@ -20,6 +20,7 @@ java -DSystemOut.name=gen_config ^ -initialize_to_zero false ^ -tool gen_config.bat ^ -c_defines controllers\generated\rusefi_generated.h ^ + -firing_order controllers/algo/firing_order.h ^ -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 ^ diff --git a/firmware/gen_config_board.bat b/firmware/gen_config_board.bat index 6b7a4b882c..929a84f4bc 100644 --- a/firmware/gen_config_board.bat +++ b/firmware/gen_config_board.bat @@ -31,6 +31,7 @@ java -DSystemOut.name=gen_config_board ^ -definition integration\rusefi_config.txt ^ -tool gen_config.bat ^ -ts_destination tunerstudio ^ + -firing_order controllers/algo/firing_order.h ^ -ts_output_name rusefi_%BOARDNAME%.ini ^ -prepend tunerstudio/%BOARDNAME%_prefix.txt ^ -prepend config/boards/%BOARDNAME%/prepend.txt ^ diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 4fec66af45..6d673c487f 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -41,19 +41,6 @@ ! all the sub-structures are going to be nested within the primary structure, that's ! needed to get a proper TunerStudio file -! this section is auto-generated by FiringOrderTSLogic.java -#define ignitionPin2logic || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12)) -#define ignitionPin3logic || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9)) -#define ignitionPin4logic || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12)) -#define ignitionPin5logic || ((firingOrder == 4) || (firingOrder == 12)) -#define ignitionPin6logic -#define ignitionPin7logic || ((firingOrder == 11)) -#define ignitionPin8logic || ((firingOrder == 5) || (firingOrder == 11)) -#define ignitionPin9logic -#define ignitionPin10logic -#define ignitionPin11logic -#define ignitionPin12logic - struct persistent_config_s struct_no_prefix engine_configuration_s diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 693e29d5f4..69b1c267b3 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -1596,17 +1596,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00" field = "Ignition Pin 1", ignitionPins1, {isIgnitionEnabled == 1} ; see rusefi_config.txt comment next to 'ignitionPin2logic' which says ; this section is auto-generated by FiringOrderTSLogic.java - field = "Ignition Pin 2", ignitionPins2, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 1) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 2) || (firingOrder == 7) || (firingOrder == 9) || (firingOrder == 11) || (firingOrder == 12)))} - field = "Ignition Pin 3", ignitionPins3, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 2) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 1) || (firingOrder == 3) || (firingOrder == 4) || (firingOrder == 5) || (firingOrder == 9)))} - field = "Ignition Pin 4", ignitionPins4, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 3) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 7) || (firingOrder == 12)))} - field = "Ignition Pin 5", ignitionPins5, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 4) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 4) || (firingOrder == 12)))} - field = "Ignition Pin 6", ignitionPins6, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 5) && (ignitionMode !=2 || twoWireBatchIgnition == 1 )} - field = "Ignition Pin 7", ignitionPins7, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 6) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 11)))} - field = "Ignition Pin 8", ignitionPins8, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 7) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))} - field = "Ignition Pin 9", ignitionPins9, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 8) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))} - field = "Ignition Pin 10", ignitionPins10, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 9) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))} - field = "Ignition Pin 11", ignitionPins11, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 10) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))} - field = "Ignition Pin 12", ignitionPins12, {isIgnitionEnabled == 1 && (ignitionMode != 0 && cylindersCount > 11) && (ignitionMode !=2 || twoWireBatchIgnition == 1 || ((firingOrder == 5) || (firingOrder == 11)))} +@@FIRINGORDER@@ field = "This is useful to have tachometer working" field = " while converting from distributor" field = "Dizzy out Pin", dizzySparkOutputPin, {isIgnitionEnabled == 1} diff --git a/java_console/.idea/runConfigurations/FiringOrderTSLogic.xml b/java_console/.idea/runConfigurations/FiringOrderTSLogic.xml index a8e616a2ad..34c72682ce 100644 --- a/java_console/.idea/runConfigurations/FiringOrderTSLogic.xml +++ b/java_console/.idea/runConfigurations/FiringOrderTSLogic.xml @@ -1,7 +1,7 @@