rsiot/components/cmp_plc/plc/library/drives/valve_analog/
i.rsuse serde::{Deserialize, Serialize};
use crate::components::cmp_plc::plc::library::drives::{select_mode, select_sp};
#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
pub struct I {
pub mode_source: bool,
pub mode_auto: bool,
pub mode_man: bool,
pub mode_local: bool,
pub mode_oos: bool,
pub mv_en_source: bool,
pub mv_hmi_en: bool,
pub mv_plc_en: bool,
pub mv_plc: f64,
pub rbk: f64,
pub hmi_command: IHmiCommand,
}
#[allow(non_camel_case_types)]
#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Serialize)]
pub enum IHmiCommand {
#[default]
no_command,
mode_man,
mode_auto,
mode_local,
mode_oos,
mv_hmi_en,
mv_plc_en,
mv_hmi(f64),
}
impl From<IHmiCommand> for select_sp::IHmiCommand {
fn from(value: IHmiCommand) -> Self {
match value {
IHmiCommand::mv_hmi_en => select_sp::IHmiCommand::sp_hmi_en,
IHmiCommand::mv_plc_en => select_sp::IHmiCommand::sp_plc_en,
IHmiCommand::mv_hmi(mv) => select_sp::IHmiCommand::sp_hmi(mv),
_ => select_sp::IHmiCommand::no_command,
}
}
}
impl From<IHmiCommand> for select_mode::IHmiCommand {
fn from(value: IHmiCommand) -> Self {
match value {
IHmiCommand::mode_man => select_mode::IHmiCommand::mode_man,
IHmiCommand::mode_auto => select_mode::IHmiCommand::mode_auto,
IHmiCommand::mode_local => select_mode::IHmiCommand::mode_local,
IHmiCommand::mode_oos => select_mode::IHmiCommand::mode_oos,
_ => select_mode::IHmiCommand::no_command,
}
}
}