sen0177 0.5.0

Read air quality data from the SEN0177 and PMSA003I sensors
Documentation
use linux_embedded_hal::{
    serialport::{self, DataBits, FlowControl, Parity, StopBits},
    Serial,
};
use sen0177::{serial::Sen0177, AirQualitySensor};
use std::time::Duration;

const SERIAL_PORT: &str = "/dev/ttyS0";
const BAUD_RATE: u32 = 9600;
const DATA_BITS: DataBits = DataBits::Eight;
const PARITY: Parity = Parity::None;
const STOP_BITS: StopBits = StopBits::One;
const FLOW_CONTROL: FlowControl = FlowControl::None;

pub fn main() -> anyhow::Result<()> {
    let builder = serialport::new(SERIAL_PORT, BAUD_RATE)
        .data_bits(DATA_BITS)
        .flow_control(FLOW_CONTROL)
        .parity(PARITY)
        .stop_bits(STOP_BITS)
        .timeout(Duration::from_millis(1500));
    let serial = Serial::open_from_builder(builder)?;
    let mut sensor = Sen0177::new(serial);

    loop {
        match sensor.read() {
            Ok(reading) => {
                println!(
                    "PM1: {}µg/m³, PM2.5: {}µg/m³, PM10: {}µg/m³",
                    reading.pm1(),
                    reading.pm2_5(),
                    reading.pm10()
                );
            }
            Err(err) => eprintln!("Error: {:?}", err),
        }
    }
}