obd2/src/lib.rs
Nicholas Orlowsky 821e80aaaf
Serialport Support
- allow communication to elm327 device via a serialport
- allow creation of elm327 device without requiring unwrap()
- added some extra documentation
- expose reset() functionality of device
- serial_comm and ftdi_comm abstractions added
2025-05-23 18:41:49 -04:00

39 lines
1.1 KiB
Rust

//! Crate for communicating with OBD-II (on-board diagnostics) interfaces on cars
//!
//! Currently only the ELM327 is supported (many cheap USB to OBD-II devices you can buy online are
//! compatible with the ELM327). The high-level data retrieval functions can be found in
//! [commands::Obd2DataRetrieval].
//!
//! # Usage
//! ```
//! use obd2::{commands::Obd2DataRetrieval, device::{Elm327, FTDIDevice}, Obd2};
//!
//! fn main() -> Result<(), obd2::Error> {
//! let mut device = Obd2::<Elm327::<FTDIDevice>>::new(Elm327::new(FTDIDevice::new()?)?)?;
//! println!("VIN: {}", device.get_vin()?);
//! Ok(())
//! }
//! ```
//!
//! alternatively, you could use a serial port provided by your operating system such as
//! /dev/ttyUSB0 on unix-like systems
//! ```
//! let mut device = Obd2::<Elm327::<SerialPort>>::new(Elm327::new(SerialPort::new("/dev/ttyUSB0")?)?)?;
//! ```
#![forbid(unsafe_code)]
#![warn(missing_docs, clippy::panic)]
pub mod commands;
pub mod device;
mod error;
pub use error::Error;
use error::Result;
mod interface;
pub use interface::Obd2;
mod obd2_device;
pub use obd2_device::Obd2Device;