rusEFI
The most advanced open source ECU
engine_state.h
Go to the documentation of this file.
1 /**
2  * @file engine_state.h
3  * @brief One header which acts as gateway to current engine state
4  *
5  * @date Dec 20, 2013
6  * @author Andrey Belomutskiy, (c) 2012-2020
7  */
8 
9 #pragma once
10 
11 #include "global.h"
12 #include "engine_parts.h"
13 #include "engine_state_generated.h"
14 
15 class EngineState : public engine_state_s {
16 public:
17  EngineState();
18  void periodicFastCallback();
19  void updateSlowSensors();
20  void updateTChargeK(int rpm, float tps);
21 
22  void updateSparkSkip();
23 
24  /**
25  * always 360 or 720, never zero
26  */
28 
29  /**
30  * this is based on sensorChartMode and sensorSnifferRpmThreshold settings
31  */
33 
34  // Per-injection fuel mass, including TPS accel enrich
35  float injectionMass[MAX_CYLINDER_COUNT] = {0};
36  // todo: move to .txt or even better extract injection.txt?
37  float stftCorrection[STFT_BANK_COUNT] = {0};
38 
40 
42 
44 
45  // Estimated airflow based on whatever airmass model is active
46  float airflowEstimate = 0;
47 
48  float auxValveStart = 0;
49  float auxValveEnd = 0;
50 
51  /**
52  * MAP averaging angle start, in relation to 'mapAveragingSchedulingAtIndex' trigger index index
53  */
54  angle_t mapAveragingStart[MAX_CYLINDER_COUNT];
56 
57  /**
58  * timing advance is angle distance before Top Dead Center (TDP), i.e. "10 degree timing advance" means "happens 10 degrees before TDC"
59  */
60  angle_t timingAdvance[MAX_CYLINDER_COUNT] = {0};
61 
62  // Angle between firing the main (primary) spark and the secondary (trailing) spark
64 
66 
67  float currentVe = 0;
68 
69  /**
70  * Raw fuel injection duration produced by current fuel algorithm, without any correction
71  */
73 
74  /**
75  * TPS acceleration: extra fuel amount
76  */
78 
79  /**
80  * Each individual fuel injection duration for current engine cycle, without wall wetting
81  * including everything including injector lag, both cranking and running
82  * @see getInjectionDuration()
83  */
86 
88 
90 
92 };
93 
95 
96 bool getClutchDownState();
97 bool getBrakePedalState();
floatms_t tpsAccelEnrich
Definition: engine_state.h:77
angle_t injectionOffset
Definition: engine_state.h:87
float auxValveStart
Definition: engine_state.h:48
angle_t mapAveragingStart[MAX_CYLINDER_COUNT]
Definition: engine_state.h:54
angle_t engineCycle
Definition: engine_state.h:27
void updateTChargeK(int rpm, float tps)
Definition: engine2.cpp:221
float stftCorrection[STFT_BANK_COUNT]
Definition: engine_state.h:37
float auxValveEnd
Definition: engine_state.h:49
Timer crankingTimer
Definition: engine_state.h:41
float currentVe
Definition: engine_state.h:67
Timer timeSinceLastTChargeK
Definition: engine_state.h:65
void updateSlowSensors()
Definition: engine2.cpp:84
floatms_t baseFuel
Definition: engine_state.h:72
float injectionMass[MAX_CYLINDER_COUNT]
Definition: engine_state.h:35
angle_t mapAveragingDuration
Definition: engine_state.h:55
void periodicFastCallback()
Definition: engine2.cpp:104
bool shouldUpdateInjectionTiming
Definition: engine_state.h:91
void updateSparkSkip()
Definition: engine2.cpp:87
float airflowEstimate
Definition: engine_state.h:46
WarningCodeState warnings
Definition: engine_state.h:43
angle_t trailingSparkAngle
Definition: engine_state.h:63
floatms_t injectionDuration
Definition: engine_state.h:84
sensor_chart_e sensorChartMode
Definition: engine_state.h:32
floatms_t injectionDurationStage2
Definition: engine_state.h:85
float injectionStage2Fraction
Definition: engine_state.h:39
multispark_state multispark
Definition: engine_state.h:89
angle_t timingAdvance[MAX_CYLINDER_COUNT]
Definition: engine_state.h:60
bool getBrakePedalState()
Definition: engine.cpp:251
bool getClutchDownState()
Definition: engine.cpp:231
EngineState * getEngineState()
Definition: engine.cpp:596
sensor_chart_e
Definition: rusefi_enums.h:500
float floatms_t
Definition: rusefi_types.h:68
float angle_t
Definition: rusefi_types.h:59