pl: charge/load ah
commented out for now; because reading from the pl takes ages
This commit is contained in:
parent
97b5cfc370
commit
9c87f12a7d
1 changed files with 55 additions and 29 deletions
|
@ -22,6 +22,14 @@ pub struct PlState {
|
|||
pub internal_load_current: f64,
|
||||
pub battery_temp: f64,
|
||||
pub regulator_state: RegulatorState,
|
||||
// pub internal_charge_ah_accumulator: u16,
|
||||
// pub external_charge_ah_accumulator: u16,
|
||||
// pub internal_load_ah_accumulator: u16,
|
||||
// pub external_load_ah_accumulator: u16,
|
||||
// pub internal_charge_ah: u16,
|
||||
// pub external_charge_ah: u16,
|
||||
// pub internal_load_ah: u16,
|
||||
// pub external_load_ah: u16,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
|
||||
|
@ -104,9 +112,6 @@ pub enum PliRequest {
|
|||
SetRegulatorState(RegulatorState),
|
||||
}
|
||||
|
||||
static SHOULD_SHOW_ACCUMULATORS: std::sync::LazyLock<bool> =
|
||||
std::sync::LazyLock::new(|| std::env::var("SHOULD_SHOW_ACCUMULATORS").is_ok());
|
||||
|
||||
impl Pli {
|
||||
pub fn new(
|
||||
serial_port: &str,
|
||||
|
@ -186,33 +191,45 @@ impl Pli {
|
|||
}
|
||||
|
||||
async fn read_state(&mut self) -> eyre::Result<PlState> {
|
||||
if *SHOULD_SHOW_ACCUMULATORS {
|
||||
let int_acc_lsb = self.read_ram(PlRamAddress::Ciacc1).await?;
|
||||
let int_acc = self.read_ram(PlRamAddress::Ciacc2).await?;
|
||||
let int_acc_msb = self.read_ram(PlRamAddress::Ciacc3).await?;
|
||||
println!("internal charge ah accumulator: lsb {int_acc_lsb:#X?}, middle: {int_acc:#X?}, msb: {int_acc_msb:#X?}");
|
||||
let mut internal_charge_ah_accumulator = u16::from(int_acc_msb) << 9;
|
||||
internal_charge_ah_accumulator |= u16::from(int_acc) << 1;
|
||||
internal_charge_ah_accumulator |= u16::from(int_acc_lsb & 0b1);
|
||||
println!("\t\t-->which is: {internal_charge_ah_accumulator:#X?}");
|
||||
let int_charge_low = self.read_ram(PlRamAddress::Ciahl).await?;
|
||||
let int_charge_high = self.read_ram(PlRamAddress::Ciahh).await?;
|
||||
let int_charge = u16::from_le_bytes([int_charge_low, int_charge_high]);
|
||||
println!("internal charge ah: low {int_charge_low:#X?}, high {int_charge_high:#X?}, total: {int_charge}Ah");
|
||||
// let int_charge_acc_low = self.read_ram(PlRamAddress::Ciacc1).await?;
|
||||
// let int_charge_acc = self.read_ram(PlRamAddress::Ciacc2).await?;
|
||||
// let int_charge_acc_high = self.read_ram(PlRamAddress::Ciacc3).await?;
|
||||
// let mut internal_charge_ah_accumulator = u16::from(int_charge_acc_high) << 9;
|
||||
// internal_charge_ah_accumulator |= u16::from(int_charge_acc) << 1;
|
||||
// internal_charge_ah_accumulator |= u16::from(int_charge_acc_low & 0b1);
|
||||
// let int_charge_low = self.read_ram(PlRamAddress::Ciahl).await?;
|
||||
// let int_charge_high = self.read_ram(PlRamAddress::Ciahh).await?;
|
||||
// let internal_charge_ah = u16::from_le_bytes([int_charge_low, int_charge_high]);
|
||||
|
||||
let int_load_acc_lsb = self.read_ram(PlRamAddress::Liacc1).await?;
|
||||
let int_load_acc = self.read_ram(PlRamAddress::Liacc2).await?;
|
||||
let int_load_acc_msb = self.read_ram(PlRamAddress::Liacc3).await?;
|
||||
println!("internal charge ah accumulator: lsb {int_load_acc_lsb:#X?}, middle: {int_load_acc:#X?}, msb: {int_load_acc_msb:#X?}");
|
||||
let mut internal_load_ah_accumulator = u16::from(int_load_acc_msb) << 9;
|
||||
internal_load_ah_accumulator |= u16::from(int_load_acc) << 1;
|
||||
internal_load_ah_accumulator |= u16::from(int_load_acc_lsb & 0b1);
|
||||
println!("\t\t-->which is: {internal_load_ah_accumulator:#X?}");
|
||||
let int_load_low = self.read_ram(PlRamAddress::Liahl).await?;
|
||||
let int_load_high = self.read_ram(PlRamAddress::Liahh).await?;
|
||||
let int_load = u16::from_le_bytes([int_load_low, int_load_high]);
|
||||
println!("internal charge ah: low {int_load_low:#X?}, high {int_load_high:#X?}, total: {int_load}Ah");
|
||||
}
|
||||
// let int_load_acc_low = self.read_ram(PlRamAddress::Liacc1).await?;
|
||||
// let int_load_acc = self.read_ram(PlRamAddress::Liacc2).await?;
|
||||
// let int_load_acc_high = self.read_ram(PlRamAddress::Liacc3).await?;
|
||||
// let mut internal_load_ah_accumulator = u16::from(int_load_acc_high) << 9;
|
||||
// internal_load_ah_accumulator |= u16::from(int_load_acc) << 1;
|
||||
// internal_load_ah_accumulator |= u16::from(int_load_acc_low & 0b1);
|
||||
// let int_load_low = self.read_ram(PlRamAddress::Liahl).await?;
|
||||
// let int_load_high = self.read_ram(PlRamAddress::Liahh).await?;
|
||||
// let internal_load_ah = u16::from_le_bytes([int_load_low, int_load_high]);
|
||||
|
||||
// let ext_charge_acc_low = self.read_ram(PlRamAddress::Ceacc1).await?;
|
||||
// let ext_charge_acc = self.read_ram(PlRamAddress::Ceacc2).await?;
|
||||
// let ext_charge_acc_high = self.read_ram(PlRamAddress::Ceacc3).await?;
|
||||
// let mut external_charge_ah_accumulator = u16::from(ext_charge_acc_high) << 9;
|
||||
// external_charge_ah_accumulator |= u16::from(ext_charge_acc) << 1;
|
||||
// external_charge_ah_accumulator |= u16::from(ext_charge_acc_low & 0b1);
|
||||
// let ext_charge_low = self.read_ram(PlRamAddress::Ceahl).await?;
|
||||
// let ext_charge_high = self.read_ram(PlRamAddress::Ceahh).await?;
|
||||
// let external_charge_ah = u16::from_le_bytes([ext_charge_low, ext_charge_high]);
|
||||
|
||||
// let ext_load_acc_low = self.read_ram(PlRamAddress::Leacc1).await?;
|
||||
// let ext_load_acc = self.read_ram(PlRamAddress::Leacc2).await?;
|
||||
// let ext_load_acc_high = self.read_ram(PlRamAddress::Leacc3).await?;
|
||||
// let mut external_load_ah_accumulator = u16::from(ext_load_acc_high) << 9;
|
||||
// external_load_ah_accumulator |= u16::from(ext_load_acc) << 1;
|
||||
// external_load_ah_accumulator |= u16::from(ext_load_acc_low & 0b1);
|
||||
// let ext_load_low = self.read_ram(PlRamAddress::Leahl).await?;
|
||||
// let ext_load_high = self.read_ram(PlRamAddress::Leahh).await?;
|
||||
// let external_load_ah = u16::from_le_bytes([ext_load_low, ext_load_high]);
|
||||
|
||||
Ok(PlState {
|
||||
battery_voltage: f64::from(self.read_ram(PlRamAddress::Batv).await?) * (4. / 10.),
|
||||
|
@ -223,6 +240,14 @@ impl Pli {
|
|||
internal_load_current: f64::from(self.read_ram(PlRamAddress::Lint).await?) * (2. / 10.),
|
||||
battery_temp: f64::from(self.read_ram(PlRamAddress::Battemp).await?),
|
||||
regulator_state: self.read_ram(PlRamAddress::Rstate).await?.into(),
|
||||
// internal_charge_ah_accumulator,
|
||||
// external_charge_ah_accumulator,
|
||||
// internal_load_ah_accumulator,
|
||||
// external_load_ah_accumulator,
|
||||
// internal_charge_ah,
|
||||
// external_charge_ah,
|
||||
// internal_load_ah,
|
||||
// external_load_ah,
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -279,6 +304,7 @@ impl Pli {
|
|||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
enum PlRamAddress {
|
||||
Dutycyc,
|
||||
Sec,
|
||||
|
|
Loading…
Add table
Reference in a new issue