hdlc Build Status

hdlc

Rust implementation of a High-level Data Link Control (HDLC) library with support of the IEEE standard.

Usage

Add hdlc to Cargo.toml toml [dependencies] hdlc = "^0.1.1" or toml [dependencies.hdlc] git = "https://github.com/CLomanno/hdlc-rust"

Add this to crate root rust extern crate hdlc;

Encode packet

```rust extern crate hdlc; use hdlc::{SpecialChars, encode};

// Set up your vector of bytes and generate your Special Characters let msg: Vec = vec![0x01, 0x50, 0x00, 0x00, 0x00, 0x05, 0x80, 0x09]; let cmp: Vec = vec![126, 1, 80, 0, 0, 0, 5, 128, 9, 126]; let chars = SpecialChars::default();

// Encode your message let result = encode(msg, chars);

assert!(result.isok()); asserteq!(result.unwrap(), cmp); ```

Custom Special Characters

```rust extern crate hdlc; use hdlc::{SpecialChars, encode};

let msg: Vec = vec![0x01, 0x7E, 0x70, 0x7D, 0x00, 0x05, 0x80, 0x09]; let cmp: Vec = vec![0x71, 1, 126, 112, 80, 125, 0, 5, 128, 9, 0x71]; let chars = SpecialChars::new(0x71, 0x70, 0x51, 0x50);

let result = encode(msg, chars);

assert!(result.isok()); asserteq!(result.unwrap(), cmp) ```

Decode packet

```rust extern crate hdlc; use hdlc::{SpecialChars, decode};

let chars = SpecialChars::default(); let msg: Vec = vec![chars.fend, 0x01, 0x50, 0x00, 0x00, 0x00, 0x05, 0x80, 0x09, chars.fend]; let cmp: Vec = vec![1, 80, 0, 0, 0, 5, 128, 9];

let result = decode(msg, chars);

assert!(result.isok()); asserteq!(result.unwrap(), cmp); ```

License

Licensed under either of

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.