scd30_interface/
lib.rs

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
//! # SCD30 Driver
//!
//! A driver for interacting with Sensirion's [SCD30](https://sensirion.com/products/catalog/SCD30)
//! CO2 measuring sensor via I2C. This driver is based on
//! [embedded-hal](https://docs.rs/embedded-hal/latest/embedded_hal/) traits.
//!
//! # Example
//!
//! ```ignore
//! use scd30_interface::Scd30;
//! use scd30_interface::data::DataStatus;
//! use esp_hal::i2c::master::{Config, I2c};
//! use dfmt;
//!
//! #[entry]
//! fn main() {
//!     let peripherals = esp_hal::init(esp_hal::Config::default());
//!
//!     let i2c = I2c::new(peripherals.I2C0, Config::default())
//!         .with_sda(peripherals.GPIO4)
//!         .with_scl(peripherals.GPIO5);
//!
//!     let sensor = Scd30::new(i2c);
//!
//!     // Read out firmware version
//!     let firmware_version = sensor.read_firmware_version().unwrap();
//!
//!     loop {
//!         while sensor.is_data_ready() != DataStatus::Ready {}
//!         let measurement = sensor.read_measurement().unwrap();
//!         dfmt::log!("{}", measurement);
//!     }
//! }
//! ```

#![cfg_attr(not(test), no_std)]
#![forbid(unsafe_code)]
#![deny(missing_docs)]

pub mod command;
pub mod data;
pub mod error;
mod interface;
mod util;

pub use interface::Scd30;