diff --git a/firmware/console/binary/tunerstudio.cpp b/firmware/console/binary/tunerstudio.cpp index 94d07d1b1d..2d648aa57c 100644 --- a/firmware/console/binary/tunerstudio.cpp +++ b/firmware/console/binary/tunerstudio.cpp @@ -801,8 +801,8 @@ int tunerStudioHandleCrcCommand(ts_channel_s *tsChannel, char *data, int incomin tsOutputChannels.debugIntField3 = index; } -#if EFI_PROD_CODE - executeTSCommand(subsystem, index); +#if EFI_PROD_CODE && EFI_ENGINE_CONTROL + executeTSCommand(subsystem, index); #endif /* EFI_PROD_CODE */ sendOkResponse(tsChannel, TS_CRC); } diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index 2c4d452e26..169efde629 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -310,7 +310,10 @@ static void printSensors(Logging *log) { if (hasMapSensor(PASS_ENGINE_PARAMETER_SIGNATURE)) { reportSensorF(log, GAUGE_NAME_FUEL_VE, "%", engine->engineState.currentBaroCorrectedVE * PERCENT_MULT, 2); } + +#if EFI_SHAFT_POSITION_INPUT reportSensorF(log, GAUGE_NAME_VVT, "deg", engine->triggerCentral.getVVTPosition(), 1); +#endif float engineLoad = getEngineLoadT(PASS_ENGINE_PARAMETER_SIGNATURE); reportSensorF(log, GAUGE_NAME_ENGINE_LOAD, "x", engineLoad, 2); @@ -767,7 +770,9 @@ void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels DECLARE_ // 136 tsOutputChannels->pedalPosition = hasPedalPositionSensor(PASS_ENGINE_PARAMETER_SIGNATURE) ? getPedalPosition(PASS_ENGINE_PARAMETER_SIGNATURE) : 0; // 140 +#if EFI_ENGINE_CONTROL tsOutputChannels->injectorDutyCycle = getInjectorDutyCycle(rpm PASS_ENGINE_PARAMETER_SUFFIX); +#endif // 148 tsOutputChannels->fuelTankLevel = engine->sensors.fuelTankLevel; // 160 @@ -785,8 +790,12 @@ void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels DECLARE_ // 224 efitimesec_t timeSeconds = getTimeNowSeconds(); tsOutputChannels->timeSeconds = timeSeconds; + +#if EFI_SHAFT_POSITION_INPUT // 248 tsOutputChannels->vvtPosition = engine->triggerCentral.getVVTPosition(); +#endif + // 252 tsOutputChannels->engineMode = packEngineMode(PASS_ENGINE_PARAMETER_SIGNATURE); // 120 @@ -817,9 +826,6 @@ void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels DECLARE_ tsOutputChannels->hasFatalError = hasFirmwareError(); - tsOutputChannels->coilDutyCycle = getCoilDutyCycle(rpm PASS_ENGINE_PARAMETER_SUFFIX); - - tsOutputChannels->isWarnNow = engine->engineState.warnings.isWarningNow(timeSeconds, true); #if EFI_HIP_9011 tsOutputChannels->isKnockChipOk = (instance.invalidHip9011ResponsesCount == 0); @@ -894,6 +900,7 @@ void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels DECLARE_ tsOutputChannels->brakePedalState = engine->brakePedalState; tsOutputChannels->acSwitchState = engine->acSwitchState; +#if EFI_ENGINE_CONTROL // tCharge depends on the previous state, so we should use the stored value. tsOutputChannels->tCharge = ENGINE(engineState.sd.tCharge); float timing = engine->engineState.timingAdvance; @@ -903,6 +910,8 @@ void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels DECLARE_ tsOutputChannels->crankingFuelMs = engine->isCylinderCleanupMode ? 0 : getCrankingFuel(PASS_ENGINE_PARAMETER_SIGNATURE); tsOutputChannels->chargeAirMass = engine->engineState.sd.airMassInOneCylinder; + tsOutputChannels->coilDutyCycle = getCoilDutyCycle(rpm PASS_ENGINE_PARAMETER_SUFFIX); +#endif // EFI_ENGINE_CONTROL switch (engineConfiguration->debugMode) { case DBG_AUX_TEMPERATURE: diff --git a/firmware/controllers/algo/advance_map.cpp b/firmware/controllers/algo/advance_map.cpp index 63acaf87df..5cef2cb8d9 100644 --- a/firmware/controllers/algo/advance_map.cpp +++ b/firmware/controllers/algo/advance_map.cpp @@ -28,6 +28,8 @@ #include "idle_thread.h" #include "allsensors.h" +#if EFI_ENGINE_CONTROL + EXTERN_ENGINE ; @@ -328,3 +330,4 @@ void buildTimingMap(float advanceMax DECLARE_CONFIG_PARAMETER_SUFFIX) { } } +#endif // EFI_ENGINE_CONTROL diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp index b83b2b8d99..dbb347c80c 100644 --- a/firmware/controllers/algo/engine.cpp +++ b/firmware/controllers/algo/engine.cpp @@ -243,6 +243,7 @@ void Engine::preCalculate(DECLARE_ENGINE_PARAMETER_SIGNATURE) { #endif } +#if EFI_SHAFT_POSITION_INPUT void Engine::OnTriggerStateDecodingError() { Engine *engine = this; EXPAND_Engine; @@ -340,7 +341,7 @@ void Engine::OnTriggerSyncronization(bool wasSynchronized) { } } - +#endif void Engine::setConfig(persistent_config_s *config) { this->config = config; @@ -487,11 +488,13 @@ void Engine::periodicFastCallback(DECLARE_ENGINE_PARAMETER_SIGNATURE) { engineState.periodicFastCallback(PASS_ENGINE_PARAMETER_SIGNATURE); +#if EFI_ENGINE_CONTROL engine->m.beforeFuelCalc = getTimeNowLowerNt(); int rpm = GET_RPM(); ENGINE(injectionDuration) = getInjectionDuration(rpm PASS_ENGINE_PARAMETER_SUFFIX); engine->m.fuelCalcTime = getTimeNowLowerNt() - engine->m.beforeFuelCalc; +#endif } void doScheduleStopEngine(DECLARE_ENGINE_PARAMETER_SIGNATURE) { diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index d73c1741e8..502322661a 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -58,11 +58,13 @@ public: cyclic_buffer triggerErrorDetection; +#if EFI_SHAFT_POSITION_INPUT void OnTriggerStateDecodingError(); void OnTriggerStateProperState(efitick_t nowNt) override; void OnTriggerSyncronization(bool wasSynchronized) override; void OnTriggerInvalidIndex(int currentIndex) override; void OnTriggerSynchronizationLost() override; +#endif void setConfig(persistent_config_s *config); injection_mode_e getCurrentInjectionMode(DECLARE_ENGINE_PARAMETER_SIGNATURE); diff --git a/firmware/controllers/algo/fuel_math.cpp b/firmware/controllers/algo/fuel_math.cpp index 39db2b0ecd..72bb80fb9e 100644 --- a/firmware/controllers/algo/fuel_math.cpp +++ b/firmware/controllers/algo/fuel_math.cpp @@ -247,7 +247,7 @@ percent_t getInjectorDutyCycle(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX) { floatms_t getInjectionDuration(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX) { ScopePerf perf(PE::GetInjectionDuration); -#if EFI_ENGINE_CONTROL && EFI_SHAFT_POSITION_INPUT +#if EFI_SHAFT_POSITION_INPUT bool isCranking = ENGINE(rpmCalculator).isCranking(PASS_ENGINE_PARAMETER_SIGNATURE); injection_mode_e mode = isCranking ? engineConfiguration->crankingInjectionMode : diff --git a/firmware/controllers/core/fsio_impl.cpp b/firmware/controllers/core/fsio_impl.cpp index 4fb636c12d..fff60bdd1a 100644 --- a/firmware/controllers/core/fsio_impl.cpp +++ b/firmware/controllers/core/fsio_impl.cpp @@ -135,9 +135,11 @@ float getEngineValue(le_action_e action DECLARE_ENGINE_PARAMETER_SUFFIX) { return getRealMaf(PASS_ENGINE_PARAMETER_SIGNATURE); case LE_METHOD_MAP: return getMap(PASS_ENGINE_PARAMETER_SIGNATURE); +#if EFI_SHAFT_POSITION_INPUT case LE_METHOD_INTAKE_VVT: case LE_METHOD_EXHAUST_VVT: return engine->triggerCentral.getVVTPosition(); +#endif case LE_METHOD_TIME_SINCE_BOOT: return getTimeNowSeconds(); diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index b67742df20..524e1d2f66 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -101,9 +101,11 @@ EXTERN_ENGINE; void initDataStructures(DECLARE_ENGINE_PARAMETER_SIGNATURE) { +#if EFI_ENGINE_CONTROL initFuelMap(PASS_ENGINE_PARAMETER_SIGNATURE); initTimingMap(PASS_ENGINE_PARAMETER_SIGNATURE); initSpeedDensity(PASS_ENGINE_PARAMETER_SIGNATURE); +#endif // EFI_ENGINE_CONTROL } static void mostCommonInitEngineController(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) { @@ -194,7 +196,11 @@ class EngineStateBlinkingTask : public PeriodicTimerController { void PeriodicTask() override { counter++; +#if EFI_SHAFT_POSITION_INPUT bool is_running = ENGINE(rpmCalculator).isRunning(PASS_ENGINE_PARAMETER_SIGNATURE); +#else + bool is_running = false; +#endif if (is_running) { // blink in running mode diff --git a/firmware/controllers/engine_cycle/spark_logic.cpp b/firmware/controllers/engine_cycle/spark_logic.cpp index 46e0125dd1..1bfb581238 100644 --- a/firmware/controllers/engine_cycle/spark_logic.cpp +++ b/firmware/controllers/engine_cycle/spark_logic.cpp @@ -13,6 +13,8 @@ #include "event_queue.h" #include "perf_trace.h" +#if EFI_ENGINE_CONTROL + #if EFI_TUNER_STUDIO #include "tunerstudio_configuration.h" #endif /* EFI_TUNER_STUDIO */ @@ -495,3 +497,5 @@ percent_t getCoilDutyCycle(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX) { floatms_t engineCycleDuration = getCrankshaftRevolutionTimeMs(rpm) * (engine->getOperationMode(PASS_ENGINE_PARAMETER_SIGNATURE) == TWO_STROKE ? 1 : 2); return 100 * totalPerCycle / engineCycleDuration; } + +#endif // EFI_ENGINE_CONTROL diff --git a/firmware/controllers/flash_main.cpp b/firmware/controllers/flash_main.cpp index 772808599e..8f93fad206 100644 --- a/firmware/controllers/flash_main.cpp +++ b/firmware/controllers/flash_main.cpp @@ -94,7 +94,10 @@ void writeToFlashNow(void) { scheduleMsg(logger, "Flashing failed"); } assertEngineReference(); + +#if EFI_SHAFT_POSITION_INPUT resetMaxValues(); +#endif } static bool isValidCrc(persistent_config_container_s *state) { diff --git a/firmware/controllers/math/engine_math.cpp b/firmware/controllers/math/engine_math.cpp index e97d11e4dc..1f7a9e3c5d 100644 --- a/firmware/controllers/math/engine_math.cpp +++ b/firmware/controllers/math/engine_math.cpp @@ -520,8 +520,6 @@ void prepareOutputSignals(DECLARE_ENGINE_PARAMETER_SIGNATURE) { TRIGGER_WAVEFORM(prepareShape()); } -#endif /* EFI_ENGINE_CONTROL */ - void setFuelRpmBin(float from, float to DECLARE_CONFIG_PARAMETER_SUFFIX) { setLinearCurve(config->fuelRpmBins, from, to); } @@ -554,3 +552,5 @@ void setAlgorithm(engine_load_mode_e algo DECLARE_CONFIG_PARAMETER_SUFFIX) { void setFlatInjectorLag(float value DECLARE_CONFIG_PARAMETER_SUFFIX) { setArrayValues(engineConfiguration->injector.battLagCorr, value); } + +#endif /* EFI_ENGINE_CONTROL */ diff --git a/firmware/controllers/sensors/map.cpp b/firmware/controllers/sensors/map.cpp index f393719d3d..09a1e40edb 100644 --- a/firmware/controllers/sensors/map.cpp +++ b/firmware/controllers/sensors/map.cpp @@ -227,10 +227,12 @@ static void printMAPInfo(void) { if (engineConfiguration->hasFrequencyReportingMapSensor) { scheduleMsg(logger, "instant value=%.2fHz @ %s", mapFreq, hwPortname(CONFIG(frequencyReportingMapInputPin))); } else { +#if EFI_MAP_AVERAGING scheduleMsg(logger, "map type=%d/%s MAP=%.2fkPa mapMinBufferLength=%d", engineConfiguration->map.sensor.type, getAir_pressure_sensor_type_e(engineConfiguration->map.sensor.type), getMap(), mapMinBufferLength); +#endif // EFI_MAP_AVERAGING adc_channel_e mapAdc = engineConfiguration->map.sensor.hwChannel; static char pinNameBuffer[16]; diff --git a/firmware/controllers/settings.cpp b/firmware/controllers/settings.cpp index bb860edfe2..57c1c254f7 100644 --- a/firmware/controllers/settings.cpp +++ b/firmware/controllers/settings.cpp @@ -134,22 +134,14 @@ const char* getConfigurationName(engine_type_e engineType) { switch (engineType) { case DEFAULT_FRANKENSO: return "DEFAULT_FRANKENSO"; -#if EFI_SUPPORT_DODGE_NEON case DODGE_NEON_1995: return "Neon95"; -#endif /* EFI_SUPPORT_DODGE_NEON */ -#if EFI_SUPPORT_FORD_ASPIRE case FORD_ASPIRE_1996: return "Aspire"; -#endif /* EFI_SUPPORT_FORD_ASPIRE */ -#if EFI_SUPPORT_FORD_FIESTA case FORD_FIESTA: return "Fiesta"; -#endif /* EFI_SUPPORT_FORD_FIESTA */ -#if EFI_SUPPORT_NISSAN_PRIMERA case NISSAN_PRIMERA: return "Primera"; -#endif /* EFI_SUPPORT_NISSAN_PRIMERA */ case HONDA_ACCORD_CD: return "Accord3"; case HONDA_ACCORD_CD_TWO_WIRES: @@ -1051,7 +1043,6 @@ const plain_get_integer_s getI_plain[] = { {"warning_period", (int*)&engineConfiguration->warningPeriod}, {"hard_limit", &engineConfiguration->rpmHardLimit}, // {"firing_order", setFiringOrder}, -// {"algorithm", setAlgorithmInt}, // {"injection_pin_mode", setInjectionPinMode}, // {"ignition_pin_mode", setIgnitionPinMode}, // {"idle_pin_mode", setIdlePinMode}, @@ -1169,7 +1160,8 @@ typedef struct { } command_f_s; const command_f_s commandsF[] = { -#if EFI_ENGINE_CONTROL && EFI_ENABLE_MOCK_ADC +#if EFI_ENGINE_CONTROL +#if EFI_ENABLE_MOCK_ADC {MOCK_IAT_COMMAND, setMockIatVoltage}, {MOCK_PPS_POSITION_COMMAND, setMockThrottlePedalPosition}, {MOCK_PPS_VOLTAGE_COMMAND, setMockThrottlePedalSensorVoltage}, @@ -1179,9 +1171,7 @@ const command_f_s commandsF[] = { {MOCK_MAP_COMMAND, setMockMapVoltage}, {"mock_vbatt_voltage", setMockVBattVoltage}, {MOCK_CLT_COMMAND, setMockCltVoltage}, -#endif /* EFI_ENGINE_CONTROL && EFI_ENABLE_MOCK_ADC */ - {"fsio_curve_1_value", setFsioCurve1Value}, - {"fsio_curve_2_value", setFsioCurve2Value}, +#endif // EFI_ENABLE_MOCK_ADC {"ignition_offset", setIgnitionOffset}, {"injection_offset", setInjectionOffset}, {"global_trigger_offset_angle", setGlobalTriggerAngleOffset}, @@ -1199,6 +1189,9 @@ const command_f_s commandsF[] = { {"engine_decel_threshold", setDecelThr}, {"engine_decel_multiplier", setDecelMult}, {"flat_injector_lag", setFlatInjectorLag}, +#endif // EFI_ENGINE_CONTROL + {"fsio_curve_1_value", setFsioCurve1Value}, + {"fsio_curve_2_value", setFsioCurve2Value}, #if EFI_PROD_CODE #if EFI_VEHICLE_SPEED {"mock_vehicle_speed", setMockVehicleSpeed}, @@ -1236,6 +1229,7 @@ static void setTpsErrorDetectionTooHigh(int v) { const command_i_s commandsI[] = {{"ignition_mode", setIgnitionMode}, {"call_from_pitstop", setCallFromPitStop}, +#if EFI_ENGINE_CONTROL {"cranking_rpm", setCrankingRpm}, {"cranking_injection_mode", setCrankingInjectionMode}, {"injection_mode", setInjectionMode}, @@ -1259,6 +1253,7 @@ const command_i_s commandsI[] = {{"ignition_mode", setIgnitionMode}, {"idle_solenoid_freq", setIdleSolenoidFrequency}, {"tps_accel_len", setTpsAccelLen}, {"engine_load_accel_len", setEngineLoadAccelLen}, +#endif // EFI_ENGINE_CONTROL #if EFI_PROD_CODE {"bor", setBor}, #if EFI_CAN_SUPPORT @@ -1408,10 +1403,6 @@ void initSettings(void) { addConsoleActionII("set_toothed_wheel", setToothedWheel); - - // flat curve - constant injector lag regardless of voltage - addConsoleActionF("set_flat_injector_lag", setFlatInjectorLag); - addConsoleActionFF("set_injector_lag", setInjectorLag); addConsoleActionFF("set_fan", setFanSetting); diff --git a/firmware/controllers/trigger/trigger_decoder.h b/firmware/controllers/trigger/trigger_decoder.h index 69b8eaa77c..9583a88222 100644 --- a/firmware/controllers/trigger/trigger_decoder.h +++ b/firmware/controllers/trigger/trigger_decoder.h @@ -14,12 +14,13 @@ class TriggerState; -class TriggerStateListener { - public: - virtual void OnTriggerStateProperState(efitick_t nowNt) = 0; - virtual void OnTriggerSyncronization(bool wasSynchronized) = 0; - virtual void OnTriggerInvalidIndex(int currentIndex) = 0; - virtual void OnTriggerSynchronizationLost() = 0; +struct TriggerStateListener { +#if EFI_SHAFT_POSITION_INPUT + virtual void OnTriggerStateProperState(efitick_t nowNt) = 0; + virtual void OnTriggerSyncronization(bool wasSynchronized) = 0; + virtual void OnTriggerInvalidIndex(int currentIndex) = 0; + virtual void OnTriggerSynchronizationLost() = 0; +#endif }; typedef void (*TriggerStateCallback)(TriggerState *); diff --git a/firmware/development/logic_analyzer.cpp b/firmware/development/logic_analyzer.cpp index bcb9e4cc36..c1c5d9eb66 100644 --- a/firmware/development/logic_analyzer.cpp +++ b/firmware/development/logic_analyzer.cpp @@ -79,7 +79,11 @@ void WaveReader::onFallEvent() { efitick_t width = nowUs - widthEventTimeUs; last_wave_high_widthUs = width; +#if EFI_SHAFT_POSITION_INPUT int revolutionCounter = getRevolutionCounter(); +#else + int revolutionCounter = 0; +#endif totalOnTimeAccumulatorUs += width; if (currentRevolutionCounter != revolutionCounter) { @@ -227,7 +231,9 @@ void initWaveAnalyzer(Logging *sharedLogger) { initWave(PROTOCOL_WA_CHANNEL_3, 2); initWave(PROTOCOL_WA_CHANNEL_4, 3); +#if EFI_SHAFT_POSITION_INPUT addTriggerEventListener(waTriggerEventListener, "wave analyzer", engine); +#endif addConsoleAction("waveinfo", showWaveInfo); diff --git a/firmware/hw_layer/pin_repository.cpp b/firmware/hw_layer/pin_repository.cpp index cf295f9fd7..249eb57a53 100644 --- a/firmware/hw_layer/pin_repository.cpp +++ b/firmware/hw_layer/pin_repository.cpp @@ -182,8 +182,11 @@ void initPinRepository(void) { initialized = true; addConsoleAction(CMD_PINS, reportPins); + +#if (BOARD_TLE8888_COUNT > 0) addConsoleAction("tle8888", tle8888_dump_regs); addConsoleAction("tle8888init", requestTLE8888initialization); +#endif } bool brain_pin_is_onchip(brain_pin_e brainPin)