mirror of https://github.com/rusefi/rusefi.git
implement BoostControl.BoostOpenLoopYAxis test #4778
This commit is contained in:
parent
6b6f2f5b6e
commit
c5a4ca08ef
|
@ -68,6 +68,165 @@ TEST(BoostControl, OpenLoop) {
|
||||||
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), 47.0f);
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), 47.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(BoostControl, BoostOpenLoopYAxis)
|
||||||
|
{
|
||||||
|
MockVp3d openMap;
|
||||||
|
// Just pass MAP input to output
|
||||||
|
EXPECT_CALL(openMap, getValue(_, _))
|
||||||
|
.WillRepeatedly([](float xRpm, float tps) { return tps; });
|
||||||
|
|
||||||
|
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
|
||||||
|
BoostController bc;
|
||||||
|
|
||||||
|
bc.init(nullptr, &openMap, nullptr, nullptr);
|
||||||
|
|
||||||
|
constexpr float RPM_TEST_VALUE = 42.0f;
|
||||||
|
Sensor::setMockValue(SensorType::Rpm, RPM_TEST_VALUE);
|
||||||
|
constexpr float TPS1_TEST_VALUE = 42.1f;
|
||||||
|
Sensor::setMockValue(SensorType::Tps1, TPS1_TEST_VALUE);
|
||||||
|
constexpr float MAP_TEST_VALUE = 42.3f;
|
||||||
|
Sensor::setMockValue(SensorType::Map, MAP_TEST_VALUE);
|
||||||
|
constexpr float CLT_TEST_VALUE = 42.4f;
|
||||||
|
Sensor::setMockValue(SensorType::Clt, CLT_TEST_VALUE);
|
||||||
|
constexpr float IAT_TEST_VALUE = 42.5f;
|
||||||
|
Sensor::setMockValue(SensorType::Iat, IAT_TEST_VALUE);
|
||||||
|
constexpr float LUA_GAUGE1_TEST_VALUE = 42.6f;
|
||||||
|
Sensor::setMockValue(SensorType::LuaGauge1, LUA_GAUGE1_TEST_VALUE);
|
||||||
|
constexpr float LUA_GAUGE2_TEST_VALUE = 42.7f;
|
||||||
|
Sensor::setMockValue(SensorType::LuaGauge2, LUA_GAUGE2_TEST_VALUE);
|
||||||
|
constexpr float AUX_TEMP1_TEST_VALUE = 42.7f;
|
||||||
|
Sensor::setMockValue(SensorType::AuxTemp1, AUX_TEMP1_TEST_VALUE);
|
||||||
|
constexpr float AUX_TEMP2_TEST_VALUE = 42.8f;
|
||||||
|
Sensor::setMockValue(SensorType::AuxTemp2, AUX_TEMP2_TEST_VALUE);
|
||||||
|
constexpr float ACCELERATOR_PEDAL_TEST_VALUE = 42.9f;
|
||||||
|
Sensor::setMockValue(SensorType::AcceleratorPedal, ACCELERATOR_PEDAL_TEST_VALUE);
|
||||||
|
constexpr float BATTERY_VOLTAGE_TEST_VALUE = 43.0f;
|
||||||
|
Sensor::setMockValue(SensorType::BatteryVoltage, BATTERY_VOLTAGE_TEST_VALUE);
|
||||||
|
constexpr float FUEL_ETANOL_PERCENT_TEST_VALUE = 43.1f;
|
||||||
|
Sensor::setMockValue(SensorType::FuelEthanolPercent, FUEL_ETANOL_PERCENT_TEST_VALUE);
|
||||||
|
constexpr float AUX_LINEAR1_TEST_VALUE = 43.2f;
|
||||||
|
Sensor::setMockValue(SensorType::AuxLinear1, AUX_LINEAR1_TEST_VALUE);
|
||||||
|
constexpr float AUX_LINEAR2_TEST_VALUE = 43.3f;
|
||||||
|
Sensor::setMockValue(SensorType::AuxLinear2, AUX_LINEAR2_TEST_VALUE);
|
||||||
|
|
||||||
|
// need to investigate why the following mocked sensors cause
|
||||||
|
// ../firmware/controllers/actuators/boost_control.cpp:127:95: runtime error: index 44 out of bounds for type 'scaled_channel [10]'
|
||||||
|
/*
|
||||||
|
constexpr float DETECTED_GEAR_TEST_VALUE = 43.4f;
|
||||||
|
Sensor::setMockValue(SensorType::DetectedGear, DETECTED_GEAR_TEST_VALUE);
|
||||||
|
constexpr float BAROMETRIC_PRESSURE_TEST_VALUE = 43.5f;
|
||||||
|
Sensor::setMockValue(SensorType::BarometricPressure, BAROMETRIC_PRESSURE_TEST_VALUE);
|
||||||
|
constexpr float EGT1_TEST_VALUE = 43.6f;
|
||||||
|
Sensor::setMockValue(SensorType::EGT1, EGT1_TEST_VALUE);
|
||||||
|
constexpr float EGT2_TEST_VALUE = 43.7f;
|
||||||
|
Sensor::setMockValue(SensorType::EGT2, EGT2_TEST_VALUE);
|
||||||
|
*/
|
||||||
|
|
||||||
|
EXPECT_EQ(engineConfiguration->boostOpenLoopYAxis, gppwm_channel_e::GPPWM_Tps); // default value
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), TPS1_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_Zero;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), 0.0f);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_Rpm;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), RPM_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_Tps;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), TPS1_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_Map;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), MAP_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_Clt;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), CLT_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_Iat;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), IAT_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_LuaGauge1;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), LUA_GAUGE1_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_LuaGauge2;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), LUA_GAUGE2_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_FuelLoad;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), engine->engineState.fuelingLoad);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_IgnLoad;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), engine->engineState.ignitionLoad);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_AuxTemp1;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), AUX_TEMP1_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_AuxTemp2;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), AUX_TEMP2_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_AccelPedal;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), ACCELERATOR_PEDAL_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_Vbatt;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), BATTERY_VOLTAGE_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_VVT_1I;
|
||||||
|
EXPECT_FLOAT_EQ(
|
||||||
|
bc.getOpenLoop(0).value_or(-1),
|
||||||
|
engine->triggerCentral.getVVTPosition(/*bankIndex*/0, /*camIndex*/0)
|
||||||
|
);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_VVT_1E;
|
||||||
|
EXPECT_FLOAT_EQ(
|
||||||
|
bc.getOpenLoop(0).value_or(-1),
|
||||||
|
engine->triggerCentral.getVVTPosition(/*bankIndex*/0, /*camIndex*/1)
|
||||||
|
);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_VVT_2I;
|
||||||
|
EXPECT_FLOAT_EQ(
|
||||||
|
bc.getOpenLoop(0).value_or(-1),
|
||||||
|
engine->triggerCentral.getVVTPosition(/*bankIndex*/1, /*camIndex*/0)
|
||||||
|
);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_VVT_2E;
|
||||||
|
EXPECT_FLOAT_EQ(
|
||||||
|
bc.getOpenLoop(0).value_or(-1),
|
||||||
|
engine->triggerCentral.getVVTPosition(/*bankIndex*/1, /*camIndex*/1)
|
||||||
|
);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_EthanolPercent;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), FUEL_ETANOL_PERCENT_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_AuxLinear1;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), AUX_LINEAR1_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_AuxLinear2;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), AUX_LINEAR2_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_GppwmOutput1;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), (float)engine->outputChannels.gppwmOutput[0]);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_GppwmOutput2;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), (float)engine->outputChannels.gppwmOutput[1]);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_GppwmOutput3;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), (float)engine->outputChannels.gppwmOutput[2]);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_GppwmOutput4;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), (float)engine->outputChannels.gppwmOutput[3]);
|
||||||
|
|
||||||
|
/*
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_DetectedGear;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), DETECTED_GEAR_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_BaroPressure;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), BAROMETRIC_PRESSURE_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_Egt1;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), EGT1_TEST_VALUE);
|
||||||
|
|
||||||
|
engineConfiguration->boostOpenLoopYAxis = GPPWM_Egt2;
|
||||||
|
EXPECT_FLOAT_EQ(bc.getOpenLoop(0).value_or(-1), EGT2_TEST_VALUE);
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
TEST(BoostControl, TestClosedLoop) {
|
TEST(BoostControl, TestClosedLoop) {
|
||||||
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
|
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue