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.