rusefi/firmware/controllers/algo/nitrous_controller.cpp

102 lines
2.6 KiB
C++

//
// Created by kifir on 11/25/24.
//
#include "pch.h"
#if EFI_LAUNCH_CONTROL
#include "nitrous_controller.h"
void NitrousController::update() {
if (engineConfiguration->nitrousControlEnabled) {
updateArmingState();
}
}
void NitrousController::updateArmingState() {
switch (engineConfiguration->nitrousControlArmingMethod) {
case DIGITAL_SWITCH_INPUT: {
isArmed = checkTriggerPinState();
break;
}
case LUA_GAUGE: {
isArmed = checkLuaGauge();
break;
}
default: { // Unexpected value!!!
isArmed = false;
break;
}
}
}
bool NitrousController::checkTriggerPinState() const {
bool result = false;
#if !EFI_SIMULATOR
const switch_input_pin_e triggerPin = engineConfiguration->nitrousControlTriggerPin;
if (isBrainPinValid(triggerPin)) {
result = engineConfiguration->nitrousControlTriggerPinInverted ^ efiReadPin(triggerPin);
}
#endif // !EFI_SIMULATOR
return result;
}
bool NitrousController::checkLuaGauge() const {
bool result = false;
const SensorResult currentSensorResult = Sensor::get(getLuaGauge());
if (currentSensorResult.Valid) {
const float currentValue = currentSensorResult.Value;
const float armingValue = engineConfiguration->nitrousLuaGaugeArmingValue;
switch (engineConfiguration->nitrousLuaGaugeMeaning) {
case LUA_GAUGE_LOWER_BOUND: {
result = (armingValue <= currentValue);
break;
}
case LUA_GAUGE_UPPER_BOUND: {
result = (currentValue <= armingValue);
break;
}
}
}
return result;
}
SensorType NitrousController::getLuaGauge() const {
SensorType result = SensorType::LuaGauge1;
switch (engineConfiguration->nitrousLuaGauge) {
case LUA_GAUGE_1: {
break;
}
case LUA_GAUGE_2: {
result = SensorType::LuaGauge2;
break;
}
case LUA_GAUGE_3: {
result = SensorType::LuaGauge3;
break;
}
case LUA_GAUGE_4: {
result = SensorType::LuaGauge4;
break;
}
case LUA_GAUGE_5: {
result = SensorType::LuaGauge5;
break;
}
case LUA_GAUGE_6: {
result = SensorType::LuaGauge6;
break;
}
case LUA_GAUGE_7: {
result = SensorType::LuaGauge7;
break;
}
case LUA_GAUGE_8: {
result = SensorType::LuaGauge8;
break;
}
}
return result;
}
#endif // EFI_LAUNCH_CONTROL