Expand description
§sensirion-hdlc
Only frames the data. Rust implementation of Sensirion High-level Data Link Control (HDLC) library.
§Usage
§Encode packet
extern crate sensirion_hdlc;
use sensirion_hdlc::{SpecialChars, encode};
let msg = [0x01, 0x50, 0x00, 0x00, 0x00, 0x05, 0x80, 0x09, 0x20];
let cmp = [0x7E, 0x01, 0x50, 0x00, 0x00, 0x00, 0x05, 0x80, 0x09, 0x20, 0x7E];
let result = encode(&msg, SpecialChars::default()).unwrap();
assert_eq!(result[0..result.len()], cmp);§Custom Special Characters
extern crate sensirion_hdlc;
use sensirion_hdlc::{SpecialChars, encode};
let msg = [0x01, 0x7E, 0x70, 0x50, 0x00, 0x05, 0x80, 0x09, 0xe2];
let cmp = [0x71, 0x01, 0x7E, 0x70, 0x50, 0x50, 0x00, 0x05, 0x80, 0x09, 0xe2, 0x71];
let chars = SpecialChars::new(0x71, 0x70, 0x51, 0x50, 0x11, 0x31, 0x13, 0x33).unwrap();
let result = encode(&msg, chars).unwrap();
assert_eq!(result[0..result.len()], cmp)§Decode packet
extern crate sensirion_hdlc;
use sensirion_hdlc::{SpecialChars, decode};
let chars = SpecialChars::default();
let msg = [
chars.fend, 0x01, 0x50, 0x00, 0x00, 0x00, 0x05, 0x80, 0x29, chars.fend,
];
let cmp = [0x01, 0x50, 0x00, 0x00, 0x00, 0x05, 0x80, 0x29];
let result = decode(&msg, chars).unwrap();
assert_eq!(result[0..result.len()], cmp);Structs§
- Special
Chars - Special Character structure for holding the encode and decode values.
Enums§
- HDLC
Error - Common error for HDLC actions.
Functions§
- calculate_
checksum - Calculate the SHDLC checksum
- decode
- Produces unescaped (decoded) message without
FENDcharacters. - encode
- Produces escaped (encoded) message surrounded with
FEND