embedded_devices/
lib.rs

1//! Device driver implementations for many embedded sensors and devices
2//!
3#![cfg_attr(not(doctest), doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md")))]
4#![cfg_attr(not(feature = "std"), no_std)]
5#![feature(generic_arg_infer)]
6
7pub mod device;
8pub mod devices;
9pub mod sensor;
10pub mod utils;
11
12pub use uom;
13
14#[cfg(test)]
15mod tests {
16    #[cfg(feature = "bosch-bme280")]
17    #[test]
18    fn register_bme280_reset() {
19        use crate::devices::bosch::bme280::registers::{ResetMagic, ResetUnpacked};
20        let value = ResetUnpacked {
21            magic: ResetMagic::Reset,
22        };
23
24        let reg = value.pack();
25        assert_eq!(reg.0, [0xb6]);
26        assert_eq!(reg.unpack(), value);
27    }
28
29    #[cfg(feature = "bosch-bmp390")]
30    #[test]
31    fn register_bmp390_error() {
32        use crate::devices::bosch::bmp390::registers::ErrorUnpacked;
33        let value = ErrorUnpacked {
34            fatal_err: true,
35            cmd_err: false,
36            conf_err: true,
37        };
38
39        let reg = value.pack();
40        assert_eq!(reg.0, [0b00000101]);
41        assert_eq!(reg.unpack(), value);
42    }
43
44    #[cfg(feature = "bosch-bmp390")]
45    #[test]
46    fn register_bmp390_pressure() {
47        use crate::devices::bosch::bmp390::registers::PressureUnpacked;
48        let value = PressureUnpacked { value: 0x123456 };
49
50        let reg = value.pack();
51        assert_eq!(reg.0, [0x56, 0x34, 0x12]);
52        assert_eq!(reg.unpack(), value);
53    }
54
55    #[cfg(feature = "texas_instruments-ina228")]
56    #[test]
57    fn register_defaults() {
58        use crate::devices::texas_instruments::ina228::registers::AdcConfiguration;
59        let reg = AdcConfiguration::default();
60        assert!(reg.read_enable_temperature());
61    }
62
63    #[cfg(feature = "bosch-bmp390")]
64    #[test]
65    fn register_bmp390_fifo_length() {
66        use crate::devices::bosch::bmp390::registers::FifoLengthUnpacked;
67        let value = FifoLengthUnpacked { length: 0b110000101 };
68
69        let reg = value.pack();
70        assert_eq!(reg.0, [0b10000101, 0b00000001]);
71        assert_eq!(reg.unpack(), value);
72    }
73}