embedded_sensors/ak8963/
config.rs1#[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}