From 300e08d4c4fc8170588bdb6ba9a891af631bf1be Mon Sep 17 00:00:00 2001 From: Andrey Date: Thu, 19 Oct 2023 21:06:09 -0400 Subject: [PATCH] only:making boost constraints more obvious, also running boost in simulator --- firmware/controllers/actuators/boost_control.cpp | 8 ++++++-- firmware/controllers/actuators/boost_control.h | 2 +- firmware/controllers/actuators/electronic_throttle.cpp | 2 +- firmware/controllers/actuators/electronic_throttle_impl.h | 2 +- firmware/controllers/actuators/vvt.cpp | 2 +- firmware/controllers/actuators/vvt.h | 2 +- firmware/controllers/closed_loop_controller.h | 2 +- unit_tests/mocks.h | 2 +- unit_tests/tests/util/test_closed_loop_controller.cpp | 2 +- 9 files changed, 14 insertions(+), 10 deletions(-) diff --git a/firmware/controllers/actuators/boost_control.cpp b/firmware/controllers/actuators/boost_control.cpp index c4c3971bdc..2b2e7bc68b 100644 --- a/firmware/controllers/actuators/boost_control.cpp +++ b/firmware/controllers/actuators/boost_control.cpp @@ -45,8 +45,10 @@ void BoostController::onConfigurationChange(engine_configuration_s const * previ } } -expected BoostController::observePlant() const { - return Sensor::get(SensorType::Map); +expected BoostController::observePlant() { + expected map = Sensor::get(SensorType::Map); + isPlantValid = map.Valid; + return map; } expected BoostController::getSetpoint() { @@ -245,6 +247,7 @@ void startBoostPin() { } void initBoostCtrl() { +#if EFI_PROD_CODE // todo: why do we have 'isBoostControlEnabled' setting exactly? // 'initVvtActuators' is an example of a subsystem without explicit enable if (!engineConfiguration->isBoostControlEnabled) { @@ -261,6 +264,7 @@ void initBoostCtrl() { if (!isBrainPinValid(engineConfiguration->boostControlPin) && !hasAnyEtbWastegate) { return; } +#endif // Set up open & closed loop tables boostMapOpen.init(config->boostTableOpenLoop, config->boostTpsBins, config->boostRpmBins); diff --git a/firmware/controllers/actuators/boost_control.h b/firmware/controllers/actuators/boost_control.h index 2860ebdfe0..4e34a1bf52 100644 --- a/firmware/controllers/actuators/boost_control.h +++ b/firmware/controllers/actuators/boost_control.h @@ -25,7 +25,7 @@ public: void onConfigurationChange(engine_configuration_s const * previousConfig) override; // Helpers for individual parts of boost control - expected observePlant() const override; + expected observePlant() override; expected getSetpoint() override; expected getOpenLoop(float target) override; diff --git a/firmware/controllers/actuators/electronic_throttle.cpp b/firmware/controllers/actuators/electronic_throttle.cpp index 92cb01196b..1963acdd18 100644 --- a/firmware/controllers/actuators/electronic_throttle.cpp +++ b/firmware/controllers/actuators/electronic_throttle.cpp @@ -244,7 +244,7 @@ void EtbController::showStatus() { m_pid.showPidStatus("ETB"); } -expected EtbController::observePlant() const { +expected EtbController::observePlant() { return Sensor::get(m_positionSensor); } diff --git a/firmware/controllers/actuators/electronic_throttle_impl.h b/firmware/controllers/actuators/electronic_throttle_impl.h index aa76eca0d2..dee1191458 100644 --- a/firmware/controllers/actuators/electronic_throttle_impl.h +++ b/firmware/controllers/actuators/electronic_throttle_impl.h @@ -43,7 +43,7 @@ public: void showStatus(); // Helpers for individual parts of throttle control - expected observePlant() const override; + expected observePlant() override; expected getSetpoint() override; expected getSetpointEtb(); diff --git a/firmware/controllers/actuators/vvt.cpp b/firmware/controllers/actuators/vvt.cpp index 61d248fa7d..0232d3481e 100644 --- a/firmware/controllers/actuators/vvt.cpp +++ b/firmware/controllers/actuators/vvt.cpp @@ -48,7 +48,7 @@ void VvtController::onConfigurationChange(engine_configuration_s const * previou } } -expected VvtController::observePlant() const { +expected VvtController::observePlant() { #if EFI_SHAFT_POSITION_INPUT return engine->triggerCentral.getVVTPosition(m_bank, m_cam); #else diff --git a/firmware/controllers/actuators/vvt.h b/firmware/controllers/actuators/vvt.h index a1a879458e..a7e8875a08 100644 --- a/firmware/controllers/actuators/vvt.h +++ b/firmware/controllers/actuators/vvt.h @@ -34,7 +34,7 @@ public: void onConfigurationChange(engine_configuration_s const * previousConfig) override; // ClosedLoopController implementation - expected observePlant() const override; + expected observePlant() override; expected getSetpoint() override; expected getOpenLoop(angle_t target) override; diff --git a/firmware/controllers/closed_loop_controller.h b/firmware/controllers/closed_loop_controller.h index a12a6667f3..1acb38b122 100644 --- a/firmware/controllers/closed_loop_controller.h +++ b/firmware/controllers/closed_loop_controller.h @@ -49,7 +49,7 @@ private: virtual expected getSetpoint() = 0; // Get the current observation: what is the current state of the world? - virtual expected observePlant() const = 0; + virtual expected observePlant() = 0; // Get the open-loop output: output state based on only the setpoint virtual expected getOpenLoop(TInput setpoint) = 0; diff --git a/unit_tests/mocks.h b/unit_tests/mocks.h index 0e2cd8ab8b..067840fb26 100644 --- a/unit_tests/mocks.h +++ b/unit_tests/mocks.h @@ -32,7 +32,7 @@ public: // ClosedLoopController mocks MOCK_METHOD(expected, getSetpoint, (), (override)); - MOCK_METHOD(expected, observePlant, (), (const, override)); + MOCK_METHOD(expected, observePlant, (), (override)); MOCK_METHOD(expected, getOpenLoop, (percent_t setpoint), (override)); MOCK_METHOD(expected, getClosedLoop, (percent_t setpoint, percent_t observation), (override)); MOCK_METHOD(void, setOutput, (expected outputValue), (override)); diff --git a/unit_tests/tests/util/test_closed_loop_controller.cpp b/unit_tests/tests/util/test_closed_loop_controller.cpp index 94b837bd5c..42e4bd5894 100644 --- a/unit_tests/tests/util/test_closed_loop_controller.cpp +++ b/unit_tests/tests/util/test_closed_loop_controller.cpp @@ -10,7 +10,7 @@ using ::testing::Eq; class TestController : public ClosedLoopController { public: MOCK_METHOD(expected, getSetpoint, (), (override)); - MOCK_METHOD(expected, observePlant, (), (const, override)); + MOCK_METHOD(expected, observePlant, (), (override)); MOCK_METHOD(expected, getOpenLoop, (float setpoint), (override)); MOCK_METHOD(expected, getClosedLoop, (float setpoint, float observation), (override)); MOCK_METHOD(void, setOutput, (expected outputValue), (override));