@@ -185,6 +185,28 @@ impl fmt::Display for AccelData {
185185 }
186186}
187187
188+ #[ derive( Debug , Copy , Clone , PartialEq , Eq ) ]
189+ pub enum LidAngle {
190+ Angle ( u16 ) ,
191+ Unreliable ,
192+ }
193+ impl From < u16 > for LidAngle {
194+ fn from ( a : u16 ) -> Self {
195+ match a {
196+ LID_ANGLE_UNRELIABLE => Self :: Unreliable ,
197+ _ => Self :: Angle ( a) ,
198+ }
199+ }
200+ }
201+ impl fmt:: Display for LidAngle {
202+ fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
203+ match self {
204+ Self :: Angle ( deg) => write ! ( f, "{}" , deg) ,
205+ Self :: Unreliable => write ! ( f, "Unreliable" ) ,
206+ }
207+ }
208+ }
209+
188210fn read_string ( ec : & CrosEc , address : u16 ) -> String {
189211 let bytes = ec. read_memory ( address, EC_MEMMAP_TEXT_MAX ) . unwrap ( ) ;
190212 String :: from_utf8_lossy ( bytes. as_slice ( ) ) . replace ( [ '\0' ] , "" )
@@ -219,7 +241,7 @@ pub fn get_als_reading(ec: &CrosEc) -> Option<u32> {
219241 Some ( u32:: from_le_bytes ( [ als[ 0 ] , als[ 1 ] , als[ 2 ] , als[ 3 ] ] ) )
220242}
221243
222- pub fn get_accel_data ( ec : & CrosEc ) -> ( AccelData , AccelData , u16 ) {
244+ pub fn get_accel_data ( ec : & CrosEc ) -> ( AccelData , AccelData , LidAngle ) {
223245 // bit 4 = busy
224246 // bit 7 = present
225247 // #define EC_MEMMAP_ACC_STATUS_SAMPLE_ID_MASK 0x0f
@@ -235,7 +257,11 @@ pub fn get_accel_data(ec: &CrosEc) -> (AccelData, AccelData, u16) {
235257 // println!(" Status Bit: {} 0x{:X}", acc_status, acc_status);
236258 // println!(" Present: {}", (acc_status & 0x80) > 0);
237259 // println!(" Busy: {}", (acc_status & 0x8) > 0);
238- ( AccelData :: from ( accel_1) , AccelData :: from ( accel_2) , lid_angle)
260+ (
261+ AccelData :: from ( accel_1) ,
262+ AccelData :: from ( accel_2) ,
263+ LidAngle :: from ( lid_angle) ,
264+ )
239265}
240266
241267pub fn print_sensors ( ec : & CrosEc ) {
0 commit comments