embedded_devices/
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//! Device driver implementations for many embedded sensors and devices
//!
#![cfg_attr(not(doctest), doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md")))]
#![cfg_attr(not(feature = "std"), no_std)]
#![feature(generic_arg_infer)]

pub mod devices;
pub(crate) mod simple_device;
pub mod utils;

#[cfg(test)]
mod tests {
    use crate::devices::bosch::{
        bme280::registers::{Reset, ResetBitfield, ResetMagic},
        bmp390::registers::{Error, ErrorBitfield, Pressure, PressureBitfield},
    };

    #[test]
    fn register_bme280_reset() {
        let value = ResetBitfield {
            magic: ResetMagic::Reset,
        };

        let reg = Reset::new(value.clone());
        assert_eq!(reg.data, [0xb6]);
        assert_eq!(reg.read_all(), value);
    }

    #[test]
    fn register_bmp390_error() {
        let value = ErrorBitfield {
            fatal_err: true,
            cmd_err: false,
            conf_err: true,
            reserved: 0,
        };

        let reg = Error::new(value.clone());
        assert_eq!(reg.data, [0b00000101]);
        assert_eq!(reg.read_all(), value);
    }

    #[test]
    fn register_bmp390_pressure() {
        let value = PressureBitfield { pressure: 0x123456 };

        let reg = Pressure::new(value.clone());
        assert_eq!(reg.data, [0x56, 0x34, 0x12]);
        assert_eq!(reg.read_all(), value);
    }

    // FIXME: once bondrewd #[test]
    // FIXME: once bondrewd fn register_bmp390_fifo_length() {
    // FIXME: once bondrewd     let value = FifoLengthBitfield {
    // FIXME: once bondrewd         reserved: 0b0100010,
    // FIXME: once bondrewd         length: 0b110000101,
    // FIXME: once bondrewd     };

    // FIXME: once bondrewd     let reg = FifoLength::new(value.clone());
    // FIXME: once bondrewd     assert_eq!(reg.data, [0b10000101, 0b01000101]);
    // FIXME: once bondrewd     assert_eq!(reg.read_all(), value);
    // FIXME: once bondrewd }
}