From f7e6ccd9e266c438ebf55db763589bbde3bd165d Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Sat, 25 Feb 2023 03:31:12 -0500 Subject: [PATCH] de-pointerize outputMode #49 --- .../config/boards/hellen/hellen-common.mk | 8 +-- .../config/boards/prometheus/efifeatures.h | 2 +- .../config/boards/subaru_eg33/efifeatures.h | 6 +-- firmware/config/stm32f4ems/efifeatures.h | 2 +- firmware/console/status_loop.cpp | 15 +++--- firmware/controllers/system/efi_gpio.cpp | 49 +++++++------------ firmware/controllers/system/efi_output.h | 22 +++------ firmware/controllers/tcu/simple_tcu.cpp | 2 +- firmware/controllers/tcu/tc_4l6x.cpp | 10 ++-- .../trigger/trigger_emulator_algo.cpp | 2 +- firmware/hw_layer/smart_gpio.cpp | 8 +-- firmware/hw_layer/stepper.cpp | 6 +-- 12 files changed, 55 insertions(+), 77 deletions(-) diff --git a/firmware/config/boards/hellen/hellen-common.mk b/firmware/config/boards/hellen/hellen-common.mk index 9a1ca7c57d..0c1628160c 100644 --- a/firmware/config/boards/hellen/hellen-common.mk +++ b/firmware/config/boards/hellen/hellen-common.mk @@ -4,10 +4,10 @@ BOARDCPPSRC += $(BOARDS_DIR)/hellen/hellen_common.cpp \ $(BOARDS_DIR)/hellen/hellen_board_id.cpp -DDEFS += -DLED_ERROR_BRAIN_PIN_MODE=INVERTED_OUTPUT -DDEFS += -DLED_RUNING_BRAIN_PIN_MODE=INVERTED_OUTPUT -DDEFS += -DLED_WARNING_BRAIN_PIN_MODE=INVERTED_OUTPUT -DDEFS += -DLED_COMMUNICATION_BRAIN_PIN_MODE=INVERTED_OUTPUT +DDEFS += -DLED_ERROR_BRAIN_PIN_MODE=OM_INVERTED +DDEFS += -DLED_RUNING_BRAIN_PIN_MODE=OM_INVERTED +DDEFS += -DLED_WARNING_BRAIN_PIN_MODE=OM_INVERTED +DDEFS += -DLED_COMMUNICATION_BRAIN_PIN_MODE=OM_INVERTED # We are running on Hellen-One hardware! DDEFS += -DHW_HELLEN=1 diff --git a/firmware/config/boards/prometheus/efifeatures.h b/firmware/config/boards/prometheus/efifeatures.h index d86cc8b2f3..675b471a64 100644 --- a/firmware/config/boards/prometheus/efifeatures.h +++ b/firmware/config/boards/prometheus/efifeatures.h @@ -71,7 +71,7 @@ #undef LED_CRITICAL_ERROR_BRAIN_PIN #define LED_CRITICAL_ERROR_BRAIN_PIN Gpio::A13 #undef LED_ERROR_BRAIN_PIN_MODE -#define LED_ERROR_BRAIN_PIN_MODE DEFAULT_OUTPUT +#define LED_ERROR_BRAIN_PIN_MODE OM_DEFAULT #undef CONSOLE_MODE_SWITCH_PORT #undef CONFIG_RESET_SWITCH_PORT diff --git a/firmware/config/boards/subaru_eg33/efifeatures.h b/firmware/config/boards/subaru_eg33/efifeatures.h index 5561e3e1e3..38e589da26 100644 --- a/firmware/config/boards/subaru_eg33/efifeatures.h +++ b/firmware/config/boards/subaru_eg33/efifeatures.h @@ -14,11 +14,11 @@ /* LEDs */ #undef LED_ERROR_BRAIN_PIN_MODE -#define LED_ERROR_BRAIN_PIN_MODE INVERTED_OUTPUT +#define LED_ERROR_BRAIN_PIN_MODE OM_DEFAULT #undef LED_WARNING_BRAIN_PIN_MODE -#define LED_WARNING_BRAIN_PIN_MODE INVERTED_OUTPUT +#define LED_WARNING_BRAIN_PIN_MODE OM_DEFAULT #undef LED_RUNING_BRAIN_PIN_MODE -#define LED_RUNING_BRAIN_PIN_MODE INVERTED_OUTPUT +#define LED_RUNING_BRAIN_PIN_MODE OM_DEFAULT /* debug console */ #define TS_PRIMARY_UxART_PORT SD1 diff --git a/firmware/config/stm32f4ems/efifeatures.h b/firmware/config/stm32f4ems/efifeatures.h index c0cd284d74..242cc62945 100644 --- a/firmware/config/stm32f4ems/efifeatures.h +++ b/firmware/config/stm32f4ems/efifeatures.h @@ -424,7 +424,7 @@ #define LED_CRITICAL_ERROR_BRAIN_PIN Gpio::D14 #endif #ifndef LED_ERROR_BRAIN_PIN_MODE -#define LED_ERROR_BRAIN_PIN_MODE DEFAULT_OUTPUT +#define LED_ERROR_BRAIN_PIN_MODE OM_DEFAULT #endif // USART1 -> check defined STM32_SERIAL_USE_USART1 diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index 9df1b5fdf0..9603f54a5a 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -85,17 +85,14 @@ extern WaveChart waveChart; #include "sensor_chart.h" -extern pin_output_mode_e DEFAULT_OUTPUT; -extern pin_output_mode_e INVERTED_OUTPUT; - #ifndef LED_WARNING_BRAIN_PIN_MODE -#define LED_WARNING_BRAIN_PIN_MODE DEFAULT_OUTPUT +#define LED_WARNING_BRAIN_PIN_MODE OM_DEFAULT #endif #ifndef LED_RUNING_BRAIN_PIN_MODE -#define LED_RUNING_BRAIN_PIN_MODE DEFAULT_OUTPUT +#define LED_RUNING_BRAIN_PIN_MODE OM_DEFAULT #endif #ifndef LED_COMMUNICATION_BRAIN_PIN_MODE -#define LED_COMMUNICATION_BRAIN_PIN_MODE DEFAULT_OUTPUT +#define LED_COMMUNICATION_BRAIN_PIN_MODE OM_DEFAULT #endif int warningEnabled = true; @@ -261,11 +258,11 @@ static OutputPin *leds[] = { &enginePins.warningLedPin, &enginePins.runningLedPi &enginePins.errorLedPin, &enginePins.communicationLedPin, &enginePins.checkEnginePin }; static void initStatusLeds() { - enginePins.communicationLedPin.initPin("led: comm status", engineConfiguration->communicationLedPin, &LED_COMMUNICATION_BRAIN_PIN_MODE, true); + enginePins.communicationLedPin.initPin("led: comm status", engineConfiguration->communicationLedPin, LED_COMMUNICATION_BRAIN_PIN_MODE, true); // checkEnginePin is already initialized by the time we get here - enginePins.warningLedPin.initPin("led: warning status", engineConfiguration->warningLedPin, &LED_WARNING_BRAIN_PIN_MODE, true); - enginePins.runningLedPin.initPin("led: running status", engineConfiguration->runningLedPin, &LED_RUNING_BRAIN_PIN_MODE, true); + enginePins.warningLedPin.initPin("led: warning status", engineConfiguration->warningLedPin, LED_WARNING_BRAIN_PIN_MODE, true); + enginePins.runningLedPin.initPin("led: running status", engineConfiguration->runningLedPin, LED_RUNING_BRAIN_PIN_MODE, true); } #if EFI_PROD_CODE diff --git a/firmware/controllers/system/efi_gpio.cpp b/firmware/controllers/system/efi_gpio.cpp index c0ff29b3f4..13fbe2b2f4 100644 --- a/firmware/controllers/system/efi_gpio.cpp +++ b/firmware/controllers/system/efi_gpio.cpp @@ -22,9 +22,6 @@ // todo: clean this mess, this should become 'static'/private EnginePins enginePins; -pin_output_mode_e DEFAULT_OUTPUT = OM_DEFAULT; -pin_output_mode_e INVERTED_OUTPUT = OM_INVERTED; - static const char* const sparkNames[] = { "Coil 1", "Coil 2", "Coil 3", "Coil 4", "Coil 5", "Coil 6", "Coil 7", "Coil 8", "Coil 9", "Coil 10", "Coil 11", "Coil 12"}; @@ -107,11 +104,11 @@ bool RegisteredOutputPin::isPinConfigurationChanged() { void RegisteredOutputPin::init() { brain_pin_e newPin = *(brain_pin_e *) ((void *) (&((char*) engineConfiguration)[m_pinOffset])); - pin_output_mode_e* newMode; + pin_output_mode_e newMode; if (m_hasPinMode) { - newMode = (pin_output_mode_e *) ((void *) (&((char*) engineConfiguration)[m_pinModeOffset])); + newMode = *(pin_output_mode_e *) ((void *) (&((char*) engineConfiguration)[m_pinModeOffset])); } else { - newMode = &DEFAULT_OUTPUT; + newMode = OM_DEFAULT; } if (isPinConfigurationChanged()) { @@ -296,12 +293,12 @@ void EnginePins::startIgnitionPins() { for (size_t i = 0; i < engineConfiguration->cylindersCount; i++) { NamedOutputPin *trailingOutput = &enginePins.trailingCoils[i]; if (isPinOrModeChanged(trailingCoilPins[i], ignitionPinMode)) { - trailingOutput->initPin(trailingOutput->name, engineConfiguration->trailingCoilPins[i], &engineConfiguration->ignitionPinMode); + trailingOutput->initPin(trailingOutput->name, engineConfiguration->trailingCoilPins[i], engineConfiguration->ignitionPinMode); } NamedOutputPin *output = &enginePins.coils[i]; if (isPinOrModeChanged(ignitionPins[i], ignitionPinMode)) { - output->initPin(output->name, engineConfiguration->ignitionPins[i], &engineConfiguration->ignitionPinMode); + output->initPin(output->name, engineConfiguration->ignitionPins[i], engineConfiguration->ignitionPinMode); } } #endif /* EFI_PROD_CODE */ @@ -314,7 +311,7 @@ void EnginePins::startInjectionPins() { NamedOutputPin *output = &enginePins.injectors[i]; if (isPinOrModeChanged(injectionPins[i], injectionPinMode)) { output->initPin(output->name, engineConfiguration->injectionPins[i], - &engineConfiguration->injectionPinMode); + engineConfiguration->injectionPinMode); } } #endif /* EFI_PROD_CODE */ @@ -453,10 +450,6 @@ void IgnitionOutputPin::reset() { signalFallSparkId = 0; } -OutputPin::OutputPin() { - modePtr = &DEFAULT_OUTPUT; -} - bool OutputPin::isInitialized() { #if EFI_GPIO_HARDWARE && EFI_PROD_CODE #if (BOARD_EXT_GPIOCHIPS > 0) @@ -514,8 +507,6 @@ void OutputPin::setValue(int logicValue) { return; } - efiAssertVoid(ObdCode::CUSTOM_ERR_6621, modePtr!=NULL, "pin mode not initialized"); - pin_output_mode_e mode = *modePtr; efiAssertVoid(ObdCode::CUSTOM_ERR_6622, mode <= OM_OPENDRAIN_INVERTED, "invalid pin_output_mode_e"); int electricalValue = getElectricalValue(logicValue, mode); @@ -541,11 +532,9 @@ bool OutputPin::getLogicValue() const { return currentLogicValue == 1; } -void OutputPin::setDefaultPinState(const pin_output_mode_e *outputMode) { - pin_output_mode_e mode = *outputMode; - /* may be*/UNUSED(mode); +void OutputPin::setDefaultPinState(pin_output_mode_e outputMode) { assertOMode(mode); - this->modePtr = outputMode; + this->mode = outputMode; setValue(false); // initial state } @@ -575,10 +564,10 @@ void initOutputPins() { } void OutputPin::initPin(const char *msg, brain_pin_e brainPin) { - initPin(msg, brainPin, &DEFAULT_OUTPUT); + initPin(msg, brainPin, OM_DEFAULT); } -void OutputPin::initPin(const char *msg, brain_pin_e brainPin, const pin_output_mode_e *outputMode, bool forceInitWithFatalError) { +void OutputPin::initPin(const char *msg, brain_pin_e brainPin, pin_output_mode_e outputMode, bool forceInitWithFatalError) { #if EFI_UNIT_TEST unitTestTurnedOnCounter = 0; #endif @@ -603,17 +592,17 @@ void OutputPin::initPin(const char *msg, brain_pin_e brainPin, const pin_output_ return; } - if (*outputMode > OM_OPENDRAIN_INVERTED) { + if (outputMode > OM_OPENDRAIN_INVERTED) { firmwareError(ObdCode::CUSTOM_INVALID_MODE_SETTING, "%s invalid pin_output_mode_e %d %s", msg, - *outputMode, + outputMode, hwPortname(brainPin) ); return; } #if EFI_GPIO_HARDWARE && EFI_PROD_CODE - iomode_t mode = (*outputMode == OM_DEFAULT || *outputMode == OM_INVERTED) ? + iomode_t mode = (outputMode == OM_DEFAULT || outputMode == OM_INVERTED) ? PAL_MODE_OUTPUT_PUSHPULL : PAL_MODE_OUTPUT_OPENDRAIN; #if (BOARD_EXT_GPIOCHIPS > 0) @@ -654,16 +643,16 @@ void OutputPin::initPin(const char *msg, brain_pin_e brainPin, const pin_output_ // we had enough drama with pin configuration in board.h and else that we shall self-check // todo: handle OM_OPENDRAIN and OM_OPENDRAIN_INVERTED as well - if (*outputMode == OM_DEFAULT || *outputMode == OM_INVERTED) { + if (outputMode == OM_DEFAULT || outputMode == OM_INVERTED) { const int logicalValue = - (*outputMode == OM_INVERTED) + (outputMode == OM_INVERTED) ? !actualValue : actualValue; #ifndef DISABLE_PIN_STATE_VALIDATION // if the pin was set to logical 1, then set an error and disable the pin so that things don't catch fire if (logicalValue) { - firmwareError(ObdCode::OBD_PCM_Processor_Fault, "HARDWARE VALIDATION FAILED %s: unexpected startup pin state %s actual value=%d logical value=%d mode=%s", msg, hwPortname(brainPin), actualValue, logicalValue, getPin_output_mode_e(*outputMode)); + firmwareError(ObdCode::OBD_PCM_Processor_Fault, "HARDWARE VALIDATION FAILED %s: unexpected startup pin state %s actual value=%d logical value=%d mode=%s", msg, hwPortname(brainPin), actualValue, logicalValue, getPin_output_mode_e(outputMode)); OutputPin::deInit(); } #endif @@ -704,15 +693,15 @@ ioportmask_t criticalErrorLedPin; uint8_t criticalErrorLedState; #ifndef LED_ERROR_BRAIN_PIN_MODE -#define LED_ERROR_BRAIN_PIN_MODE DEFAULT_OUTPUT +#define LED_ERROR_BRAIN_PIN_MODE OM_DEFAULT #endif /* LED_ERROR_BRAIN_PIN_MODE */ #if EFI_PROD_CODE static void initErrorLed(Gpio led) { - enginePins.errorLedPin.initPin("led: CRITICAL status", led, &(LED_ERROR_BRAIN_PIN_MODE)); + enginePins.errorLedPin.initPin("led: CRITICAL status", led, (LED_ERROR_BRAIN_PIN_MODE)); criticalErrorLedPort = getHwPort("CRITICAL", led); criticalErrorLedPin = getHwPin("CRITICAL", led); - criticalErrorLedState = (LED_ERROR_BRAIN_PIN_MODE == INVERTED_OUTPUT) ? 0 : 1; + criticalErrorLedState = (LED_ERROR_BRAIN_PIN_MODE == OM_INVERTED) ? 0 : 1; } #endif /* EFI_PROD_CODE */ diff --git a/firmware/controllers/system/efi_output.h b/firmware/controllers/system/efi_output.h index 95f1f44e29..2c0df3c731 100644 --- a/firmware/controllers/system/efi_output.h +++ b/firmware/controllers/system/efi_output.h @@ -20,21 +20,13 @@ */ class OutputPin { public: - OutputPin(); - /** - * initializes pin & registers it in pin repository - * outputMode being a pointer allow us to change configuration (for example invert logical pin) in configuration and get resuts applied - * away, or at least I hope that's why - */ - void initPin(const char *msg, brain_pin_e brainPin, const pin_output_mode_e *outputMode, bool forceInitWithFatalError = false); - /** - * same as above, with DEFAULT_OUTPUT mode - */ + // initializes pin & registers it in pin repository + void initPin(const char *msg, brain_pin_e brainPin, pin_output_mode_e outputMode, bool forceInitWithFatalError = false); + + // same as above, with OM_DEFAULT mode void initPin(const char *msg, brain_pin_e brainPin); - /** - * dissociates pin from this output and un-registers it in pin repository - */ + // dissociates pin from this output and un-registers it in pin repository void deInit(); bool isInitialized(); @@ -69,11 +61,11 @@ public: */ private: // todo: inline this method? - void setDefaultPinState(const pin_output_mode_e *defaultState); + void setDefaultPinState(pin_output_mode_e mode); void setOnchipValue(int electricalValue); // 4 byte pointer is a bit of a memory waste here - const pin_output_mode_e *modePtr = nullptr; + pin_output_mode_e mode = OM_DEFAULT; }; /** diff --git a/firmware/controllers/tcu/simple_tcu.cpp b/firmware/controllers/tcu/simple_tcu.cpp index ec65a6d101..27c8ce52a2 100644 --- a/firmware/controllers/tcu/simple_tcu.cpp +++ b/firmware/controllers/tcu/simple_tcu.cpp @@ -7,7 +7,7 @@ SimpleTransmissionController simpleTransmissionController; void SimpleTransmissionController::init() { for (size_t i = 0; i < efi::size(engineConfiguration->tcu_solenoid); i++) { - enginePins.tcuSolenoids[i].initPin("Transmission Solenoid", engineConfiguration->tcu_solenoid[i], &engineConfiguration->tcu_solenoid_mode[i]); + enginePins.tcuSolenoids[i].initPin("Transmission Solenoid", engineConfiguration->tcu_solenoid[i], engineConfiguration->tcu_solenoid_mode[i]); } } diff --git a/firmware/controllers/tcu/tc_4l6x.cpp b/firmware/controllers/tcu/tc_4l6x.cpp index eb84adea64..1bb5bf5535 100644 --- a/firmware/controllers/tcu/tc_4l6x.cpp +++ b/firmware/controllers/tcu/tc_4l6x.cpp @@ -10,24 +10,24 @@ static SimplePwm shift32Pwm("3-2 Shift Control"); void Gm4l6xTransmissionController::init() { for (size_t i = 0; i < efi::size(engineConfiguration->tcu_solenoid); i++) { - enginePins.tcuSolenoids[i].initPin("Transmission Solenoid", engineConfiguration->tcu_solenoid[i], &engineConfiguration->tcu_solenoid_mode[i]); + enginePins.tcuSolenoids[i].initPin("Transmission Solenoid", engineConfiguration->tcu_solenoid[i], engineConfiguration->tcu_solenoid_mode[i]); } - enginePins.tcuTccOnoffSolenoid.initPin("TCC On/Off Solenoid", engineConfiguration->tcu_tcc_onoff_solenoid, &engineConfiguration->tcu_tcc_onoff_solenoid_mode); - enginePins.tcuTccPwmSolenoid.initPin("TCC PWM Solenoid", engineConfiguration->tcu_tcc_pwm_solenoid, &engineConfiguration->tcu_tcc_pwm_solenoid_mode); + enginePins.tcuTccOnoffSolenoid.initPin("TCC On/Off Solenoid", engineConfiguration->tcu_tcc_onoff_solenoid, engineConfiguration->tcu_tcc_onoff_solenoid_mode); + enginePins.tcuTccPwmSolenoid.initPin("TCC PWM Solenoid", engineConfiguration->tcu_tcc_pwm_solenoid, engineConfiguration->tcu_tcc_pwm_solenoid_mode); startSimplePwm(&tccPwm, "TCC", &engine->executor, &enginePins.tcuTccPwmSolenoid, engineConfiguration->tcu_tcc_pwm_solenoid_freq, 0); - enginePins.tcuPcSolenoid.initPin("Pressure Control Solenoid", engineConfiguration->tcu_pc_solenoid_pin, &engineConfiguration->tcu_pc_solenoid_pin_mode); + enginePins.tcuPcSolenoid.initPin("Pressure Control Solenoid", engineConfiguration->tcu_pc_solenoid_pin, engineConfiguration->tcu_pc_solenoid_pin_mode); startSimplePwm(&pcPwm, "Line Pressure", &engine->executor, &enginePins.tcuPcSolenoid, engineConfiguration->tcu_pc_solenoid_freq, 0); - enginePins.tcu32Solenoid.initPin("3-2 Shift Solenoid", engineConfiguration->tcu_32_solenoid_pin, &engineConfiguration->tcu_32_solenoid_pin_mode); + enginePins.tcu32Solenoid.initPin("3-2 Shift Solenoid", engineConfiguration->tcu_32_solenoid_pin, engineConfiguration->tcu_32_solenoid_pin_mode); startSimplePwm(&shift32Pwm, "3-2 Solenoid", &engine->executor, diff --git a/firmware/controllers/trigger/trigger_emulator_algo.cpp b/firmware/controllers/trigger/trigger_emulator_algo.cpp index 072978adb4..b37c2c5cf1 100644 --- a/firmware/controllers/trigger/trigger_emulator_algo.cpp +++ b/firmware/controllers/trigger/trigger_emulator_algo.cpp @@ -239,7 +239,7 @@ void startTriggerEmulatorPins() { #if EFI_PROD_CODE if (isConfigurationChanged(triggerSimulatorPins[i])) { triggerEmulatorSignal.outputPins[i]->initPin("Trigger emulator", pin, - &engineConfiguration->triggerSimulatorPinModes[i]); + engineConfiguration->triggerSimulatorPinModes[i]); } #endif // EFI_PROD_CODE } diff --git a/firmware/hw_layer/smart_gpio.cpp b/firmware/hw_layer/smart_gpio.cpp index dc16136f8c..c39e089a3b 100644 --- a/firmware/hw_layer/smart_gpio.cpp +++ b/firmware/hw_layer/smart_gpio.cpp @@ -335,25 +335,25 @@ void stopSmartCsPins() { void startSmartCsPins() { #if (BOARD_TLE8888_COUNT > 0) tle8888Cs.initPin("tle8888 CS", engineConfiguration->tle8888_cs, - &engineConfiguration->tle8888_csPinMode); + engineConfiguration->tle8888_csPinMode); tle8888Cs.setValue(true); #endif /* BOARD_TLE8888_COUNT */ #if (BOARD_TLE6240_COUNT > 0) // todo: any way to reduce copy-paste? some convention between pin property name and pin mode property name? tle6240Cs.initPin("tle6240 CS", engineConfiguration->tle6240_cs, - &engineConfiguration->tle6240_csPinMode); + engineConfiguration->tle6240_csPinMode); tle6240Cs.setValue(true); #endif /* BOARD_TLE6240_COUNT */ #if (BOARD_MC33972_COUNT > 0) // todo: any way to reduce copy-paste? some convention between pin property name and pin mode property name? mc33972Cs.initPin("mc33972 CS", engineConfiguration->mc33972_cs, - &engineConfiguration->mc33972_csPinMode); + engineConfiguration->mc33972_csPinMode); mc33972Cs.setValue(true); #endif /* BOARD_MC33972_COUNT */ #if (BOARD_DRV8860_COUNT > 0) // todo: any way to reduce copy-paste? some convention between pin property name and pin mode property name? drv8860Cs.initPin("drv8860 CS", engineConfiguration->drv8860_cs, - &engineConfiguration->drv8860_csPinMode); + engineConfiguration->drv8860_csPinMode); drv8860Cs.setValue(true); #endif /* BOARD_DRV8860_COUNT */ #if (BOARD_MC33810_COUNT > 0) diff --git a/firmware/hw_layer/stepper.cpp b/firmware/hw_layer/stepper.cpp index 6c8661eeaa..036eca5f9b 100644 --- a/firmware/hw_layer/stepper.cpp +++ b/firmware/hw_layer/stepper.cpp @@ -220,13 +220,13 @@ void StepDirectionStepper::initialize(brain_pin_e stepPin, brain_pin_e direction setReactionTime(reactionTime); this->directionPinMode = directionPinMode; - this->directionPin.initPin("Stepper DIR", directionPin, &this->directionPinMode); + this->directionPin.initPin("Stepper DIR", directionPin, this->directionPinMode); this->stepPinMode = OM_DEFAULT; // todo: do we need configurable stepPinMode? - this->stepPin.initPin("Stepper step", stepPin, &this->stepPinMode); + this->stepPin.initPin("Stepper step", stepPin, this->stepPinMode); this->enablePinMode = enablePinMode; - this->enablePin.initPin("Stepper EN", enablePin, &this->enablePinMode); + this->enablePin.initPin("Stepper EN", enablePin, this->enablePinMode); // All pins must be 0 for correct hardware startup (e.g. stepper auto-disabling circuit etc.). this->enablePin.setValue(true); // disable stepper