diff --git a/firmware/config/boards/hellen/hellen72/board_configuration.cpp b/firmware/config/boards/hellen/hellen72/board_configuration.cpp index 0ff062fa33..f6c33f9fc1 100644 --- a/firmware/config/boards/hellen/hellen72/board_configuration.cpp +++ b/firmware/config/boards/hellen/hellen72/board_configuration.cpp @@ -169,9 +169,6 @@ void setBoardConfigurationOverrides(void) { engineConfiguration->injectionMode = IM_SIMULTANEOUS;//IM_BATCH;// IM_SEQUENTIAL; } -void setAdcChannelOverrides(void) { -} - /** * @brief Board-specific SD card configuration code overrides. Needed by bootloader code. * @todo Add your board-specific code, if any. diff --git a/firmware/config/boards/me7_pnp/board_configuration.cpp b/firmware/config/boards/me7_pnp/board_configuration.cpp index 4b9b738417..4bfe834c47 100644 --- a/firmware/config/boards/me7_pnp/board_configuration.cpp +++ b/firmware/config/boards/me7_pnp/board_configuration.cpp @@ -77,7 +77,3 @@ void setBoardConfigurationOverrides(void) { void setSdCardConfigurationOverrides(void) { } - -void setAdcChannelOverrides(void) { -} - diff --git a/firmware/config/boards/microrusefi/board_configuration.cpp b/firmware/config/boards/microrusefi/board_configuration.cpp index 77b74f4910..0b5c242298 100644 --- a/firmware/config/boards/microrusefi/board_configuration.cpp +++ b/firmware/config/boards/microrusefi/board_configuration.cpp @@ -248,9 +248,6 @@ void setBoardConfigurationOverrides(void) { engineConfiguration->injectionMode = IM_SIMULTANEOUS;//IM_BATCH;// IM_SEQUENTIAL; } -void setAdcChannelOverrides(void) { -} - /** * @brief Board-specific SD card configuration code overrides. Needed by bootloader code. * @todo Add your board-specific code, if any. diff --git a/firmware/config/boards/nucleo_f767/board_configuration.cpp b/firmware/config/boards/nucleo_f767/board_configuration.cpp index 73984a4b8f..f9a539bd8c 100644 --- a/firmware/config/boards/nucleo_f767/board_configuration.cpp +++ b/firmware/config/boards/nucleo_f767/board_configuration.cpp @@ -78,6 +78,3 @@ void setBoardConfigurationOverrides(void) { engineConfiguration->is_enabled_spi_2 = false; engineConfiguration->is_enabled_spi_3 = false; } - -void setAdcChannelOverrides(void) { -} diff --git a/firmware/config/boards/nucleo_h743/board_configuration.cpp b/firmware/config/boards/nucleo_h743/board_configuration.cpp index 297c4c24a7..ef74afc02f 100644 --- a/firmware/config/boards/nucleo_h743/board_configuration.cpp +++ b/firmware/config/boards/nucleo_h743/board_configuration.cpp @@ -27,19 +27,3 @@ void setSerialConfigurationOverrides(void) { */ void setSdCardConfigurationOverrides(void) { } - -/** - * @brief Board-specific ADC channel configuration code overrides. - * @todo Add your board-specific code, if any. - */ -void setAdcChannelOverrides(void) { -} - -// TODO: fix analog inputs so we don't need these stubs -float getVoltage(const char*, adc_channel_e) { - return 0; -} - -float getVoltageDivided(const char*, adc_channel_e) { - return 0; -} diff --git a/firmware/config/boards/prometheus/board_extra.c b/firmware/config/boards/prometheus/board_extra.c index b1c5e4c492..029f816520 100644 --- a/firmware/config/boards/prometheus/board_extra.c +++ b/firmware/config/boards/prometheus/board_extra.c @@ -1,14 +1,6 @@ #include "hal.h" #include "stm32_gpio.h" -/** - * @brief Board-specific ADC channel configuration code overrides. - * @todo Add your board-specific code, if any. - */ -void setAdcChannelOverrides(void) { -} - - #define PROMETHEUS_LED 13 // BLIIINK!!!!!!!!!! diff --git a/firmware/config/boards/proteus/adc_hack.cpp b/firmware/config/boards/proteus/adc_hack.cpp index 35162ad18c..2098ef38de 100644 --- a/firmware/config/boards/proteus/adc_hack.cpp +++ b/firmware/config/boards/proteus/adc_hack.cpp @@ -14,6 +14,8 @@ #include "efilib.h" +#if USE_ADC3_VBATT_HACK + static ADCConversionGroup adcConvGroup = { FALSE, 1, nullptr, nullptr, 0, ADC_CR2_SWSTART, @@ -51,3 +53,5 @@ void proteusAdcHack() vbattSampleProteus = sum / efi::size(samples); } + +#endif /* USE_ADC3_VBATT_HACK */ diff --git a/firmware/config/boards/proteus/board.mk b/firmware/config/boards/proteus/board.mk index 0aba58bf19..22af4d908d 100644 --- a/firmware/config/boards/proteus/board.mk +++ b/firmware/config/boards/proteus/board.mk @@ -1,11 +1,11 @@ # List of all the board related files. BOARDCPPSRC = $(PROJECT_DIR)/config/boards/proteus/board_configuration.cpp \ $(PROJECT_DIR)/config/boards/proteus/adc_hack.cpp + BOARDINC = $(PROJECT_DIR)/config/boards/proteus # Target processor details -ifeq ($(PROJECT_CPU),ARCH_STM32F4) -else +ifeq ($(PROJECT_CPU),ARCH_STM32F7) PROTEUS_LEGACY = TRUE endif @@ -17,8 +17,13 @@ DDEFS += -DEFI_ICU_INPUTS=FALSE -DHAL_TRIGGER_USE_PAL=TRUE DDEFS += -DEFI_LOGIC_ANALYZER=FALSE # todo: refactor HAL_VSS_USE_PAL DDEFS += -DHAL_VSS_USE_PAL=TRUE -DDEFS += -DSTM32_ADC_USE_ADC3=TRUE -DDEFS += -DEFI_SOFTWARE_KNOCK=TRUE + +# This stuff doesn't work on H7 yet +ifneq ($(PROJECT_CPU),ARCH_STM32H7) + DDEFS += -DSTM32_ADC_USE_ADC3=TRUE + DDEFS += -DEFI_SOFTWARE_KNOCK=TRUE +endif + DDEFS += -DEFI_CONSOLE_TX_BRAIN_PIN=GPIO_UNASSIGNED -DEFI_CONSOLE_RX_BRAIN_PIN=GPIO_UNASSIGNED # We are running on Proteus hardware! diff --git a/firmware/config/boards/skeleton/board_configuration.cpp b/firmware/config/boards/skeleton/board_configuration.cpp index 50ff2cb7c0..c3af186f0b 100644 --- a/firmware/config/boards/skeleton/board_configuration.cpp +++ b/firmware/config/boards/skeleton/board_configuration.cpp @@ -226,9 +226,6 @@ void setBoardConfigurationOverrides(void) { engineConfiguration->injectionMode = IM_SIMULTANEOUS; } -void setAdcChannelOverrides(void) { -} - /* * Local variables: * c-basic-indent: 4 diff --git a/firmware/config/boards/st_stm32f4/board_extra.c b/firmware/config/boards/st_stm32f4/board_extra.c index 33b440b302..7ba32f2dcb 100644 --- a/firmware/config/boards/st_stm32f4/board_extra.c +++ b/firmware/config/boards/st_stm32f4/board_extra.c @@ -31,10 +31,3 @@ void setSerialConfigurationOverrides(void) { */ void setSdCardConfigurationOverrides(void) { } - -/** - * @brief Board-specific ADC channel configuration code overrides. - * @todo Add your board-specific code, if any. - */ -void setAdcChannelOverrides(void) { -} diff --git a/firmware/config/boards/subaru_eg33/board.c b/firmware/config/boards/subaru_eg33/board.c index 4a648bdd94..8996f783a8 100644 --- a/firmware/config/boards/subaru_eg33/board.c +++ b/firmware/config/boards/subaru_eg33/board.c @@ -180,13 +180,6 @@ bool mmc_lld_is_write_protected(MMCDriver *mmcp) } #endif -/** - * @brief Board-specific ADC channel configuration code overrides. - * @todo Add your board-specific code, if any. - */ -void setAdcChannelOverrides(void) { -} - #define STATUS_LED_PIN 8 #define STATUS_LED_PORT GPIOG diff --git a/firmware/hw_layer/adc/adc_inputs.cpp b/firmware/hw_layer/adc/adc_inputs.cpp index d0b2d7397c..8e3ef05635 100644 --- a/firmware/hw_layer/adc/adc_inputs.cpp +++ b/firmware/hw_layer/adc/adc_inputs.cpp @@ -520,6 +520,9 @@ void removeChannel(const char *name, adc_channel_e setting) { adcHwChannelEnabled[setting] = ADC_OFF; } +// Weak link a stub so that every board doesn't have to implement this function +__attribute__((weak)) void setAdcChannelOverrides() { } + static void configureInputs(void) { memset(adcHwChannelEnabled, 0, sizeof(adcHwChannelEnabled)); @@ -616,4 +619,15 @@ void printFullAdcReportIfNeeded(Logging *logger) { printFullAdcReport(logger); } -#endif /* HAL_USE_ADC */ +#else /* not HAL_USE_ADC */ + +__attribute__((weak)) float getVoltageDivided(const char*, adc_channel_e DECLARE_ENGINE_PARAMETER_SUFFIX) { + return 0; +} + +// voltage in MCU universe, from zero to VDD +__attribute__((weak)) float getVoltage(const char*, adc_channel_e DECLARE_ENGINE_PARAMETER_SUFFIX) { + return 0; +} + +#endif