Skip to content

Releases: christoph2/pyxcp

v0.28.0 - Critical Bug Fixes

01 Mar 05:14

Choose a tag to compare

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.

v0.27.1 - CAN Padding Fix

15 Feb 11:10

Choose a tag to compare

Critical bug fix for Issue #205: CAN-FD padding corruption.

See CHANGELOG.md for full details: https://github.com/christoph2/pyxcp/blob/master/CHANGELOG.md