Hosam-Eldin Mostafa 7cf74312d6 feat(tests): add build-time generated LIN API + design doc
Introduces a typed layer between the LDF and hardware tests so frame /
signal / enum-value typos become import errors instead of runtime
KeyErrors. This complements the runtime ``LdfDatabase`` in
``ecu_framework/lin/ldf.py`` rather than replacing it.

- scripts/gen_lin_api.py: LDF → Python generator. Reads an LDF via
  ldfparser and emits one ``IntEnum`` per logical-valued
  Signal_encoding_types block, one class per pure-physical encoding
  type, and one class per frame with NAME / FRAME_ID / LENGTH /
  PUBLISHER / SIGNALS / SIGNAL_LAYOUT plus ``send`` / ``receive`` /
  ``read_signal`` classmethods that delegate to a caller-supplied
  ``FrameIO``. Output starts with a "DO NOT EDIT — re-run" header and
  the source-LDF SHA-256 prefix for traceability.
- tests/hardware/_generated/__init__.py + lin_api.py: the generated
  output for vendor/4SEVEN_color_lib_test.ldf. Already consumed by
  tests/hardware/mum/test_mum_alm_animation_generated.py to demonstrate
  the "no AlmTester anywhere" pattern.
- docs/22_generated_lin_api.md: design doc covering the generation
  rules, the build-time-vs-runtime layering with LdfDatabase, the
  rationale for keeping AlmTester-style helpers above this layer, and
  worked before/after examples.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 19:48:12 +02:00
..
2026-04-28 23:47:17 +02:00
2026-04-29 00:56:07 +02:00

Documentation Index

A guided tour of the ECU testing framework. Start here:

  1. 01_run_sequence.md — End-to-end run sequence and call flow
  2. 02_configuration_resolution.md — How configuration is loaded and merged
  3. 03_reporting_and_metadata.md — How test documentation becomes report metadata
  4. 11_conftest_plugin_overview.md — Custom pytest plugin: hooks, call sequence, and artifacts
  5. 04_lin_interface_call_flow.md — LIN abstraction and adapter behavior (Mock, MUM, and the deprecated BabyLIN)
  6. 05_architecture_overview.md — High-level architecture and components
  7. 06_requirement_traceability.md — Requirement markers and coverage visuals
  8. 07_flash_sequence.md — ECU flashing workflow and sequence diagram
  9. 08_babylin_internals.md — BabyLIN SDK wrapper internals and call flow (DEPRECATED)
  10. 16_mum_internals.md — MUM (Melexis Universal Master) adapter internals and call flow
  11. 17_ldf_parser.md — LDF parser, ldf fixture, and per-frame pack/unpack helpers
  12. 18_test_catalog.md — Per-test catalog: purpose, markers, hardware needs, expected result
  13. DEVELOPER_COMMIT_GUIDE.md — What to commit vs ignore, commands
  14. 09_raspberry_pi_deployment.md — Run on Raspberry Pi (venv, service, hardware notes)
  15. 10_build_custom_image.md — Build a custom Raspberry Pi OS image with the framework baked in
  16. 12_using_the_framework.md — Practical usage: local, hardware (MUM, or the deprecated BabyLIN), CI, and Pi
  17. 13_unit_testing_guide.md — Unit tests layout, markers, coverage, and tips
  18. 14_power_supply.md — Owon PSU control, configuration, tests, and quick demo script
  19. 15_report_properties_cheatsheet.md — Standardized keys for record_property/rp across suites
  20. 19_frame_io_and_alm_helpers.md — Hardware-test helpers: FrameIO (generic LDF I/O) and AlmTester (ALM_Node domain), plus the tests/hardware/_test_case_template.py starting point
  21. 20_docker_image.md — Containerizing the framework: mock-only CI image, hardware-passthrough image, the Melexis-package obstacle, compose & CI examples
  22. 21_yocto_image_for_raspberry_pi.md — Building a Yocto image that turns a Raspberry Pi into a self-contained test bench (BSP layout, recipes, network/USB config, deploy & maintenance)
  23. 23_config_loader_internals.md — How ecu_framework/config/loader.py is implemented: merge semantics, type coercion, schema quirks, and the PSU side-channel
  24. 24_test_wiring.md — How tests are wired to the framework: fixture topology, session lifecycle, the polymorphism boundary on lin, and the playbook for adding a new framework component

Related references:

  • Root project guide: ../README.md
  • Full framework guide: ../TESTING_FRAMEWORK_GUIDE.md
  • BabyLIN placement and integration: ../vendor/README.md (deprecated; only relevant for legacy rigs)
  • MUM source scripts and protocol details: ../vendor/automated_lin_test/README.md
  • PSU quick demo and scripts: ../vendor/Owon/