diff --git a/firmware/console/binary/live_data.cpp b/firmware/console/binary/live_data.cpp index b0729ec43b..1dd7ae7083 100644 --- a/firmware/console/binary/live_data.cpp +++ b/firmware/console/binary/live_data.cpp @@ -104,6 +104,15 @@ const trigger_state_s* getLiveDataAddr(size_t idx) { #endif } +template<> +const trigger_state_primary_s* getLiveDataAddr() { +#if EFI_SHAFT_POSITION_INPUT + return &engine->triggerCentral.triggerState; +#else + return nullptr; +#endif +} + template<> const wall_fuel_state_s* getLiveDataAddr() { return &engine->injectionEvents.elements[0].wallFuel; diff --git a/firmware/controllers/algo/engine_state.txt b/firmware/controllers/algo/engine_state.txt index 5414100b64..9f9a9a5da3 100644 --- a/firmware/controllers/algo/engine_state.txt +++ b/firmware/controllers/algo/engine_state.txt @@ -100,10 +100,6 @@ running_fuel_s running bit clutchDownState;@@INDICATOR_NAME_CLUTCH_DOWN@@ bit brakePedalState;@@INDICATOR_NAME_BRAKE_DOWN@@ -! would have been nice to have this 'isSynchronizedPhase' on PrimaryTriggerDecoder but that would require -! new trigger_primary_state.txt and multiple inheritance? - bit isSynchronizedPhase - float egt1 float egt2 diff --git a/firmware/controllers/trigger/trigger_decoder.h b/firmware/controllers/trigger/trigger_decoder.h index d3bd519bde..0c31bd8f09 100644 --- a/firmware/controllers/trigger/trigger_decoder.h +++ b/firmware/controllers/trigger/trigger_decoder.h @@ -11,6 +11,7 @@ #include "trigger_structure.h" #include "engine_configuration.h" #include "trigger_state_generated.h" +#include "trigger_state_primary_generated.h" #include "timer.h" class TriggerDecoderBase; @@ -163,7 +164,7 @@ private: /** * the reason for sub-class is simply to save RAM but not having statistics in the trigger initialization instance */ -class PrimaryTriggerDecoder : public TriggerDecoderBase { +class PrimaryTriggerDecoder : public TriggerDecoderBase, public trigger_state_primary_s { public: PrimaryTriggerDecoder(const char* name); void resetTriggerState() override; @@ -232,7 +233,6 @@ private: float m_instantRpmRatio = 0; bool m_needsDisambiguation = false; - bool m_hasSynchronizedPhase = false; }; class VvtTriggerDecoder : public TriggerDecoderBase { diff --git a/firmware/controllers/trigger/trigger_state_primary.txt b/firmware/controllers/trigger/trigger_state_primary.txt new file mode 100644 index 0000000000..545162f14d --- /dev/null +++ b/firmware/controllers/trigger/trigger_state_primary.txt @@ -0,0 +1,3 @@ +struct_no_prefix trigger_state_primary_s + bit m_hasSynchronizedPhase +end_struct diff --git a/firmware/integration/LiveData.yaml b/firmware/integration/LiveData.yaml index 11f5470855..7ab00f6b46 100644 --- a/firmware/integration/LiveData.yaml +++ b/firmware/integration/LiveData.yaml @@ -88,6 +88,11 @@ Usages: prepend: integration/rusefi_config.txt output_name: [ "trg", "vvt1i", "vvt1e", "vvt2i", "vvt2e" ] + - name: trigger_state_primary + java: TriggerStatePrimary.java + folder: controllers/trigger + prepend: integration/rusefi_config.txt + - name: wall_fuel_state java: WallFuelState.java folder: controllers/algo