1111#[ derive( Copy , Clone , Debug , PartialEq , Eq ) ]
1212#[ cfg_attr( feature = "defmt-03" , derive( defmt:: Format ) ) ]
1313#[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
14+ #[ cfg_attr( feature = "postcard-experimental" , derive( postcard:: experimental:: max_size:: MaxSize ) ) ]
1415pub struct Gyro {
1516 pub ( crate ) x : i16 ,
1617 pub ( crate ) y : i16 ,
@@ -61,6 +62,12 @@ impl Gyro {
6162 }
6263}
6364
65+ impl From < Gyro > for [ i16 ; 3 ] {
66+ fn from ( value : Gyro ) -> Self {
67+ [ value. x , value. y , value. z ]
68+ }
69+ }
70+
6471/// Full-scale range settings for the gyroscope.
6572///
6673/// Each setting defines the maximum measurable rotation rate:
@@ -71,6 +78,7 @@ impl Gyro {
7178#[ derive( Copy , Clone , Debug ) ]
7279#[ cfg_attr( feature = "defmt-03" , derive( defmt:: Format ) ) ]
7380#[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
81+ #[ cfg_attr( feature = "postcard-experimental" , derive( postcard:: experimental:: max_size:: MaxSize ) ) ]
7482pub enum GyroFullScale {
7583 /// ±250°/s range (131 LSB/°/s)
7684 Deg250 = 0 ,
@@ -105,6 +113,7 @@ impl GyroFullScale {
105113#[ derive( Copy , Clone , Debug ) ]
106114#[ cfg_attr( feature = "defmt-03" , derive( defmt:: Format ) ) ]
107115#[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
116+ #[ cfg_attr( feature = "postcard-experimental" , derive( postcard:: experimental:: max_size:: MaxSize ) ) ]
108117pub struct GyroF32 {
109118 /// Roll rate (°/s)
110119 x : f32 ,
@@ -131,3 +140,9 @@ impl GyroF32 {
131140 self . z
132141 }
133142}
143+
144+ impl From < GyroF32 > for [ f32 ; 3 ] {
145+ fn from ( value : GyroF32 ) -> Self {
146+ [ value. x , value. y , value. z ]
147+ }
148+ }
0 commit comments