PwmLimits: Use uom quantities for fields not f64s

This commit is contained in:
atse 2024-08-08 16:48:29 +08:00
parent fcb5cf1d4e
commit 0e23b609db
1 changed files with 11 additions and 13 deletions

View File

@ -1,9 +1,7 @@
use num_traits::Zero; use num_traits::Zero;
use serde::{Serialize, Deserialize}; use serde::{Serialize, Deserialize};
use uom::si::{ use uom::si::f64::{
electric_potential::volt, ElectricCurrent, ElectricPotential,
electric_current::ampere,
f64::{ElectricCurrent, ElectricPotential},
}; };
use crate::{ use crate::{
ad7172::PostFilter, ad7172::PostFilter,
@ -76,9 +74,9 @@ impl ChannelConfig {
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct PwmLimits { pub struct PwmLimits {
pub max_v: f64, pub max_v: ElectricPotential,
pub max_i_pos: f64, pub max_i_pos: ElectricCurrent,
pub max_i_neg: f64, pub max_i_neg: ElectricCurrent,
} }
impl PwmLimits { impl PwmLimits {
@ -87,15 +85,15 @@ impl PwmLimits {
let max_i_pos = channels.get_max_i_pos(channel); let max_i_pos = channels.get_max_i_pos(channel);
let max_i_neg = channels.get_max_i_neg(channel); let max_i_neg = channels.get_max_i_neg(channel);
PwmLimits { PwmLimits {
max_v: max_v.get::<volt>(), max_v,
max_i_pos: max_i_pos.get::<ampere>(), max_i_pos,
max_i_neg: max_i_neg.get::<ampere>(), max_i_neg,
} }
} }
pub fn apply(&self, channels: &mut Channels, channel: usize) { pub fn apply(&self, channels: &mut Channels, channel: usize) {
channels.set_max_v(channel, ElectricPotential::new::<volt>(self.max_v)); channels.set_max_v(channel, self.max_v);
channels.set_max_i_pos(channel, ElectricCurrent::new::<ampere>(self.max_i_pos)); channels.set_max_i_pos(channel, self.max_i_pos);
channels.set_max_i_neg(channel, ElectricCurrent::new::<ampere>(self.max_i_neg)); channels.set_max_i_neg(channel, self.max_i_neg);
} }
} }