38 lines
949 B
Rust
Raw Normal View History

2025-01-12 00:53:26 +01:00
use crate::lsm6ds3tr::registers::Ctrl1Xl;
use crate::lsm6ds3tr::{AccelSampleRate, AccelScale, RegisterConfig};
/// Accelerometer settings
#[derive(Default)]
pub struct AccelSettings {
pub sample_rate: AccelSampleRate,
pub scale: AccelScale,
}
impl AccelSettings {
pub fn new() -> Self {
Self::default()
.with_sample_rate(AccelSampleRate::_416Hz)
.with_scale(AccelScale::_2G)
}
pub fn with_sample_rate(mut self, sample_rate: AccelSampleRate) -> Self {
self.sample_rate = sample_rate;
self
}
pub fn with_scale(mut self, scale: AccelScale) -> Self {
self.scale = scale;
self
}
/// Returns accelerometer-related register config to be written
pub fn config(&self) -> RegisterConfig {
Ctrl1Xl {
sample_rate: self.sample_rate,
scale: self.scale,
..Default::default()
}
.config()
}
}