embedded_sensors/ak8963/
config.rs

1#[derive(Debug, Clone)]
2pub struct Config {
3    pub(crate) output_bits: OutputBits,
4    pub(crate) measurement_mode: MeasurementMode,
5}
6
7impl Config {
8    pub fn output_bits(mut self, output_bits: OutputBits) -> Self {
9        self.output_bits = output_bits;
10        self
11    }
12
13    pub fn measurement_mode(mut self, measurement_mode: MeasurementMode) -> Self {
14        self.measurement_mode = measurement_mode;
15        self
16    }
17}
18
19impl Default for Config {
20    fn default() -> Self {
21        Self {
22            output_bits: OutputBits::Bits16,
23            measurement_mode: MeasurementMode::ContinuousMeasurement100Hz,
24        }
25    }
26}
27
28#[derive(Debug, Clone, Copy)]
29pub enum OutputBits {
30    Bits14,
31    Bits16,
32}
33
34impl OutputBits {
35    pub fn get_resolution(&self) -> f32 {
36        match *self {
37            OutputBits::Bits14 => 10.0 * 4912.0 / 8190.0,
38            OutputBits::Bits16 => 10.0 * 4912.0 / 32760.0,
39        }
40    }
41}
42
43#[derive(Debug, Clone, Copy)]
44pub enum MeasurementMode {
45    SingleMeasurement = 0b0001,
46    ContinuousMeasurement8Hz = 0b0010,
47    ContinuousMeasurement100Hz = 0b0110,
48    ExternalTriggerMeasurement = 0b0100,
49}