2025-01-12 00:53:26 +01:00

62 lines
2.6 KiB
Rust

//! Function routing on INT2 register (r/w).
use crate::lsm6ds3tr::{RegisterAddress, RegisterBits, RegisterConfig, RegisterValue};
/// Function routing on INT2 register (r/w).
#[derive(Default)]
pub struct Md2Cfg {
/// Routing on INT2 of inactivity mode. Default: 0
/// (0: routing on INT2 of inactivity disabled; 1: routing on INT2 of inactivity enabled)
pub inactivity_event: RegisterBits<1, 7>,
/// Single-tap recognition routing on INT2. Default: 0
/// (0: routing of single-tap event on INT2 disabled;
/// 1: routing of single-tap event on INT2 enabled)
pub single_tap_event: RegisterBits<1, 6>,
/// Routing of wakeup event on INT2. Default value: 0
/// (0: routing of wakeup event on INT2 disabled;
/// 1: routing of wake-up event on INT2 enabled)
pub wake_up_event: RegisterBits<1, 5>,
/// Routing of free-fall event on INT2. Default value: 0
/// (0: routing of free-fall event on INT2 disabled;
/// 1: routing of free-fall event on INT2 enabled)
pub free_fall_event: RegisterBits<1, 4>,
/// Routing of tap event on INT2. Default value: 0
/// (0: routing of double-tap event on INT2 disabled;
/// 1: routing of double-tap event on INT2 enabled)
pub double_tap_event: RegisterBits<1, 3>,
/// Routing of 6D event on INT2. Default value: 0
/// (0: routing of 6D event on INT2 disabled; 1: routing of 6D event on INT2 enabled)
pub six_degrees_event: RegisterBits<1, 2>,
/// Routing of tilt event on INT2. Default value: 0
/// (0: routing of tilt event on INT2 disabled; 1: routing of tilt event on INT2 enabled)
pub tilt_event: RegisterBits<1, 1>,
/// Routing of soft-iron/hard-iron algorithm end event on INT2. Default value: 0
/// (0: routing of soft-iron/hard-iron algorithm end event on INT2 disabled;
/// 1: routing of soft-iron/hard-iron algorithm end event on INT2 enabled)
pub soft_hard_iron_algorithm_end_event: RegisterBits<1, 0>,
}
impl Md2Cfg {
pub fn address(&self) -> u8 {
RegisterAddress::MD2_CFG.address()
}
pub fn value(&self) -> u8 {
self.inactivity_event.shifted()
| self.single_tap_event.shifted()
| self.wake_up_event.shifted()
| self.free_fall_event.shifted()
| self.double_tap_event.shifted()
| self.six_degrees_event.shifted()
| self.tilt_event.shifted()
| self.soft_hard_iron_algorithm_end_event.shifted()
}
pub fn config(&self) -> RegisterConfig {
RegisterConfig {
address: self.address(),
value: self.value(),
}
}
}