1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#![deny(missing_docs)]
pub mod master;
pub mod node;
pub use master::Master;
pub use node::NodeState;
pub use types::{
Address, Error as TypeError, IntoAddress, IntoParameter, IntoValue, Parameter, Value,
};
mod buffer;
mod nom_parser;
mod types;
mod ascii {
pub const ACK: u8 = 6;
pub const BS: u8 = 8;
pub const ENQ: u8 = 5;
pub const EOT: u8 = 4;
pub const ETX: u8 = 3;
pub const NAK: u8 = 21;
pub const STX: u8 = 2;
}
pub(crate) fn bcc(data: &[u8]) -> u8 {
let mut checksum: u8 = 0;
for byte in data {
checksum ^= *byte;
}
if checksum < 0x20 {
checksum += 0x20;
}
checksum
}