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 }
}