mirror of https://github.com/FOME-Tech/fome-fw.git
trigger refactoring: instance RPM #4740
This commit is contained in:
parent
153a454472
commit
65f5c00616
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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++) {
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -55,6 +55,8 @@ public:
|
|||
void validateCamVvtCounters();
|
||||
void updateWaveform();
|
||||
|
||||
InstantRpmCalculator instantRpm;
|
||||
|
||||
void prepareTriggerShape() {
|
||||
#if EFI_ENGINE_CONTROL && EFI_SHAFT_POSITION_INPUT
|
||||
if (triggerShape.shapeDefinitionError) {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue