ROAD MAP - MykeHaunt/Mac-OLS GitHub Wiki
Here's a prioritized roadmap for advancing the ECU Tuning Suite, balancing immediate needs with long-term vision:
-
Complete Core Engine
- Implement
mapdetector
heuristics (sliding window + statistical analysis) - Add unit tests for binary patterns (e.g., 8x8 float matrix detection)
- Benchmark against WinOLS sample files
- Implement
-
Rust-Swift Interop
- Finalize
cbindgen
headers for all core structs - Implement memory safety wrappers in Swift:
Defer { ecutil_free_buffer(ptr) } // Auto-free Rust allocations
- Finalize
-
Minimum Viable CLI
- Add checksum verification command:
ecutil-cli checksum verify --algo=crc32 file.bin
- Add checksum verification command:
-
Phase 4: Checksum System
- Core CRC/BSD algorithms in
core/checksum
- Plugin loader for ECU-specific checksums:
#[derive(Plugin)] struct BoschME7Checksum;
- Core CRC/BSD algorithms in
-
GUI Foundation
- SwiftUI file browser with binary hex preview
- Map visualization using
Charts
framework:Chart(detectedTables) { table in HeatMap(table.data) }
-
OBD-II Flashing Prep
- Abstract transport layer (
SerialPort
trait) - J2534 passthrough prototype (via macOS drivers)
- Abstract transport layer (
-
Phase 5: Flashing Toolkit
- Unified flash protocol interface:
trait FlashProtocol { fn read_ecu_id(&self) -> Result<String>; fn write_block(&mut self, offset: usize, data: &[u8]) -> Result<()>; }
- SAE J2534-1 compliance for shop tools
- Unified flash protocol interface:
-
A2L/Damos Parser
- ASAP2 grammar using
nom
orpest
- Metadata-to-binary linking:
a2l.link_binary(&bin_file)?;
- ASAP2 grammar using
-
Commercial-Grade Features
- Project management (
.ecproj
files) - Version control integration (Git for ECU binaries)
- Differential patches (BSDiff algorithm)
- Project management (
Component | Priority | Notes |
---|---|---|
crc-catalog |
High | Standard checksum algorithms |
serialport-rs |
Medium | OBD-II with thread-safe I/O |
nom |
Medium | A2L file parsing |
libloading |
High | Plugin hot-reloading |
-
Test ECUs
- Bosch ME7 (benchmark against WinOLS)
- Siemens SIMOS18 (complex checksums)
- Toyota 2JZ (legacy formats)
-
Community Involvement
- Publish test suite with sample binaries
- "Plugfest" for plugin developers
Risk | Solution |
---|---|
Apple Silicon memory layouts | Audit #[repr(C)] and alignment |
ECU vendor-specific quirks | Plugin system + community DB |
Real-time flashing safety | Watchdog timer + CRC-verified writes |
Key Deliverable Timeline:
gantt
title ECU Suite Roadmap
dateFormat YYYY-MM-DD
section Core
Map Detection :active, 2024-03-01, 14d
Checksum System :2024-03-15, 21d
section GUI
Hex Editor :2024-03-10, 28d
Map Visualizer :2024-04-01, 21d
section Hardware
J2534 Integration :2024-05-01, 30d
Next Immediate Action:
Focus on completing the mapdetector
tests with real ECU samples (PR welcome for test binaries). The CLI should be able to replicate WinOLS' basic detection results before GUI integration begins.
This plan maintains the project's core philosophy: "Native performance first, Windows parity second, innovation throughout."