16 const char *disPinMsg,
35 int clampedFrequency = maxI(100,
frequency);
37 if (clampedFrequency > ETB_HW_MAX_FREQUENCY) {
38 criticalError(
"Electronic throttle frequency too high, maximum %d hz", ETB_HW_MAX_FREQUENCY);
139 const char *disableMsg = dc->
msg();
140 if (disableMsg !=
nullptr) {
141 efiPrintf(
"disabled [%s]", disableMsg);
void setFrequency(int frequency)
void start(bool useTwoWires, brain_pin_e pinEnable, brain_pin_e pinDir1, brain_pin_e pinDir2, const char *disPinMsg, brain_pin_e pinDisable, bool isInverted, Scheduler *executor, int frequency)
Brushed or brushless DC motor interface.
SingleTimerExecutor scheduler
void initPin(const char *msg, brain_pin_e brainPin, pin_output_mode_e outputMode, bool forceInitWithFatalError=false)
void setValue(const char *msg, int logicValue, bool isForce=false)
float get() const override
Get the current motor duty cycle.
void setType(ControlType type)
void configure(IPwm &enable, IPwm &dir1, IPwm &dir2, bool isInverted)
virtual bool set(float duty) override
bool isOpenDirection() const override
DcMotor * initDcMotor(const char *disPinMsg, const dc_io &io, size_t index, bool useTwoWires)
static DcHardware dcHardware[ETB_COUNT+DC_PER_STEPPER]
void setDcMotorFrequency(size_t index, int hz)
void showDcMotorInfo(int i)
void setDcMotorDuty(size_t index, float duty)
DcHardware * getPrimaryDCHardwareForLogging()
static EngineAccessor engine
static constexpr engine_configuration_s * engineConfiguration
void startSimplePwmHard(SimplePwm *state, const char *msg, Scheduler *executor, brain_pin_e brainPin, OutputPin *output, float frequency, float dutyCycle)
bool stepperDcInvertedPins