10 case VE_None:
return passedLoad;
59 if (result.Value == 0) {
65 ve *= ((100 + result.Value) * 0.01f);
73 return ve * PERCENT_DIV;
float getVeLoadAxis(ve_override_e mode, float passedLoad)
float getVeLoadAxis(ve_override_e mode, float passedLoad)
float getVe(float rpm, percent_t load, bool postState) const
const ValueProvider3D *const m_veTable
AirmassVeModelBase(const ValueProvider3D &veTable)
TunerStudioOutputChannels outputChannels
constexpr auto & module()
bool isIdlingOrTaper() const override
virtual SensorResult get() const =0
static float getOrZero(SensorType type)
virtual float getValue(float xColumn, float yRow) const =0
float interpolateClamped(float x1, float y1, float x2, float y2, float x)
static EngineAccessor engine
static constexpr persistent_config_s * config
static constexpr engine_configuration_s * engineConfiguration
BlendResult calculateBlend(blend_table_s &cfg, float rpm, float load)
Idle Valve Control thread.
@ OBD_PCM_Processor_Fault
bool useSeparateVeForIdle
ve_override_e veOverrideMode
ve_override_e idleVeOverrideMode
int16_t idlePidDeactivationTpsThreshold
scaled_channel< uint16_t, 100, 1 > veTableYAxis
scaled_channel< int16_t, 10, 1 > veBlendParameter[VE_BLEND_COUNT]
scaled_channel< uint8_t, 2, 1 > veBlendBias[VE_BLEND_COUNT]
scaled_channel< int16_t, 10, 1 > veBlendYAxis[VE_BLEND_COUNT]
scaled_channel< int16_t, 100, 1 > veBlendOutput[VE_BLEND_COUNT]
scaled_channel< uint8_t, 1, 10 > idleVeRpmBins[IDLE_VE_SIZE]
uint8_t idleVeLoadBins[IDLE_VE_SIZE]
blend_table_s veBlends[VE_BLEND_COUNT]
scaled_channel< uint16_t, 10, 1 > idleVeTable[IDLE_VE_SIZE][IDLE_VE_SIZE]