From bc0da717eb33395984b214d18a374f4abcc7c55a Mon Sep 17 00:00:00 2001 From: Scott Lawrence Date: Thu, 28 Nov 2024 02:49:22 -0700 Subject: Getting current battery charge --- src/main.rs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main.rs b/src/main.rs index 634f7ee..14b193d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -44,6 +44,8 @@ use signal_hook::{consts::SIGINT,iterator::Signals}; mod forecast; +type Result = std::result::Result>; + fn read_line>(p: P) -> Result { let s = read_to_string(p)?; Ok(s.lines().next().ok_or("")?.to_string()) @@ -94,14 +96,24 @@ struct Cli { #[derive(Debug, Serialize, Deserialize, Default)] struct Battery { path: PathBuf, + charge: f64, } impl Battery { fn new(p: &Path) -> Self { Battery { path: p.to_path_buf(), + charge: 1.0, } } + + fn update(&mut self) { + let cfp = self.path.join("charge_full"); + let cnp = self.path.join("charge_now"); + let cf: i32 = read_line(cfp).unwrap().parse().unwrap(); + let cn: i32 = read_line(cnp).unwrap().parse().unwrap(); + self.charge = cn as f64 / cf as f64 ; + } } #[derive(Debug, Serialize, Deserialize, Default)] @@ -135,6 +147,9 @@ impl Power { } fn update(&mut self) { + for bat in &mut self.batteries { + bat.update(); + } } } @@ -193,11 +208,10 @@ impl State { self.asof = SystemTime::now(); self.uptime = si.uptime; self.memory.update(si); + self.power.update(); } } -type Result = std::result::Result>; - fn update_state(state: &mut State) { state.update(); } -- cgit v1.2.3-54-g00ecf