extract 'isCranking' parameter

only:uaefi
This commit is contained in:
rusefillc 2024-12-26 23:12:03 -05:00
parent d8607aa1af
commit 5b7023cf49
4 changed files with 16 additions and 14 deletions

View File

@ -105,9 +105,12 @@ void EngineState::periodicFastCallback() {
if (!engine->slowCallBackWasInvoked) {
warning(ObdCode::CUSTOM_SLOW_NOT_INVOKED, "Slow not invoked yet");
}
efitick_t nowNt = getTimeNowNt();
if (engine->rpmCalculator.isCranking()) {
efitick_t nowNt = getTimeNowNt();
bool isCranking = engine->rpmCalculator.isCranking();
float rpm = Sensor::getOrZero(SensorType::Rpm);
if (isCranking) {
crankingTimer.reset(nowNt);
}
@ -117,8 +120,7 @@ void EngineState::periodicFastCallback() {
recalculateAuxValveTiming();
#endif //EFI_AUX_VALVES
float rpm = Sensor::getOrZero(SensorType::Rpm);
engine->ignitionState.updateDwell(rpm);
engine->ignitionState.updateDwell(rpm, isCranking);
// todo: move this into slow callback, no reason for IAT corr to be here
engine->fuelComputer.running.intakeTemperatureCoefficient = getIatFuelCorrection();

View File

@ -282,9 +282,9 @@ void initIgnitionAdvanceControl() {
/**
* @return Spark dwell time, in milliseconds. 0 if tables are not ready.
*/
floatms_t IgnitionState::getSparkDwell(float rpm) {
floatms_t IgnitionState::getSparkDwell(float rpm, bool isCranking) {
float dwellMs;
if (engine->rpmCalculator.isCranking()) {
if (isCranking) {
dwellMs = engineConfiguration->ignitionDwellForCrankingMs;
} else {
efiAssert(ObdCode::CUSTOM_ERR_ASSERT, !std::isnan(rpm), "invalid rpm", NAN);
@ -312,8 +312,8 @@ floatms_t IgnitionState::getSparkDwell(float rpm) {
return dwellMs;
}
void IgnitionState::updateDwell(float rpm) {
sparkDwell = getSparkDwell(rpm);
void IgnitionState::updateDwell(float rpm, bool isCranking) {
sparkDwell = getSparkDwell(rpm, isCranking);
dwellDurationAngle = std::isnan(rpm) ? NAN : getDwell() / getOneDegreeTimeMs(rpm);
}

View File

@ -4,8 +4,8 @@
class IgnitionState : public ignition_state_s {
public:
void updateDwell(float rpm);
void updateDwell(float rpm, bool isCranking);
floatms_t getDwell() const;
private:
floatms_t getSparkDwell(float rpm);
floatms_t getSparkDwell(float rpm, bool isCranking);
};

View File

@ -110,7 +110,7 @@ TEST(trigger, test1995FordInline6TriggerDecoder) {
EXPECT_NEAR(ecl->elements[5].dwellAngle, 607, 1e-3);
EXPECT_NEAR(ecl->elements[5].sparkAngle, 613.0f, 1e-3);
engine->ignitionState.updateDwell(2000);
engine->ignitionState.updateDwell(2000, false);
ASSERT_FLOAT_EQ(0.5, engine->ignitionState.getDwell()) << "running dwell";
}
@ -119,7 +119,7 @@ TEST(misc, testGetCoilDutyCycleIssue977) {
float rpm = 2000;
engine->rpmCalculator.setRpmValue(rpm);
engine->ignitionState.updateDwell(rpm);
engine->ignitionState.updateDwell(rpm, false);
ASSERT_EQ( 4, engine->ignitionState.getDwell()) << "running dwell";
ASSERT_NEAR( 26.66666, getCoilDutyCycle(rpm), 0.0001);
@ -138,11 +138,11 @@ TEST(misc, testFordAspire) {
int rpm = 2000;
engine->rpmCalculator.setRpmValue(rpm);
engine->ignitionState.updateDwell(rpm);
engine->ignitionState.updateDwell(rpm, false);
ASSERT_EQ( 4, engine->ignitionState.getDwell()) << "running dwell";
engine->rpmCalculator.setRpmValue(6000);
engine->ignitionState.updateDwell(6000);
engine->ignitionState.updateDwell(6000, false);
assertEqualsM("higher rpm dwell", 3.25, engine->ignitionState.getDwell());
}