liquidrust/
utils.rs

1use rand::Rng;
2
3pub fn random_byte() -> u8 {
4  rand::thread_rng().gen_range(1..=31) << 3
5}
6
7pub fn crc8(data: &[u8]) -> u8 {
8  data.iter().fold(0x00, |mut crc, &byte| {
9    crc ^= byte;
10    for _ in 0..8 {
11      crc = if crc & 0x80 != 0 {
12        (crc << 1) ^ 0x07
13      } else {
14        crc << 1
15      };
16    }
17    crc
18  })
19}
20
21pub fn u16le_from(buffer: &[u8], offset: usize) -> u16 {
22  u16::from_le_bytes([buffer[offset], buffer[offset + 1]])
23}
24
25pub fn byte_to_fraction(value: u8) -> f32 {
26  ((value as f32) / 255.0) * 100.0
27}
28
29pub fn fraction_of_byte(value: f32) -> u8 {
30  (value * 255.0).round() as u8
31}