trigger refactoring: instance RPM #4740

This commit is contained in:
Andrey 2022-11-06 11:56:18 -05:00
parent 83e736b06a
commit 77a3f5d795
8 changed files with 12 additions and 16 deletions

View File

@ -668,7 +668,7 @@ void updateTunerStudioState() {
// offset 0
tsOutputChannels->RPMValue = rpm;
auto instantRpm = engine->triggerCentral.triggerState.getInstantRpm();
auto instantRpm = engine->triggerCentral.instantRpm.getInstantRpm();
tsOutputChannels->instantRpm = instantRpm;
updateSensors();

View File

@ -358,7 +358,7 @@ float IdleController::getIdlePosition(float rpm) {
}
void IdleController::onSlowCallback() {
float position = getIdlePosition(engine->triggerCentral.triggerState.getInstantRpm());
float position = getIdlePosition(engine->triggerCentral.instantRpm.getInstantRpm());
applyIACposition(position);
}

View File

@ -104,7 +104,7 @@ angle_t getAdvanceCorrections(int rpm) {
);
}
float instantRpm = engine->triggerCentral.triggerState.getInstantRpm();
float instantRpm = engine->triggerCentral.instantRpm.getInstantRpm();
engine->engineState.timingPidCorrection = engine->module<IdleController>()->getIdleTimingAdjustment(instantRpm);

View File

@ -314,7 +314,7 @@ void Engine::OnTriggerSynchronizationLost() {
rpmCalculator.setStopSpinning();
triggerCentral.triggerState.resetState();
triggerCentral.triggerState.instantRpm.resetInstantRpm();
triggerCentral.instantRpm.resetInstantRpm();
for (size_t i = 0; i < efi::size(triggerCentral.vvtState); i++) {
for (size_t j = 0; j < efi::size(triggerCentral.vvtState[0]); j++) {

View File

@ -240,12 +240,12 @@ void RpmCalculator::setSpinningUp(efitick_t nowNt) {
// Only a completely stopped and non-spinning engine can enter the spinning-up state.
if (isStopped() && !isSpinning) {
state = SPINNING_UP;
engine->triggerCentral.triggerState.instantRpm.spinningEventIndex = 0;
engine->triggerCentral.instantRpm.spinningEventIndex = 0;
isSpinning = true;
}
// update variables needed by early instant RPM calc.
if (isSpinningUp() && !engine->triggerCentral.triggerState.getShaftSynchronized()) {
engine->triggerCentral.triggerState.instantRpm.setLastEventTimeForInstantRpm(nowNt);
engine->triggerCentral.instantRpm.setLastEventTimeForInstantRpm(nowNt);
}
}
@ -298,7 +298,7 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType,
} else {
// we are here only once trigger is synchronized for the first time
// while transitioning from 'spinning' to 'running'
engine->triggerCentral.triggerState.instantRpm.movePreSynchTimestamps();
engine->triggerCentral.instantRpm.movePreSynchTimestamps();
}
rpmState->onNewEngineCycle();
@ -315,13 +315,13 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType,
#endif /* EFI_SENSOR_CHART */
// Always update instant RPM even when not spinning up
engine->triggerCentral.triggerState.instantRpm.updateInstantRpm(
engine->triggerCentral.instantRpm.updateInstantRpm(
engine->triggerCentral.triggerState.currentCycle.current_index,
engine->triggerCentral.triggerShape, &engine->triggerCentral.triggerFormDetails,
trgEventIndex, nowNt);
float instantRpm = engine->triggerCentral.triggerState.getInstantRpm();
float instantRpm = engine->triggerCentral.instantRpm.getInstantRpm();
if (alwaysInstantRpm) {
rpmState->setRpmValue(instantRpm);
} else if (rpmState->isSpinningUp()) {

View File

@ -131,7 +131,7 @@ angle_t TriggerCentral::syncAndReport(int divider, int remainder) {
if (totalShift != 0) {
// Reset instant RPM, since the engine phase has now changed, invalidating the tooth history buffer
// maybe TODO: could/should we rotate the buffer around to re-align it instead? Is that worth it?
triggerState.instantRpm.resetInstantRpm();
instantRpm.resetInstantRpm();
}
return totalShift;
}

View File

@ -55,6 +55,8 @@ public:
void validateCamVvtCounters();
void updateWaveform();
InstantRpmCalculator instantRpm;
void prepareTriggerShape() {
#if EFI_ENGINE_CONTROL && EFI_SHAFT_POSITION_INPUT
if (triggerShape.shapeDefinitionError) {

View File

@ -255,12 +255,6 @@ public:
angle_t syncEnginePhase(int divider, int remainder, angle_t engineCycle);
InstantRpmCalculator instantRpm;
float getInstantRpm() const {
return instantRpm.getInstantRpm();
}
// Returns true if syncEnginePhase has been called,
// i.e. if we have enough VVT information to have full sync on
// an indeterminite crank pattern