This commit is contained in:
2026-03-15 23:22:44 +00:00
parent bb39568f01
commit 4afd870e65
2 changed files with 19 additions and 6 deletions

View File

@@ -2,6 +2,7 @@ use std::{f32, fs};
use crate::data::{BatteryMutable, BatteryStatic}; use crate::data::{BatteryMutable, BatteryStatic};
#[derive(Debug)]
pub struct Battery { pub struct Battery {
charge: i64, charge: i64,
total_capacity: i64, total_capacity: i64,
@@ -20,22 +21,23 @@ impl Battery {
Err(_) => return Err(Battery_Error::NoBattery), Err(_) => return Err(Battery_Error::NoBattery),
} }
let energy_full: String = let mut energy_full: String =
fs::read_to_string("/sys/class/power_supply/BAT0/energy_full").unwrap(); fs::read_to_string("/sys/class/power_supply/BAT0/energy_full").unwrap();
let energy_full = energy_full.trim();
Ok(Battery { Ok(Battery {
charge: 0, charge: 0,
total_capacity: energy_full.parse().unwrap(), total_capacity: energy_full.parse().unwrap(),
}) })
} }
fn update(&mut self) -> Result<(), Battery_Error> { pub fn update(&mut self) -> Result<(), Battery_Error> {
let charge = fs::read_to_string("/sys/class/power_supply/BAT0/energy_now").unwrap(); let charge = fs::read_to_string("/sys/class/power_supply/BAT0/energy_now").unwrap();
self.charge = charge.parse().unwrap(); self.charge = charge.trim().parse().unwrap();
Ok(()) Ok(())
} }
fn as_data(&self) -> (BatteryStatic, BatteryMutable) { pub fn as_data(&self) -> (BatteryStatic, BatteryMutable) {
let batt_static = BatteryStatic { let batt_static = BatteryStatic {
total_capacity: self.total_capacity, total_capacity: self.total_capacity,
}; };
@@ -44,4 +46,8 @@ impl Battery {
}; };
(batt_static, batt_muteable) (batt_static, batt_muteable)
} }
pub fn percentage(&self) -> f64 {
let pec: f64 = (self.charge as f64 / self.total_capacity as f64);
return pec;
}
} }

View File

@@ -1,7 +1,14 @@
use std::{thread::sleep, time::Duration};
mod battery; mod battery;
mod data; mod data;
fn main() { fn main() {
let battery = battery::Battery::new(); let mut battery = battery::Battery::new().unwrap();
battery.unwrap(); loop {
battery.update().unwrap();
println!("{:?}", battery);
println!("{:?}", battery.percentage());
sleep(Duration::from_secs(3));
}
} }