7 releases
0.1.6 | Nov 8, 2023 |
---|---|
0.1.5 | Aug 31, 2023 |
0.1.4 | May 21, 2023 |
0.1.3 | Apr 15, 2023 |
#95 in Embedded development
3,905 downloads per month
Used in ecu_diagnostics
63KB
1K
SLoC
automotive_diag
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.
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. 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 withcargo 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, includingcargo fmt
,cargo clippy
, andcargo test
. Usegit 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
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
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.
Dependencies
~1.5MB
~34K SLoC