#[cfg(feature = "serde")]
use serde::{Serialize, Deserialize};
use crate::SyncActuator;
use crate::parent::{ActuatorParent, RatioActuatorParent};
use syunit::*;
use syunit::metric::*;
#[derive(Debug)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub struct Conveyor<C : SyncActuator> {
actuator : C,
pub r_roll : Millimeters
}
impl<C : SyncActuator> Conveyor<C> {
pub fn new(actuator : C, r_roll : Millimeters) -> Self {
Self {
actuator,
r_roll
}
}
}
impl<C : SyncActuator> ActuatorParent for Conveyor<C> {
type Child = C;
fn child(&self) -> &Self::Child {
&self.actuator
}
fn child_mut(&mut self) -> &mut Self::Child {
&mut self.actuator
}
}
impl<C : SyncActuator> RatioActuatorParent for Conveyor<C> {
type Input = MetricMM;
type Output = Rotary;
type Ratio = Millimeters;
fn ratio(&self) -> Self::Ratio {
self.r_roll
}
}