From b1d8bf0dbf21df53e497fa64914717d47d5a225f Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 26 Jan 2019 11:38:14 -0500 Subject: [PATCH] minimal pin configuration & EFI_COMMUNICATION_PIN fix --- firmware/config/engines/custom_engine.cpp | 19 +++++++++++++++++++ firmware/config/engines/custom_engine.h | 2 +- .../controllers/algo/auto_generated_enums.cpp | 2 ++ .../controllers/algo/engine_configuration.cpp | 12 +++++++++--- ...ngine_configuration_generated_structures.h | 6 +++--- firmware/controllers/algo/rusefi_enums.h | 4 ++++ firmware/controllers/algo/rusefi_generated.h | 1 + firmware/integration/rusefi_config.txt | 3 ++- 8 files changed, 41 insertions(+), 8 deletions(-) diff --git a/firmware/config/engines/custom_engine.cpp b/firmware/config/engines/custom_engine.cpp index 0919e9c9db..653e5a7217 100644 --- a/firmware/config/engines/custom_engine.cpp +++ b/firmware/config/engines/custom_engine.cpp @@ -79,6 +79,25 @@ void disableLCD(board_configuration_s *boardConfiguration) { boardConfiguration->HD44780_db7 = GPIO_UNASSIGNED; } +void setMinimalPinsEngineConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) { + // not great implementation since we undo values which were set somewhere else + // todo: maybe use prepareVoidConfiguration method? + boardConfiguration->hip9011CsPin = GPIO_UNASSIGNED; + boardConfiguration->hip9011IntHoldPin = GPIO_UNASSIGNED; + CONFIGB(canTxPin) = GPIO_UNASSIGNED; + CONFIGB(canRxPin) = GPIO_UNASSIGNED; + CONFIGB(sdCardCsPin) = GPIO_UNASSIGNED; + for (int i = 0;iaccelerometerSpiDevice = SPI_NONE; + CONFIGB(is_enabled_spi_1) = CONFIGB(is_enabled_spi_2) = CONFIGB(is_enabled_spi_3) = false; +} + // todo: should this be renamed to 'setFrankensoConfiguration'? // todo: should this be part of more default configurations? void setCustomEngineConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) { diff --git a/firmware/config/engines/custom_engine.h b/firmware/config/engines/custom_engine.h index 2f9de966d4..6e83142744 100644 --- a/firmware/config/engines/custom_engine.h +++ b/firmware/config/engines/custom_engine.h @@ -13,7 +13,7 @@ void setCustomEngineConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE); void setFrankenso_01_LCD(board_configuration_s *boardConfiguration); void disableLCD(board_configuration_s *boardConfiguration); void runSchedulingPrecisionTestIfNeeded(void); - +void setMinimalPinsEngineConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE); void setFrankensoBoardTestConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE); #endif /* CONFIG_ENGINES_CUSTOM_ENGINE_H_ */ diff --git a/firmware/controllers/algo/auto_generated_enums.cpp b/firmware/controllers/algo/auto_generated_enums.cpp index 19c3331e4e..e2396706c0 100644 --- a/firmware/controllers/algo/auto_generated_enums.cpp +++ b/firmware/controllers/algo/auto_generated_enums.cpp @@ -91,6 +91,8 @@ case MIATA_NA6_MAP: return "MIATA_NA6_MAP"; case MIATA_NA6_VAF: return "MIATA_NA6_VAF"; +case MINIMAL_PINS: + return "MINIMAL_PINS"; case MINI_COOPER_R50: return "MINI_COOPER_R50"; case MITSU_4G93: diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index a3b7f880f8..ac2b8b9817 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -289,6 +289,8 @@ void prepareVoidConfiguration(engine_configuration_s *engineConfiguration) { memset(engineConfiguration, 0, sizeof(engine_configuration_s)); board_configuration_s *boardConfiguration = &engineConfiguration->bc; + boardConfiguration->canTxPin = GPIO_UNASSIGNED; + boardConfiguration->canRxPin = GPIO_UNASSIGNED; setDefaultFsioParameters(engineConfiguration); disableLCD(boardConfiguration); @@ -970,10 +972,11 @@ void setDefaultConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE) { engineConfiguration->alternatorPwmFrequency = 300; -#ifndef EFI_COMMUNICATION_PIN -#define EFI_COMMUNICATION_PIN GPIOD_15 -#endif +#ifdef EFI_COMMUNICATION_PIN + engineConfiguration->communicationLedPin = EFI_COMMUNICATION_PIN; +#else engineConfiguration->communicationLedPin = GPIOD_15; // blue LED on discovery +#endif engineConfiguration->runningLedPin = GPIOD_12; // greeb LED on discovery setDefaultBasePins(PASS_ENGINE_PARAMETER_SIGNATURE); @@ -1116,6 +1119,9 @@ void resetConfigurationExt(Logging * logger, engine_type_e engineType DECLARE_EN case CUSTOM_ENGINE: setCustomEngineConfiguration(PASS_ENGINE_PARAMETER_SIGNATURE); break; + case MINIMAL_PINS: + setMinimalPinsEngineConfiguration(PASS_ENGINE_PARAMETER_SIGNATURE); + break; case ACURA_RSX: setAcuraRSX(engineConfiguration); break; diff --git a/firmware/controllers/algo/engine_configuration_generated_structures.h b/firmware/controllers/algo/engine_configuration_generated_structures.h index 9daa06982b..9a6db314f8 100644 --- a/firmware/controllers/algo/engine_configuration_generated_structures.h +++ b/firmware/controllers/algo/engine_configuration_generated_structures.h @@ -1,4 +1,4 @@ -// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Jan 25 21:07:52 EST 2019 +// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Jan 26 11:15:45 EST 2019 // begin #ifndef ENGINE_CONFIGURATION_GENERATED_H_ #define ENGINE_CONFIGURATION_GENERATED_H_ @@ -533,7 +533,7 @@ typedef struct { /** * offset 288 */ - brain_input_pin_e triggerInputPins[3]; + brain_input_pin_e triggerInputPins[TRIGGER_INPUT_PIN_COUNT]; /** * offset 300 */ @@ -2480,4 +2480,4 @@ typedef struct { #endif // end -// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Fri Jan 25 21:07:52 EST 2019 +// this section was generated automatically by ConfigDefinition.jar based on rusefi_config.txt Sat Jan 26 11:15:45 EST 2019 diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h index 2e70b7ef13..13d06b0ce5 100644 --- a/firmware/controllers/algo/rusefi_enums.h +++ b/firmware/controllers/algo/rusefi_enums.h @@ -178,6 +178,10 @@ typedef enum { // see also MIATA_NA6_MAP = 41 MIATA_NA6_VAF = 57, + /** + * this configuration has as few pins configured as possible + */ + MINIMAL_PINS = 99, PROMETHEUS_DEFAULTS = 100, Force_4_bytes_size_engine_type = ENUM_32_BITS, diff --git a/firmware/controllers/algo/rusefi_generated.h b/firmware/controllers/algo/rusefi_generated.h index 3b72d5b5de..3925b412f4 100644 --- a/firmware/controllers/algo/rusefi_generated.h +++ b/firmware/controllers/algo/rusefi_generated.h @@ -46,6 +46,7 @@ #define DIGIPOT_COUNT 4 #define HW_MAX_ADC_INDEX 17 #define TRIGGER_SIMULATOR_PIN_COUNT 3 +#define TRIGGER_INPUT_PIN_COUNT 3 #define LOGIC_ANALYZER_CHANNEL_COUNT 4 #define FSIO_COMMAND_COUNT 16 #define AUX_PID_COUNT 4 diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index c2984c8aa4..1176790276 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -100,6 +100,7 @@ struct_no_prefix engine_configuration_s #define DIGIPOT_COUNT 4 #define HW_MAX_ADC_INDEX 17 #define TRIGGER_SIMULATOR_PIN_COUNT 3 +#define TRIGGER_INPUT_PIN_COUNT 3 #define LOGIC_ANALYZER_CHANNEL_COUNT 4 #define FSIO_COMMAND_COUNT 16 #define AUX_PID_COUNT 4 @@ -508,7 +509,7 @@ custom adc_channel_mode_e 4 bits, U32, @OFFSET@, [0:1], "Off", "Slow", "Fas brain_pin_e tachOutputPin;+This implementation produces one pulse per engine cycle. See also dizzySparkOutputPin. pin_output_mode_e tachOutputPinMode; - brain_input_pin_e[3 iterate] triggerInputPins; + brain_input_pin_e[TRIGGER_INPUT_PIN_COUNT iterate] triggerInputPins; brain_pin_e mainRelayPin; int idleThreadPeriod;