67 lines
2.1 KiB
Markdown
67 lines
2.1 KiB
Markdown
# Architecture Overview
|
||
|
||
This document provides a high-level view of the framework’s components and how they interact, plus a Mermaid diagram for quick orientation.
|
||
|
||
## Components
|
||
|
||
- Tests (pytest) — test modules and functions under `tests/`
|
||
- Fixtures — defined in `tests/conftest.py` (config, lin, flash_ecu)
|
||
- Config Loader — `ecu_framework/config.py` (YAML → dataclasses)
|
||
- LIN Abstraction — `ecu_framework/lin/base.py` (`LinInterface`, `LinFrame`)
|
||
- Mock LIN Adapter — `ecu_framework/lin/mock.py`
|
||
- BabyLIN Adapter — `ecu_framework/lin/babylin.py` (SDK wrapper → BabyLIN_library.py)
|
||
- Flasher — `ecu_framework/flashing/hex_flasher.py`
|
||
- Reporting Plugin — `conftest_plugin.py` (docstring → report metadata)
|
||
- Reports — `reports/report.html`, `reports/junit.xml`
|
||
|
||
## Mermaid architecture diagram
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
subgraph Tests & Pytest
|
||
T[tests/*]
|
||
CF[tests/conftest.py]
|
||
PL[conftest_plugin.py]
|
||
end
|
||
|
||
subgraph Framework
|
||
CFG[ecu_framework/config.py]
|
||
BASE[ecu_framework/lin/base.py]
|
||
MOCK[ecu_framework/lin/mock.py]
|
||
BABY[ecu_framework/lin/babylin.py]
|
||
FLASH[ecu_framework/flashing/hex_flasher.py]
|
||
end
|
||
|
||
subgraph Artifacts
|
||
REP[reports/report.html<br/>reports/junit.xml]
|
||
YAML[config/*.yaml<br/>(babylin.example.yaml, test_config.yaml)]
|
||
SDK[vendor/BabyLIN_library.py<br/>platform-specific libs]
|
||
end
|
||
|
||
T --> CF
|
||
CF --> CFG
|
||
CF --> BASE
|
||
CF --> MOCK
|
||
CF --> BABY
|
||
CF --> FLASH
|
||
PL --> REP
|
||
|
||
CFG --> YAML
|
||
BABY --> SDK
|
||
T --> REP
|
||
```
|
||
|
||
## Data and control flow summary
|
||
|
||
- Tests use fixtures to obtain config and a connected LIN adapter
|
||
- Config loader reads YAML (or env override), returns typed dataclasses
|
||
- LIN calls are routed through the interface abstraction to the selected adapter
|
||
- Flasher (optional) uses the same interface to program the ECU
|
||
- Reporting plugin parses docstrings and enriches the HTML report
|
||
|
||
## Extending the architecture
|
||
|
||
- Add new bus adapters by implementing `LinInterface`
|
||
- Add new report sinks (e.g., JSON or a DB) by extending the plugin
|
||
- Add new fixtures for diagnostics or measurement tools (Scopes, power supplies, etc.)
|