28 if (
m_state && result < m_config->offBelowDuty) {
61 result.Result =
override.Value;
66 if (!xAxisValue || !yAxisValue) {
70 float resultVal =
m_table->
getValue(xAxisValue.Value, yAxisValue.Value);
72 if (std::isnan(result.Result)) {
76 result.Result = resultVal;
GppwmResult getOutput(size_t index) const
float setOutput(float result)
void init(bool usePwm, IPwm *pwm, OutputPin *outputPin, const ValueProvider3D *table, const gppwm_channel *config)
const gppwm_channel * m_config
GppwmResult update(size_t index)
const ValueProvider3D * m_table
Single output pin reference and state.
void setValue(const char *msg, int logicValue, bool isForce=false)
virtual float getValue(float xColumn, float yRow) const =0
void firmwareError(ObdCode code, const char *fmt,...)
expected< float > boardOverrideGppwm(size_t index)
expected< float > readGppwmChannel(gppwm_channel_e channel)
UNUSED(samplingTimeSeconds)
@ OBD_PCM_Processor_Fault
virtual void setSimplePwmDutyCycle(float dutyCycle)=0