switch a pointer not logic
This commit is contained in:
parent
b26bd6d891
commit
0e39c094c7
|
@ -172,16 +172,11 @@ float getInjectionDurationForAirmass(float airMass, float afr DECLARE_ENGINE_PAR
|
||||||
static SpeedDensityAirmass sdAirmass(veMap);
|
static SpeedDensityAirmass sdAirmass(veMap);
|
||||||
static MafAirmass mafAirmass(veMap);
|
static MafAirmass mafAirmass(veMap);
|
||||||
|
|
||||||
AirmassResult getAirmass(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
AirmassModelBase* getAirmassModel(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
||||||
switch (CONFIG(fuelAlgorithm)) {
|
switch (CONFIG(fuelAlgorithm)) {
|
||||||
case LM_SPEED_DENSITY:
|
case LM_SPEED_DENSITY: return &sdAirmass;
|
||||||
return sdAirmass.getAirmass(rpm);
|
case LM_REAL_MAF: return &mafAirmass;
|
||||||
//return getSpeedDensityAirmass(PASS_ENGINE_PARAMETER_SIGNATURE);
|
default: return nullptr;
|
||||||
case LM_REAL_MAF: {
|
|
||||||
return mafAirmass.getAirmass(rpm);
|
|
||||||
} default:
|
|
||||||
firmwareError(CUSTOM_ERR_ASSERT, "Fuel mode %d is not airmass mode", CONFIG(fuelAlgorithm));
|
|
||||||
return {};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,13 +195,14 @@ floatms_t getBaseFuel(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
|
|
||||||
if ((CONFIG(fuelAlgorithm) == LM_SPEED_DENSITY) || (engineConfiguration->fuelAlgorithm == LM_REAL_MAF)) {
|
if ((CONFIG(fuelAlgorithm) == LM_SPEED_DENSITY) || (engineConfiguration->fuelAlgorithm == LM_REAL_MAF)) {
|
||||||
// airmass modes - get airmass first, then convert to fuel
|
// airmass modes - get airmass first, then convert to fuel
|
||||||
auto airmass = getAirmass(rpm PASS_ENGINE_PARAMETER_SUFFIX);
|
auto model = getAirmassModel(PASS_ENGINE_PARAMETER_SIGNATURE);
|
||||||
|
efiAssert(CUSTOM_ERR_ASSERT, model != nullptr, "Invalid airmass mode", 0.0f);
|
||||||
|
|
||||||
|
auto airmass = model->getAirmass(rpm);
|
||||||
|
|
||||||
// The airmass mode will tell us how to look up AFR - use the provided Y axis value
|
// The airmass mode will tell us how to look up AFR - use the provided Y axis value
|
||||||
float targetAfr = afrMap.getValue(rpm, airmass.EngineLoadPercent);
|
float targetAfr = afrMap.getValue(rpm, airmass.EngineLoadPercent);
|
||||||
|
|
||||||
// TODO: surface airmass.EngineLoadPercent to tunerstudio for proper display
|
|
||||||
|
|
||||||
// Plop some state for others to read
|
// Plop some state for others to read
|
||||||
ENGINE(engineState.targetAFR) = targetAfr;
|
ENGINE(engineState.targetAFR) = targetAfr;
|
||||||
ENGINE(engineState.sd.airMassInOneCylinder) = airmass.CylinderAirmass;
|
ENGINE(engineState.sd.airMassInOneCylinder) = airmass.CylinderAirmass;
|
||||||
|
|
Loading…
Reference in New Issue