switch a pointer not logic

This commit is contained in:
Matthew Kennedy 2020-07-24 19:38:48 -07:00
parent b26bd6d891
commit 0e39c094c7
1 changed files with 8 additions and 12 deletions

View File

@ -172,16 +172,11 @@ float getInjectionDurationForAirmass(float airMass, float afr DECLARE_ENGINE_PAR
static SpeedDensityAirmass sdAirmass(veMap);
static MafAirmass mafAirmass(veMap);
AirmassResult getAirmass(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX) {
AirmassModelBase* getAirmassModel(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
switch (CONFIG(fuelAlgorithm)) {
case LM_SPEED_DENSITY:
return sdAirmass.getAirmass(rpm);
//return getSpeedDensityAirmass(PASS_ENGINE_PARAMETER_SIGNATURE);
case LM_REAL_MAF: {
return mafAirmass.getAirmass(rpm);
} default:
firmwareError(CUSTOM_ERR_ASSERT, "Fuel mode %d is not airmass mode", CONFIG(fuelAlgorithm));
return {};
case LM_SPEED_DENSITY: return &sdAirmass;
case LM_REAL_MAF: return &mafAirmass;
default: return nullptr;
}
}
@ -200,13 +195,14 @@ floatms_t getBaseFuel(int rpm DECLARE_ENGINE_PARAMETER_SUFFIX) {
if ((CONFIG(fuelAlgorithm) == LM_SPEED_DENSITY) || (engineConfiguration->fuelAlgorithm == LM_REAL_MAF)) {
// 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
float targetAfr = afrMap.getValue(rpm, airmass.EngineLoadPercent);
// TODO: surface airmass.EngineLoadPercent to tunerstudio for proper display
// Plop some state for others to read
ENGINE(engineState.targetAFR) = targetAfr;
ENGINE(engineState.sd.airMassInOneCylinder) = airmass.CylinderAirmass;