How fome-tech/fome-fw works
FOME is an open-source STM32 ECU firmware project with a Java tuning/debug console and a firmware simulator. In the main workflow, engine configuration and sensor/shaft-position inputs inform firmware control, which schedules fuel and ignition outputs; the console connects to a controller and presents engine data and trigger charts. The graph also preserves documented simulator and board/engine-configuration branches. Edges are limited to relationships shown in the excerpts, source index, or README; unsampled implementation details are not inferred.
Main entry points: engine.cpp Engine state · engine_controller.cpp Controller setup · main.cpp Firmware entry · custom_engine.cpp Engine setup
Components 18
Configuration
- Board setup
firmware/config/boards - Engine setup
firmware/config/engines/custom_engine.cpp
Engine control
- Firmware entry
firmware/main.cpp - Controller setup
firmware/controllers/engine_controller.cpp - Engine state
firmware/controllers/algo/engine.cpp - Fuel calculations
firmware/controllers/algo/fuel_math.h - Actuator control
firmware/controllers/actuators
Data and interfaces
- Sensor framework
firmware/controllers/sensors/core/sensor.cpp - Wave capture
firmware/development/engine_sniffer.cpp - Serial console
firmware/console - Firmware simulator
simulator/main.cpp
Console
- Controller link
java_console/io/src/main/java/com/rusefi/io/LinkManager.java - Data decoding
java_console/models/src/main/java/com/rusefi/core/EngineState.java - Sniffer display
java_console/ui/src/main/java/com/rusefi/ui/engine/EngineSnifferPanel.java - Chart parser
java_console/models/src/main/java/com/rusefi/waves/EngineChartParser.java - Wave report
java_console/models/src/main/java/com/rusefi/waves/EngineReport.java
Other components
- Engine inputs
- Tuner
Connections 16
- Engine inputs → Engine state: provides signals
- Board setup → Engine setup: configures
firmware/config/engines/custom_engine.cpp - Engine setup → Engine state: sets parameters
firmware/config/engines/custom_engine.cpp - Firmware entry → Controller setup: starts control
- Controller setup → Engine state: registers RPM
firmware/controllers/engine_controller.cpp - Engine state → Fuel calculations: uses calculations
firmware/controllers/algo/engine.cpp - Controller setup → Actuator control: prepares outputs
firmware/controllers/engine_controller.cpp - Engine state → Sensor framework: reads sensors
- Engine state → Wave capture: enables capture
- Wave capture → Serial console: publishes data
firmware/development/engine_sniffer.cpp - Firmware entry → Firmware simulator: runs in simulation
README.md - Tuner → Controller link: connects
- Controller link → Data decoding: creates decoder
java_console/io/src/main/java/com/rusefi/io/LinkManager.java - Tuner → Sniffer display: views charts
- Sniffer display → Chart parser: parses messages
java_console/ui/src/main/java/com/rusefi/ui/engine/EngineSnifferPanel.java - Chart parser → Wave report: builds reports