automotive_diag

GitHub crates.io version docs.rs docs CI build

This crate provides low-level no_std structs and enums of the Unified Diagnostic Services specification for the road vehicles iso-14229-1 in Rust.

Usage

All values are presented as Rust enum, and can be converted to/from their underlying numeric values using the From<T> and TryFrom<u8> traits. Additionally, there is a ByteWrapper<T> enum to handle the non-standard Extended(u8) values in addition to the recognized Standand(T) ones.

```rust use automotivediag::ByteWrapper::{Extended, Standard}; use automotivediag::uds::UdsCommand::{DiagnosticSessionControl, ECUReset}; use automotive_diag::uds::UdsCommandByte;

/// Handle a single command byte on the ECU side fn handlecmdbyte(cmd: u8) { match UdsCommandByte::from(cmd) { Standard(DiagnosticSessionControl) => { // handlediagsession() }, Standard(ECUReset) => { // handleecureset() }, Extended(0x42) => { // handlecustomcmd_42() }, _ => { // handle all other commands } } } ```

Additionally, support KWP2000 and OBD-II protocols.

Credits

The code was forked from the amazing rnd-ash/ecudiagnostics project. The code was forked from the last MIT-versioned code before the MIT to GPL license migration. Initially, this code was developed as a deprecated autouds crate.