Rename fields to enhance `nitrous_control_state` view #6783

This commit is contained in:
kifir 2024-12-06 21:44:36 +02:00 committed by kifir23917
parent c2581cc7a6
commit 7f73b9b1f6
12 changed files with 61 additions and 64 deletions

View File

@ -123,9 +123,7 @@ angle_t getRunningAdvance(float rpm, float engineLoad) {
) {
return engineConfiguration->torqueReductionIgnitionRetard;
}
if (engineConfiguration->nitrousControlEnabled
&& engine->module<NitrousController>()->isNitrousConditionSatisfied
) {
if (engineConfiguration->nitrousControlEnabled && engine->module<NitrousController>()->isNitrousCondition) {
advanceAngle -= engineConfiguration->nitrousIgnitionRetard;
}
#endif /* EFI_LAUNCH_CONTROL */

View File

@ -1,12 +1,12 @@
struct_no_prefix nitrous_control_state_s
bit isArmed
bit isNitrousSpeedConditionSatisfied
bit isTpsConditionSatisfied
bit isCltConditionSatisfied
bit isMapConditionSatisfied
bit isAfrConditionSatisfied
bit isNitrousRpmConditionSatisfied
bit isNitrousConditionSatisfied
bit isNitrousArmed
bit isNitrousSpeedCondition
bit isNitrousTpsCondition
bit isNitrousCltCondition
bit isNitrousMapCondition
bit isNitrousAfrCondition
bit isNitrousRpmCondition
bit isNitrousCondition
end_struct

View File

@ -16,19 +16,19 @@ void NitrousController::onSlowCallback() {
updateMapConditionSatisfied();
updateAfrConditionSatisfied();
updateRpmConditionSatisfied();
isNitrousConditionSatisfied = (
isArmed && isTpsConditionSatisfied && isNitrousSpeedConditionSatisfied && isCltConditionSatisfied
&& isMapConditionSatisfied && isAfrConditionSatisfied && isNitrousRpmConditionSatisfied
isNitrousCondition = (
isNitrousArmed && isNitrousSpeedCondition && isNitrousTpsCondition && isNitrousCltCondition
&& isNitrousMapCondition && isNitrousAfrCondition && isNitrousRpmCondition
);
} else {
isNitrousConditionSatisfied = false;
isNitrousCondition = false;
}
enginePins.nitrousRelay.setValue(isNitrousConditionSatisfied);
enginePins.nitrousRelay.setValue(isNitrousCondition);
}
float NitrousController::getFuelCoefficient() const {
float result = 1.0f;
if (engineConfiguration->nitrousControlEnabled && isNitrousConditionSatisfied) {
if (engineConfiguration->nitrousControlEnabled && isNitrousCondition) {
result += engineConfiguration->nitrousFuelAdderPercent / 100.0f;
}
return result;
@ -37,15 +37,15 @@ float NitrousController::getFuelCoefficient() const {
void NitrousController::updateArmingState() {
switch (engineConfiguration->nitrousControlArmingMethod) {
case DIGITAL_SWITCH_INPUT: {
isArmed = checkTriggerPinState();
isNitrousArmed = checkTriggerPinState();
break;
}
case LUA_GAUGE: {
isArmed = checkLuaGauge();
isNitrousArmed = checkLuaGauge();
break;
}
default: { // Unexpected value!!!
isArmed = false;
isNitrousArmed = false;
break;
}
}
@ -54,37 +54,36 @@ void NitrousController::updateArmingState() {
void NitrousController::updateSpeedConditionSatisfied() {
if (engineConfiguration->nitrousMinimumVehicleSpeed != 0) {
const expected<float> speed = Sensor::get(SensorType::VehicleSpeed);
isNitrousSpeedConditionSatisfied =
speed.Valid && (engineConfiguration->nitrousMinimumVehicleSpeed <= speed.Value);
isNitrousSpeedCondition = speed.Valid && (engineConfiguration->nitrousMinimumVehicleSpeed <= speed.Value);
} else {
isNitrousSpeedConditionSatisfied = true;
isNitrousSpeedCondition = true;
}
}
void NitrousController::updateTpsConditionSatisfied() {
if (engineConfiguration->nitrousMinimumTps != 0) {
const expected<float> tps = Sensor::get(SensorType::DriverThrottleIntent);
isTpsConditionSatisfied = tps.Valid && (engineConfiguration->nitrousMinimumTps <= tps.Value);
isNitrousTpsCondition = tps.Valid && (engineConfiguration->nitrousMinimumTps <= tps.Value);
} else {
isTpsConditionSatisfied = true;
isNitrousTpsCondition = true;
}
}
void NitrousController::updateCltConditionSatisfied() {
if (engineConfiguration->nitrousMinimumClt != 0) {
const expected<float> clt = Sensor::get(SensorType::Clt);
isCltConditionSatisfied = clt.Valid && (engineConfiguration->nitrousMinimumClt <= clt.Value);
isNitrousCltCondition = clt.Valid && (engineConfiguration->nitrousMinimumClt <= clt.Value);
} else {
isCltConditionSatisfied = true;
isNitrousCltCondition = true;
}
}
void NitrousController::updateMapConditionSatisfied() {
if (engineConfiguration->nitrousMaximumMap != 0) {
const expected<float> map = Sensor::get(SensorType::Map);
isMapConditionSatisfied = map.Valid && (map.Value <= engineConfiguration->nitrousMaximumMap);
isNitrousMapCondition = map.Valid && (map.Value <= engineConfiguration->nitrousMaximumMap);
} else {
isMapConditionSatisfied = true;
isNitrousMapCondition = true;
}
}
@ -93,12 +92,12 @@ void NitrousController::updateAfrConditionSatisfied() {
const expected<float> lambda1 = Sensor::get(SensorType::Lambda1);
if (lambda1.Valid) {
const float afr = lambda1.Value * STOICH_RATIO;
isAfrConditionSatisfied = (afr <= static_cast<float>(engineConfiguration->nitrousMaximumAfr));
isNitrousAfrCondition = (afr <= static_cast<float>(engineConfiguration->nitrousMaximumAfr));
} else {
isAfrConditionSatisfied = false;
isNitrousAfrCondition = false;
}
} else {
isAfrConditionSatisfied = true;
isNitrousAfrCondition = true;
}
}
@ -115,12 +114,12 @@ void NitrousController::updateRpmConditionSatisfied() {
engineConfiguration->nitrousDeactivationRpm,
engineConfiguration->nitrousDeactivationRpmWindow
)) {
isNitrousRpmConditionSatisfied = false;
isNitrousRpmCondition = false;
} else {
isNitrousRpmConditionSatisfied = (engineConfiguration->nitrousActivationRpm <= rpm);
isNitrousRpmCondition = (engineConfiguration->nitrousActivationRpm <= rpm);
}
} else {
isNitrousRpmConditionSatisfied = false;
isNitrousRpmCondition = false;
}
}

View File

@ -31,43 +31,43 @@ void NitrousTestBase::armNitrousControl() {
setMockState(TEST_NITROUS_CONTROL_ARMING_PIN, true);
periodicSlowCallback();
EXPECT_TRUE(getModule<NitrousController>().isArmed);
EXPECT_TRUE(getModule<NitrousController>().isNitrousArmed);
}
void NitrousTestBase::satisfySpeedCondition() {
updateVehicleSpeed(TEST_MIN_VEHICLE_SPEED, &TestBase::periodicSlowCallback);
EXPECT_TRUE(getModule<NitrousController>().isNitrousSpeedConditionSatisfied);
EXPECT_TRUE(getModule<NitrousController>().isNitrousSpeedCondition);
}
void NitrousTestBase::satisfyTpsCondition() {
updateApp(TEST_MIN_TPS, &TestBase::periodicSlowCallback);
EXPECT_TRUE(getModule<NitrousController>().isTpsConditionSatisfied);
EXPECT_TRUE(getModule<NitrousController>().isNitrousTpsCondition);
}
void NitrousTestBase::satisfyCltCondition() {
updateClt(TEST_MIN_CLT, &TestBase::periodicSlowCallback);
EXPECT_TRUE(getModule<NitrousController>().isCltConditionSatisfied);
EXPECT_TRUE(getModule<NitrousController>().isNitrousCltCondition);
}
void NitrousTestBase::satisfyMapCondition() {
updateMap(TEST_MAX_MAP, &TestBase::periodicSlowCallback);
EXPECT_TRUE(getModule<NitrousController>().isMapConditionSatisfied);
EXPECT_TRUE(getModule<NitrousController>().isNitrousMapCondition);
}
void NitrousTestBase::satisfyAfrCondition() {
updateLambda1(TEST_LAMBDA1, &TestBase::periodicSlowCallback);
EXPECT_TRUE(getModule<NitrousController>().isAfrConditionSatisfied);
EXPECT_TRUE(getModule<NitrousController>().isNitrousAfrCondition);
}
void NitrousTestBase::satisfyRpmCondition() {
updateRpm(TEST_ACTIVATION_RPM, &TestBase::periodicSlowCallback);
EXPECT_TRUE(getModule<NitrousController>().isNitrousRpmConditionSatisfied);
EXPECT_TRUE(getModule<NitrousController>().isNitrousRpmCondition);
}
void NitrousTestBase::activateNitrousControl() {
@ -84,43 +84,43 @@ void NitrousTestBase::unarmNitrousControl() {
setMockState(TEST_NITROUS_CONTROL_ARMING_PIN, false);
periodicSlowCallback();
EXPECT_FALSE(getModule<NitrousController>().isArmed);
EXPECT_FALSE(getModule<NitrousController>().isNitrousArmed);
}
void NitrousTestBase::unsatisfySpeedCondition() {
updateVehicleSpeed(TEST_MIN_VEHICLE_SPEED - EPS5D, &TestBase::periodicSlowCallback);
EXPECT_FALSE(getModule<NitrousController>().isNitrousSpeedConditionSatisfied);
EXPECT_FALSE(getModule<NitrousController>().isNitrousSpeedCondition);
}
void NitrousTestBase::unsatisfyTpsCondition() {
updateApp(TEST_MIN_TPS - EPS5D, &TestBase::periodicSlowCallback);
EXPECT_FALSE(getModule<NitrousController>().isTpsConditionSatisfied);
EXPECT_FALSE(getModule<NitrousController>().isNitrousTpsCondition);
}
void NitrousTestBase::unsatisfyCltCondition() {
updateClt(TEST_MIN_CLT - EPS5D, &TestBase::periodicSlowCallback);
EXPECT_FALSE(getModule<NitrousController>().isCltConditionSatisfied);
EXPECT_FALSE(getModule<NitrousController>().isNitrousCltCondition);
}
void NitrousTestBase::unsatisfyMapCondition() {
updateMap(TEST_MAX_MAP + EPS5D, &TestBase::periodicSlowCallback);
EXPECT_FALSE(getModule<NitrousController>().isMapConditionSatisfied);
EXPECT_FALSE(getModule<NitrousController>().isNitrousMapCondition);
}
void NitrousTestBase::unsatisfyAfrCondition() {
updateLambda1(TEST_LAMBDA1 + EPS5D, &TestBase::periodicSlowCallback);
EXPECT_FALSE(getModule<NitrousController>().isAfrConditionSatisfied);
EXPECT_FALSE(getModule<NitrousController>().isNitrousAfrCondition);
}
void NitrousTestBase::unsatisfyRpmCondition() {
updateRpm(TEST_ACTIVATION_RPM - EPS5D, &TestBase::periodicSlowCallback);
EXPECT_FALSE(getModule<NitrousController>().isNitrousRpmConditionSatisfied);
EXPECT_FALSE(getModule<NitrousController>().isNitrousRpmCondition);
}
void NitrousTestBase::deactivateNitrousControl() {
@ -134,6 +134,6 @@ void NitrousTestBase::deactivateNitrousControl() {
}
void NitrousTestBase::checkNitrousCondition(const bool expected, const char* const context) {
EXPECT_EQ(getModule<NitrousController>().isNitrousConditionSatisfied, expected) << context;
EXPECT_EQ(getModule<NitrousController>().isNitrousCondition, expected) << context;
EXPECT_EQ(enginePins.nitrousRelay.getLogicValue(), expected) << context;
}

View File

@ -28,7 +28,7 @@ namespace {
void NitrousAfrConditionTest::checkAfrCondition(const std::vector<AfrConditionTestData>& testData) {
for (const AfrConditionTestData& item: testData) {
updateLambda1(item.lambda1, &TestBase::periodicSlowCallback);
EXPECT_EQ(getModule<NitrousController>().isAfrConditionSatisfied, item.expectedAfrCondition)
EXPECT_EQ(getModule<NitrousController>().isNitrousAfrCondition, item.expectedAfrCondition)
<< item.context;
}
}

View File

@ -28,7 +28,7 @@ namespace {
void NitrousArmingTest::checkArmingAfterPeriodicFastCallback(const bool shouldBeArmed, const char* const context) {
periodicSlowCallback();
EXPECT_EQ(getModule<NitrousController>().isArmed, shouldBeArmed) << context;
EXPECT_EQ(getModule<NitrousController>().isNitrousArmed, shouldBeArmed) << context;
}
TEST_F(NitrousArmingTest, checkDefault) {

View File

@ -25,7 +25,7 @@ namespace {
void NitrousCltConditionTest::checkCltCondition(const std::vector<CltConditionTestData>& testData) {
for (const CltConditionTestData& item: testData) {
updateClt(item.clt, &TestBase::periodicSlowCallback);
EXPECT_EQ(getModule<NitrousController>().isCltConditionSatisfied, item.expectedCltCondition)
EXPECT_EQ(getModule<NitrousController>().isNitrousCltCondition, item.expectedCltCondition)
<< item.context;
}
}

View File

@ -17,13 +17,13 @@ namespace {
setUpTestConfiguration();
EXPECT_FALSE(getModule<NitrousController>().isArmed);
EXPECT_FALSE(getModule<NitrousController>().isNitrousSpeedConditionSatisfied);
EXPECT_FALSE(getModule<NitrousController>().isTpsConditionSatisfied);
EXPECT_FALSE(getModule<NitrousController>().isCltConditionSatisfied);
EXPECT_FALSE(getModule<NitrousController>().isMapConditionSatisfied);
EXPECT_FALSE(getModule<NitrousController>().isAfrConditionSatisfied);
EXPECT_FALSE(getModule<NitrousController>().isNitrousRpmConditionSatisfied);
EXPECT_FALSE(getModule<NitrousController>().isNitrousArmed);
EXPECT_FALSE(getModule<NitrousController>().isNitrousSpeedCondition);
EXPECT_FALSE(getModule<NitrousController>().isNitrousTpsCondition);
EXPECT_FALSE(getModule<NitrousController>().isNitrousCltCondition);
EXPECT_FALSE(getModule<NitrousController>().isNitrousMapCondition);
EXPECT_FALSE(getModule<NitrousController>().isNitrousAfrCondition);
EXPECT_FALSE(getModule<NitrousController>().isNitrousRpmCondition);
checkNitrousCondition(false, "No conditions are satisfied");

View File

@ -23,7 +23,7 @@ namespace {
void NitrousMapConditionTest::checkMapCondition(const std::vector<MapConditionTestData>& testData) {
for (const MapConditionTestData& item: testData) {
updateMap(item.map, &TestBase::periodicSlowCallback);
EXPECT_EQ(getModule<NitrousController>().isMapConditionSatisfied, item.expectedMapCondition)
EXPECT_EQ(getModule<NitrousController>().isNitrousMapCondition, item.expectedMapCondition)
<< item.context;
}
}

View File

@ -46,7 +46,7 @@ namespace {
void NitrousRpmConditionTest::checkRpmCondition(const std::vector<RpmConditionTestData>& testData) {
for (const RpmConditionTestData& item: testData) {
updateRpm(item.rpm, &TestBase::periodicSlowCallback);
EXPECT_EQ(getModule<NitrousController>().isNitrousRpmConditionSatisfied, item.expectedRpmCondition)
EXPECT_EQ(getModule<NitrousController>().isNitrousRpmCondition, item.expectedRpmCondition)
<< item.context;
}
}

View File

@ -25,7 +25,7 @@ namespace {
void NitrousSpeedConditionTest::checkSpeedCondition(const std::vector<SpeedConditionTestData>& testData) {
for (const SpeedConditionTestData& item: testData) {
updateVehicleSpeed(item.speed, &TestBase::periodicSlowCallback);
EXPECT_EQ(getModule<NitrousController>().isNitrousSpeedConditionSatisfied, item.expectedSpeedCondition)
EXPECT_EQ(getModule<NitrousController>().isNitrousSpeedCondition, item.expectedSpeedCondition)
<< item.context;
}
}

View File

@ -25,7 +25,7 @@ namespace {
void NitrousTpsConditionTest::checkTpsCondition(const std::vector<TpsConditionTestData>& testData) {
for (const TpsConditionTestData& item: testData) {
updateApp(item.tps, &TestBase::periodicSlowCallback);
EXPECT_EQ(getModule<NitrousController>().isTpsConditionSatisfied, item.expectedTpsCondition)
EXPECT_EQ(getModule<NitrousController>().isNitrousTpsCondition, item.expectedTpsCondition)
<< item.context;
}
}