38 lines
949 B
Rust
38 lines
949 B
Rust
|
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()
|
||
|
}
|
||
|
}
|