use std::time::Duration;
#[derive(Clone, Debug)]
#[cfg_attr(feature = "use_serde", derive(Deserialize, Serialize))]
pub struct Config {
pub pump: PumpConfig,
pub motors: Vec<MotorConfig>,
#[cfg_attr(feature = "use_serde", serde(default))]
pub admins: Vec<String>,
}
#[derive(Clone, Debug)]
#[cfg_attr(feature = "use_serde", derive(Deserialize, Serialize))]
pub struct MotorConfig {
pub pin: u16,
#[cfg_attr(feature = "use_serde", serde(skip_serializing_if = "Option::is_none"))]
pub label: Option<String>,
pub period: Duration,
pub range: [Duration; 2],
}
#[derive(Clone, Copy, Debug)]
#[cfg_attr(feature = "use_serde", derive(Deserialize, Serialize))]
pub struct PumpConfig {
pub pins: [u16; 4],
#[cfg_attr(feature = "use_serde", serde(default, alias = "reverse"))]
pub invert: bool,
}