fome-fw/firmware/controllers/algo/antilag_system.cpp

87 lines
2.2 KiB
C++
Raw Normal View History

2022-12-16 20:31:51 -08:00
/*
* @file antilag_system.cpp
*
* @date 26. nov. 2022
* Author: Turbo Marian
*/
#include "pch.h"
#if EFI_ANTILAG_SYSTEM
#include "antilag_system.h"
#include "periodic_task.h"
#include "advance_map.h"
#include "engine_state.h"
#include "advance_map.h"
bool AntilagSystemBase::isInsideALSSwitchCondition() {
isALSSwitchActivated = engineConfiguration->antiLagActivationMode == SWITCH_INPUT_ANTILAG;
if (isALSSwitchActivated) {
if (isBrainPinValid(engineConfiguration->ALSActivatePin)) {
#if EFI_PROD_CODE
ALSActivatePinState = engineConfiguration->ALSActivateInverted ^ efiReadPin(engineConfiguration->ALSActivatePin);
#else
ALSActivatePinState = false;
#endif
}
return ALSActivatePinState;
} else {
// ALWAYS_ACTIVE_ANTILAG
return true;
}
}
bool AntilagSystemBase::isALSMinRPMCondition() const {
int rpm = Sensor::getOrZero(SensorType::Rpm);
return engineConfiguration->ALSMinRPM < rpm;
}
bool AntilagSystemBase::isALSMaxRPMCondition() const {
int rpm = Sensor::getOrZero(SensorType::Rpm);
return engineConfiguration->ALSMaxRPM > rpm;
}
bool AntilagSystemBase::isALSMinCLTCondition() const {
int clt = Sensor::getOrZero(SensorType::Clt);
return engineConfiguration->ALSMinCLT < clt;
}
bool AntilagSystemBase::isALSMaxCLTCondition() const {
int clt = Sensor::getOrZero(SensorType::Clt);
return engineConfiguration->ALSMaxCLT > clt;
}
bool AntilagSystemBase::isALSMaxThrottleIntentCondition() const {
int throttleIntent = Sensor::getOrZero(SensorType::DriverThrottleIntent);
return engineConfiguration->ALSMaxTPS > throttleIntent;
}
bool AntilagSystemBase::isAntilagConditionMet() {
ALSMinRPMCondition = isALSMinRPMCondition();
ALSMaxRPMCondition = isALSMaxRPMCondition();
ALSMinCLTCondition = isALSMinCLTCondition();
ALSMaxCLTCondition = isALSMaxCLTCondition();
ALSMaxThrottleIntentCondition = isALSMaxThrottleIntentCondition();
ALSSwitchCondition = isInsideALSSwitchCondition();
return ALSMinRPMCondition &&
ALSMaxRPMCondition &&
ALSMinCLTCondition &&
ALSMaxCLTCondition &&
ALSMaxThrottleIntentCondition &&
ALSSwitchCondition;
}
void AntilagSystemBase::update() {
isAntilagCondition = engineConfiguration->antiLagEnabled && isAntilagConditionMet();
2022-12-16 20:31:51 -08:00
}
#endif /* EFI_ANTILAG_SYSTEM */