mirror of https://github.com/rusefi/rusefi-1.git
yet more tps consumers (#1258)
* advance_map * tests * unneeded * idle * use driver intent instead * and obd and lcd * engine load * ve lookup * unused * oops we needed that * oops needed that too * mocking * test mocks * oops * helps to use the right sensor * and cylinder cleanup * fuel math * typo * old tests * kill dead stuff * cleanup * more * fix * test * s * fix signature * fix test * comment * priming pulse * remove mock tps * remove more dead Co-authored-by: Matthew Kennedy <makenne@microsoft.com>
This commit is contained in:
parent
3186741ddc
commit
7d5df29fbd
|
@ -311,7 +311,7 @@ static void showEthInfo(void) {
|
||||||
scheduleMsg(&logger, "etbAutoTune=%d",
|
scheduleMsg(&logger, "etbAutoTune=%d",
|
||||||
engine->etbAutoTune);
|
engine->etbAutoTune);
|
||||||
|
|
||||||
scheduleMsg(&logger, "TPS=%.2f", getTPS(PASS_ENGINE_PARAMETER_SIGNATURE));
|
scheduleMsg(&logger, "TPS=%.2f", Sensor::get(SensorType::Tps1).value_or(0));
|
||||||
|
|
||||||
|
|
||||||
scheduleMsg(&logger, "etbControlPin1=%s duty=%.2f freq=%d",
|
scheduleMsg(&logger, "etbControlPin1=%s duty=%.2f freq=%d",
|
||||||
|
@ -549,7 +549,7 @@ void doInitElectronicThrottle(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
engine->etbActualCount = hasSecondThrottleBody(PASS_ENGINE_PARAMETER_SIGNATURE) ? 2 : 1;
|
engine->etbActualCount = Sensor::hasSensor(SensorType::Tps2) ? 2 : 1;
|
||||||
|
|
||||||
for (int i = 0 ; i < engine->etbActualCount; i++) {
|
for (int i = 0 ; i < engine->etbActualCount; i++) {
|
||||||
auto motor = initDcMotor(i PASS_ENGINE_PARAMETER_SUFFIX);
|
auto motor = initDcMotor(i PASS_ENGINE_PARAMETER_SUFFIX);
|
||||||
|
|
|
@ -285,8 +285,7 @@ void AccelEnrichment::onNewValue(float currentValue DECLARE_ENGINE_PARAMETER_SUF
|
||||||
}
|
}
|
||||||
|
|
||||||
void TpsAccelEnrichment::onEngineCycleTps(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
void TpsAccelEnrichment::onEngineCycleTps(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
||||||
// we update values in handleFuel() directly
|
// we update values in handleFuel() directly by calling onNewValue()
|
||||||
//onNewValue(getTPS(PASS_ENGINE_PARAMETER_SIGNATURE) PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
|
|
||||||
onUpdateInvocationCounter++;
|
onUpdateInvocationCounter++;
|
||||||
|
|
||||||
|
|
|
@ -106,9 +106,6 @@ public:
|
||||||
|
|
||||||
#if !EFI_PROD_CODE
|
#if !EFI_PROD_CODE
|
||||||
float mockMapValue = 0;
|
float mockMapValue = 0;
|
||||||
// for historical reasons we have options to mock TPS on different layers :(
|
|
||||||
int mockTpsAdcValue = 0;
|
|
||||||
float mockTpsValue = NAN;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int getGlobalConfigurationVersion(void) const;
|
int getGlobalConfigurationVersion(void) const;
|
||||||
|
|
|
@ -350,7 +350,11 @@ float getFuelCutOffCorrection(efitick_t nowNt, int rpm DECLARE_ENGINE_PARAMETER_
|
||||||
|
|
||||||
// coasting fuel cut-off correction
|
// coasting fuel cut-off correction
|
||||||
if (CONFIG(coastingFuelCutEnabled)) {
|
if (CONFIG(coastingFuelCutEnabled)) {
|
||||||
percent_t tpsPos = getTPS(PASS_ENGINE_PARAMETER_SIGNATURE);
|
auto [valid, tpsPos] = Sensor::get(SensorType::Tps1);
|
||||||
|
if (!valid) {
|
||||||
|
return 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
float map = getMap(PASS_ENGINE_PARAMETER_SIGNATURE);
|
float map = getMap(PASS_ENGINE_PARAMETER_SIGNATURE);
|
||||||
|
|
||||||
// gather events
|
// gather events
|
||||||
|
|
|
@ -26,8 +26,6 @@ void setMockVoltage(int hwChannel, float voltage DECLARE_ENGINE_PARAMETER_SUFFIX
|
||||||
|
|
||||||
void setMockVBattVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX);
|
void setMockVBattVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||||
void setMockMapVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX);
|
void setMockMapVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||||
// throttle body sensor
|
|
||||||
void setMockThrottlePositionSensorVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
void setMockAfrVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX);
|
void setMockAfrVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||||
void setMockMafVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX);
|
void setMockMafVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||||
void setMockIatVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX);
|
void setMockIatVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX);
|
||||||
|
|
|
@ -51,10 +51,6 @@ void setMockAfrVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
setMockVoltage(engineConfiguration->afr.hwChannel, voltage PASS_ENGINE_PARAMETER_SUFFIX);
|
setMockVoltage(engineConfiguration->afr.hwChannel, voltage PASS_ENGINE_PARAMETER_SUFFIX);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setMockThrottlePositionSensorVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
|
||||||
setMockVoltage(engineConfiguration->tps1_1AdcChannel, voltage PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
}
|
|
||||||
|
|
||||||
void setMockMapVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
void setMockMapVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
setMockVoltage(engineConfiguration->map.sensor.hwChannel, voltage PASS_ENGINE_PARAMETER_SUFFIX);
|
setMockVoltage(engineConfiguration->map.sensor.hwChannel, voltage PASS_ENGINE_PARAMETER_SUFFIX);
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
#include "event_queue.h"
|
#include "event_queue.h"
|
||||||
#include "engine.h"
|
#include "engine.h"
|
||||||
#include "perf_trace.h"
|
#include "perf_trace.h"
|
||||||
|
#include "sensor.h"
|
||||||
|
|
||||||
#include "backup_ram.h"
|
#include "backup_ram.h"
|
||||||
|
|
||||||
|
@ -276,7 +277,7 @@ static void fuelClosedLoopCorrection(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
||||||
#if ! EFI_UNIT_TEST
|
#if ! EFI_UNIT_TEST
|
||||||
if (GET_RPM_VALUE < CONFIG(fuelClosedLoopRpmThreshold) ||
|
if (GET_RPM_VALUE < CONFIG(fuelClosedLoopRpmThreshold) ||
|
||||||
getCoolantTemperature() < CONFIG(fuelClosedLoopCltThreshold) ||
|
getCoolantTemperature() < CONFIG(fuelClosedLoopCltThreshold) ||
|
||||||
getTPS(PASS_ENGINE_PARAMETER_SIGNATURE) > CONFIG(fuelClosedLoopTpsThreshold) ||
|
Sensor::get(SensorType::Tps1).value_or(100) > CONFIG(fuelClosedLoopTpsThreshold) ||
|
||||||
ENGINE(sensors.currentAfr) < CONFIG(fuelClosedLoopAfrLowThreshold) ||
|
ENGINE(sensors.currentAfr) < CONFIG(fuelClosedLoopAfrLowThreshold) ||
|
||||||
ENGINE(sensors.currentAfr) > engineConfiguration->fuelClosedLoopAfrHighThreshold) {
|
ENGINE(sensors.currentAfr) > engineConfiguration->fuelClosedLoopAfrHighThreshold) {
|
||||||
engine->engineState.running.pidCorrection = 0;
|
engine->engineState.running.pidCorrection = 0;
|
||||||
|
@ -323,7 +324,7 @@ static ALWAYS_INLINE void handleFuel(const bool limitedFuel, uint32_t trgEventIn
|
||||||
scheduleMsg(logger, "handleFuel ind=%d %d", trgEventIndex, getRevolutionCounter());
|
scheduleMsg(logger, "handleFuel ind=%d %d", trgEventIndex, getRevolutionCounter());
|
||||||
#endif /* FUEL_MATH_EXTREME_LOGGING */
|
#endif /* FUEL_MATH_EXTREME_LOGGING */
|
||||||
|
|
||||||
ENGINE(tpsAccelEnrichment.onNewValue(getTPS(PASS_ENGINE_PARAMETER_SIGNATURE) PASS_ENGINE_PARAMETER_SUFFIX));
|
ENGINE(tpsAccelEnrichment.onNewValue(Sensor::get(SensorType::Tps1).value_or(0) PASS_ENGINE_PARAMETER_SUFFIX));
|
||||||
if (trgEventIndex == 0) {
|
if (trgEventIndex == 0) {
|
||||||
ENGINE(tpsAccelEnrichment.onEngineCycleTps(PASS_ENGINE_PARAMETER_SIGNATURE));
|
ENGINE(tpsAccelEnrichment.onEngineCycleTps(PASS_ENGINE_PARAMETER_SIGNATURE));
|
||||||
ENGINE(engineLoadAccelEnrichment.onEngineCycle(PASS_ENGINE_PARAMETER_SIGNATURE));
|
ENGINE(engineLoadAccelEnrichment.onEngineCycle(PASS_ENGINE_PARAMETER_SIGNATURE));
|
||||||
|
@ -453,7 +454,7 @@ static void mainTriggerCallback(trigger_event_e ckpSignalType, uint32_t trgEvent
|
||||||
static bool isPrimeInjectionPulseSkipped(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
static bool isPrimeInjectionPulseSkipped(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
||||||
if (!engine->rpmCalculator.isStopped(PASS_ENGINE_PARAMETER_SIGNATURE))
|
if (!engine->rpmCalculator.isStopped(PASS_ENGINE_PARAMETER_SIGNATURE))
|
||||||
return true;
|
return true;
|
||||||
return CONFIG(isCylinderCleanupEnabled) && (getTPS(PASS_ENGINE_PARAMETER_SIGNATURE) > CLEANUP_MODE_TPS);
|
return CONFIG(isCylinderCleanupEnabled) && (Sensor::get(SensorType::Tps1).value_or(0) > CLEANUP_MODE_TPS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -11,63 +11,11 @@
|
||||||
|
|
||||||
EXTERN_ENGINE;
|
EXTERN_ENGINE;
|
||||||
|
|
||||||
#if !EFI_PROD_CODE
|
|
||||||
/**
|
|
||||||
* this allows unit tests to simulate TPS position
|
|
||||||
*/
|
|
||||||
void setMockTpsAdc(percent_t tpsPosition DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
|
||||||
engine->mockTpsAdcValue = tpsPosition;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setMockTpsValue(percent_t tpsPosition DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
|
||||||
engine->mockTpsValue = tpsPosition;
|
|
||||||
}
|
|
||||||
#endif /* EFI_PROD_CODE */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* We are using one instance for read and another for modification, this is how we get lock-free thread-safety
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
static tps_roc_s states[2];
|
|
||||||
|
|
||||||
// todo if TPS_FAST_ADC
|
|
||||||
//int tpsFastAdc = 0;
|
|
||||||
|
|
||||||
static volatile int tpsRocIndex = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* this method is lock-free thread-safe if invoked only from one thread
|
|
||||||
*/
|
|
||||||
void saveTpsState(efitimeus_t now, float curValue) {
|
|
||||||
int tpsNextIndex = (tpsRocIndex + 1) % 2;
|
|
||||||
tps_roc_s *cur = &states[tpsRocIndex];
|
|
||||||
tps_roc_s *next = &states[tpsNextIndex];
|
|
||||||
|
|
||||||
next->prevTime = cur->curTime;
|
|
||||||
next->prevValue = cur->curValue;
|
|
||||||
next->curTime = now;
|
|
||||||
next->curValue = curValue;
|
|
||||||
|
|
||||||
//int diffSysticks = overflowDiff(now, cur->curTime);
|
|
||||||
float diffSeconds = 0;// TODO: do we need this? diffSysticks * 1.0 / CH_FREQUENCY;
|
|
||||||
next->rateOfChange = (curValue - cur->curValue) / diffSeconds;
|
|
||||||
|
|
||||||
// here we update volatile index
|
|
||||||
tpsRocIndex = tpsNextIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* this read-only method is lock-free thread-safe
|
|
||||||
*/
|
|
||||||
float getTpsRateOfChange(void) {
|
|
||||||
return states[tpsRocIndex].rateOfChange;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return current TPS position based on configured ADC levels, and adc
|
* Return current TPS position based on configured ADC levels, and adc
|
||||||
*
|
*
|
||||||
* */
|
* */
|
||||||
percent_t getTpsValue(int index, float adc DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
static percent_t getTpsValue(int index, float adc DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
|
|
||||||
DISPLAY_STATE(Engine)
|
DISPLAY_STATE(Engine)
|
||||||
DISPLAY_TAG(TPS_SECTION);
|
DISPLAY_TAG(TPS_SECTION);
|
||||||
|
@ -132,11 +80,6 @@ percent_t getTpsValue(int index, float adc DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
* @param index [0, ETB_COUNT)
|
* @param index [0, ETB_COUNT)
|
||||||
*/
|
*/
|
||||||
static float getTPS10bitAdc(int index DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
static float getTPS10bitAdc(int index DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
#if !EFI_PROD_CODE
|
|
||||||
if (engine->mockTpsAdcValue != MOCK_UNDEFINED) {
|
|
||||||
return engine->mockTpsAdcValue;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (engineConfiguration->tps1_1AdcChannel == EFI_ADC_NONE)
|
if (engineConfiguration->tps1_1AdcChannel == EFI_ADC_NONE)
|
||||||
return -1;
|
return -1;
|
||||||
#if EFI_PROD_CODE
|
#if EFI_PROD_CODE
|
||||||
|
@ -195,34 +138,16 @@ static percent_t getPrimaryRawTPS(int index DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
||||||
|
|
||||||
#define NO_TPS_MAGIC_VALUE 66.611
|
#define NO_TPS_MAGIC_VALUE 66.611
|
||||||
|
|
||||||
bool hasSecondThrottleBody(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
|
||||||
return engineConfiguration->tps2_1AdcChannel != EFI_ADC_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool hasTpsSensor(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
static bool hasTpsSensor(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
||||||
return engineConfiguration->tps1_1AdcChannel != EFI_ADC_NONE;
|
return engineConfiguration->tps1_1AdcChannel != EFI_ADC_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
percent_t getTPSWithIndex(int index DECLARE_ENGINE_PARAMETER_SUFFIX) {
|
percent_t getTPS(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
||||||
#if !EFI_PROD_CODE
|
|
||||||
if (!cisnan(engine->mockTpsValue)) {
|
|
||||||
return engine->mockTpsValue;
|
|
||||||
}
|
|
||||||
#endif /* EFI_PROD_CODE */
|
|
||||||
if (!hasTpsSensor(PASS_ENGINE_PARAMETER_SIGNATURE))
|
if (!hasTpsSensor(PASS_ENGINE_PARAMETER_SIGNATURE))
|
||||||
return NO_TPS_MAGIC_VALUE;
|
return NO_TPS_MAGIC_VALUE;
|
||||||
// todo: if (config->isDualTps)
|
// todo: if (config->isDualTps)
|
||||||
// todo: blah blah
|
// todo: blah blah
|
||||||
// todo: if two TPS do not match - show OBD code via malfunction_central.c
|
// todo: if two TPS do not match - show OBD code via malfunction_central.c
|
||||||
|
|
||||||
return getPrimaryRawTPS(index PASS_ENGINE_PARAMETER_SUFFIX);
|
return getPrimaryRawTPS(0 PASS_ENGINE_PARAMETER_SUFFIX);
|
||||||
}
|
|
||||||
|
|
||||||
percent_t getTPS(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
|
|
||||||
return getTPSWithIndex(0 PASS_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
}
|
|
||||||
|
|
||||||
int convertVoltageTo10bitADC(float voltage) {
|
|
||||||
// divided by 2 because of voltage divider, then converted into 10bit ADC value (TunerStudio format)
|
|
||||||
return (int) (voltage * TPS_TS_CONVERSION);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,29 +21,12 @@
|
||||||
* @return Current TPS position, percent of WOT. 0 means idle and 100 means Wide Open Throttle
|
* @return Current TPS position, percent of WOT. 0 means idle and 100 means Wide Open Throttle
|
||||||
*/
|
*/
|
||||||
percent_t getTPS(DECLARE_ENGINE_PARAMETER_SIGNATURE);
|
percent_t getTPS(DECLARE_ENGINE_PARAMETER_SIGNATURE);
|
||||||
percent_t getTPSWithIndex(int index DECLARE_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
int convertVoltageTo10bitADC(float voltage);
|
constexpr inline int convertVoltageTo10bitADC(float voltage) {
|
||||||
bool hasSecondThrottleBody(DECLARE_ENGINE_PARAMETER_SIGNATURE);
|
return (int) (voltage * TPS_TS_CONVERSION);
|
||||||
percent_t getTpsValue(int index, float adc DECLARE_ENGINE_PARAMETER_SUFFIX);
|
}
|
||||||
void setMockTpsAdc(percent_t tpsPosition DECLARE_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
void setMockTpsValue(percent_t tpsPosition DECLARE_ENGINE_PARAMETER_SUFFIX);
|
|
||||||
void grabTPSIsClosed();
|
void grabTPSIsClosed();
|
||||||
void grabTPSIsWideOpen();
|
void grabTPSIsWideOpen();
|
||||||
void grabPedalIsUp();
|
void grabPedalIsUp();
|
||||||
void grabPedalIsWideOpen();
|
void grabPedalIsWideOpen();
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
efitimeus_t prevTime;
|
|
||||||
// value 0-100%
|
|
||||||
float prevValue;
|
|
||||||
efitimeus_t curTime;
|
|
||||||
// value 0-100%
|
|
||||||
float curValue;
|
|
||||||
// % per second
|
|
||||||
float rateOfChange;
|
|
||||||
} tps_roc_s;
|
|
||||||
|
|
||||||
//void saveTpsState(efitimeus_t now, float curValue);
|
|
||||||
float getTpsRateOfChange(void);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -408,7 +408,7 @@ static void printTpsSenser(const char *msg, SensorType sensor, int16_t min, int1
|
||||||
raw, getPinNameByAdcChannel(msg, channel, pinNameBuffer));
|
raw, getPinNameByAdcChannel(msg, channel, pinNameBuffer));
|
||||||
|
|
||||||
|
|
||||||
scheduleMsg(&logger, "current 10bit=%d value=%.2f rate=%.2f", convertVoltageTo10bitADC(raw), tps.Value, getTpsRateOfChange());
|
scheduleMsg(&logger, "current 10bit=%d value=%.2f", convertVoltageTo10bitADC(raw), tps.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void printTPSInfo(void) {
|
void printTPSInfo(void) {
|
||||||
|
@ -1174,7 +1174,6 @@ const command_f_s commandsF[] = {
|
||||||
#if EFI_ENGINE_CONTROL
|
#if EFI_ENGINE_CONTROL
|
||||||
#if EFI_ENABLE_MOCK_ADC
|
#if EFI_ENABLE_MOCK_ADC
|
||||||
{MOCK_IAT_COMMAND, setMockIatVoltage},
|
{MOCK_IAT_COMMAND, setMockIatVoltage},
|
||||||
{MOCK_TPS_COMMAND, setMockThrottlePositionSensorVoltage},
|
|
||||||
{MOCK_MAF_COMMAND, setMockMafVoltage},
|
{MOCK_MAF_COMMAND, setMockMafVoltage},
|
||||||
{MOCK_AFR_COMMAND, setMockAfrVoltage},
|
{MOCK_AFR_COMMAND, setMockAfrVoltage},
|
||||||
{MOCK_MAP_COMMAND, setMockMapVoltage},
|
{MOCK_MAP_COMMAND, setMockMapVoltage},
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
#include "engine_test_helper.h"
|
#include "engine_test_helper.h"
|
||||||
#include "accel_enrichment.h"
|
#include "accel_enrichment.h"
|
||||||
#include "tps.h"
|
#include "sensor.h"
|
||||||
|
|
||||||
TEST(fuel, testTpsAccelEnrichmentMath) {
|
TEST(fuel, testTpsAccelEnrichmentMath) {
|
||||||
printf("====================================================================================== testAccelEnrichment\r\n");
|
printf("====================================================================================== testAccelEnrichment\r\n");
|
||||||
|
@ -47,14 +47,14 @@ TEST(fuel, testTpsAccelEnrichmentScheduling) {
|
||||||
|
|
||||||
eth.setTriggerType(TT_ONE PASS_ENGINE_PARAMETER_SUFFIX);
|
eth.setTriggerType(TT_ONE PASS_ENGINE_PARAMETER_SUFFIX);
|
||||||
|
|
||||||
setMockTpsValue(7 PASS_ENGINE_PARAMETER_SUFFIX);
|
Sensor::setMockValue(SensorType::Tps1, 7);
|
||||||
|
|
||||||
eth.fireTriggerEvents2(/* count */ 5, 25 /* ms */);
|
eth.fireTriggerEvents2(/* count */ 5, 25 /* ms */);
|
||||||
ASSERT_EQ( 1200, GET_RPM()) << "RPM";
|
ASSERT_EQ( 1200, GET_RPM()) << "RPM";
|
||||||
int expectedInvocationCounter = 1;
|
int expectedInvocationCounter = 1;
|
||||||
ASSERT_EQ(expectedInvocationCounter, ENGINE(tpsAccelEnrichment).onUpdateInvocationCounter);
|
ASSERT_EQ(expectedInvocationCounter, ENGINE(tpsAccelEnrichment).onUpdateInvocationCounter);
|
||||||
|
|
||||||
setMockTpsValue(70 PASS_ENGINE_PARAMETER_SUFFIX);
|
Sensor::setMockValue(SensorType::Tps1, 70);
|
||||||
eth.fireTriggerEvents2(/* count */ 1, 25 /* ms */);
|
eth.fireTriggerEvents2(/* count */ 1, 25 /* ms */);
|
||||||
|
|
||||||
float expectedAEValue = 29.2;
|
float expectedAEValue = 29.2;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include "engine_math.h"
|
#include "engine_math.h"
|
||||||
#include "engine_test_helper.h"
|
#include "engine_test_helper.h"
|
||||||
#include "event_queue.h"
|
#include "event_queue.h"
|
||||||
#include "tps.h"
|
#include "sensor.h"
|
||||||
#include "fsio_impl.h"
|
#include "fsio_impl.h"
|
||||||
|
|
||||||
TEST(fuelCut, coasting) {
|
TEST(fuelCut, coasting) {
|
||||||
|
@ -25,9 +25,6 @@ TEST(fuelCut, coasting) {
|
||||||
engineConfiguration->coastingFuelCutMap = 100;
|
engineConfiguration->coastingFuelCutMap = 100;
|
||||||
// set cranking threshold
|
// set cranking threshold
|
||||||
engineConfiguration->cranking.rpm = 999;
|
engineConfiguration->cranking.rpm = 999;
|
||||||
// configure TPS
|
|
||||||
engineConfiguration->tpsMin = 0;
|
|
||||||
engineConfiguration->tpsMax = 10;
|
|
||||||
|
|
||||||
// basic engine setup
|
// basic engine setup
|
||||||
setupSimpleTestEngineWithMafAndTT_ONE_trigger(ð);
|
setupSimpleTestEngineWithMafAndTT_ONE_trigger(ð);
|
||||||
|
@ -35,7 +32,7 @@ TEST(fuelCut, coasting) {
|
||||||
// mock CLT - just above threshold ('hot engine')
|
// mock CLT - just above threshold ('hot engine')
|
||||||
float hotClt = engine->sensors.clt = engineConfiguration->coastingFuelCutClt + 1;
|
float hotClt = engine->sensors.clt = engineConfiguration->coastingFuelCutClt + 1;
|
||||||
// mock TPS - throttle is opened
|
// mock TPS - throttle is opened
|
||||||
setMockTpsAdc(6 PASS_ENGINE_PARAMETER_SUFFIX);
|
Sensor::setMockValue(SensorType::Tps1, 60);
|
||||||
// set 'running' RPM - just above RpmHigh threshold
|
// set 'running' RPM - just above RpmHigh threshold
|
||||||
engine->rpmCalculator.mockRpm = engineConfiguration->coastingFuelCutRpmHigh + 1;
|
engine->rpmCalculator.mockRpm = engineConfiguration->coastingFuelCutRpmHigh + 1;
|
||||||
// 'advance' time (amount doesn't matter)
|
// 'advance' time (amount doesn't matter)
|
||||||
|
@ -53,7 +50,7 @@ TEST(fuelCut, coasting) {
|
||||||
assertEqualsM("inj dur#1 norm", normalInjDuration, ENGINE(injectionDuration));
|
assertEqualsM("inj dur#1 norm", normalInjDuration, ENGINE(injectionDuration));
|
||||||
|
|
||||||
// 'releasing' the throttle
|
// 'releasing' the throttle
|
||||||
setMockTpsAdc(0 PASS_ENGINE_PARAMETER_SUFFIX);
|
Sensor::setMockValue(SensorType::Tps1, 0);
|
||||||
eth.engine.periodicFastCallback(PASS_ENGINE_PARAMETER_SIGNATURE);
|
eth.engine.periodicFastCallback(PASS_ENGINE_PARAMETER_SIGNATURE);
|
||||||
|
|
||||||
// Fuel cut-off is enabled now
|
// Fuel cut-off is enabled now
|
||||||
|
|
|
@ -10,8 +10,6 @@
|
||||||
#include "allsensors.h"
|
#include "allsensors.h"
|
||||||
#include "engine_test_helper.h"
|
#include "engine_test_helper.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TEST(sensors, mapDecoding) {
|
TEST(sensors, mapDecoding) {
|
||||||
WITH_ENGINE_TEST_HELPER(FORD_INLINE_6_1995);
|
WITH_ENGINE_TEST_HELPER(FORD_INLINE_6_1995);
|
||||||
|
|
||||||
|
@ -26,35 +24,6 @@ TEST(sensors, mapDecoding) {
|
||||||
ASSERT_FLOAT_EQ(58.4, decodePressure(1, &s PASS_ENGINE_PARAMETER_SUFFIX));
|
ASSERT_FLOAT_EQ(58.4, decodePressure(1, &s PASS_ENGINE_PARAMETER_SUFFIX));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(sensors, tps) {
|
|
||||||
print("************************************************** testTps\r\n");
|
|
||||||
|
|
||||||
WITH_ENGINE_TEST_HELPER(DODGE_RAM);
|
|
||||||
|
|
||||||
engineConfiguration->tpsMax = 193;
|
|
||||||
engineConfiguration->tpsMin = 43;
|
|
||||||
|
|
||||||
ASSERT_NEAR(49.3333, getTpsValue(0, 117 PASS_ENGINE_PARAMETER_SUFFIX), EPS4D);
|
|
||||||
|
|
||||||
|
|
||||||
engineConfiguration->tpsMax = 43;
|
|
||||||
engineConfiguration->tpsMin = 193;
|
|
||||||
assertEqualsM("test#2", 50.6667, getTpsValue(0, 117 PASS_ENGINE_PARAMETER_SUFFIX));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(sensors, testTpsRateOfChange) {
|
|
||||||
print("************************************************** testTpsRateOfChange\r\n");
|
|
||||||
// saveTpsState(0, 0);
|
|
||||||
// saveTpsState(CH_FREQUENCY, 50);
|
|
||||||
// assertEquals(50, getTpsRateOfChange());
|
|
||||||
//
|
|
||||||
// saveTpsState(2 * CH_FREQUENCY, 50);
|
|
||||||
// assertEquals(0, getTpsRateOfChange());
|
|
||||||
//
|
|
||||||
// saveTpsState(3 * CH_FREQUENCY, 75);
|
|
||||||
// assertEquals(25, getTpsRateOfChange());
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(sensors, Thermistor1) {
|
TEST(sensors, Thermistor1) {
|
||||||
|
|
||||||
ThermistorMath tm;
|
ThermistorMath tm;
|
||||||
|
|
Loading…
Reference in New Issue