16 if (std::isnan(desiredMassGrams)) {
17 return desiredMassGrams;
48 return desiredMassGrams;
55 float M_cmd = (desiredMassGrams - (1 - alpha) * fuelFilmMass) / (1 - beta);
65 float fuelFilmMassNext = alpha * fuelFilmMass + beta * M_cmd;
85 float tau = interpolate2d(
114 float beta = interpolate2d(
124 beta *= interpolate2d(
132 return clampF(0, beta, 1);
148 if (tau < 0.01f || beta < 0.01f) {
161 float alpha = expf_taylor(-120 / (rpm * tau));
RpmCalculator rpmCalculator
constexpr auto & module()
bool isCranking() const override
virtual bool hasSensor() const
virtual SensorResult get() const =0
static float getOrZero(SensorType type)
bool getEnable() const override
float computeBeta() const
void onFastCallback() override
float getWallFuel() const
float adjust(float desiredMassGrams)
static EngineAccessor engine
static constexpr persistent_config_s * config
static constexpr engine_configuration_s * engineConfiguration
static CCM_OPTIONAL FunctionalSensor clt(SensorType::Clt, MS2NT(10))
scaled_channel< uint8_t, 100, 1 > wwTauMapValues[WWAE_TABLE_SIZE]
uint8_t wwMapBins[WWAE_TABLE_SIZE]
scaled_channel< uint8_t, 100, 1 > wwBetaMapValues[WWAE_TABLE_SIZE]
scaled_channel< uint8_t, 100, 1 > wwBetaCltValues[WWAE_TABLE_SIZE]
scaled_channel< uint8_t, 100, 1 > wwTauCltValues[WWAE_TABLE_SIZE]
int16_t wwCltBins[WWAE_TABLE_SIZE]