#![allow(clippy::print_stdout, missing_docs)]
use bitframe::prelude::*;
#[bitframe_enum]
#[repr(u8)]
pub enum SensorStatus {
Ok = 0,
Warning = 1,
Error = 2,
Offline = 3,
}
#[bitframe]
pub struct SensorReading {
pub temperature: u12,
pub status: u2,
pub seq: u10,
}
fn main() -> Result<(), bitframe::Error> {
let bytes: &[u8] = &[0x10, 0x04, 0x2A];
let (reading, _) = SensorReadingRef::parse(bytes)?;
let temp_raw = reading.temperature().value();
let status = SensorStatus::from_raw(reading.status());
println!("=== Sensor Reading ===");
println!(
" Temperature: {} ({:.1} degrees)",
temp_raw,
f64::from(temp_raw) / 10.0
);
println!(" Status: {status:?}");
println!(" Sequence: {}", reading.seq());
println!();
println!("Debug: {reading:?}");
Ok(())
}