9#define CLEANUP_MODE_TPS 90
11#if EFI_SHAFT_POSITION_INPUT
21 criticalError(
"For GDI please configure CAM and require sync for ignition");
63#if EFI_SHAFT_POSITION_INPUT && !EFI_UNIT_TEST
97#if EFI_SHAFT_POSITION_INPUT
132 if (minOilPressure > 0 && hasOilpSensor) {
140 if (oilp.Value > minOilPressure) {
154 bool isPressureSufficient = oilp.Value > minPressure;
156 if (isPressureSufficient) {
167 if (maxOilPressure > 0 && hasOilpSensor) {
168 if (oilp.Value < maxOilPressure) {
202 bool isUnderLowDuty = injDutyCycle < 20;
204 if (!isOverSustainedDutyCycle) {
212 bool someLimitTripped = isOverInstantDutyCycle || sustainedLimitTimedOut;
224 if (
isGdiEngine() && isGDIDriverInjectorTimeTooLong) {
246#if EFI_LAUNCH_CONTROL
294#if EFI_ELECTRONIC_THROTTLE_BODY
void clear(ClearReason p_clearReason)
TriggerCentral triggerCentral
bool etbIgnoreJamProtection
bool isMainRelayEnabled() const
LaunchControlBase launchController
RpmCalculator rpmCalculator
LambdaMonitor lambdaMonitor
virtual operation_mode_e getOperationMode() const =0
floatms_t injectionDuration
bool test(float value, float rising, float falling)
bool isLaunchFuelRpmRetardCondition() const
bool isLaunchSparkRpmRetardCondition() const
Clearable m_transientAllowInjection
Clearable m_allowInjection
Hysteresis m_revLimitHysteresis
Timer m_lowOilPressureTimer
Clearable m_allowIgnition
float getTimeSinceAnyCut() const
Timer m_highOilPressureTimer
LimpState allowInjection() const
bool m_hadOilPressureAfterStart
MaxLimitWithHysteresis m_boostCutHysteresis
ClearReason m_rpmLimitReason
Timer m_injectorDutySustainedTimer
Clearable m_allowTriggerInput
bool allowTriggerInput() const
void updateState(float rpm, efitick_t nowNt)
LimpState allowIgnition() const
Clearable m_transientAllowIgnition
float getLimitingFuelCorrection() const
void updateRevLimit(float rpm)
bool allowElectronicThrottle() const
void onFastCallback() override
void setFaultRevLimit(int limit, ClearReason rpmLimitReason)
angle_t getLimitingTimingRetard() const
void onIgnitionStateChanged(bool ignitionOn) override
Hysteresis m_injectorDutyCutHysteresis
ShutdownController shutdownController
Timer externalGdiCanBusComms
bool checkIfLimitIsExceeded(const float value, const float maxLimit, const float hysteresis)
bool hasSynchronizedPhase() const
float getSecondsSinceEngineStart(efitick_t nowNt) const
virtual bool hasSensor() const
virtual SensorResult get() const =0
static float getOrZero(SensorType type)
bool isEngineStop(efitick_t nowNt) const
PrimaryTriggerDecoder triggerState
bool directSelfStimulation
float interpolateClamped(float x1, float y1, float x2, float y2, float x)
EngineRotationState * getEngineRotationState()
static EngineAccessor engine
static constexpr persistent_config_s * config
static constexpr engine_configuration_s * engineConfiguration
bool warning(ObdCode code, const char *fmt,...)
percent_t getInjectorDutyCycle(float rpm)
static bool noFiringUntilVvtSync()
@ CUSTOM_TOO_LONG_FUEL_INJECTION
@ FOUR_STROKE_SYMMETRICAL_CRANK_SENSOR
@ FOUR_STROKE_TWELVE_TIMES_CRANK_SENSOR
@ FOUR_STROKE_THREE_TIMES_CRANK_SENSOR
scaled_channel< uint8_t, 10, 1 > maxOilPressureTimeout
scaled_channel< uint8_t, 5, 1 > rpmSoftLimitTimingRetard
uint8_t maxInjectorDutyInstant
scaled_channel< uint8_t, 5, 1 > rpmSoftLimitFuelAdded
ignition_mode_e ignitionMode
bool enableOilPressureProtect
scaled_channel< uint8_t, 1, 10 > rpmHardLimitHyst
uint8_t maxInjectorDutySustained
bool isPhaseSyncRequiredForIgnition
scaled_channel< uint8_t, 2, 1 > boostCutPressureHyst
bool externalRusEfiGdiModule
scaled_channel< uint8_t, 10, 1 > maxInjectorDutySustainedTimeout
scaled_channel< uint8_t, 10, 1 > minimumOilPressureTimeout
bool isCylinderCleanupEnabled
uint16_t minOilPressureAfterStart
scaled_channel< uint8_t, 1, 100 > maximumOilPressureBins[4]
scaled_channel< uint8_t, 1, 10 > minimumOilPressureValues[8]
scaled_channel< int16_t, 1, 1 > cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]
scaled_channel< uint8_t, 1, 100 > minimumOilPressureBins[8]
uint16_t cltRevLimitRpm[CLT_LIMITER_CURVE_SIZE]
scaled_channel< uint8_t, 1, 10 > maximumOilPressureValues[4]