32 for (
size_t i = 0; i < efi::size(
channels); i++) {
42 bool usePwm = freq > 0;
59 for (
size_t i = 0; i < efi::size(
channels); i++) {
SingleTimerExecutor scheduler
TunerStudioOutputChannels outputChannels
void init(bool usePwm, IPwm *pwm, OutputPin *outputPin, const ValueProvider3D *table, const gppwm_channel *config)
GppwmResult update(size_t index)
void initTable(TValueInit(&table)[TRowNum][TColNum], const TXColumnInit(&columnBins)[TColNum], const TRowInit(&rowBins)[TRowNum])
Single output pin reference and state.
void initPin(const char *msg, brain_pin_e brainPin, pin_output_mode_e outputMode, bool forceInitWithFatalError=false)
static EngineAccessor engine
static constexpr engine_configuration_s * engineConfiguration
static OutputPin pins[GPPWM_CHANNELS]
static gppwm_Map3D_t table2
static GppwmChannel channels[GPPWM_CHANNELS]
static gppwm_Map3D_t *const tables[]
static gppwm_Map3D_t table1
static gppwm_Map3D_t table4
static SimplePwm outputs[GPPWM_CHANNELS]
static const char * channelNames[GPPWM_CHANNELS]
Map3D< GPPWM_RPM_COUNT, GPPWM_LOAD_COUNT, uint8_t, int16_t, int16_t > gppwm_Map3D_t
static gppwm_Map3D_t table3
bool isBrainPinValid(brain_pin_e brainPin)
void startSimplePwm(SimplePwm *state, const char *msg, Scheduler *executor, OutputPin *output, float frequency, float dutyCycle, pwm_gen_callback *callback)
gppwm_channel gppwm[GPPWM_CHANNELS]
scaled_channel< uint8_t, 2, 1 > gppwmOutput[4]
scaled_channel< int16_t, 1, 1 > gppwmXAxis[4]
scaled_channel< int16_t, 10, 1 > gppwmYAxis[4]