3 #include <rusefi/interpolation.h>
4 #include <rusefi/arrays.h>
65 return InjectorNonlinearMode::INJ_None;
72 float baroKpa = baro.Value;
73 if (!baro || baro.Value > 120 || baro.Value < 50) {
78 case ICM_FixedRailPressure:
83 - map.value_or(101.325);
84 case ICM_SensedRailPressure: {
86 criticalError(
"Fuel pressure compensation is set to use a pressure sensor, but none is configured.");
98 case FPM_Differential:
106 return fps.Value + baroKpa - map.Value;
113 return fps.Value - map.Value;
115 }
default:
return unexpected;
127 if (referencePressure < 50) {
129 criticalError(
"Impossible fuel reference pressure: %f", referencePressure);
157 return interpolate2d(
165 if (fuelMassGram <= 0) {
194 case INJ_PolynomialAdder:
214 for (
size_t i = 0; i <
efi::size(is); i++) {
219 return baseDuration + adder;
float getFuelMassForDuration(floatms_t duration) const override
virtual float getInjectorFlowRatio()=0
virtual float correctInjectionPolynomial(float baseDuration) const
virtual float getBaseFlowRate() const =0
virtual float getSmallPulseFlowRate() const =0
float m_smallPulseBreakPoint
float m_smallPulseFlowRate
float getBaseDurationImpl(float baseDuration) const
virtual float getSmallPulseBreakPoint() const =0
floatms_t getInjectionDuration(float fuelMassGram) const override
virtual InjectorNonlinearMode getNonlinearMode() const =0
InjectorModelWithConfig(const injector_s *const cfg)
const injector_s *const m_cfg
float getBaseFlowRate() const override
float getInjectorFlowRatio() override
expected< float > getFuelDifferentialPressure() const override
floatms_t getDeadtime() const override
virtual bool hasSensor() const
virtual SensorResult get() const =0
Main engine configuration data structure.
constexpr float fuelDensity
constexpr float convertToGramsPerSecond(float ccPerMinute)
engine_configuration_s * engineConfiguration
Base class for sensors. Inherit this class to implement a new type of sensor.
virtual floatms_t getDeadtime() const =0
float getSmallPulseBreakPoint() const override
float getSmallPulseFlowRate() const override
InjectorNonlinearMode getNonlinearMode() const override
InjectorNonlinearMode getNonlinearMode() const override
float getSmallPulseFlowRate() const override
float getSmallPulseBreakPoint() const override
float fuelReferencePressure
scaled_channel< uint16_t, 1000, 1 > fordInjectorSmallPulseSlope
float injectorCorrectionPolynomial[8]
scaled_channel< uint16_t, 1000, 1 > applyNonlinearBelowPulse
scaled_channel< uint16_t, 1000, 1 > fordInjectorSmallPulseBreakPoint
injector_compensation_mode_e injectorCompensationMode
InjectorNonlinearMode injectorNonlinearMode
bool injectorFlowAsMassFlow
fuel_pressure_sensor_mode_e fuelPressureSensorMode
float battLagCorrBins[VBAT_INJECTOR_CURVE_SIZE]
float battLagCorr[VBAT_INJECTOR_CURVE_SIZE]