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:

images winols_text_3d WinOLS program

Immediate Next Steps (0-2 Weeks)

  1. 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
  2. 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
  3. Minimum Viable CLI

    • Add checksum verification command:
      ecutil-cli checksum verify --algo=crc32 file.bin

Mid-Term (2-8 Weeks)

  1. Phase 4: Checksum System

    • Core CRC/BSD algorithms in core/checksum
    • Plugin loader for ECU-specific checksums:
      #[derive(Plugin)]
      struct BoschME7Checksum;
  2. GUI Foundation

    • SwiftUI file browser with binary hex preview
    • Map visualization using Charts framework:
      Chart(detectedTables) { table in 
          HeatMap(table.data) 
      }
  3. OBD-II Flashing Prep

    • Abstract transport layer (SerialPort trait)
    • J2534 passthrough prototype (via macOS drivers)

Long-Term (8+ Weeks)

  1. 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
  2. A2L/Damos Parser

    • ASAP2 grammar using nom or pest
    • Metadata-to-binary linking:
      a2l.link_binary(&bin_file)?;
  3. Commercial-Grade Features

    • Project management (.ecproj files)
    • Version control integration (Git for ECU binaries)
    • Differential patches (BSDiff algorithm)

Critical Upstream Dependencies

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

Validation Strategy

  1. Test ECUs

    • Bosch ME7 (benchmark against WinOLS)
    • Siemens SIMOS18 (complex checksums)
    • Toyota 2JZ (legacy formats)
  2. Community Involvement

    • Publish test suite with sample binaries
    • "Plugfest" for plugin developers

Risks & Mitigations

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
Loading

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."

⚠️ **GitHub.com Fallback** ⚠️