Remove value copy from controller into outputChannels #4095
This commit is contained in:
parent
cd3cce1da5
commit
178721c809
|
@ -49,7 +49,6 @@ bool AcController::getAcState() {
|
|||
return false;
|
||||
}
|
||||
|
||||
acButtonState = engine->acSwitchState;
|
||||
// All conditions allow AC, simply pass thru switch
|
||||
return acButtonState;
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ bit acButtonState;@@INDICATOR_NAME_AC_SWITCH@@
|
|||
bit isDisabledByLua;For setAcDisabled Lua method
|
||||
|
||||
int latest_usage_ac_control;
|
||||
! todo: extract some helper which would contain boolean state and most recent toggle time?
|
||||
int acSwitchLastChangeTimeMs;
|
||||
|
||||
end_struct
|
||||
|
|
|
@ -27,7 +27,7 @@ int IdleController::getTargetRpm(float clt) {
|
|||
targetRpmByClt = interpolate2d(clt, config->cltIdleRpmBins, config->cltIdleRpm);
|
||||
|
||||
// Bump for AC
|
||||
targetRpmAcBump = engine->acSwitchState ? engineConfiguration->acIdleRpmBump : 0;
|
||||
targetRpmAcBump = engine->module<AcController>().unmock().acButtonState ? engineConfiguration->acIdleRpmBump : 0;
|
||||
|
||||
return targetRpmByClt + targetRpmAcBump;
|
||||
}
|
||||
|
@ -95,7 +95,7 @@ percent_t IdleController::getRunningOpenLoop(float clt, SensorResult tps) {
|
|||
* interpolate2d(clt, config->cltIdleCorrBins, config->cltIdleCorr);
|
||||
|
||||
// Now we bump it by the AC/fan amount if necessary
|
||||
running += engine->acSwitchState ? engineConfiguration->acIdleExtraOffset : 0;
|
||||
running += engine->module<AcController>().unmock().acButtonState ? engineConfiguration->acIdleExtraOffset : 0;
|
||||
running += enginePins.fanRelay.getLogicValue() ? engineConfiguration->fan1ExtraIdle : 0;
|
||||
running += enginePins.fanRelay2.getLogicValue() ? engineConfiguration->fan2ExtraIdle : 0;
|
||||
|
||||
|
|
|
@ -324,11 +324,11 @@ void Engine::updateSwitchInputs() {
|
|||
}
|
||||
if (hasAcToggle()) {
|
||||
bool result = getAcToggle();
|
||||
if (engine->acSwitchState != result) {
|
||||
engine->acSwitchState = result;
|
||||
engine->module<AcController>().unmock().acSwitchLastChangeTimeMs = US2MS(getTimeNowUs());
|
||||
AcController & acController = engine->module<AcController>().unmock();
|
||||
if (acController.acButtonState != result) {
|
||||
acController.acButtonState = result;
|
||||
acController.acSwitchLastChangeTimeMs = US2MS(getTimeNowUs());
|
||||
}
|
||||
engine->acSwitchState = result;
|
||||
}
|
||||
engine->clutchUpState = getClutchUpState();
|
||||
|
||||
|
|
|
@ -365,9 +365,6 @@ public:
|
|||
bool clutchDownState = false;
|
||||
bool brakePedalState = false;
|
||||
|
||||
// todo: extract some helper which would contain boolean state and most recent toggle time?
|
||||
bool acSwitchState = false;
|
||||
|
||||
bool isRunningPwmTest = false;
|
||||
|
||||
/**
|
||||
|
|
|
@ -305,7 +305,7 @@ static int lua_getDigital(lua_State* l) {
|
|||
case 0: state = engine->clutchDownState; break;
|
||||
case 1: state = engine->clutchUpState; break;
|
||||
case 2: state = engine->brakePedalState; break;
|
||||
case 3: state = engine->acSwitchState; break;
|
||||
case 3: state = engine->module<AcController>().unmock().acButtonState; break;
|
||||
default:
|
||||
// Return nil to indicate invalid parameter
|
||||
lua_pushnil(l);
|
||||
|
|
|
@ -167,9 +167,9 @@ TEST(idle_v2, runningFanAcBump) {
|
|||
EXPECT_FLOAT_EQ(50, dut.getRunningOpenLoop(10, 0));
|
||||
|
||||
// Turn on AC!
|
||||
engine->acSwitchState = true;
|
||||
engine->module<AcController>()->acButtonState = true;
|
||||
EXPECT_FLOAT_EQ(50 + 9, dut.getRunningOpenLoop(10, 0));
|
||||
engine->acSwitchState = false;
|
||||
engine->module<AcController>()->acButtonState = false;
|
||||
|
||||
// Turn the fan on!
|
||||
enginePins.fanRelay.setValue(1);
|
||||
|
@ -181,7 +181,7 @@ TEST(idle_v2, runningFanAcBump) {
|
|||
EXPECT_FLOAT_EQ(50 + 3, dut.getRunningOpenLoop(10, 0));
|
||||
|
||||
// Turn on everything!
|
||||
engine->acSwitchState = true;
|
||||
engine->module<AcController>()->acButtonState = true;
|
||||
enginePins.fanRelay.setValue(1);
|
||||
enginePins.fanRelay2.setValue(1);
|
||||
EXPECT_FLOAT_EQ(50 + 9 + 7 + 3, dut.getRunningOpenLoop(10, 0));
|
||||
|
|
Loading…
Reference in New Issue