Skip to content

Commit f298354

Browse files
committed
power: Properly encode AccelData/LidAngle
Signed-off-by: Daniel Schaefer <dhs@frame.work>
1 parent 42c5803 commit f298354

1 file changed

Lines changed: 28 additions & 2 deletions

File tree

framework_lib/src/power.rs

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
188210
fn 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

241267
pub fn print_sensors(ec: &CrosEc) {

0 commit comments

Comments
 (0)