ISO14229 Library¶
Overview¶
The ISO14229 library provides a lightweight Zephyr-based wrapper around the iso14229 library by driftregion. It enables implementation of ISO 14229-1 (Unified Diagnostic Services) compliant servers on Zephyr RTOS with minimal integration effort.
This library serves as the low-level foundation for the UDS Library, which provides a higher-level, event-driven API for building UDS servers. Most applications should use the UDS library instead of directly interfacing with ISO14229.
Key Features¶
Event-Driven Architecture: Callback-based design for handling diagnostic requests
Minimal API Surface: Simple initialization and callback registration
Optional Threading: Built-in thread management eliminates the need for manual polling
ISO-TP Integration: Handles CAN transport layer (ISO 15765-2) automatically
Architecture¶
The library consists of three main components:
ISO-TP Layer: Manages segmented CAN message transmission and reception
UDS Server: Processes diagnostic service requests and generates responses
Event Callback System: Notifies application code of incoming diagnostic events
┌─────────────────────────────────────────┐
│ Application (Event Handler) │
└──────────────────┬──────────────────────┘
│ Callbacks
┌──────────────────▼──────────────────────┐
│ ISO14229 Zephyr Wrapper (this lib) │
│ ┌────────────────────────────────────┐ │
│ │ UDS Server (iso14229 upstream) │ │
│ └────────────────────────────────────┘ │
│ ┌────────────────────────────────────┐ │
│ │ ISO-TP (CAN Transport) │ │
│ └────────────────────────────────────┘ │
└──────────────────┬──────────────────────┘
│ CAN Frames
┌──────────────────▼──────────────────────┐
│ Zephyr CAN Driver (can_dev) │
└─────────────────────────────────────────┘
When to Use This Library¶
Use ISO14229 library directly if:
You need fine-grained control over UDS event handling
You’re implementing custom or non-standard diagnostic protocols
You want to minimize memory overhead
Use the higher-level UDS library if:
You’re building a standard ISO 14229-1 compliant server
You want to register handlers for specific services/subfunctions
You need built-in support for session management, security access, etc.
Example¶
See ISO14229 Sample. The sample demonstrates:
ISO-TP configuration
CAN device initialization
Event callback registration
Session control handling