Crates.io | ecu_diagnostics |
lib.rs | ecu_diagnostics |
version | 0.96.1 |
source | src |
created_at | 2021-07-10 14:27:34.770942 |
updated_at | 2024-08-27 13:44:07.903023 |
description | A rust crate for ECU diagnostic servers and communication APIs |
homepage | |
repository | https://github.com/rnd-ash/ecu_diagnostics |
max_upload_size | |
id | 421114 |
size | 2,119,063 |
A cross-platform crate for the diagnostic servers used for ECU diagnostics.
ISO9141 - OBD2 is a legal requirement on all vehicles produced from 2002, allowing for reading of sensor data, reading and clearing standard DTCs, and reading basic vehicle information. OBD2 is designed to be safe and simple, and does not write data to the ECU.
ISO14230 - KWP2000 is a advanced diagnostic protocol utilized by many vehicle manufacturers from 2000-2006 (Superseded by UDS).
Unlike OBD2, KWP2000 allows for much more complex operations, which could potentially cause damage to a vehicle if used incorrectly.
A few examples of features allowed by KWP2000 are
The specification implemented in this crate is v2.2, dated 05-08-2002
ISO14429 - UDS is an advanced diagnostic protocol utilized by almost all vehicle manufacturers from 2006 onwards. Like KWP2000, this protocol allows for reading/writing directly to the ECU, and should therefore be used with caution.
The specification implemented in this crate is the second edition, dated 01-12-2006.
The individual diagnostic servers are now merged into 1 diagnostic server that can handle all the different protocols (Diagnostic protocol is specified at the servers creation). This dramatically reduces the crates bloat (Less copy/paste code), and the refactoring has also introduced some new features:
Custom service support: YES
Working specification services:
Custom service support: YES
Working specification services:
Custom service support: YES
Working specification services:
DiagnosticSessionControl
ECUReset
ReadDTCInformation
SecurityAccess
The Hardware API contains a common interface for scanning for compatible devices on a system as well as an API for creating Channels for diagnostic servers using the hardware
TBA