mirror of https://github.com/rusefi/rusefi-1.git
27 lines
781 B
C++
27 lines
781 B
C++
#include "pch.h"
|
|
|
|
void IgnitionController::onSlowCallback() {
|
|
// default to 0 if failed sensor to prevent accidental ign-on if battery
|
|
// input misconfigured (or the ADC hasn't started yet)
|
|
auto hasIgnVoltage = Sensor::get(SensorType::BatteryVoltage).value_or(0) > 5;
|
|
|
|
if (hasIgnVoltage) {
|
|
m_timeSinceIgnVoltage.reset();
|
|
}
|
|
|
|
if (hasIgnVoltage == m_lastState) {
|
|
// nothing to do, states match
|
|
return;
|
|
}
|
|
|
|
// Ignore low voltage transients - we may see this at the start of cranking
|
|
// and we don't want to
|
|
if (!hasIgnVoltage && !m_timeSinceIgnVoltage.hasElapsedSec(0.2f)) {
|
|
return;
|
|
}
|
|
|
|
// Store state and notify other modules of the change
|
|
m_lastState = hasIgnVoltage;
|
|
engine->engineModules.apply_all([&](auto& m) { m.onIgnitionStateChanged(hasIgnVoltage); });
|
|
}
|