diff --git a/firmware/hw_layer/gpio_helper.cpp b/firmware/hw_layer/gpio_helper.cpp index 58e8029079..d729f9c103 100644 --- a/firmware/hw_layer/gpio_helper.cpp +++ b/firmware/hw_layer/gpio_helper.cpp @@ -28,30 +28,5 @@ #include "gpio_helper.h" #include "engine.h" -EXTERN_ENGINE; - -/** - * @brief Initialize the hardware output pin while also assigning it a logical name - */ -void initOutputPinExt(const char *msg, OutputPin *outputPin, ioportid_t port, uint32_t pinNumber, iomode_t mode) { - if (outputPin->port != NULL && (outputPin->port != port || outputPin->pin != pinNumber)) { - /** - * here we check if another physical pin is already assigned to this logical output - */ -// todo: need to clear '&outputs' in io_pins.c - warning(CUSTOM_OBD_PIN_CONFLICT, "outputPin [%s] already assigned to %x%d", msg, outputPin->port, outputPin->pin); - engine->withError = true; - return; - } - outputPin->currentLogicValue = INITIAL_PIN_STATE; - outputPin->port = port; - outputPin->pin = pinNumber; - - mySetPadMode(msg, port, pinNumber, mode); -} - -void initOutputPin(const char *msg, OutputPin *outputPin, ioportid_t port, uint32_t pinNumber) { - initOutputPinExt(msg, outputPin, port, pinNumber, PAL_MODE_OUTPUT_PUSHPULL); -} #endif /* GPIO_HELPER_C_ */ diff --git a/firmware/hw_layer/hw_layer.mk b/firmware/hw_layer/hw_layer.mk index 1db393bcb1..d0324de7dd 100644 --- a/firmware/hw_layer/hw_layer.mk +++ b/firmware/hw_layer/hw_layer.mk @@ -28,7 +28,6 @@ HW_LAYER_EMS_CPP = $(HW_LAYER_EGT_CPP) \ $(PROJECT_DIR)/hw_layer/stepper.cpp \ $(PROJECT_DIR)/hw_layer/servo.cpp \ $(PROJECT_DIR)/hw_layer/io_pins.cpp \ - $(PROJECT_DIR)/hw_layer/gpio_helper.cpp \ $(PROJECT_DIR)/hw_layer/stm32f4/mpu_util.cpp \ $(PROJECT_DIR)/hw_layer/rtc_helper.cpp \ $(PROJECT_DIR)/hw_layer/accelerometer.cpp diff --git a/firmware/hw_layer/io_pins.cpp b/firmware/hw_layer/io_pins.cpp index b7792b766b..08718fe124 100644 --- a/firmware/hw_layer/io_pins.cpp +++ b/firmware/hw_layer/io_pins.cpp @@ -17,6 +17,8 @@ #include "engine_configuration.h" #include "console_io.h" +EXTERN_ENGINE; + #if EFI_ENGINE_CONTROL || defined(__DOXYGEN__) #include "main_trigger_callback.h" #endif /* EFI_ENGINE_CONTROL */ @@ -153,6 +155,31 @@ void initOutputPins(void) { */ } +/** + * @brief Initialize the hardware output pin while also assigning it a logical name + */ +void initOutputPinExt(const char *msg, OutputPin *outputPin, ioportid_t port, uint32_t pinNumber, iomode_t mode) { + if (outputPin->port != NULL && (outputPin->port != port || outputPin->pin != pinNumber)) { + /** + * here we check if another physical pin is already assigned to this logical output + */ +// todo: need to clear '&outputs' in io_pins.c + warning(CUSTOM_OBD_PIN_CONFLICT, "outputPin [%s] already assigned to %x%d", msg, outputPin->port, outputPin->pin); + engine->withError = true; + return; + } + outputPin->currentLogicValue = INITIAL_PIN_STATE; + outputPin->port = port; + outputPin->pin = pinNumber; + + mySetPadMode(msg, port, pinNumber, mode); +} + +void initOutputPin(const char *msg, OutputPin *outputPin, ioportid_t port, uint32_t pinNumber) { + initOutputPinExt(msg, outputPin, port, pinNumber, PAL_MODE_OUTPUT_PUSHPULL); +} + + #if EFI_GPIO /**