Move PwmLimits into its own file #123

Closed
atse wants to merge 1 commits from atse:refactor-pwm_limits into master
4 changed files with 30 additions and 28 deletions

View File

@ -1,8 +1,8 @@
use crate::{ use crate::{
ad7172, b_parameter as bp, ad7172, b_parameter as bp,
command_parser::{CenterPoint, Polarity}, command_parser::{CenterPoint, Polarity},
config::PwmLimits,
pid, pid,
pwm_limits::PwmLimits,
}; };
use num_traits::Zero; use num_traits::Zero;
use smoltcp::time::{Duration, Instant}; use smoltcp::time::{Duration, Instant};

View File

@ -4,10 +4,11 @@ use crate::{
channels::Channels, channels::Channels,
command_parser::{CenterPoint, Polarity}, command_parser::{CenterPoint, Polarity},
pid, pid,
pwm_limits::PwmLimits,
}; };
use num_traits::Zero; use num_traits::Zero;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use uom::si::f64::{ElectricCurrent, ElectricPotential}; use uom::si::f64::ElectricCurrent;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ChannelConfig { pub struct ChannelConfig {
@ -71,29 +72,3 @@ impl ChannelConfig {
channels.set_polarity(channel, self.polarity.clone()); 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);
}
}

View File

@ -38,6 +38,7 @@ use command_parser::Ipv4Config;
mod b_parameter; mod b_parameter;
mod channels; mod channels;
mod pid; mod pid;
mod pwm_limits;
mod timer; mod timer;
use channels::{Channels, CHANNELS}; use channels::{Channels, CHANNELS};
mod channel; mod channel;

26
src/pwm_limits.rs Normal file
View File

@ -0,0 +1,26 @@
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);
}
}