rsiot/components/cmp_plc/plc/library/drives/valve/
i.rs1use serde::{Deserialize, Serialize};
2
3use super::super::select_mode;
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 auto_open: bool,
23 pub auto_close: bool,
25
26 pub hmi_command: IHmiCommand,
28}
29
30#[allow(non_camel_case_types)]
32#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Serialize)]
33pub enum IHmiCommand {
34 #[default]
36 no_command,
37
38 mode_man,
40 mode_auto,
42 mode_local,
44 mode_oos,
46
47 man_open,
49 man_close,
51}
52
53impl From<IHmiCommand> for select_mode::IHmiCommand {
54 fn from(value: IHmiCommand) -> Self {
55 match value {
56 IHmiCommand::no_command => select_mode::IHmiCommand::no_command,
57
58 IHmiCommand::mode_man => select_mode::IHmiCommand::mode_man,
59 IHmiCommand::mode_auto => select_mode::IHmiCommand::mode_auto,
60 IHmiCommand::mode_local => select_mode::IHmiCommand::mode_local,
61 IHmiCommand::mode_oos => select_mode::IHmiCommand::mode_oos,
62
63 _ => select_mode::IHmiCommand::no_command,
64 }
65 }
66}