rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Attributes
IgnitionController Class Reference

#include <ignition_controller.h>

Inheritance diagram for IgnitionController:
Inheritance graph
[legend]
Collaboration diagram for IgnitionController:
Collaboration graph
[legend]

Public Types

using interface_t = IgnitionController
 

Public Member Functions

void onSlowCallback () override
 
virtual bool getIgnState () const
 
float secondsSinceIgnVoltage ()
 
- Public Member Functions inherited from EngineModule
virtual void initNoConfiguration ()
 
virtual void setDefaultConfiguration ()
 
virtual void onConfigurationChange (engine_configuration_s const *)
 
virtual void onFastCallback ()
 
virtual void onEngineStop ()
 
virtual void onIgnitionStateChanged (bool)
 
virtual bool needsDelayedShutoff ()
 
virtual void onEnginePhase (float, efitick_t, angle_t, angle_t)
 

Private Attributes

Timer m_timeSinceIgnVoltage
 
bool m_lastState = false
 

Detailed Description

Definition at line 9 of file ignition_controller.h.

Member Typedef Documentation

◆ interface_t

Definition at line 11 of file ignition_controller.h.

Member Function Documentation

◆ getIgnState()

virtual bool IgnitionController::getIgnState ( ) const
inlinevirtual

Definition at line 15 of file ignition_controller.h.

15 {
16 return m_lastState;
17 }

Referenced by EtbController::checkJam().

Here is the caller graph for this function:

◆ onSlowCallback()

void IgnitionController::onSlowCallback ( )
overridevirtual

Reimplemented from EngineModule.

Definition at line 23 of file ignition_controller.cpp.

23 {
24 // default to 0 if failed sensor to prevent accidental ign-on if battery
25 // input misconfigured (or the ADC hasn't started yet)
26 auto hasIgnVoltage = isIgnVoltage();
27
28 if (hasIgnVoltage) {
30 }
31
32 if (hasIgnVoltage == m_lastState) {
33 // nothing to do, states match
34 return;
35 }
36
37 // Ignore low voltage transients - we may see this at the start of cranking
38 // and we don't want to
39 if (!hasIgnVoltage && secondsSinceIgnVoltage() < 0.2f) {
40 return;
41 }
42
43 // Store state and notify other modules of the change
44 m_lastState = hasIgnVoltage;
45 engine->engineModules.apply_all([&](auto& m) { m.onIgnitionStateChanged(hasIgnVoltage); });
46}
type_list< Mockable< InjectorModelPrimary >, Mockable< InjectorModelSecondary >,#if EFI_IDLE_CONTROL Mockable< IdleController >,#endif TriggerScheduler,#if EFI_HPFP &&EFI_ENGINE_CONTROL Mockable< HpfpController >,#endif #if EFI_ENGINE_CONTROL Mockable< ThrottleModel >,#endif #if EFI_ALTERNATOR_CONTROL AlternatorController,#endif MainRelayController, Mockable< IgnitionController >, Mockable< AcController >, PrimeController, DfcoController,#if EFI_HD_ACR HarleyAcr,#endif Mockable< WallFuelController >, KnockController, SensorChecker,#if EFI_ENGINE_CONTROL Mockable< LimpManager >,#endif #if EFI_VVT_PID VvtController1, VvtController2, VvtController3, VvtController4,#endif #if EFI_BOOST_CONTROL BoostController,#endif TpsAccelEnrichment,#if EFI_LAUNCH_CONTROL NitrousController,#endif #if EFI_LTFT_CONTROL LongTermFuelTrim,#endif ShortTermFuelTrim,#include "modules_list_generated.h" EngineModule > engineModules
Definition engine.h:194
static EngineAccessor engine
Definition engine.h:413
bool isIgnVoltage()
Here is the call graph for this function:

◆ secondsSinceIgnVoltage()

float IgnitionController::secondsSinceIgnVoltage ( )
inline

Definition at line 19 of file ignition_controller.h.

19 {
20 return m_timeSinceIgnVoltage.getElapsedSeconds();
21 }

Referenced by onSlowCallback().

Here is the caller graph for this function:

Field Documentation

◆ m_lastState

bool IgnitionController::m_lastState = false
private

Definition at line 25 of file ignition_controller.h.

Referenced by getIgnState(), and onSlowCallback().

◆ m_timeSinceIgnVoltage

Timer IgnitionController::m_timeSinceIgnVoltage
private

Definition at line 24 of file ignition_controller.h.

Referenced by onSlowCallback(), and secondsSinceIgnVoltage().


The documentation for this class was generated from the following files: