Skip to content

Core definitions of the Unified Diagnostic Services (UDS), KWP2000, and OBD-II specifications for road vehicles

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

nyurik/automotive_diag

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Automotive diagnostics in Rust

GitHub crates.io version docs.rs docs crates.io version CI build

This crate provides low-level no_std structs and enums of the Unified Diagnostic Services (ISO-14229-1), KWP2000 (ISO-142330) and OBD-II (ISO-9141) specifications for the road vehicles in Rust.

Not everything is implemented yet, but the goal is to provide a full set of enums and structs to handle the most common diagnostic commands and responses. If you need a specific command or response, please open an issue or better yet, a pull request.

Usage

All values are presented as Rust enum, and can be converted to/from their underlying numeric values using the T::from_repr(u8) and u8::from(value). Most enums also have a corresponding ...Byte enums as ByteWrapper<T> to handle the non-standard Extended(u8) values in addition to the defined Standand(T) ones.

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

/// Handle a single command byte on the ECU side
fn handle_cmd_byte(cmd: u8) {
    match UdsCommandByte::from(cmd) {
        Standard(DiagnosticSessionControl) => {
            // handle_diag_session()
        }
        Standard(ECUReset) => {
            // handle_ecu_reset()
        }
        Extended(0x42) => {
            // handle_custom_cmd_42()
        }
        _ => {
            // handle all other commands
        }
    }
}

Development

  • This project is easier to develop with just, a modern alternative to make. Install it with cargo install just.
  • To get a list of available commands, run just.
  • To run tests, use just test.
  • On git push, it will run a few validations, including cargo fmt, cargo clippy, and cargo test. Use git push --no-verify to skip these checks.

Credits

The code was forked from the amazing rnd-ash/ecu_diagnostics 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 auto_uds crate.

License

Licensed under either of

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Core definitions of the Unified Diagnostic Services (UDS), KWP2000, and OBD-II specifications for road vehicles

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published