Skip to content

LibUDS 1.12.0

Choose a tag to compare

@github-actions github-actions released this 15 Jun 12:23
· 270 commits to develop since this release

UDSLib v1.12.0

Universal Diagnostics Stack for Embedded Systems


What's New

Added

  • ISO-TP transfer timeouts: N_Cr (reception) and N_Bs (transmission) deadlines abort a stalled multi-frame transfer instead of wedging the engine; configurable per instance.
  • SecurityAccess sequence enforcement (0x27): sendKey without a preceding requestSeed is rejected with NRC 0x24; the issued seed is now passed to the key verifier.

Changed

  • BREAKING (transport): the bundled ISO-TP layer is now fully instance-based. uds_tp_isotp_init/set_fd/process, uds_isotp_send, and uds_isotp_rx_callback take an explicit uds_isotp_ctx_t * and a caller-provided TX buffer (no file-global state); multiple channels can run concurrently. Wire fn_tp_send to a small adapter that forwards to the instance.

Fixed

  • Mutex deadlock: uds_process held the lock on the RCRRP-limit abort path.
  • Client/server state: a finished asynchronous server request could swallow a later request as a stale client response; pending state is now split into server/client fields.
  • DID session gating: per-DID programming and extended sessions were mapped to each other's bits (access-control flaw in 0x22/0x2E).
  • Periodic scheduler (0x2A): deadline comparison is now wrap-safe across the 32-bit millisecond rollover.
  • ISO-TP framing: reject short SF/FF/FC frames and NULL/zero-length payloads.
  • Zephyr: example and module now build (added missing uds_service_io.c; completed the instance-based transport migration).

CI

  • Fixed docker_run.sh, which ran bash -c "bash" and left static-analysis, build-posix, and build-zephyr as silent no-ops.
  • Upgraded the toolchain to Ubuntu 24.04 (Python 3.12) with Zephyr SDK 1.0.1; made the coverage script lcov 2.x compatible.

Test Results

40 / 40 tests passed (0 failed) across unit, transport, compliance, and integration suites.


Build Information

  • Version: 1.12.0
  • Build Date: 2026-06-15 12:23:29 UTC
  • Compliance: ISO 14229-1 (UDS)
  • Platform Support: Bare Metal, FreeRTOS, Zephyr, Linux, Windows

Supported Services

UDSLib v1.12.0 implements 16 ISO 14229-1 services:

Service Description SID
Diagnostic Session Control Session management 0x10
ECU Reset Reset operations 0x11
Clear Diagnostic Information DTC clearing 0x14
Read DTC Information DTC reporting 0x19
Read Data By Identifier Data reading 0x22
Read Memory By Address Memory access 0x23
Security Access Seed/Key exchange 0x27
Communication Control TX/RX control 0x28
Authentication Certificate exchange 0x29
Write Data By Identifier Data writing 0x2E
Routine Control Routine execution 0x31
Request Download OTA init 0x34
Transfer Data Block streaming 0x36
Request Transfer Exit OTA completion 0x37
Write Memory By Address Memory writing 0x3D
Tester Present Keep-alive 0x3E
Control DTC Setting DTC ON/OFF 0x85

Installation

Download Pre-built Binaries

Download the attached artifacts:

  • uds_host_sim - Host-based ECU simulator
  • unit_tests - Complete test suite

Build from Source

git clone https://github.com/w1ne/udslib.git
cd udslib
git checkout v1.12.0
mkdir build && cd build
cmake ..
make
ctest

Documentation

Licensing

  • Community: PolyForm Noncommercial 1.0.0 (noncommercial use). See LICENSE.
  • Commercial: 5,000 EUR for production/commercial use, includes integration + 1 year support.
  • Contact: andrii@shylenko.com for commercial terms and support.

Report Issues

Found a bug? Open an issue

Full Changelog

See CHANGELOG.md for complete version history.


Code Coverage

Line Coverage: 80.9% (741 of 916 lines) · Function Coverage: 93.8% (45 of 48)

Summary coverage rate:
lines......: 80.9% (741 of 916 lines)
functions..: 93.8% (45 of 48 functions)
branches...: no data found

Full coverage report available in release artifacts.