Skip to content

Commit d2d8588

Browse files
authored
Merge pull request #17 from LechevSpace/feat/serde-feature
feat: optional serde feature
2 parents 4c6a29a + a433c23 commit d2d8588

File tree

15 files changed

+26
-1
lines changed

15 files changed

+26
-1
lines changed

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@ readme = "README.md"
1616
[features]
1717
default = []
1818
defmt-03 = ["dep:defmt"]
19+
serde = ["dep:serde"]
1920
async = ["dep:embedded-hal-async"]
2021

2122
[dependencies]
2223
embedded-hal = { version = "1" }
2324
embedded-hal-async = { version = "1", optional = true }
2425
libm = "0.2"
2526

27+
serde = { version = "1", features = ["derive"], default-features = false, optional = true }
2628
defmt = { version = "0.3", optional = true }

src/accel.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
/// - Must be scaled by full-scale range for g-force values
1818
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
1919
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
20+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2021
pub struct Accel {
2122
pub(crate) x: i16,
2223
pub(crate) y: i16,
@@ -93,6 +94,7 @@ impl Accel {
9394
/// - Maximum measurable acceleration
9495
#[derive(Copy, Clone, Debug)]
9596
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
97+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
9698
pub enum AccelFullScale {
9799
/// ±2g range (16384 LSB/g)
98100
G2 = 0,
@@ -129,8 +131,9 @@ impl AccelFullScale {
129131
/// - ±16g in G16 mode
130132
///
131133
/// Note: The Z axis will read ~1g when stationary due to gravity
132-
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
133134
#[derive(Debug, Clone, Copy)]
135+
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
136+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
134137
pub struct AccelF32 {
135138
/// X-axis acceleration in g-force
136139
x: f32,

src/address.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
/// require left-shifting by 1 to create the 8-bit address.
2121
#[derive(Copy, Clone, Debug)]
2222
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
23+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2324
pub struct Address(pub u8);
2425

2526
impl Default for Address {

src/calibration.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ pub(crate) const DELAY_MS: u32 = 2;
2222
/// Maximum allowed deviation from zero after calibration
2323
#[derive(Copy, Clone, Debug)]
2424
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
25+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2526
pub struct CalibrationThreshold {
2627
value: i16,
2728
}
@@ -108,6 +109,7 @@ impl CalibrationThreshold {
108109
/// - Zero: No gravity compensation
109110
#[derive(Copy, Clone, Debug)]
110111
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
112+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
111113
pub enum ReferenceGravity {
112114
Zero,
113115
XN,
@@ -150,6 +152,7 @@ impl ReferenceGravity {
150152
/// - Bits 3-5: Gyroscope (X,Y,Z)
151153
#[derive(Copy, Clone, Debug)]
152154
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
155+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
153156
pub struct CalibrationActions {
154157
flags: u8,
155158
}
@@ -248,6 +251,7 @@ impl CalibrationActions {
248251
/// - Gravity compensation direction
249252
#[derive(Copy, Clone, Debug)]
250253
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
254+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
251255
pub struct CalibrationParameters {
252256
/// Acceleration scale
253257
pub accel_scale: AccelFullScale,
@@ -325,6 +329,7 @@ impl CalibrationParameters {
325329
/// - Running sum of gyroscope readings
326330
/// - Gravity compensation vector
327331
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
332+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
328333
pub struct MeanAccumulator {
329334
pub ax: i32,
330335
pub ay: i32,

src/clock_source.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
/// - External component availability
2121
#[derive(Debug, Copy, Clone)]
2222
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
23+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2324
pub enum ClockSource {
2425
/// Internal 8MHz oscillator
2526
/// - Fastest startup

src/config.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
/// - Noise reduction: How much sensor noise is filtered out
2020
#[derive(Copy, Clone, Debug)]
2121
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
22+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2223
pub enum DigitalLowPassFilter {
2324
/// Minimal filtering
2425
/// - Fastest response

src/euler.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use crate::quaternion::Quaternion;
1515
/// 3. Yaw (ψ): Rotation around Z axis
1616
#[derive(Debug, Clone, Copy)]
1717
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
18+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1819
pub struct Euler {
1920
/// Yaw angle (ψ) in radians (-π to π)
2021
pub psi: f64,

src/fifo.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
/// of sensor data.
1818
#[derive(Debug, Default, Copy, Clone)]
1919
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
20+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2021
pub struct Fifo {
2122
pub temp: bool,
2223
pub xg: bool,

src/gravity.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ use crate::quaternion::Quaternion;
2323
/// - The vector magnitude should always be approximately 1g
2424
#[derive(Debug, Copy, Clone)]
2525
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
26+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2627
pub struct Gravity {
2728
/// Forward/backward tilt component
2829
pub x: f32,

src/gyro.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
/// Values represent rotation rate in ADC units.
1111
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
1212
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
13+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1314
pub struct Gyro {
1415
pub(crate) x: i16,
1516
pub(crate) y: i16,
@@ -69,6 +70,7 @@ impl Gyro {
6970
/// - Deg2000: ±2000 degrees/second
7071
#[derive(Copy, Clone, Debug)]
7172
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
73+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7274
pub enum GyroFullScale {
7375
/// ±250°/s range (131 LSB/°/s)
7476
Deg250 = 0,
@@ -102,6 +104,7 @@ impl GyroFullScale {
102104
/// - Negative: Counter-clockwise rotation
103105
#[derive(Copy, Clone, Debug)]
104106
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
107+
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
105108
pub struct GyroF32 {
106109
/// Roll rate (°/s)
107110
x: f32,

0 commit comments

Comments
 (0)