10 case VE_None:
return passedLoad;
24 float idleVeLoad = load;
35 config->idleVeLoadBins, idleVeLoad,
49 for (
size_t i = 0; i < efi::size(
config->veBlends); i++) {
60 if (result.Value == 0) {
66 ve *= ((100 + result.Value) * 0.01f);
75 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
scaled_channel< int16_t, 10, 1 > veTableIdleYAxis
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]