rsiot/components/cmp_plc/plc/library/drives/valve_analog/
i.rs1use serde::{Deserialize, Serialize};
2
3use crate::components::cmp_plc::plc::library::drives::{select_mode, select_sp};
4
5#[derive(Clone, Debug, Default, Deserialize, PartialEq, Serialize)]
7pub struct I {
8 pub mode_source: bool,
12 pub mode_auto: bool,
14 pub mode_man: bool,
16 pub mode_local: bool,
18 pub mode_oos: bool,
20
21 pub mv_en_source: bool,
25 pub mv_hmi_en: bool,
27 pub mv_plc_en: bool,
29 pub mv_plc: f64,
31
32 pub rbk: f64,
34
35 pub hmi_command: IHmiCommand,
37}
38
39#[allow(non_camel_case_types)]
41#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Serialize)]
42pub enum IHmiCommand {
43 #[default]
45 no_command,
46
47 mode_man,
49 mode_auto,
51 mode_local,
53 mode_oos,
55
56 mv_hmi_en,
58 mv_plc_en,
60 mv_hmi(f64),
62}
63
64impl From<IHmiCommand> for select_sp::IHmiCommand {
65 fn from(value: IHmiCommand) -> Self {
66 match value {
67 IHmiCommand::mv_hmi_en => select_sp::IHmiCommand::sp_hmi_en,
68 IHmiCommand::mv_plc_en => select_sp::IHmiCommand::sp_plc_en,
69 IHmiCommand::mv_hmi(mv) => select_sp::IHmiCommand::sp_hmi(mv),
70 _ => select_sp::IHmiCommand::no_command,
71 }
72 }
73}
74
75impl From<IHmiCommand> for select_mode::IHmiCommand {
76 fn from(value: IHmiCommand) -> Self {
77 match value {
78 IHmiCommand::mode_man => select_mode::IHmiCommand::mode_man,
79 IHmiCommand::mode_auto => select_mode::IHmiCommand::mode_auto,
80 IHmiCommand::mode_local => select_mode::IHmiCommand::mode_local,
81 IHmiCommand::mode_oos => select_mode::IHmiCommand::mode_oos,
82 _ => select_mode::IHmiCommand::no_command,
83 }
84 }
85}