From 4b4d2ac4d5f1ecb761fd0cb8b865e6abb564d396 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Tue, 23 Jul 2024 20:52:37 -0700 Subject: [PATCH] ethernet console as engine module (#453) * infrastructure for engine modules in the build * fully move fuel pump * fan * gear detector * gear detect * fan control cleanup * trip odometer * shuffle makefiles around a little * move ethernet console to engine module * oops * s * final * dead line --- firmware/config/boards/nucleo_f429/board.mk | 2 +- firmware/config/boards/nucleo_f767/board.mk | 2 +- firmware/config/boards/nucleo_h743/board.mk | 2 +- firmware/config/stm32f4ems/efifeatures.h | 4 ++-- firmware/console/console.mk | 1 - firmware/console/eficonsole.h | 7 ++++++- firmware/controllers/core/engine_module.h | 3 +++ .../modules/ethernet_console}/ethernet_console.cpp | 6 +----- .../modules/ethernet_console/ethernet_console.mk | 4 ++++ firmware/hw_layer/ports/rusefi_halconf.h | 2 +- firmware/rusefi.cpp | 6 +++--- simulator/simulator/efifeatures.h | 1 - 12 files changed, 23 insertions(+), 17 deletions(-) rename firmware/{console => controllers/modules/ethernet_console}/ethernet_console.cpp (96%) create mode 100644 firmware/controllers/modules/ethernet_console/ethernet_console.mk diff --git a/firmware/config/boards/nucleo_f429/board.mk b/firmware/config/boards/nucleo_f429/board.mk index 7481b2bb19..be3e9cf832 100644 --- a/firmware/config/boards/nucleo_f429/board.mk +++ b/firmware/config/boards/nucleo_f429/board.mk @@ -4,7 +4,7 @@ DDEFS += -DLED_CRITICAL_ERROR_BRAIN_PIN=Gpio::B14 # Enable ethernet LWIP = yes -DDEFS += -DEFI_ETHERNET=TRUE +include $(PROJECT_DIR)/controllers/modules/ethernet_console/ethernet_console.mk # This is an F429! IS_STM32F429 = yes diff --git a/firmware/config/boards/nucleo_f767/board.mk b/firmware/config/boards/nucleo_f767/board.mk index 0aa65dced0..bcac8cac12 100644 --- a/firmware/config/boards/nucleo_f767/board.mk +++ b/firmware/config/boards/nucleo_f767/board.mk @@ -10,7 +10,7 @@ DDEFS += -DLED_CRITICAL_ERROR_BRAIN_PIN=Gpio::B14 # Enable ethernet LWIP = yes -DDEFS += -DEFI_ETHERNET=TRUE +include $(PROJECT_DIR)/controllers/modules/ethernet_console/ethernet_console.mk DDEFS += -DFIRMWARE_ID=\"nucleo_f767\" DDEFS += -DDEFAULT_ENGINE_TYPE=MINIMAL_PINS diff --git a/firmware/config/boards/nucleo_h743/board.mk b/firmware/config/boards/nucleo_h743/board.mk index 76cee7beb2..61467652fd 100644 --- a/firmware/config/boards/nucleo_h743/board.mk +++ b/firmware/config/boards/nucleo_h743/board.mk @@ -6,7 +6,7 @@ DDEFS += -DLED_CRITICAL_ERROR_BRAIN_PIN=Gpio::B14 # Enable ethernet LWIP = yes -DDEFS += -DEFI_ETHERNET=TRUE +include $(PROJECT_DIR)/controllers/modules/ethernet_console/ethernet_console.mk DDEFS += -DFIRMWARE_ID=\"nucleo_h743\" DDEFS += -DDEFAULT_ENGINE_TYPE=MINIMAL_PINS diff --git a/firmware/config/stm32f4ems/efifeatures.h b/firmware/config/stm32f4ems/efifeatures.h index 1f03c8527a..ca25c07518 100644 --- a/firmware/config/stm32f4ems/efifeatures.h +++ b/firmware/config/stm32f4ems/efifeatures.h @@ -266,10 +266,10 @@ #define EFI_USE_COMPRESSED_INI_MSD #define ENABLE_PERF_TRACE TRUE - #if EFI_ETHERNET + #if MODULE_ETHERNET_CONSOLE // F4 ethernet needs some extra space #define LUA_USER_HEAP 40000 - #else // EFI_ETHERNET + #else // MODULE_ETHERNET_CONSOLE #define LUA_USER_HEAP 50000 #endif #else diff --git a/firmware/console/console.mk b/firmware/console/console.mk index 84e5a31eb5..a700a4fc0f 100644 --- a/firmware/console/console.mk +++ b/firmware/console/console.mk @@ -9,7 +9,6 @@ CONSOLE_SRC_CPP = $(CONSOLE_COMMON_SRC_CPP) \ $(PROJECT_DIR)/console/connector_uart_dma.cpp \ $(PROJECT_DIR)/console/binary_log/binary_logging.cpp \ $(PROJECT_DIR)/console/binary_log/usb_console.cpp \ - $(PROJECT_DIR)/console/binary_log/ethernet_console.cpp \ $(PROJECT_DIR)/console/wifi_console.cpp \ diff --git a/firmware/console/eficonsole.h b/firmware/console/eficonsole.h index aa34e3236a..b37e8ef754 100644 --- a/firmware/console/eficonsole.h +++ b/firmware/console/eficonsole.h @@ -8,7 +8,12 @@ #pragma once +#include "engine_module.h" + void initializeConsole(); void startUsbConsole(); -void startEthernetConsole(); void startWifiConsole(); + +struct EthernetConsoleModule final : public EngineModule { + void initNoConfiguration() override; +}; diff --git a/firmware/controllers/core/engine_module.h b/firmware/controllers/core/engine_module.h index 7cf11e4b40..85b35ca1bf 100644 --- a/firmware/controllers/core/engine_module.h +++ b/firmware/controllers/core/engine_module.h @@ -8,6 +8,9 @@ class EngineModule { public: + // Called exactly once during boot, before configuration is loaded + virtual void initNoConfiguration() { } + // Called when 'Burn' is invoked virtual void onConfigurationChange(engine_configuration_s const * /*previousConfig*/) { } diff --git a/firmware/console/ethernet_console.cpp b/firmware/controllers/modules/ethernet_console/ethernet_console.cpp similarity index 96% rename from firmware/console/ethernet_console.cpp rename to firmware/controllers/modules/ethernet_console/ethernet_console.cpp index f52526f9dc..e17198d6b1 100644 --- a/firmware/console/ethernet_console.cpp +++ b/firmware/controllers/modules/ethernet_console/ethernet_console.cpp @@ -1,7 +1,5 @@ #include "pch.h" -#if EFI_ETHERNET - #include "lwipthread.h" #include "lwip/sockets.h" @@ -80,8 +78,6 @@ struct EthernetThread : public TunerstudioThread { static EthernetThread ethernetConsole; -void startEthernetConsole() { +void EthernetConsoleModule::initNoConfiguration() { ethernetConsole.start(); } - -#endif // EFI_ETHERNET diff --git a/firmware/controllers/modules/ethernet_console/ethernet_console.mk b/firmware/controllers/modules/ethernet_console/ethernet_console.mk new file mode 100644 index 0000000000..0fb167cd30 --- /dev/null +++ b/firmware/controllers/modules/ethernet_console/ethernet_console.mk @@ -0,0 +1,4 @@ +MODULES_CPPSRC += $(PROJECT_DIR)/controllers/modules/ethernet_console/ethernet_console.cpp +MODULES_LIST += EthernetConsoleModule, + +DDEFS += -DMODULE_ETHERNET_CONSOLE=1 diff --git a/firmware/hw_layer/ports/rusefi_halconf.h b/firmware/hw_layer/ports/rusefi_halconf.h index 588ba0ffe9..e4ceaf37e7 100644 --- a/firmware/hw_layer/ports/rusefi_halconf.h +++ b/firmware/hw_layer/ports/rusefi_halconf.h @@ -41,7 +41,7 @@ #define USB_USE_WAIT (EFI_FILE_LOGGING && EFI_USB_SERIAL) // Ethernet -#define HAL_USE_MAC EFI_ETHERNET +#define HAL_USE_MAC MODULE_ETHERNET_CONSOLE /*===========================================================================*/ /* Required rusEFI settings */ diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp index 89b5b92988..b57dcd7d37 100644 --- a/firmware/rusefi.cpp +++ b/firmware/rusefi.cpp @@ -205,9 +205,9 @@ void runRusEfi() { detectBoardType(); -#if EFI_ETHERNET - startEthernetConsole(); -#endif + engine->engineModules.apply_all([](auto & m) { + m.initNoConfiguration(); + }); #if EFI_USB_SERIAL startUsbConsole(); diff --git a/simulator/simulator/efifeatures.h b/simulator/simulator/efifeatures.h index bd0ebfe114..77b83d5283 100644 --- a/simulator/simulator/efifeatures.h +++ b/simulator/simulator/efifeatures.h @@ -151,4 +151,3 @@ #define EFI_USE_OPENBLT FALSE #define EFI_SOFTWARE_KNOCK FALSE #define ENABLE_AUTO_DETECT_HSE FALSE -#define EFI_ETHERNET FALSE