62 lines
2.6 KiB
Rust
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(),
|
|
}
|
|
}
|
|
}
|