diff --git a/src/channel_state.rs b/src/channel_state.rs index feef84c..9c27223 100644 --- a/src/channel_state.rs +++ b/src/channel_state.rs @@ -1,8 +1,9 @@ use crate::{ ad7172, command_parser::{CenterPoint, Polarity}, - config::PwmLimits, - pid, steinhart_hart as sh, + pid, + pwm_limits::PwmLimits, + steinhart_hart as sh, }; use num_traits::Zero; use smoltcp::time::{Duration, Instant}; diff --git a/src/config.rs b/src/config.rs index 2cc701b..bad90b4 100644 --- a/src/config.rs +++ b/src/config.rs @@ -2,11 +2,13 @@ use crate::{ ad7172::PostFilter, channels::Channels, command_parser::{CenterPoint, Polarity}, - pid, steinhart_hart, + pid, + pwm_limits::PwmLimits, + steinhart_hart, }; use num_traits::Zero; use serde::{Deserialize, Serialize}; -use uom::si::f64::{ElectricCurrent, ElectricPotential}; +use uom::si::f64::ElectricCurrent; #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub struct ChannelConfig { @@ -70,29 +72,3 @@ impl ChannelConfig { channels.set_polarity(channel, self.polarity.clone()); } } - -#[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); - let max_i_pos = channels.get_max_i_pos(channel); - let max_i_neg = channels.get_max_i_neg(channel); - 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); - } -} diff --git a/src/main.rs b/src/main.rs index edc028c..34ad204 100644 --- a/src/main.rs +++ b/src/main.rs @@ -37,6 +37,7 @@ mod command_parser; use command_parser::Ipv4Config; mod channels; mod pid; +mod pwm_limits; mod steinhart_hart; mod timer; use channels::{Channels, CHANNELS}; diff --git a/src/pwm_limits.rs b/src/pwm_limits.rs new file mode 100644 index 0000000..bc19651 --- /dev/null +++ b/src/pwm_limits.rs @@ -0,0 +1,28 @@ +use crate::channels::Channels; +use serde::{Deserialize, Serialize}; +use uom::si::{ + f64::{ElectricCurrent, ElectricPotential}, +}; + +#[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 { + PwmLimits { + max_v: channels.get_max_v(channel), + max_i_pos: channels.get_max_i_pos(channel), + max_i_neg: channels.get_max_i_neg(channel), + } + } + + 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