lis2dw12/
reg.rs

1#![allow(non_upper_case_globals)]
2
3#[cfg(feature = "out_f32")]
4use num_derive::FromPrimitive;
5
6/// Register mapping
7#[allow(dead_code)]
8#[allow(non_camel_case_types)]
9#[allow(clippy::upper_case_acronyms)]
10#[derive(Copy, Clone)]
11pub enum Register {
12    OUT_T_L = 0x0D,             // Temp sensor output
13    OUT_T_H = 0x0E,             // Temp sensor output
14    WHO_AM_I = 0x0F,            // Who am I ID
15    CTRL1 = 0x20,               // Control
16    CTRL2 = 0x21,               // Control
17    CTRL3 = 0x22,               // Control
18    CTRL4_INT1_PAD_CTRL = 0x23, // Control
19    CTRL5_INT2_PAD_CTRL = 0x24, // Control
20    CTRL6 = 0x25,               // Control
21    OUT_T = 0x26,               // Temp sensor output
22    STATUS = 0x27,              // Status data
23    OUT_X_L = 0x28,             // Output
24    OUT_X_H = 0x29,             // Output
25    OUT_Y_L = 0x2A,             // Output
26    OUT_Y_H = 0x2B,             // Output
27    OUT_Z_L = 0x2C,             // Output
28    OUT_Z_H = 0x2D,             // Output
29    FIFO_CTRL = 0x2E,           // FIFO control
30    FIFO_SAMPLES = 0x2F,        // Unread samples stored in FIFO
31    TAP_THS_X = 0x30,           // Tap thresholds
32    TAP_THS_Y = 0x31,           // Tap thresholds
33    TAP_THS_Z = 0x32,           // Tap thresholds
34    INT_DUR = 0x33,             // Interrupt duration
35    WAKE_UP_THS = 0x34,         // Tap/double-tap selection, inactivity enable, wakeup threshold
36    WAKE_UP_DUR = 0x35,         // Wakeup duration
37    FREE_FALL = 0x36,           // Free-fall configuration
38    STATUS_DUP = 0x37,          // Status
39    WAKE_UP_SRC = 0x38,         // Wakeup source
40    TAP_SRC = 0x39,             // Tap source
41    SIXD_SRC = 0x3A,            // 6D source
42    ALL_INT_SRC = 0x3B,         // All interrupt source
43    X_OFS_USR = 0x3C,           // Offset data for wakeup
44    Y_OFS_USR = 0x3D,           // Offset data for wakeup
45    Z_OFS_USR = 0x3E,           // Offset data for wakeup
46    CTRL7 = 0x3F,               // Control
47}
48
49impl Register {
50    pub fn addr(self) -> u8 {
51        self as u8
52    }
53}
54#[derive(Copy, Clone)]
55#[cfg_attr(feature = "out_f32", derive(FromPrimitive))]
56pub enum OutputDataRate {
57    PowerDown = 0x00,       // power down (default)
58    Hp12Hz5Lp1Hz6 = 0x01,   // High-Performance 12.5Hz / Low-Power 1.6 Hz
59    Hp12Hz5Lp12Hz5 = 0x02,  // High-Performance 12.5 Hz / Low-Power mode 12.5 Hz
60    Hp25HzLp25Hz = 0x03,    // High-Performance 25 Hz / Low-Power 25 Hz
61    Hp50HzLp50Hz = 0x04,    // High-Performance 50 Hz / Low-Power 50 Hz
62    Hp100HzLp100Hz = 0x05,  // High-Performance 100 Hz / Low-Power mode 100 Hz
63    Hp200HzLp200Hz = 0x06,  // High-Performance 200 Hz / Low-Power mode 200 Hz
64    Hp400HzLp200Hz = 0x07,  // High-Performance 400 Hz / Low-Power mode 200 Hz
65    Hp800HzLp200Hz = 0x08,  // High-Performance 800 Hz / Low-Power mode 200 Hz
66    Hp1600HzLp200Hz = 0x09, // High-Performance 1600 Hz / Low-Power mode 200 Hz
67}
68
69#[derive(Copy, Clone, PartialEq, Eq)]
70pub enum OperatingMode {
71    LowPower = 0x00,        // Low-Power Mode (12/14-bit resolution)
72    HighPerformance = 0x01, // High-Performance Mode (14-bit resolution) (ignore LowPowerMode setting)
73    SingleOnDemand = 0x02,  // Single data conversion on demand mode (12/14-bit resolution)
74}
75
76#[derive(Copy, Clone)]
77pub enum LowPowerMode {
78    Mode1 = 0x00, // Low-Power Mode 1 (12-bit resolution)
79    Mode2 = 0x01, // Low-Power Mode 2 (14-bit resolution)
80    Mode3 = 0x02, // Low-Power Mode 3 (14-bit resolution)
81    Mode4 = 0x03, // Low-Power Mode 4 (14-bit resolution)
82}
83
84#[derive(Copy, Clone)]
85pub enum FullScaleSelection {
86    PlusMinus2G = 0x00, // default
87    PlusMinus4G = 0x01,
88    PlusMinus8G = 0x02,
89    PlusMinus16G = 0x03,
90}
91
92/// WHO_AM_I device identification register
93pub const DEVICE_ID: u8 = 0b0100_0100; // 0x44 or 68 (decimal)