J2534
=====
Low-level SAE J2534 (PassThru) support for rust.
## J2534 Introduction
SAE J2534 PassThru defines a standard library interface for communicating with vehicle control modules.
All automakers in the US are required to provide J2534-compatible service software.
J2534 provides access to the communication layer required for accessing vehicle diagnostics services as
well as downloading and reflashing control modules.
## Usage
The J2534 specification requires PassThru libraries to be compiled for 32 bit, so any program using this crate must be compiled as 32 bit.
### Example
```rust
use j2534::{Interface, PassThruMsg, Protocol, ConnectFlags, RxStatus, TxFlags};
fn main() -> j2534::Result<()> {
// Open the library and connect to a device
let interface = Interface::new("C:\\device.dll")?;
let device = interface.open_any()?;
// Create a CAN channel
let channel = device
.connect(Protocol::CAN, ConnectFlags::NONE, 500000)
.unwrap();
// Create a new message with an arbitration id of `8` and payload of `[0, 1, 2, 3]`.
let message = PassThruMsg::new_can(8, &[0, 1, 2, 3]);
channel.write(&mut [message], 1000)?;
Ok(())
}
```