mirror of https://github.com/FOME-Tech/fome-fw.git
dfco fuel cut map unit test added and passes
This commit is contained in:
parent
c85b2e0d34
commit
c6263b592c
|
@ -26,6 +26,7 @@ TEST(fuelCut, coasting) {
|
||||||
engineConfiguration->coastingFuelCutRpmHigh = 1500;
|
engineConfiguration->coastingFuelCutRpmHigh = 1500;
|
||||||
engineConfiguration->coastingFuelCutTps = 2;
|
engineConfiguration->coastingFuelCutTps = 2;
|
||||||
engineConfiguration->coastingFuelCutClt = 30;
|
engineConfiguration->coastingFuelCutClt = 30;
|
||||||
|
engineConfiguration->useTableForDfcoMap = 0;
|
||||||
engineConfiguration->coastingFuelCutMap = 100;
|
engineConfiguration->coastingFuelCutMap = 100;
|
||||||
// set cranking threshold
|
// set cranking threshold
|
||||||
engineConfiguration->cranking.rpm = 999;
|
engineConfiguration->cranking.rpm = 999;
|
||||||
|
@ -141,6 +142,7 @@ TEST(fuelCut, delay) {
|
||||||
engineConfiguration->coastingFuelCutRpmHigh = 1500;
|
engineConfiguration->coastingFuelCutRpmHigh = 1500;
|
||||||
engineConfiguration->coastingFuelCutTps = 2;
|
engineConfiguration->coastingFuelCutTps = 2;
|
||||||
engineConfiguration->coastingFuelCutClt = 30;
|
engineConfiguration->coastingFuelCutClt = 30;
|
||||||
|
engineConfiguration->useTableForDfcoMap = 0;
|
||||||
engineConfiguration->coastingFuelCutMap = 100;
|
engineConfiguration->coastingFuelCutMap = 100;
|
||||||
// set cranking threshold
|
// set cranking threshold
|
||||||
engineConfiguration->cranking.rpm = 999;
|
engineConfiguration->cranking.rpm = 999;
|
||||||
|
@ -199,3 +201,60 @@ TEST(fuelCut, delay) {
|
||||||
eth.engine.periodicFastCallback();
|
eth.engine.periodicFastCallback();
|
||||||
EXPECT_NORMAL();
|
EXPECT_NORMAL();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(fuelCut, mapTable) {
|
||||||
|
EngineTestHelper eth(engine_type_e::TEST_ENGINE);
|
||||||
|
EXPECT_CALL(*eth.mockAirmass, getAirmass(_, _))
|
||||||
|
.WillRepeatedly(Return(AirmassResult{0.1008f, 50.0f}));
|
||||||
|
|
||||||
|
// configure coastingFuelCut
|
||||||
|
engineConfiguration->coastingFuelCutEnabled = true;
|
||||||
|
engineConfiguration->coastingFuelCutRpmLow = 1300;
|
||||||
|
engineConfiguration->coastingFuelCutRpmHigh = 1500;
|
||||||
|
engineConfiguration->coastingFuelCutTps = 2;
|
||||||
|
engineConfiguration->coastingFuelCutClt = 30;
|
||||||
|
engineConfiguration->dfcoDelay = 0;
|
||||||
|
engineConfiguration->coastingFuelCutMap = 10;
|
||||||
|
// set cranking threshold
|
||||||
|
engineConfiguration->cranking.rpm = 999;
|
||||||
|
|
||||||
|
//setup MAP cutoff table
|
||||||
|
engineConfiguration->useTableForDfcoMap = 1;
|
||||||
|
copyArray(engineConfiguration->dfcoMapRpmValuesBins, { 2000, 3000, 4000, 5000 });
|
||||||
|
copyArray(engineConfiguration->dfcoMapRpmValues, { 50, 30, 20, 10 });
|
||||||
|
|
||||||
|
// basic engine setup
|
||||||
|
setupSimpleTestEngineWithMafAndTT_ONE_trigger(ð);
|
||||||
|
|
||||||
|
// set MAP above all values in the table
|
||||||
|
Sensor::setMockValue(SensorType::Map, 60);
|
||||||
|
// mock CLT - just above threshold ('hot engine')
|
||||||
|
Sensor::setMockValue(SensorType::Clt, engineConfiguration->coastingFuelCutClt + 1);
|
||||||
|
// mock TPS - throttle is opened
|
||||||
|
Sensor::setMockValue(SensorType::DriverThrottleIntent, 0);
|
||||||
|
// set 'running' RPM in the middle of two interpolation values
|
||||||
|
Sensor::setMockValue(SensorType::Rpm, 2500);
|
||||||
|
// 'advance' time (amount doesn't matter)
|
||||||
|
eth.moveTimeForwardUs(1000);
|
||||||
|
|
||||||
|
const float normalInjDuration = 1.5f;
|
||||||
|
|
||||||
|
// MAP > threshold, expect fueling
|
||||||
|
eth.engine.periodicFastCallback();
|
||||||
|
EXPECT_NORMAL();
|
||||||
|
|
||||||
|
// Drop MAP to just above the interpolated cutoff curve
|
||||||
|
Sensor::setMockValue(SensorType::Map, 41);
|
||||||
|
eth.engine.periodicFastCallback();
|
||||||
|
EXPECT_NORMAL();
|
||||||
|
|
||||||
|
// Drop MAP to just below the interpolated cutoff curve
|
||||||
|
Sensor::setMockValue(SensorType::Map, 39);
|
||||||
|
eth.engine.periodicFastCallback();
|
||||||
|
EXPECT_CUT();
|
||||||
|
|
||||||
|
// icrease RPM such that we move above the cutoff curve
|
||||||
|
Sensor::setMockValue(SensorType::Rpm, 4000);
|
||||||
|
eth.engine.periodicFastCallback();
|
||||||
|
EXPECT_NORMAL();
|
||||||
|
}
|
Loading…
Reference in New Issue