#[derive(Copy, Clone, Eq, PartialEq, Debug)]
pub enum ChargerState {
Discharging,
Charging,
Full,
}
#[derive(Copy, Clone, Eq, PartialEq, Debug, Ord, PartialOrd)]
pub struct StateOfCharge {
level: u8,
}
impl StateOfCharge {
pub fn from_percentage(percentage: u8) -> Self {
assert!(percentage <= 100);
let percentage = percentage as u32;
let level = percentage * 255 / 100;
Self::from_level(level as u8)
}
pub const fn from_level(level: u8) -> Self {
Self { level }
}
pub fn level(&self) -> u8 {
self.level
}
pub fn percentage(&self) -> u8 {
let level = self.level as u32;
let percentage = level * 100 / 255;
percentage as u8
}
}