diff --git a/firmware/controllers/algo/auto_generated_enums.cpp b/firmware/controllers/algo/auto_generated_enums.cpp
index ca740add5a..ec9ca30f3b 100644
--- a/firmware/controllers/algo/auto_generated_enums.cpp
+++ b/firmware/controllers/algo/auto_generated_enums.cpp
@@ -177,6 +177,8 @@ case TT_MAZDA_MIATA_NB1:
return "TT_MAZDA_MIATA_NB1";
case TT_MAZDA_MIATA_VVT_TEST:
return "TT_MAZDA_MIATA_VVT_TEST";
+case TT_SUBARU_7_6:
+ return "TT_SUBARU_7_6";
case TT_MINI_COOPER_R50:
return "TT_MINI_COOPER_R50";
case TT_MITSU:
diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h
index fbe390e23a..80f854068c 100644
--- a/firmware/controllers/algo/rusefi_enums.h
+++ b/firmware/controllers/algo/rusefi_enums.h
@@ -219,7 +219,9 @@ typedef enum {
*/
TT_MAZDA_MIATA_VVT_TEST = 35,
- TT_UNUSED = 36, // this is used if we want to iterate over all trigger types
+ TT_SUBARU_7_6 = 36,
+
+ TT_UNUSED = 37, // this is used if we want to iterate over all trigger types
Force_4b_trigger_type = ENUM_32_BITS,
} trigger_type_e;
diff --git a/firmware/controllers/trigger/trigger_mazda.cpp b/firmware/controllers/trigger/decoders/trigger_mazda.cpp
similarity index 100%
rename from firmware/controllers/trigger/trigger_mazda.cpp
rename to firmware/controllers/trigger/decoders/trigger_mazda.cpp
diff --git a/firmware/controllers/trigger/trigger_subaru.cpp b/firmware/controllers/trigger/decoders/trigger_subaru.cpp
similarity index 51%
rename from firmware/controllers/trigger/trigger_subaru.cpp
rename to firmware/controllers/trigger/decoders/trigger_subaru.cpp
index 5dba5274fc..0e4973a0c9 100644
--- a/firmware/controllers/trigger/trigger_subaru.cpp
+++ b/firmware/controllers/trigger/decoders/trigger_subaru.cpp
@@ -45,3 +45,41 @@ void initialize36_2_2_2(TriggerShape *s DECLARE_ENGINE_PARAMETER_S) {
s->addEvent2(720, T_PRIMARY, TV_FALL PASS_ENGINE_PARAMETER);
s->useOnlyPrimaryForSync = true;
}
+
+void initializeSubaru7_6(TriggerShape *s DECLARE_ENGINE_PARAMETER_S) {
+ s->initialize(FOUR_STROKE_CAM_SENSOR, false);
+
+ float t2 = 25;
+ float t3 = 15;
+ float width = 5;
+
+ s->addEvent2(180 - width / 2, T_PRIMARY, TV_RISE PASS_ENGINE_PARAMETER);
+ s->addEvent2(180, T_PRIMARY, TV_FALL PASS_ENGINE_PARAMETER);
+
+ s->addEvent2(360 - t2 - width / 2, T_PRIMARY, TV_RISE PASS_ENGINE_PARAMETER);
+ s->addEvent2(360 - t2, T_PRIMARY, TV_FALL PASS_ENGINE_PARAMETER);
+
+ s->addEvent2(360 - width / 2, T_PRIMARY, TV_RISE PASS_ENGINE_PARAMETER);
+ s->addEvent2(360, T_PRIMARY, TV_FALL PASS_ENGINE_PARAMETER);
+
+ s->addEvent2(540 - width / 2, T_PRIMARY, TV_RISE PASS_ENGINE_PARAMETER);
+ s->addEvent2(540, T_PRIMARY, TV_FALL PASS_ENGINE_PARAMETER);
+
+
+ s->addEvent2(720 - 2 * t3 - width / 2, T_PRIMARY, TV_RISE PASS_ENGINE_PARAMETER);
+ s->addEvent2(720 - 2 * t3, T_PRIMARY, TV_FALL PASS_ENGINE_PARAMETER);
+
+ s->addEvent2(720 - t3 - width / 2, T_PRIMARY, TV_RISE PASS_ENGINE_PARAMETER);
+ s->addEvent2(720 - t3, T_PRIMARY, TV_FALL PASS_ENGINE_PARAMETER);
+
+
+ s->addEvent2(720 - width / 2, T_PRIMARY, TV_RISE PASS_ENGINE_PARAMETER);
+ s->addEvent2(720, T_PRIMARY, TV_FALL PASS_ENGINE_PARAMETER);
+
+ s->setTriggerSynchronizationGap(12);
+
+ s->isSynchronizationNeeded = true;
+
+ s->useOnlyPrimaryForSync = true;
+
+}
diff --git a/firmware/controllers/trigger/decoders/trigger_subaru.h b/firmware/controllers/trigger/decoders/trigger_subaru.h
index d70e4e729d..c06fc528d6 100644
--- a/firmware/controllers/trigger/decoders/trigger_subaru.h
+++ b/firmware/controllers/trigger/decoders/trigger_subaru.h
@@ -11,5 +11,6 @@
#include "engine.h"
void initialize36_2_2_2(TriggerShape *s DECLARE_ENGINE_PARAMETER_S);
+void initializeSubaru7_6(TriggerShape *s DECLARE_ENGINE_PARAMETER_S);
#endif /* CONTROLLERS_TRIGGER_TRIGGER_SUBARU_H_ */
diff --git a/firmware/controllers/trigger/trigger_toyota.cpp b/firmware/controllers/trigger/decoders/trigger_toyota.cpp
similarity index 100%
rename from firmware/controllers/trigger/trigger_toyota.cpp
rename to firmware/controllers/trigger/decoders/trigger_toyota.cpp
diff --git a/firmware/controllers/trigger/trigger.mk b/firmware/controllers/trigger/trigger.mk
index 26131f4144..a50de55daf 100644
--- a/firmware/controllers/trigger/trigger.mk
+++ b/firmware/controllers/trigger/trigger.mk
@@ -1,15 +1,15 @@
TRIGGER_DECODERS_SRC_CPP = \
$(PROJECT_DIR)/controllers/trigger/trigger_bmw.cpp \
- $(PROJECT_DIR)/controllers/trigger/trigger_mazda.cpp \
+ $(PROJECT_DIR)/controllers/trigger/decoders/trigger_mazda.cpp \
$(PROJECT_DIR)/controllers/trigger/trigger_chrysler.cpp \
$(PROJECT_DIR)/controllers/trigger/trigger_structure.cpp \
$(PROJECT_DIR)/controllers/trigger/trigger_decoder.cpp \
$(PROJECT_DIR)/controllers/trigger/trigger_simulator.cpp \
$(PROJECT_DIR)/controllers/trigger/trigger_mitsubishi.cpp \
$(PROJECT_DIR)/controllers/trigger/trigger_nissan.cpp \
- $(PROJECT_DIR)/controllers/trigger/trigger_subaru.cpp \
- $(PROJECT_DIR)/controllers/trigger/trigger_toyota.cpp \
+ $(PROJECT_DIR)/controllers/trigger/decoders/trigger_subaru.cpp \
+ $(PROJECT_DIR)/controllers/trigger/decoders/trigger_toyota.cpp \
$(PROJECT_DIR)/controllers/trigger/trigger_gm.cpp \
$(PROJECT_DIR)/controllers/trigger/trigger_honda.cpp \
$(PROJECT_DIR)/controllers/trigger/trigger_rover.cpp
diff --git a/firmware/controllers/trigger/trigger_decoder.cpp b/firmware/controllers/trigger/trigger_decoder.cpp
index b96a176bba..53308c39c6 100644
--- a/firmware/controllers/trigger/trigger_decoder.cpp
+++ b/firmware/controllers/trigger/trigger_decoder.cpp
@@ -591,6 +591,10 @@ void TriggerShape::initializeTriggerShape(Logging *logger DECLARE_ENGINE_PARAMET
initDodgeRam(triggerShape PASS_ENGINE_PARAMETER);
break;
+ case TT_SUBARU_7_6:
+ initializeSubaru7_6(triggerShape PASS_ENGINE_PARAMETER);
+ break;
+
case TT_36_2_2_2:
initialize36_2_2_2(triggerShape PASS_ENGINE_PARAMETER);
break;
diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt
index 09aaf82906..375e17e56b 100644
--- a/firmware/integration/rusefi_config.txt
+++ b/firmware/integration/rusefi_config.txt
@@ -334,7 +334,7 @@ struct trigger_config_s @brief Trigger wheel(s) configuration
custom bool32_t 4 bits, U32, @OFFSET@, [0:0], "false", "true"
-#define trigger_type_e_enum "custom toothed wheel", "ford aspire", "dodge neon", "Miata NA", "Miata NB", "GM_7X", "Cooper", "Mazda SOHC 4", "60/2", "36/1", "Accord CD", "MITSU", "ACCORD 2", "ACCORD DIP", "Neon 2003", "MAZDA D 1+4", "1+1", "1+60/2", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Accord 1+24", "DODGE STRATUS", "36_2_2_2", "Nissan", "2JZ", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "2003 neon crank", "Miata VVT", "INVALID", "INVALID", "INVALID", "INVALID"
+#define trigger_type_e_enum "custom toothed wheel", "ford aspire", "dodge neon", "Miata NA", "Miata NB", "GM_7X", "Cooper", "Mazda SOHC 4", "60/2", "36/1", "Accord CD", "MITSU", "ACCORD 2", "ACCORD DIP", "Neon 2003", "MAZDA D 1+4", "1+1", "1+60/2", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Accord 1+24", "DODGE STRATUS", "36_2_2_2", "Nissan", "2JZ", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "2003 neon crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "INVALID", "INVALID", "INVALID", "INVALID"
custom trigger_type_e 4 bits, U32, @OFFSET@, [0:5], @@trigger_type_e_enum@@
trigger_type_e type;set_trigger_type X
diff --git a/firmware/svnversion.h b/firmware/svnversion.h
index b34025bae6..5f4d3ca1b3 100644
--- a/firmware/svnversion.h
+++ b/firmware/svnversion.h
@@ -1,5 +1,5 @@
// This file was generated by Version2Header
-// Fri Dec 16 21:01:21 EST 2016
+// Mon Jan 02 16:10:17 EST 2017
#ifndef VCS_VERSION
-#define VCS_VERSION "10994"
+#define VCS_VERSION "11143"
#endif
diff --git a/java_console/models/src/com/rusefi/config/Fields.java b/java_console/models/src/com/rusefi/config/Fields.java
index 9a1ac33781..2b19116619 100644
--- a/java_console/models/src/com/rusefi/config/Fields.java
+++ b/java_console/models/src/com/rusefi/config/Fields.java
@@ -1,6 +1,6 @@
package com.rusefi.config;
-// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Tue Dec 27 23:08:47 EST 2016
+// this file was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Mon Jan 02 18:37:17 EST 2017
public class Fields {
public static final int LE_COMMAND_LENGTH = 200;
public static final int FSIO_ADC_COUNT = 4;
@@ -1101,7 +1101,7 @@ public class Fields {
public static final Field TPSADCCHANNEL = Field.create("TPSADCCHANNEL", 524, FieldType.INT, adc_channel_e);
public static final Field OVERRIDECRANKINGIGNITION = Field.create("OVERRIDECRANKINGIGNITION", 528, FieldType.INT);
public static final Field SENSORCHARTFREQUENCY = Field.create("SENSORCHARTFREQUENCY", 532, FieldType.INT);
- public static final String[] trigger_type_e = {"custom toothed wheel", "ford aspire", "dodge neon", "Miata NA", "Miata NB", "GM_7X", "Cooper", "Mazda SOHC 4", "60/2", "36/1", "Accord CD", "MITSU", "ACCORD 2", "ACCORD DIP", "Neon 2003", "MAZDA D 1+4", "1+1", "1+60/2", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Accord 1+24", "DODGE STRATUS", "36_2_2_2", "Nissan", "2JZ", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "2003 neon crank", "Miata VVT", "INVALID", "INVALID", "INVALID", "INVALID"};
+ public static final String[] trigger_type_e = {"custom toothed wheel", "ford aspire", "dodge neon", "Miata NA", "Miata NB", "GM_7X", "Cooper", "Mazda SOHC 4", "60/2", "36/1", "Accord CD", "MITSU", "ACCORD 2", "ACCORD DIP", "Neon 2003", "MAZDA D 1+4", "1+1", "1+60/2", "Single Tooth", "Dodge Ram 1+16", "60/2 VW", "Accord 1+24", "DODGE STRATUS", "36_2_2_2", "Nissan", "2JZ", "Rover K", "GM LS 24", "Honda CBR 600", "2JZ_1_12", "Honda CBR 600 custom", "3/1 skipped" , "2003 neon crank", "Miata VVT", "trg34", "trg35", "Subaru 7+6", "INVALID", "INVALID", "INVALID", "INVALID"};
public static final Field TRIGGER_TYPE = Field.create("TRIGGER_TYPE", 536, FieldType.INT, trigger_type_e);
public static final Field TRIGGER_CUSTOMISSYNCHRONIZATIONNEEDED = Field.create("TRIGGER_CUSTOMISSYNCHRONIZATIONNEEDED", 540, FieldType.BIT, 0);
public static final Field TRIGGER_CUSTOMNEEDSECONDTRIGGERINPUT = Field.create("TRIGGER_CUSTOMNEEDSECONDTRIGGERINPUT", 540, FieldType.BIT, 1);
diff --git a/unit_tests/.cproject b/unit_tests/.cproject
index b61479f604..27a33e0b31 100644
--- a/unit_tests/.cproject
+++ b/unit_tests/.cproject
@@ -40,6 +40,7 @@
+