diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index 2bc2452f93..cbbaf37790 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -72,6 +72,7 @@ extern bool main_loop_started; #include "max31855.h" #include "vehicle_speed.h" #include "SingleTimerExecutor.h" +#include "CJ125.h" #endif /* EFI_PROD_CODE */ #if EFI_FSIO || defined(__DOXYGEN__) @@ -802,6 +803,11 @@ void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels DECLARE_ tsOutputChannels->debugIntField2 = invalidResponsesCount; break; #endif /* EFI_HIP_9011 */ +#if EFI_CJ125 || defined(__DOXYGEN__) + case DBG_CJ125: + cjPostState(tsOutputChannels); + break; +#endif /* EFI_CJ125 */ case DBG_ADC: tsOutputChannels->debugFloatField1 = (engineConfiguration->vbattAdcChannel != EFI_ADC_NONE) ? getVoltageDivided("vbatt", engineConfiguration->vbattAdcChannel) : 0.0f; tsOutputChannels->debugFloatField2 = (engineConfiguration->tpsAdcChannel != EFI_ADC_NONE) ? getVoltageDivided("tps", engineConfiguration->tpsAdcChannel) : 0.0f; diff --git a/firmware/controllers/algo/auto_generated_enums.cpp b/firmware/controllers/algo/auto_generated_enums.cpp index bbe5f80e95..8b24417c3a 100644 --- a/firmware/controllers/algo/auto_generated_enums.cpp +++ b/firmware/controllers/algo/auto_generated_enums.cpp @@ -707,8 +707,8 @@ case GPIO_UNASSIGNED: } const char *getDebug_mode_e(debug_mode_e value){ switch(value) { -case DBG_25: - return "DBG_25"; +case DBG_CJ125: + return "DBG_CJ125"; case DBG_26: return "DBG_26"; case DBG_27: diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h index a0515ff6bf..48dc3dac64 100644 --- a/firmware/controllers/algo/rusefi_enums.h +++ b/firmware/controllers/algo/rusefi_enums.h @@ -751,7 +751,7 @@ typedef enum { DBG_INSTANT_RPM = 22, DBG_FSIO_EXPRESSION = 23, DBG_STATUS = 24, - DBG_25 = 25, + DBG_CJ125 = 25, DBG_26 = 26, DBG_27 = 27, DBG_28 = 28, diff --git a/firmware/controllers/sensors/ego.cpp b/firmware/controllers/sensors/ego.cpp index d30245719d..9502c421bc 100644 --- a/firmware/controllers/sensors/ego.cpp +++ b/firmware/controllers/sensors/ego.cpp @@ -14,6 +14,10 @@ #include "analog_input.h" #include "cyclic_buffer.h" +#if EFI_PROD_CODE || defined(__DOXYGEN__) +#include "CJ125.h" +#endif /* EFI_PROD_CODE */ + EXTERN_ENGINE; #ifdef EFI_NARROW_EGO_AVERAGING @@ -88,10 +92,20 @@ void initEgoAveraging(DECLARE_ENGINE_PARAMETER_SIGNATURE) { #endif bool hasAfrSensor(DECLARE_ENGINE_PARAMETER_SIGNATURE) { +#if EFI_CJ125 || defined(__DOXYGEN__) + if (boardConfiguration->isCJ125Enabled) { + return cjHasAfrSensor(PASS_ENGINE_PARAMETER_SIGNATURE); + } +#endif /* EFI_CJ125 */ return engineConfiguration->afr.hwChannel != EFI_ADC_NONE; } float getAfr(DECLARE_ENGINE_PARAMETER_SIGNATURE) { +#if EFI_CJ125 || defined(__DOXYGEN__) + if (boardConfiguration->isCJ125Enabled) { + return cjGetAfr(PASS_ENGINE_PARAMETER_SIGNATURE); + } +#endif /* EFI_CJ125 */ afr_sensor_s * sensor = &CONFIG(afr); float volts = getVoltageDivided("ego", sensor->hwChannel); diff --git a/firmware/hw_layer/sensors/CJ125.cpp b/firmware/hw_layer/sensors/CJ125.cpp index e2e757fcaf..92b4e62e39 100644 --- a/firmware/hw_layer/sensors/CJ125.cpp +++ b/firmware/hw_layer/sensors/CJ125.cpp @@ -127,4 +127,15 @@ void initCJ125(Logging *sharedLogger) { } +void cjPostState(TunerStudioOutputChannels *tsOutputChannels) { +} + +float cjGetAfr(DECLARE_ENGINE_PARAMETER_SIGNATURE) { + return 0.0f; +} + +bool cjHasAfrSensor(DECLARE_ENGINE_PARAMETER_SIGNATURE) { + return false; +} + #endif /* EFI_CJ125 */ diff --git a/firmware/hw_layer/sensors/CJ125.h b/firmware/hw_layer/sensors/CJ125.h index 1e8acfe1a1..e377744c98 100644 --- a/firmware/hw_layer/sensors/CJ125.h +++ b/firmware/hw_layer/sensors/CJ125.h @@ -17,6 +17,9 @@ void initCJ125(Logging *shared); +void cjPostState(TunerStudioOutputChannels *tsOutputChannels); +float cjGetAfr(DECLARE_ENGINE_PARAMETER_SIGNATURE); +bool cjHasAfrSensor(DECLARE_ENGINE_PARAMETER_SIGNATURE); typedef enum { CJ125_IDLE = 0 diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 9f87c99413..af8b2f4e75 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -147,7 +147,7 @@ float baseFuel;+Fuel squirt duration while cranking\nA number of curves adjust t int16_t rpm;+Cranking mode threshold. Special cranking logic controls fuel and spark while RPM is below this threshold\nset cranking_rpm X;"RPM", 1, 0, 0, 3000, 0 end_struct -#define debug_mode_e_enum "Alternator_PID", "TPS accel enrich", "Warmup PID", "IDLE", "EL accl enrich", "Trigger Counters", "FSIO_ADC", "AUX_PID_1", "VVT PID", "Cranking", "Timing", "Closed-loop fuel corr PID", "VSS", "SD card", "sr5", "Knock", "Trigger Sync", "Electronic Throttle", "Executor", "Bench Test", "Aux Valves", "ADC", "INSTANT_RPM", "FSIO_EXPRESSION", "Status", "mode25", "mode26", "mode27", "mode28", "mode29" +#define debug_mode_e_enum "Alternator_PID", "TPS accel enrich", "Warmup PID", "IDLE", "EL accl enrich", "Trigger Counters", "FSIO_ADC", "AUX_PID_1", "VVT PID", "Cranking", "Timing", "Closed-loop fuel corr PID", "VSS", "SD card", "sr5", "Knock", "Trigger Sync", "Electronic Throttle", "Executor", "Bench Test", "Aux Valves", "ADC", "INSTANT_RPM", "FSIO_EXPRESSION", "Status", "CJ125", "mode26", "mode27", "mode28", "mode29" custom debug_mode_e 4 bits, U32, @OFFSET@, [0:4], @@debug_mode_e_enum@@ #define vvt_mode_e_enum "First half", "Second half", "2GZ", "Miata NB2", "mode4", "mode5", "mode6", "mode7" diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini index fd7127e935..d05fa48599 100644 --- a/firmware/tunerstudio/rusefi.ini +++ b/firmware/tunerstudio/rusefi.ini @@ -618,7 +618,7 @@ page = 1 tpsDecelEnleanmentThreshold = scalar, F32, 2208, "roc", 1, 0, 0, 200, 3 tpsDecelEnleanmentMultiplier = scalar, F32, 2212, "coeff", 1, 0, 0, 200, 3 slowAdcAlpha = scalar, F32, 2216, "coeff", 1, 0, 0, 200, 3 - debugMode = bits, U32, 2220, [0:4], "Alternator_PID", "TPS accel enrich", "Warmup PID", "IDLE", "EL accl enrich", "Trigger Counters", "FSIO_ADC", "AUX_PID_1", "VVT PID", "Cranking", "Timing", "Closed-loop fuel corr PID", "VSS", "SD card", "sr5", "Knock", "Trigger Sync", "Electronic Throttle", "Executor", "Bench Test", "Aux Valves", "ADC", "INSTANT_RPM", "FSIO_EXPRESSION", "Status", "mode25", "mode26", "mode27", "mode28", "mode29" + debugMode = bits, U32, 2220, [0:4], "Alternator_PID", "TPS accel enrich", "Warmup PID", "IDLE", "EL accl enrich", "Trigger Counters", "FSIO_ADC", "AUX_PID_1", "VVT PID", "Cranking", "Timing", "Closed-loop fuel corr PID", "VSS", "SD card", "sr5", "Knock", "Trigger Sync", "Electronic Throttle", "Executor", "Bench Test", "Aux Valves", "ADC", "INSTANT_RPM", "FSIO_EXPRESSION", "Status", "CJ125", "mode26", "mode27", "mode28", "mode29" auxValves1 = bits, U32, 2224, [0:6], "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "NONE", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" auxValves2 = bits, U32, 2228, [0:6], "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PA8", "PA9", "PA10", "PA11", "PA12", "PA13", "PA14", "PA15", "PB0", "PB1", "PB2", "PB3", "PB4", "PB5", "PB6", "PB7", "PB8", "PB9", "PB10", "PB11", "PB12", "PB13", "PB14", "PB15", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6", "PC7", "PC8", "PC9", "PC10", "PC11", "PC12", "PC13", "PC14", "PC15", "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PE0", "PE1", "PE2", "PE3", "PE4", "PE5", "PE6", "PE7", "PE8", "PE9", "PE10", "PE11", "PE12", "PE13", "PE14", "PE15", "NONE", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" warmupTargetAfrBins = array, F32, 2232, [4], "C", 1, 0, -100.0, 250.0, 2