The MUM (Melexis Universal Master) adapter is the current default; the
BabyLIN SDK adapter is retained only for backward compatibility with
existing rigs.
Code:
- Emit DeprecationWarning when BabyLinInterface is instantiated and
when tests/conftest.py routes interface.type=='babylin' to it.
- Update module/class docstrings in ecu_framework/{__init__,config,
lin/__init__,lin/babylin}.py to label BabyLIN-specific fields and
paths as deprecated.
Config / scripts / pytest:
- pytest.ini: relabel the babylin marker as deprecated.
- config/{babylin.example,examples,test_config}.yaml: add deprecation
banners and field comments.
- scripts/99-babylin.rules and scripts/pi_install.sh: annotate the
udev-rule install block as legacy-only.
Documentation:
- TESTING_FRAMEWORK_GUIDE.md, docs/08_babylin_internals.md, and
vendor/README.md: prepend explicit "DEPRECATED" banners.
- docs/{README,01,02,04,05,07,09,10,12,13,14,15,18,DEVELOPER_COMMIT_
GUIDE}.md: relabel "legacy" to "deprecated" where babylin is
mentioned, present MUM as the primary path, and steer new work
toward the MUM examples.
No tests, configs, or modules were deleted; existing BabyLIN setups
keep working but now produce a clear DeprecationWarning at runtime.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1.7 KiB
1.7 KiB
Flashing Sequence (ECU Programming)
This document outlines the expected flashing workflow using the HexFlasher scaffold over the LIN interface and where you can plug in your production flasher (UDS).
Overview
- Flashing is controlled by configuration (
flash.enabled,flash.hex_path) - The
flash_ecusession fixture invokes the flasher before tests - The flasher uses the same
LinInterfaceas tests
Mermaid sequence
sequenceDiagram
autonumber
participant P as pytest
participant F as flash_ecu fixture
participant H as HexFlasher
participant L as LinInterface (mock/mum/babylin — babylin deprecated)
participant E as ECU
P->>F: Evaluate flashing precondition
alt flash.enabled == true and hex_path provided
F->>H: HexFlasher(lin).flash_hex(hex_path)
H->>L: connect (ensure session ready)
H->>E: Enter programming session (UDS)
H->>E: Erase memory (as required)
loop For each block in HEX
H->>L: Transfer block via LIN frames
L-->>H: Acks / flow control
end
H->>E: Verify checksum / signature
H->>E: Exit programming, reset if needed
H-->>F: Return success/failure
else
F-->>P: Skip flashing
end
Implementation notes
ecu_framework/flashing/hex_flasher.pyis a stub — replace with your protocol implementation (UDS)- Validate timing requirements and chunk sizes per ECU
- Consider power-cycle/reset hooks via programmable poewr supply.
Error handling
- On failure, the fixture calls
pytest.fail("ECU flashing failed") - Make flashing idempotent when possible (can retry or detect current version)
Configuration example
flash:
enabled: true
hex_path: "firmware/ecu_firmware.hex"