31 {
32 for (
size_t i = 0; i < efi::size(
channels); i++) {
34
35
37 continue;
38 }
39
40
42 bool usePwm = freq > 0;
43
44
46 if (usePwm) {
48 }
49
50
52
53
55 }
56}
SingleTimerExecutor scheduler
void init(bool usePwm, IPwm *pwm, OutputPin *outputPin, const ValueProvider3D *table, const gppwm_channel *config)
void initTable(TValueInit(&table)[TRowNum][TColNum], const TXColumnInit(&columnBins)[TColNum], const TRowInit(&rowBins)[TRowNum])
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 GppwmChannel channels[GPPWM_CHANNELS]
static gppwm_Map3D_t *const tables[]
static SimplePwm outputs[GPPWM_CHANNELS]
static const char * channelNames[GPPWM_CHANNELS]
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]