fupsrl

09 — Architecture, Supported Scope, and Testing

2 min read Updated 15 July 2026

INCAZ is organised as a small, readable Python application. The design separates file interpretation, XCP transport, acquisition/calibration/flash logic, persistent project data, and the desktop GUI so each layer can be tested independently.

Module map

incaz/
  core/
    a2l/           ASAP2 parser and object model
    conversions    A2L raw ↔ physical value conversion
    calibration    RECORD_LAYOUT-based characteristic access
    hexfile        Intel HEX memory image
    database       Folder database + SQLite index
    hardware       XCP Ethernet configuration
    xcp_client     Threaded pyxcp master wrapper
    acquisition    POLLING/DAQ sampling and sample dispatch
    recorder       ASAM MDF 4.10 writer
    flash          XCP PGM/ProF flash controller
  gui/             PySide6 windows, dialogs, editors and plots
  sim/             Bundled demo XCP slave (UDP + TCP)
demo/              Demo A2L and HEX
installer/         Windows installation/demo launch scripts

Threading model

XCP communication is owned by the client worker, while the GUI reads latest values and its own plot buffers on Qt timers. GUI widgets do not receive raw transport callbacks directly. This separation helps keep the application responsive under normal DAQ traffic and makes behavior easier to test.

Supported workflow scope

  • XCP on Ethernet over UDP and TCP.
  • A2L projects with measurement, characteristic, axis, conversion, layout, memory-segment, group/function, transport, and event information needed by the application.
  • POLLING and dynamic DAQ measurement.
  • Measure tables, scopes, multi-layer experiments, MF4 recording.
  • Offline HEX and online working-page calibration for supported characteristic layouts.
  • XCP PGM flash workflow with progress, abort, optional checksum, optional reset, and optional unlock.
  • Windows and Linux Python environments; Python 3.10+.

Current status and roadmap

The package identifies itself as alpha. Treat coverage as feature-specific and validate with the target A2L/ECU. Planned or future work may include per-variable measure-window refresh control, STIM, CAN/CAN-FD transports, data-set comparison/copy, label lists, VAL_BLK grid enhancements, curve interpolation helpers, checksum-verified image comparison, and packaged binaries.

Testing

pip install -e .[dev]
python demo/make_demo_hex.py
pytest

The end-to-end suite uses the bundled demo ECU and covers connection, polling, DAQ, online calibration, MF4 recording, and flashing through UDP and TCP. GUI smoke tests can run headlessly. Add target-specific regression checks before relying on a new A2L, calibration strategy, or flash configuration.

License and dependencies

INCAZ is MIT licensed. It depends on pyxcp, asammdf, and PySide6 under LGPL terms, pyqtgraph under MIT, and intelhex under BSD. Review the repository’s license/dependency notices when distributing a packaged product.