36 result = interpolate3d(
37 config->torqueReductionIgnitionCutTable,
38 config->torqueReductionCutGearBins, currentGear,
39 config->torqueReductionCutXBins, torqueReductionXAxis.Value
47 case TORQUE_REDUCTION_BUTTON: {
65 case TORQUE_REDUCTION_CLUTCH_DOWN_SWITCH: {
74 case TORQUE_REDUCTION_CLUTCH_UP_SWITCH: {
100 const bool invertPhysicalPin,
101 const bool invalidPinState
130 auto torqueReductionTime = interpolate3d(
131 config->torqueReductionTimeTable,
132 config->torqueReductionTimeGearBins, currentGear,
133 config->torqueReductionTimeXBins, torqueReductionTimeXaxis.Value
138 ((0.0f < torqueReductionTime)
152 if (currentApp.Valid) {
164 return interpolate3d(
165 config->torqueReductionIgnitionRetardTable,
166 config->torqueReductionIgnitionRetardGearBins, currentGear,
167 config->torqueReductionIgnitionRetardXBins, torqueReductionXAxis.Value
virtual SensorResult get() const =0
static float getOrZero(SensorType type)
Timer m_pinTriggeredTimer
void updateTriggerPinState()
float getSparkSkipRatio()
void updateTimeConditionSatisfied()
void updateAppConditionSatisfied()
float getTorqueReductionIgnitionRetard()
void updateRpmConditionSatisfied()
static EngineAccessor engine
static constexpr persistent_config_s * config
static constexpr engine_configuration_s * engineConfiguration
One header which acts as gateway to current engine state.
expected< float > readGppwmChannel(gppwm_channel_e channel)
bool efiReadPin(brain_pin_e pin)
bool isBrainPinValid(brain_pin_e brainPin)
expected< float > SensorResult
static bool isShiftTorqueBelowTemperatureThreshold()
bool torqueReductionState
bool isFlatShiftConditionSatisfied
bool torqueReductionTriggerPinState
bool isRpmConditionSatisfied
int16_t trqRedTimeXaxisValue
bool isBelowTemperatureThreshold
bool isAppConditionSatisfied
bool isTorqueReductionTriggerPinValid
bool isTimeConditionSatisfied
int16_t trqRedIgnRetXaxisValue
int16_t trqRedCutXaxisValue
Tiny Mersenne Twister only 127 bit internal state.