From 92d90de77817fe090cebdba3b60d44a420385844 Mon Sep 17 00:00:00 2001 From: atse Date: Thu, 8 Aug 2024 17:39:55 +0800 Subject: [PATCH] Move PwmLimits into its own file --- src/config.rs | 33 ++------------------------------- src/main.rs | 1 + src/pwm_limits.rs | 31 +++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 31 deletions(-) create mode 100644 src/pwm_limits.rs diff --git a/src/config.rs b/src/config.rs index 1649dde..c59b53a 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,15 +1,12 @@ use num_traits::Zero; use serde::{Serialize, Deserialize}; -use uom::si::{ - electric_potential::volt, - electric_current::ampere, - f64::{ElectricCurrent, ElectricPotential}, -}; +use uom::si::f64::ElectricCurrent; use crate::{ ad7172::PostFilter, channels::Channels, command_parser::CenterPoint, pid, + pwm_limits::PwmLimits, steinhart_hart, }; @@ -70,29 +67,3 @@ impl ChannelConfig { let _ = channels.set_i(channel, self.i_set); } } - -#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] -struct PwmLimits { - max_v: f64, - max_i_pos: f64, - max_i_neg: f64, -} - -impl PwmLimits { - pub fn new(channels: &mut Channels, channel: usize) -> Self { - let (max_v, _) = channels.get_max_v(channel); - let (max_i_pos, _) = channels.get_max_i_pos(channel); - let (max_i_neg, _) = channels.get_max_i_neg(channel); - PwmLimits { - max_v: max_v.get::(), - max_i_pos: max_i_pos.get::(), - max_i_neg: max_i_neg.get::(), - } - } - - pub fn apply(&self, channels: &mut Channels, channel: usize) { - channels.set_max_v(channel, ElectricPotential::new::(self.max_v)); - channels.set_max_i_pos(channel, ElectricCurrent::new::(self.max_i_pos)); - channels.set_max_i_neg(channel, ElectricCurrent::new::(self.max_i_neg)); - } -} diff --git a/src/main.rs b/src/main.rs index 353a161..fa6c8f1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -41,6 +41,7 @@ mod command_parser; use command_parser::Ipv4Config; mod timer; mod pid; +mod pwm_limits; mod steinhart_hart; mod channels; use channels::{CHANNELS, Channels}; diff --git a/src/pwm_limits.rs b/src/pwm_limits.rs new file mode 100644 index 0000000..46ec02d --- /dev/null +++ b/src/pwm_limits.rs @@ -0,0 +1,31 @@ +use serde::{Serialize, Deserialize}; +use uom::si::f64::{ + ElectricCurrent, ElectricPotential, +}; +use crate::channels::Channels; + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct PwmLimits { + pub max_v: ElectricPotential, + pub max_i_pos: ElectricCurrent, + pub max_i_neg: ElectricCurrent, +} + +impl PwmLimits { + pub fn new(channels: &mut Channels, channel: usize) -> Self { + let max_v = channels.get_max_v(channel).0; + let max_i_pos = channels.get_max_i_pos(channel).0; + let max_i_neg = channels.get_max_i_neg(channel).0; + PwmLimits { + max_v, + max_i_pos, + max_i_neg, + } + } + + pub fn apply(&self, channels: &mut Channels, channel: usize) { + channels.set_max_v(channel, self.max_v); + channels.set_max_i_pos(channel, self.max_i_pos); + channels.set_max_i_neg(channel, self.max_i_neg); + } +} \ No newline at end of file