1#![no_std]
2#![doc = include_str!("../README.md")]
3#![warn(missing_docs)]
4
5pub mod device;
6pub mod interface;
7pub mod registers;
8pub mod sensors;
9
10pub mod fifo;
11pub mod interrupt;
12pub mod power;
13
14#[cfg(feature = "dmp")]
16pub mod dmp;
17
18pub use device::{AccelData, GyroData, Icm20948Driver, MagData};
20pub use interface::{I2cInterface, SpiInterface};
21pub use sensors::{
22 AccelCalibration, AccelConfig, AccelDataG, AccelDlpf, AccelFullScale, GyroCalibration,
23 GyroConfig, GyroDataDps, GyroDataRps, GyroDlpf, GyroFullScale, MagCalibration, MagConfig,
24 MagDataUT, MagMode,
25};
26
27pub use fifo::{
28 FIFO_SIZE, FifoConfig, FifoConfigAdvanced, FifoMode, FifoOverflowStatus, FifoRecord,
29 FifoWatermark,
30};
31pub use interrupt::{
32 DataReadyStatus, FsyncConfig, InterruptConfig, InterruptPinConfig, InterruptStatus, WomStatus,
33};
34pub use power::{
35 ClockSource, CycleConfig, LowPowerConfig, LowPowerRate, PowerMode, PowerStatus,
36 SensorPowerConfig, WomMode,
37};
38
39pub const I2C_ADDRESS_AD0_LOW: u8 = 0x68;
45
46pub const I2C_ADDRESS_AD0_HIGH: u8 = 0x69;
51
52pub const WHO_AM_I_VALUE: u8 = 0xEA;
54
55#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
57#[cfg_attr(feature = "defmt", derive(defmt::Format))]
58pub enum Bank {
59 Bank0 = 0,
61 Bank1 = 1,
63 Bank2 = 2,
65 Bank3 = 3,
67}
68
69#[derive(Debug)]
71#[cfg_attr(feature = "defmt", derive(defmt::Format))]
72pub enum Error<E> {
73 Bus(E),
75 InvalidDevice(u8),
77 InvalidConfig,
79 BankSwitch,
81 Magnetometer,
83 DeviceMoving,
85 CalibrationOverflow,
87 FifoOverflow,
89}
90
91impl<E> From<E> for Error<E> {
92 fn from(error: E) -> Self {
93 Self::Bus(error)
94 }
95}