Release v0.28.0 - 2026-03-01
π Critical Bug Fixes
This release addresses 4 production-critical bugs affecting real users:
1. DAQ InterleavedMode Fix (#210, WP-18)
- Impact: ERR_OUT_OF_RANGE when configuring DAQ with interleavedMode=True
- Root Cause: Sequence counter byte not included in overhead calculation
- Fix: Correctly calculates frame overhead for interleaved mode
- Affected: Dynamic DAQ allocation with interleaved slaves
- Credit: @starryfei for excellent bug report
2. MDF Timestamp Conversion (Discussion #270, WP-13)
- Impact: INCA error 'File contains reverse time stamps'
- Root Cause: Timestamps exported as nanoseconds instead of seconds
- Fix: Converts to seconds per ASAM MDF v4 specification
- Affected: xmraw β MDF conversion, INCA/asamdf compatibility
- Credit: @bobejo for detailed investigation
3. DaqRecorder Unmap Error (#269, WP-12)
- Impact: Spurious RuntimeError when stopping DAQ recording
- Root Cause: Stale errno causing false 'Resource temporarily unavailable'
- Fix: Clears errno before unmap() calls in C++ code
- Affected: DaqRecorder finalize/resize operations
- Credit: @bobejo for POSIX insights
4. xcp-profile CLI Script (Bonus Fix)
- Impact: 'xcp-profile convert file.toml -o output.py' crashed
- Root Cause: Incompatible trait configuration, no positional arg support
- Fix: Added positional argument parsing and proper exit codes
- Affected: Configuration file conversion workflow
π Testing
- β 312/312 tests passing
- β Validated against ETH server (interleavedMode=True)
- β Validated against CAN server (interleavedMode=False)
- β No regressions detected
π What Changed
DAQ System:
- \pyxcp/daq_stim/init.py: InterleavedMode overhead calculation
Recorder:
- \pyxcp/recorder/writer.hpp: errno handling in unmap operations
- \pyxcp/recorder/converter/init.py: MDF timestamp conversion
- \pyxcp/examples/ex_mdf.py: MDF timestamp conversion
Configuration:
- \pyxcp/config/init.py: xcp-profile positional arguments
π Community Impact
Issues Resolved:
- Closed #156: DAQ data retrieval (feature available since v0.22)
- Fixed #210: ERR_OUT_OF_RANGE with interleavedMode
- Fixed #269: DaqRecorder unmap error
- Fixed Discussion #270: MDF timestamp conversion
Special Thanks:
- @starryfei for identifying the interleavedMode sequence counter issue
- @bobejo for two critical bug reports with excellent diagnostics
π Upgrade Recommendation
HIGH PRIORITY if you:
- Use DAQ with slaves that have interleavedMode=True
- Export xmraw files to MDF format for use with INCA/Vector tools
- Experience spurious errors when stopping DaqRecorder
- Use xcp-profile convert command
π¦ Installation
\\οΏ½ash
pip install --upgrade pyxcp
\\
Full Changelog
See CHANGELOG.md for detailed technical information.