1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#![allow(non_upper_case_globals)]
#[cfg(feature = "out_f32")]
use num_derive::FromPrimitive;
#[allow(dead_code)]
#[allow(non_camel_case_types)]
#[allow(clippy::upper_case_acronyms)]
#[derive(Copy, Clone)]
pub enum Register {
OUT_T_L = 0x0D,
OUT_T_H = 0x0E,
WHO_AM_I = 0x0F,
CTRL1 = 0x20,
CTRL2 = 0x21,
CTRL3 = 0x22,
CTRL4_INT1_PAD_CTRL = 0x23,
CTRL5_INT2_PAD_CTRL = 0x24,
CTRL6 = 0x25,
OUT_T = 0x26,
STATUS = 0x27,
OUT_X_L = 0x28,
OUT_X_H = 0x29,
OUT_Y_L = 0x2A,
OUT_Y_H = 0x2B,
OUT_Z_L = 0x2C,
OUT_Z_H = 0x2D,
FIFO_CTRL = 0x2E,
FIFO_SAMPLES = 0x2F,
TAP_THS_X = 0x30,
TAP_THS_Y = 0x31,
TAP_THS_Z = 0x32,
INT_DUR = 0x33,
WAKE_UP_THS = 0x34,
WAKE_UP_DUR = 0x35,
FREE_FALL = 0x36,
STATUS_DUP = 0x37,
WAKE_UP_SRC = 0x38,
TAP_SRC = 0x39,
SIXD_SRC = 0x3A,
ALL_INT_SRC = 0x3B,
X_OFS_USR = 0x3C,
Y_OFS_USR = 0x3D,
Z_OFS_USR = 0x3E,
CTRL7 = 0x3F,
}
impl Register {
pub fn addr(self) -> u8 {
self as u8
}
}
#[derive(Copy, Clone)]
#[cfg_attr(feature = "out_f32", derive(FromPrimitive))]
pub enum OutputDataRate {
PowerDown = 0x00,
Hp12Hz5Lp1Hz6 = 0x01,
Hp12Hz5Lp12Hz5 = 0x02,
Hp25HzLp25Hz = 0x03,
Hp50HzLp50Hz = 0x04,
Hp100HzLp100Hz = 0x05,
Hp200HzLp200Hz = 0x06,
Hp400HzLp200Hz = 0x07,
Hp800HzLp200Hz = 0x08,
Hp1600HzLp200Hz = 0x09,
}
#[derive(Copy, Clone, PartialEq, Eq)]
pub enum OperatingMode {
LowPower = 0x00,
HighPerformance = 0x01,
SingleOnDemand = 0x02,
}
#[derive(Copy, Clone)]
pub enum LowPowerMode {
Mode1 = 0x00,
Mode2 = 0x01,
Mode3 = 0x02,
Mode4 = 0x03,
}
#[derive(Copy, Clone)]
pub enum FullScaleSelection {
PlusMinus2G = 0x00,
PlusMinus4G = 0x01,
PlusMinus8G = 0x02,
PlusMinus16G = 0x03,
}
pub const DEVICE_ID: u8 = 0b0100_0100;