From 8dcb2fe55f959969f38aa633bece470ac82b7fbb Mon Sep 17 00:00:00 2001 From: rusefi Date: Mon, 2 Nov 2020 23:46:41 -0500 Subject: [PATCH 1/6] this stuff is just too dead --- firmware/controllers/system/efi_gpio.cpp | 28 --------------------- firmware/hw_layer/io_pins.h | 31 ------------------------ 2 files changed, 59 deletions(-) diff --git a/firmware/controllers/system/efi_gpio.cpp b/firmware/controllers/system/efi_gpio.cpp index 0c0b20a7fc..f4ea39c9d0 100644 --- a/firmware/controllers/system/efi_gpio.cpp +++ b/firmware/controllers/system/efi_gpio.cpp @@ -434,34 +434,6 @@ void initOutputPins(DECLARE_ENGINE_PARAMETER_SIGNATURE) { enginePins.o2heater.initPin("O2 heater", CONFIG(o2heaterPin)); enginePins.acRelay.initPin("A/C relay", CONFIG(acRelayPin), &CONFIG(acRelayPinMode)); - // digit 1 - /* - ledRegister(LED_HUGE_0, GPIOB, 2); - ledRegister(LED_HUGE_1, GPIOE, 7); - ledRegister(LED_HUGE_2, GPIOE, 8); - ledRegister(LED_HUGE_3, GPIOE, 9); - ledRegister(LED_HUGE_4, GPIOE, 10); - ledRegister(LED_HUGE_5, GPIOE, 11); - ledRegister(LED_HUGE_6, GPIOE, 12); - - // digit 2 - ledRegister(LED_HUGE_7, GPIOE, 13); - ledRegister(LED_HUGE_8, GPIOE, 14); - ledRegister(LED_HUGE_9, GPIOE, 15); - ledRegister(LED_HUGE_10, GPIOB, 10); - ledRegister(LED_HUGE_11, GPIOB, 11); - ledRegister(LED_HUGE_12, GPIOB, 12); - ledRegister(LED_HUGE_13, GPIOB, 13); - - // digit 3 - ledRegister(LED_HUGE_14, GPIOE, 0); - ledRegister(LED_HUGE_15, GPIOE, 2); - ledRegister(LED_HUGE_16, GPIOE, 4); - ledRegister(LED_HUGE_17, GPIOE, 6); - ledRegister(LED_HUGE_18, GPIOE, 5); - ledRegister(LED_HUGE_19, GPIOE, 3); - ledRegister(LED_HUGE_20, GPIOE, 1); - */ #endif /* EFI_GPIO_HARDWARE */ } diff --git a/firmware/hw_layer/io_pins.h b/firmware/hw_layer/io_pins.h index c991cb6bce..533d5be6af 100644 --- a/firmware/hw_layer/io_pins.h +++ b/firmware/hw_layer/io_pins.h @@ -19,37 +19,6 @@ } -/** - * these seven segment display pins are related to unused external tachometer code - * I still have the hardware so maybe one day I will fix it, but for now it's just dead code - * See https://www.youtube.com/watch?v=YYiHoN6MBqE - * todo: this should be re-implemented in a smarter way with some sort of multiplexing anyway - */ -/* digit 1 */ -// LED_HUGE_0, // B2 -// LED_HUGE_1, -// LED_HUGE_2, -// LED_HUGE_3, -// LED_HUGE_4, -// LED_HUGE_5, -// LED_HUGE_6, -// /* digit 2 */ -// LED_HUGE_7, -// LED_HUGE_8, -// LED_HUGE_9, // E15 -// LED_HUGE_10, -// LED_HUGE_11, -// LED_HUGE_12, -// LED_HUGE_13, -// /* digit 3 */ -// LED_HUGE_14, -// LED_HUGE_15, -// LED_HUGE_16, -// LED_HUGE_17, -// LED_HUGE_18, -// LED_HUGE_19, -// LED_HUGE_20, - #if EFI_GPIO_HARDWARE EXTERNC void efiSetPadMode(const char *msg, brain_pin_e pin, iomode_t mode); EXTERNC void efiSetPadUnused(brain_pin_e brainPin); From dd2d1c01d5d2720a39d07f717f367409a3ae6766 Mon Sep 17 00:00:00 2001 From: GitHub build-firmware Action Date: Tue, 3 Nov 2020 04:48:42 +0000 Subject: [PATCH 2/6] Auto-generated configs and docs --- firmware/controllers/generated/signature_frankenso_na6.h | 6 +++--- firmware/controllers/generated/signature_mre_f4.h | 6 +++--- firmware/controllers/generated/signature_mre_f7.h | 6 +++--- firmware/controllers/generated/signature_prometheus_405.h | 6 +++--- firmware/controllers/generated/signature_prometheus_469.h | 6 +++--- firmware/controllers/generated/signature_proteus_f4.h | 6 +++--- firmware/controllers/generated/signature_proteus_f7.h | 6 +++--- 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/firmware/controllers/generated/signature_frankenso_na6.h b/firmware/controllers/generated/signature_frankenso_na6.h index bc42c18fbb..1ac2e62e14 100644 --- a/firmware/controllers/generated/signature_frankenso_na6.h +++ b/firmware/controllers/generated/signature_frankenso_na6.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD frankenso_na6 -#define SIGNATURE_DATE 2020.11.02 -#define SIGNATURE_HASH 1266301096 -#define TS_SIGNATURE "rusEFI 2020.11.02.frankenso_na6.1266301096" +#define SIGNATURE_DATE 2020.11.03 +#define SIGNATURE_HASH 3637298954 +#define TS_SIGNATURE "rusEFI 2020.11.03.frankenso_na6.3637298954" diff --git a/firmware/controllers/generated/signature_mre_f4.h b/firmware/controllers/generated/signature_mre_f4.h index 6dc9ee3c9e..34c4f11a27 100644 --- a/firmware/controllers/generated/signature_mre_f4.h +++ b/firmware/controllers/generated/signature_mre_f4.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD mre_f4 -#define SIGNATURE_DATE 2020.11.02 -#define SIGNATURE_HASH 351842662 -#define TS_SIGNATURE "rusEFI 2020.11.02.mre_f4.351842662" +#define SIGNATURE_DATE 2020.11.03 +#define SIGNATURE_HASH 647487135 +#define TS_SIGNATURE "rusEFI 2020.11.03.mre_f4.647487135" diff --git a/firmware/controllers/generated/signature_mre_f7.h b/firmware/controllers/generated/signature_mre_f7.h index 6610511739..0bb33fe90c 100644 --- a/firmware/controllers/generated/signature_mre_f7.h +++ b/firmware/controllers/generated/signature_mre_f7.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD mre_f7 -#define SIGNATURE_DATE 2020.11.02 -#define SIGNATURE_HASH 351842662 -#define TS_SIGNATURE "rusEFI 2020.11.02.mre_f7.351842662" +#define SIGNATURE_DATE 2020.11.03 +#define SIGNATURE_HASH 647487135 +#define TS_SIGNATURE "rusEFI 2020.11.03.mre_f7.647487135" diff --git a/firmware/controllers/generated/signature_prometheus_405.h b/firmware/controllers/generated/signature_prometheus_405.h index 9a979dad5f..d9bae098a2 100644 --- a/firmware/controllers/generated/signature_prometheus_405.h +++ b/firmware/controllers/generated/signature_prometheus_405.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD prometheus_405 -#define SIGNATURE_DATE 2020.11.02 -#define SIGNATURE_HASH 3895698543 -#define TS_SIGNATURE "rusEFI 2020.11.02.prometheus_405.3895698543" +#define SIGNATURE_DATE 2020.11.03 +#define SIGNATURE_HASH 207909024 +#define TS_SIGNATURE "rusEFI 2020.11.03.prometheus_405.207909024" diff --git a/firmware/controllers/generated/signature_prometheus_469.h b/firmware/controllers/generated/signature_prometheus_469.h index 9d0c630793..2cc15526d2 100644 --- a/firmware/controllers/generated/signature_prometheus_469.h +++ b/firmware/controllers/generated/signature_prometheus_469.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD prometheus_469 -#define SIGNATURE_DATE 2020.11.02 -#define SIGNATURE_HASH 3895698543 -#define TS_SIGNATURE "rusEFI 2020.11.02.prometheus_469.3895698543" +#define SIGNATURE_DATE 2020.11.03 +#define SIGNATURE_HASH 207909024 +#define TS_SIGNATURE "rusEFI 2020.11.03.prometheus_469.207909024" diff --git a/firmware/controllers/generated/signature_proteus_f4.h b/firmware/controllers/generated/signature_proteus_f4.h index 5400846b2e..c4e834aa53 100644 --- a/firmware/controllers/generated/signature_proteus_f4.h +++ b/firmware/controllers/generated/signature_proteus_f4.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD proteus_f4 -#define SIGNATURE_DATE 2020.11.02 -#define SIGNATURE_HASH 3794303224 -#define TS_SIGNATURE "rusEFI 2020.11.02.proteus_f4.3794303224" +#define SIGNATURE_DATE 2020.11.03 +#define SIGNATURE_HASH 2266381359 +#define TS_SIGNATURE "rusEFI 2020.11.03.proteus_f4.2266381359" diff --git a/firmware/controllers/generated/signature_proteus_f7.h b/firmware/controllers/generated/signature_proteus_f7.h index 4b5b98a8f4..996bf035c3 100644 --- a/firmware/controllers/generated/signature_proteus_f7.h +++ b/firmware/controllers/generated/signature_proteus_f7.h @@ -3,6 +3,6 @@ // #define SIGNATURE_BOARD proteus_f7 -#define SIGNATURE_DATE 2020.11.02 -#define SIGNATURE_HASH 3794303224 -#define TS_SIGNATURE "rusEFI 2020.11.02.proteus_f7.3794303224" +#define SIGNATURE_DATE 2020.11.03 +#define SIGNATURE_HASH 2266381359 +#define TS_SIGNATURE "rusEFI 2020.11.03.proteus_f7.2266381359" From 82768bed1e4efb67e2569ca473474c4979ec5203 Mon Sep 17 00:00:00 2001 From: rusefi Date: Mon, 2 Nov 2020 23:52:26 -0500 Subject: [PATCH 3/6] typo --- firmware/controllers/system/efi_gpio.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/controllers/system/efi_gpio.h b/firmware/controllers/system/efi_gpio.h index 87f3b55b68..1ff26cf4fd 100644 --- a/firmware/controllers/system/efi_gpio.h +++ b/firmware/controllers/system/efi_gpio.h @@ -155,7 +155,7 @@ public: RegisteredOutputPin mainRelay; // this one cranks engine RegisteredOutputPin starterControl; - // this one prevents driver from cranknig engine + // this one prevents driver from cranking engine RegisteredOutputPin starterRelayDisable; RegisteredOutputPin fanRelay; From 66b61f76a734a5aa721d5ace76d87bda17e43197 Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 3 Nov 2020 00:09:42 -0500 Subject: [PATCH 4/6] Output pin init/deinit needs a linked list #1803 --- .../actuators/alternator_controller.cpp | 7 ++----- firmware/controllers/actuators/boost_control.cpp | 3 +-- firmware/controllers/actuators/idle_thread.cpp | 12 ++++++------ firmware/controllers/system/efi_gpio.cpp | 15 +++++++++++---- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/firmware/controllers/actuators/alternator_controller.cpp b/firmware/controllers/actuators/alternator_controller.cpp index 54acc7dfc2..eba8f0a333 100644 --- a/firmware/controllers/actuators/alternator_controller.cpp +++ b/firmware/controllers/actuators/alternator_controller.cpp @@ -161,13 +161,10 @@ void initAlternatorCtrl(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) { if (CONFIG(alternatorControlPin) == GPIO_UNASSIGNED) return; - if (CONFIG(onOffAlternatorLogic)) { - enginePins.alternatorPin.initPin("Alternator control", CONFIG(alternatorControlPin)); - } else { - startSimplePwmExt(&alternatorControl, + if (!CONFIG(onOffAlternatorLogic)) { + startSimplePwm(&alternatorControl, "Alternator control", &engine->executor, - CONFIG(alternatorControlPin), &enginePins.alternatorPin, engineConfiguration->alternatorPwmFrequency, 0.1, (pwm_gen_callback*)applyAlternatorPinState); } diff --git a/firmware/controllers/actuators/boost_control.cpp b/firmware/controllers/actuators/boost_control.cpp index f8dee33d56..9d859e3770 100644 --- a/firmware/controllers/actuators/boost_control.cpp +++ b/firmware/controllers/actuators/boost_control.cpp @@ -187,11 +187,10 @@ void startBoostPin() { return; } - startSimplePwmExt( + startSimplePwm( &boostPwmControl, "Boost", &engine->executor, - CONFIG(boostControlPin), &enginePins.boostPin, engineConfiguration->boostPwmFrequency, 0.5f diff --git a/firmware/controllers/actuators/idle_thread.cpp b/firmware/controllers/actuators/idle_thread.cpp index e25d37910e..d0de11aee6 100644 --- a/firmware/controllers/actuators/idle_thread.cpp +++ b/firmware/controllers/actuators/idle_thread.cpp @@ -735,21 +735,21 @@ void initIdleHardware(DECLARE_ENGINE_PARAMETER_SIGNATURE) { // todo: even for double-solenoid mode we can probably use same single SimplePWM // todo: open question why do we pass 'OutputPin' into 'startSimplePwmExt' if we have custom applyIdleSolenoidPinState listener anyway? if (!CONFIG(isDoubleSolenoidIdle)) { - startSimplePwmExt(&idleSolenoidOpen, "Idle Valve", + startSimplePwm(&idleSolenoidOpen, "Idle Valve", &engine->executor, - CONFIG(idle).solenoidPin, &enginePins.idleSolenoidPin, + &enginePins.idleSolenoidPin, CONFIG(idle).solenoidFrequency, PERCENT_TO_DUTY(CONFIG(manIdlePosition)), (pwm_gen_callback*)applyIdleSolenoidPinState); } else { - startSimplePwmExt(&idleSolenoidOpen, "Idle Valve Open", + startSimplePwm(&idleSolenoidOpen, "Idle Valve Open", &engine->executor, - CONFIG(idle).solenoidPin, &enginePins.idleSolenoidPin, + &enginePins.idleSolenoidPin, CONFIG(idle).solenoidFrequency, PERCENT_TO_DUTY(CONFIG(manIdlePosition)), (pwm_gen_callback*)applyIdleSolenoidPinState); - startSimplePwmExt(&idleSolenoidClose, "Idle Valve Close", + startSimplePwm(&idleSolenoidClose, "Idle Valve Close", &engine->executor, - CONFIG(secondSolenoidPin), &enginePins.secondIdleSolenoidPin, + &enginePins.secondIdleSolenoidPin, CONFIG(idle).solenoidFrequency, PERCENT_TO_DUTY(CONFIG(manIdlePosition)), (pwm_gen_callback*)applyIdleSolenoidPinState); } diff --git a/firmware/controllers/system/efi_gpio.cpp b/firmware/controllers/system/efi_gpio.cpp index f4ea39c9d0..7970060034 100644 --- a/firmware/controllers/system/efi_gpio.cpp +++ b/firmware/controllers/system/efi_gpio.cpp @@ -83,7 +83,7 @@ void RegisteredOutputPin::unregister() { EnginePins::EnginePins() : - mainRelay("mainRelay", CONFIG_OFFSET(mainRelayPin), CONFIG_OFFSET(mainRelayPinMode)), + mainRelay("mainRelay", CONFIG_PIN_OFFSETS(mainRelay)), starterControl("starterControl", CONFIG_PIN_OFFSETS(starterControl)), starterRelayDisable("starterRelayDisable", CONFIG_PIN_OFFSETS(starterRelayDisable)), fanRelay("fanRelay", CONFIG_PIN_OFFSETS(fan)), @@ -423,16 +423,23 @@ void initOutputPins(DECLARE_ENGINE_PARAMETER_SIGNATURE) { enginePins.sdCsPin.initPin("SD CS", CONFIG(sdCardCsPin)); #endif /* HAL_USE_SPI */ - // todo: should we move this code closer to the fuel pump logic? - enginePins.fuelPumpRelay.initPin("Fuel pump", CONFIG(fuelPumpPin), &CONFIG(fuelPumpPinMode)); enginePins.mainRelay.initPin("Main relay", CONFIG(mainRelayPin), &CONFIG(mainRelayPinMode)); enginePins.starterRelayDisable.initPin("Starter disable", CONFIG(starterRelayDisablePin), &CONFIG(starterRelayDisablePinMode)); enginePins.starterControl.initPin("Starter control", CONFIG(starterControlPin)); enginePins.fanRelay.initPin("Fan", CONFIG(fanPin), &CONFIG(fanPinMode)); - enginePins.o2heater.initPin("O2 heater", CONFIG(o2heaterPin)); enginePins.acRelay.initPin("A/C relay", CONFIG(acRelayPin), &CONFIG(acRelayPinMode)); + // todo: should we move this code closer to the fuel pump logic? + enginePins.fuelPumpRelay.initPin("Fuel pump", CONFIG(fuelPumpPin), &CONFIG(fuelPumpPinMode)); + enginePins.boostPin.initPin("Boost", CONFIG(boostControlPin)); + + enginePins.idleSolenoidPin.initPin("Idle Valve", CONFIG(idle).solenoidPin); + enginePins.secondIdleSolenoidPin.initPin("Idle Valve#2", CONFIG(secondSolenoidPin)); + enginePins.alternatorPin.initPin("Alternator control", CONFIG(alternatorControlPin)); + + + enginePins.o2heater.initPin("O2 heater", CONFIG(o2heaterPin)); #endif /* EFI_GPIO_HARDWARE */ } From c464dfdca67b2ba5863bfaa2d6b96ea8c8fb0f3a Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 3 Nov 2020 00:21:39 -0500 Subject: [PATCH 5/6] Output pin init/deinit needs a linked list #1803 --- firmware/console/status_loop.cpp | 6 ------ firmware/controllers/system/efi_gpio.cpp | 7 +++++++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index 8d38138e0e..694be0dc11 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -330,12 +330,6 @@ static void initStatusLeds(void) { enginePins.warningLedPin.initPin("led: warning status", engineConfiguration->warningLedPin); enginePins.runningLedPin.initPin("led: running status", engineConfiguration->runningLedPin); - - enginePins.debugTriggerSync.initPin("debug: sync", CONFIG(debugTriggerSync)); -#if EFI_GPIO_HARDWARE && EFI_SHAFT_POSITION_INPUT - enginePins.triggerDecoderErrorPin.initPin("led: trigger debug", CONFIG(triggerErrorPin), - &CONFIG(triggerErrorPinMode)); -#endif /* EFI_GPIO_HARDWARE */ } #if EFI_PROD_CODE diff --git a/firmware/controllers/system/efi_gpio.cpp b/firmware/controllers/system/efi_gpio.cpp index 7970060034..49b97ce148 100644 --- a/firmware/controllers/system/efi_gpio.cpp +++ b/firmware/controllers/system/efi_gpio.cpp @@ -438,6 +438,13 @@ void initOutputPins(DECLARE_ENGINE_PARAMETER_SIGNATURE) { enginePins.secondIdleSolenoidPin.initPin("Idle Valve#2", CONFIG(secondSolenoidPin)); enginePins.alternatorPin.initPin("Alternator control", CONFIG(alternatorControlPin)); + enginePins.triggerDecoderErrorPin.initPin("led: trigger debug", CONFIG(triggerErrorPin), + &CONFIG(triggerErrorPinMode)); + +#if EFI_SHAFT_POSITION_INPUT + // todo: migrate remaining OutputPin to RegisteredOutputPin in order to get consistent dynamic pin init/deinit + enginePins.debugTriggerSync.initPin("debug: sync", CONFIG(debugTriggerSync)); +#endif // EFI_SHAFT_POSITION_INPUT enginePins.o2heater.initPin("O2 heater", CONFIG(o2heaterPin)); From 4dc5c61f60e06307fa1bd40c88f358aa498676c8 Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 3 Nov 2020 00:46:03 -0500 Subject: [PATCH 6/6] Output pin init/deinit needs a linked list #1803 trying to make things more consistent & smarter --- firmware/controllers/engine_controller.cpp | 2 -- firmware/controllers/system/efi_gpio.cpp | 42 ++++++++++++---------- firmware/controllers/system/efi_gpio.h | 12 ++++--- firmware/hw_layer/hardware.cpp | 12 ++++--- 4 files changed, 39 insertions(+), 29 deletions(-) diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index c26f6314c0..b3a7d72928 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -635,8 +635,6 @@ void initEngineContoller(Logging *sharedLogger DECLARE_ENGINE_PARAMETER_SUFFIX) addConsoleAction("analoginfo", printAnalogInfo); #if EFI_PROD_CODE && EFI_ENGINE_CONTROL - enginePins.startPins(); - initBenchTest(sharedLogger); #endif /* EFI_PROD_CODE && EFI_ENGINE_CONTROL */ diff --git a/firmware/controllers/system/efi_gpio.cpp b/firmware/controllers/system/efi_gpio.cpp index 49b97ce148..688ff40500 100644 --- a/firmware/controllers/system/efi_gpio.cpp +++ b/firmware/controllers/system/efi_gpio.cpp @@ -170,6 +170,9 @@ bool EnginePins::stopPins() { } void EnginePins::unregisterPins() { + stopInjectionPins(); + stopIgnitionPins(); + #if EFI_ELECTRONIC_THROTTLE_BODY unregisterEtbPins(); #endif /* EFI_ELECTRONIC_THROTTLE_BODY */ @@ -194,9 +197,30 @@ void EnginePins::unregisterPins() { } void EnginePins::startPins() { +#if EFI_ENGINE_CONTROL startInjectionPins(); startIgnitionPins(); startAuxValves(); + + starterRelayDisable.initPin("Starter disable", CONFIG(starterRelayDisablePin), &CONFIG(starterRelayDisablePinMode)); + starterControl.initPin("Starter control", CONFIG(starterControlPin)); +#endif /* EFI_ENGINE_CONTROL */ + + mainRelay.initPin("Main relay", CONFIG(mainRelayPin), &CONFIG(mainRelayPinMode)); + + fanRelay.initPin("Fan", CONFIG(fanPin), &CONFIG(fanPinMode)); + acRelay.initPin("A/C relay", CONFIG(acRelayPin), &CONFIG(acRelayPinMode)); + // todo: should we move this code closer to the fuel pump logic? + fuelPumpRelay.initPin("Fuel pump", CONFIG(fuelPumpPin), &CONFIG(fuelPumpPinMode)); + boostPin.initPin("Boost", CONFIG(boostControlPin)); + + idleSolenoidPin.initPin("Idle Valve", CONFIG(idle).solenoidPin); + secondIdleSolenoidPin.initPin("Idle Valve#2", CONFIG(secondSolenoidPin)); + alternatorPin.initPin("Alternator control", CONFIG(alternatorControlPin)); + + triggerDecoderErrorPin.initPin("led: trigger debug", CONFIG(triggerErrorPin), + &CONFIG(triggerErrorPinMode)); + } void EnginePins::reset() { @@ -423,24 +447,6 @@ void initOutputPins(DECLARE_ENGINE_PARAMETER_SIGNATURE) { enginePins.sdCsPin.initPin("SD CS", CONFIG(sdCardCsPin)); #endif /* HAL_USE_SPI */ - - enginePins.mainRelay.initPin("Main relay", CONFIG(mainRelayPin), &CONFIG(mainRelayPinMode)); - enginePins.starterRelayDisable.initPin("Starter disable", CONFIG(starterRelayDisablePin), &CONFIG(starterRelayDisablePinMode)); - enginePins.starterControl.initPin("Starter control", CONFIG(starterControlPin)); - - enginePins.fanRelay.initPin("Fan", CONFIG(fanPin), &CONFIG(fanPinMode)); - enginePins.acRelay.initPin("A/C relay", CONFIG(acRelayPin), &CONFIG(acRelayPinMode)); - // todo: should we move this code closer to the fuel pump logic? - enginePins.fuelPumpRelay.initPin("Fuel pump", CONFIG(fuelPumpPin), &CONFIG(fuelPumpPinMode)); - enginePins.boostPin.initPin("Boost", CONFIG(boostControlPin)); - - enginePins.idleSolenoidPin.initPin("Idle Valve", CONFIG(idle).solenoidPin); - enginePins.secondIdleSolenoidPin.initPin("Idle Valve#2", CONFIG(secondSolenoidPin)); - enginePins.alternatorPin.initPin("Alternator control", CONFIG(alternatorControlPin)); - - enginePins.triggerDecoderErrorPin.initPin("led: trigger debug", CONFIG(triggerErrorPin), - &CONFIG(triggerErrorPinMode)); - #if EFI_SHAFT_POSITION_INPUT // todo: migrate remaining OutputPin to RegisteredOutputPin in order to get consistent dynamic pin init/deinit enginePins.debugTriggerSync.initPin("debug: sync", CONFIG(debugTriggerSync)); diff --git a/firmware/controllers/system/efi_gpio.h b/firmware/controllers/system/efi_gpio.h index 1ff26cf4fd..c186a8af31 100644 --- a/firmware/controllers/system/efi_gpio.h +++ b/firmware/controllers/system/efi_gpio.h @@ -147,11 +147,6 @@ public: void reset(); bool stopPins(); void unregisterPins(); - void startInjectionPins(); - void startIgnitionPins(); - void startAuxValves(); - void stopInjectionPins(); - void stopIgnitionPins(); RegisteredOutputPin mainRelay; // this one cranks engine RegisteredOutputPin starterControl; @@ -192,6 +187,13 @@ public: InjectorOutputPin injectors[INJECTION_PIN_COUNT]; IgnitionOutputPin coils[IGNITION_PIN_COUNT]; NamedOutputPin auxValve[AUX_DIGITAL_VALVE_COUNT]; +private: + void startInjectionPins(); + void startIgnitionPins(); + void startAuxValves(); + + void stopInjectionPins(); + void stopIgnitionPins(); }; #endif /* __cplusplus */ diff --git a/firmware/hw_layer/hardware.cpp b/firmware/hw_layer/hardware.cpp index 3cfef24204..e1ddcc4b24 100644 --- a/firmware/hw_layer/hardware.cpp +++ b/firmware/hw_layer/hardware.cpp @@ -313,8 +313,6 @@ void applyNewHardwareSettings(void) { stopJoystickPins(); #endif /* HAL_USE_PAL && EFI_JOYSTICK */ - enginePins.stopInjectionPins(); - enginePins.stopIgnitionPins(); #if EFI_CAN_SUPPORT stopCanPins(); #endif /* EFI_CAN_SUPPORT */ @@ -377,6 +375,8 @@ void applyNewHardwareSettings(void) { ButtonDebounce::startConfigurationList(); + + #if EFI_SHAFT_POSITION_INPUT startTriggerInputPins(); #endif /* EFI_SHAFT_POSITION_INPUT */ @@ -389,8 +389,7 @@ void applyNewHardwareSettings(void) { startHD44780_pins(); #endif /* #if EFI_HD44780_LCD */ - enginePins.startInjectionPins(); - enginePins.startIgnitionPins(); + enginePins.startPins(); #if EFI_CAN_SUPPORT startCanPins(); @@ -535,6 +534,11 @@ void initHardware(Logging *l) { // output pins potentially depend on 'initSmartGpio' initOutputPins(PASS_ENGINE_PARAMETER_SIGNATURE); +#if EFI_PROD_CODE && EFI_ENGINE_CONTROL + enginePins.startPins(); + +#endif /* EFI_PROD_CODE && EFI_ENGINE_CONTROL */ + #if EFI_MC33816 initMc33816(sharedLogger);