From 5d75c366513f69c2e1fa39df982e3762bedcd92b Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 26 May 2020 00:07:18 -0400 Subject: [PATCH] composite log for console --- .../controllers/algo/rusefi_generated.h | 1 + firmware/console/binary/tooth_logger.cpp | 24 +++++++++++++++++++ firmware/console/binary/tooth_logger.h | 4 ++++ firmware/controllers/engine_controller.cpp | 2 +- .../engine_cycle/main_trigger_callback.cpp | 15 ++++++++++-- .../controllers/engine_cycle/spark_logic.cpp | 14 +++++++++++ .../controllers/generated/rusefi_generated.h | 1 + firmware/integration/rusefi_config.txt | 1 + .../com/rusefi/config/generated/Fields.java | 3 ++- 9 files changed, 61 insertions(+), 4 deletions(-) diff --git a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h index 9e7b641f95..d7c3571cd7 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h @@ -1273,6 +1273,7 @@ #define TS_CRC_CHECK_COMMAND 'k' #define TS_EXECUTE 'E' #define TS_FILE_VERSION 20200310 +#define TS_GET_COMPOSITE_BUFFER_DONE_DIFFERENTLY '8' #define TS_GET_LOGGER_GET_BUFFER 'L' #define TS_GET_STRUCT '9' #define TS_GET_TEXT 'G' diff --git a/firmware/console/binary/tooth_logger.cpp b/firmware/console/binary/tooth_logger.cpp index 7ea9efe07e..20970d7a41 100644 --- a/firmware/console/binary/tooth_logger.cpp +++ b/firmware/console/binary/tooth_logger.cpp @@ -30,6 +30,8 @@ typedef struct __attribute__ ((packed)) { bool secLevel : 1; bool trigger : 1; bool sync : 1; + bool coil : 1; + bool injector : 1; } composite_logger_s; /** @@ -44,6 +46,10 @@ static uint32_t lastEdgeTimestamp = 0; static bool trigger1 = false; static bool trigger2 = false; +// any coil, all coils thrown together +static bool coil = false; +// same about injectors +static bool injector = false; static void SetNextCompositeEntry(efitick_t timestamp, bool trigger1, bool trigger2, bool isTDC DECLARE_ENGINE_PARAMETER_SUFFIX) { @@ -54,6 +60,8 @@ static void SetNextCompositeEntry(efitick_t timestamp, bool trigger1, bool trigg buffer[NextIdx].secLevel = trigger2; buffer[NextIdx].trigger = isTDC; buffer[NextIdx].sync = engine->triggerCentral.triggerState.shaft_is_synchronized; + buffer[NextIdx].coil = coil; + buffer[NextIdx].injector = injector; NextIdx++; @@ -115,6 +123,22 @@ void LogTriggerTopDeadCenter(efitick_t timestamp DECLARE_ENGINE_PARAMETER_SUFFIX SetNextCompositeEntry(timestamp, trigger1, trigger2, true PASS_ENGINE_PARAMETER_SUFFIX); } +void LogTriggerCoilState(efitick_t timestamp, bool state DECLARE_ENGINE_PARAMETER_SUFFIX) { + if (!ToothLoggerEnabled) { + return; + } + coil = state; + SetNextCompositeEntry(timestamp, trigger1, trigger2, false PASS_ENGINE_PARAMETER_SUFFIX); +} + +void LogTriggerInjectorState(efitick_t timestamp, bool state DECLARE_ENGINE_PARAMETER_SUFFIX) { + if (!ToothLoggerEnabled) { + return; + } + injector = state; + SetNextCompositeEntry(timestamp, trigger1, trigger2, false PASS_ENGINE_PARAMETER_SUFFIX); +} + void EnableToothLogger() { // Clear the buffer memset(buffer, 0, sizeof(buffer)); diff --git a/firmware/console/binary/tooth_logger.h b/firmware/console/binary/tooth_logger.h index d88552e7be..96688415e6 100644 --- a/firmware/console/binary/tooth_logger.h +++ b/firmware/console/binary/tooth_logger.h @@ -24,6 +24,10 @@ void LogTriggerTooth(trigger_event_e tooth, efitick_t timestamp DECLARE_ENGINE_P void LogTriggerTopDeadCenter(efitick_t timestamp DECLARE_ENGINE_PARAMETER_SUFFIX); +void LogTriggerCoilState(efitick_t timestamp, bool state DECLARE_ENGINE_PARAMETER_SUFFIX); + +void LogTriggerInjectorState(efitick_t timestamp, bool state DECLARE_ENGINE_PARAMETER_SUFFIX); + struct ToothLoggerBuffer { const uint8_t* const Buffer; diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index 1d497575fb..1ecef85d64 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -717,6 +717,6 @@ int getRusEfiVersion(void) { if (initBootloader() != 0) return 123; #endif /* EFI_BOOTLOADER_INCLUDE_CODE */ - return 20200523; + return 20200525; } #endif /* EFI_UNIT_TEST */ diff --git a/firmware/controllers/engine_cycle/main_trigger_callback.cpp b/firmware/controllers/engine_cycle/main_trigger_callback.cpp index 1753f9e030..35f7ecffba 100644 --- a/firmware/controllers/engine_cycle/main_trigger_callback.cpp +++ b/firmware/controllers/engine_cycle/main_trigger_callback.cpp @@ -41,9 +41,8 @@ #include "cdm_ion_sense.h" #include "engine_controller.h" #include "efi_gpio.h" -#if EFI_PROD_CODE +#include "tooth_logger.h" #include "os_util.h" -#endif /* EFI_PROD_CODE */ #include "local_version_holder.h" #include "event_queue.h" #include "engine.h" @@ -120,6 +119,12 @@ static inline void turnInjectionPinHigh(InjectorOutputPin *output) { } void turnInjectionPinHigh(InjectionEvent *event) { + efitick_t nowNt = getTimeNowNt(); + +#if EFI_TOOTH_LOGGER + LogTriggerInjectorState(nowNt, true PASS_ENGINE_PARAMETER_SUFFIX); +#endif // EFI_TOOTH_LOGGER + for (int i = 0;i < MAX_WIRES_COUNT;i++) { InjectorOutputPin *output = event->outputs[i]; @@ -154,6 +159,12 @@ static inline void turnInjectionPinLow(InjectorOutputPin *output) { } void turnInjectionPinLow(InjectionEvent *event) { + efitick_t nowNt = getTimeNowNt(); + +#if EFI_TOOTH_LOGGER + LogTriggerInjectorState(nowNt, false PASS_ENGINE_PARAMETER_SUFFIX); +#endif // EFI_TOOTH_LOGGER + event->isScheduled = false; for (int i = 0;ioutputs[i]; diff --git a/firmware/controllers/engine_cycle/spark_logic.cpp b/firmware/controllers/engine_cycle/spark_logic.cpp index 6b3f13d894..c05863bae9 100644 --- a/firmware/controllers/engine_cycle/spark_logic.cpp +++ b/firmware/controllers/engine_cycle/spark_logic.cpp @@ -12,6 +12,7 @@ #include "utlist.h" #include "event_queue.h" #include "perf_trace.h" +#include "tooth_logger.h" #if EFI_ENGINE_CONTROL @@ -124,6 +125,12 @@ static void prepareCylinderIgnitionSchedule(angle_t dwellAngleDuration, floatms_ } void fireSparkAndPrepareNextSchedule(IgnitionEvent *event) { + efitick_t nowNt = getTimeNowNt(); + +#if EFI_TOOTH_LOGGER + LogTriggerCoilState(nowNt, false PASS_ENGINE_PARAMETER_SUFFIX); +#endif // EFI_TOOTH_LOGGER + for (int i = 0; i< MAX_OUTPUTS_FOR_IGNITION;i++) { IgnitionOutputPin *output = event->outputs[i]; @@ -235,6 +242,13 @@ static void startDwellByTurningSparkPinHigh(IgnitionEvent *event, IgnitionOutput void turnSparkPinHigh(IgnitionEvent *event) { event->actualStartOfDwellNt = getTimeNowLowerNt(); + + efitick_t nowNt = getTimeNowNt(); + +#if EFI_TOOTH_LOGGER + LogTriggerCoilState(nowNt, true PASS_ENGINE_PARAMETER_SUFFIX); +#endif // EFI_TOOTH_LOGGER + for (int i = 0; i< MAX_OUTPUTS_FOR_IGNITION;i++) { IgnitionOutputPin *output = event->outputs[i]; if (output != NULL) { diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index 7690f780d2..2a721d7258 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -1273,6 +1273,7 @@ #define TS_CRC_CHECK_COMMAND 'k' #define TS_EXECUTE 'E' #define TS_FILE_VERSION 20200310 +#define TS_GET_COMPOSITE_BUFFER_DONE_DIFFERENTLY '8' #define TS_GET_LOGGER_GET_BUFFER 'L' #define TS_GET_STRUCT '9' #define TS_GET_TEXT 'G' diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index b844727baf..ba9c6d8b0f 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -1578,6 +1578,7 @@ end_struct #define TS_EXECUTE 'E' // 0x39 #define TS_GET_STRUCT '9' +#define TS_GET_COMPOSITE_BUFFER_DONE_DIFFERENTLY '8' diff --git a/java_console/models/src/com/rusefi/config/generated/Fields.java b/java_console/models/src/com/rusefi/config/generated/Fields.java index 0cc668629c..8b04e334c5 100644 --- a/java_console/models/src/com/rusefi/config/generated/Fields.java +++ b/java_console/models/src/com/rusefi/config/generated/Fields.java @@ -1,6 +1,6 @@ package com.rusefi.config.generated; -// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Mon May 25 19:18:41 EDT 2020 +// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Mon May 25 23:12:49 EDT 2020 // by class com.rusefi.output.FileJavaFieldsConsumer import com.rusefi.config.*; @@ -1254,6 +1254,7 @@ public class Fields { public static final char TS_CRC_CHECK_COMMAND = 'k'; public static final char TS_EXECUTE = 'E'; public static final int TS_FILE_VERSION = 20200310; + public static final char TS_GET_COMPOSITE_BUFFER_DONE_DIFFERENTLY = '8'; public static final char TS_GET_LOGGER_GET_BUFFER = 'L'; public static final char TS_GET_STRUCT = '9'; public static final char TS_GET_TEXT = 'G';