diff --git a/src/decoder/layout.rs b/src/decoder/layout.rs index aaabea0..32ed075 100644 --- a/src/decoder/layout.rs +++ b/src/decoder/layout.rs @@ -29,7 +29,7 @@ pub struct Layout { impl Layout { /// Bytes the frame must carry for this signal to be read. pub fn needs(&self) -> usize { - self.byte + (self.length as usize + 7) / 8 + self.byte + (self.length as usize).div_ceil(8) } /// The signal's value from a frame's data, or None when the frame is too short. diff --git a/src/decoder/main.rs b/src/decoder/main.rs index be8a699..2dfe485 100644 --- a/src/decoder/main.rs +++ b/src/decoder/main.rs @@ -284,12 +284,10 @@ fn main() -> ExitCode { loop { if sock.is_none() && last_open_try.elapsed() >= Duration::from_secs(2) { last_open_try = Instant::now(); - match socket::RxSocket::open(&iface, &ids, Duration::from_millis(100)) { - Ok(s) => { - eprintln!("decoder: {iface} open"); - sock = Some(s); - } - Err(_) => {} // absent or down: the state says so, retried every 2 s + // Absent or down: the state says so, retried every 2 s. + if let Ok(s) = socket::RxSocket::open(&iface, &ids, Duration::from_millis(100)) { + eprintln!("decoder: {iface} open"); + sock = Some(s); } } match sock.as_ref().map(|s| s.recv()) {