Line |
Branch |
Decision |
Exec |
Source |
1 |
|
|
|
#pragma once |
2 |
|
|
|
|
3 |
|
|
|
#include "speed_density_base.h" |
4 |
|
|
|
#include "efitime.h" |
5 |
|
|
|
|
6 |
|
|
|
class SpeedDensityAirmass : public SpeedDensityBase { |
7 |
|
|
|
public: |
8 |
|
|
3 |
explicit SpeedDensityAirmass(const ValueProvider3D& veTable, const ValueProvider3D& mapEstimationTable) |
9 |
|
|
3 |
: SpeedDensityBase(veTable) |
10 |
|
|
3 |
, m_mapEstimationTable(&mapEstimationTable) |
11 |
|
|
3 |
{} |
12 |
|
|
|
|
13 |
|
|
|
AirmassResult getAirmass(float rpm, bool postState) override; |
14 |
|
|
|
AirmassResult getAirmass(float rpm, float map, bool postState); |
15 |
|
|
|
float getAirflow(float rpm, float map, bool postState); |
16 |
|
|
|
|
17 |
|
|
|
float getMap(float rpm, bool postState); |
18 |
|
|
|
|
19 |
|
|
|
private: |
20 |
|
|
|
float getPredictiveMap(float rpm, bool postState, float mapSensor); |
21 |
|
|
|
float logAndGetFallback(float rpm, bool postState) const; |
22 |
|
|
|
const ValueProvider3D* const m_mapEstimationTable; |
23 |
|
|
|
|
24 |
|
|
|
// State for predictive MAP blending |
25 |
|
|
|
bool m_isMapPredictionActive = false; |
26 |
|
|
|
Timer m_predictionTimer; |
27 |
|
|
|
float m_initialPredictedMap = 0; |
28 |
|
|
|
float m_initialRealMap = 0; |
29 |
|
|
|
}; |
30 |
|
|
|
|