sunspec/models/
model15.rs1#[derive(Debug)]
6#[cfg_attr(feature = "serde", derive(::serde::Serialize, ::serde::Deserialize))]
7pub struct Model15 {
8 pub clr: Option<u16>,
12 pub in_cnt: Option<u32>,
16 pub in_uc_cnt: Option<u32>,
20 pub in_n_uc_cnt: Option<u32>,
24 pub in_dsc_cnt: Option<u32>,
28 pub in_err_cnt: Option<u32>,
32 pub in_unk_cnt: Option<u32>,
36 pub out_cnt: Option<u32>,
40 pub out_uc_cnt: Option<u32>,
44 pub out_n_uc_cnt: Option<u32>,
48 pub out_dsc_cnt: Option<u32>,
52 pub out_err_cnt: Option<u32>,
56}
57#[allow(missing_docs)]
58impl Model15 {
59 pub const CLR: crate::Point<Self, Option<u16>> = crate::Point::new(0, 1, true);
60 pub const IN_CNT: crate::Point<Self, Option<u32>> = crate::Point::new(1, 2, false);
61 pub const IN_UC_CNT: crate::Point<Self, Option<u32>> = crate::Point::new(3, 2, false);
62 pub const IN_N_UC_CNT: crate::Point<Self, Option<u32>> = crate::Point::new(5, 2, false);
63 pub const IN_DSC_CNT: crate::Point<Self, Option<u32>> = crate::Point::new(7, 2, false);
64 pub const IN_ERR_CNT: crate::Point<Self, Option<u32>> = crate::Point::new(9, 2, false);
65 pub const IN_UNK_CNT: crate::Point<Self, Option<u32>> = crate::Point::new(11, 2, false);
66 pub const OUT_CNT: crate::Point<Self, Option<u32>> = crate::Point::new(13, 2, false);
67 pub const OUT_UC_CNT: crate::Point<Self, Option<u32>> = crate::Point::new(15, 2, false);
68 pub const OUT_N_UC_CNT: crate::Point<Self, Option<u32>> = crate::Point::new(17, 2, false);
69 pub const OUT_DSC_CNT: crate::Point<Self, Option<u32>> = crate::Point::new(19, 2, false);
70 pub const OUT_ERR_CNT: crate::Point<Self, Option<u32>> = crate::Point::new(21, 2, false);
71}
72impl crate::Group for Model15 {
73 const LEN: u16 = 24;
74}
75impl Model15 {
76 fn parse_group(data: &[u16]) -> Result<(&[u16], Self), crate::DecodeError> {
77 let nested_data = data
78 .get(usize::from(<Self as crate::Group>::LEN)..)
79 .unwrap_or(&[]);
80 Ok((
81 nested_data,
82 Self {
83 clr: Self::CLR.from_data(data)?,
84 in_cnt: Self::IN_CNT.from_data(data)?,
85 in_uc_cnt: Self::IN_UC_CNT.from_data(data)?,
86 in_n_uc_cnt: Self::IN_N_UC_CNT.from_data(data)?,
87 in_dsc_cnt: Self::IN_DSC_CNT.from_data(data)?,
88 in_err_cnt: Self::IN_ERR_CNT.from_data(data)?,
89 in_unk_cnt: Self::IN_UNK_CNT.from_data(data)?,
90 out_cnt: Self::OUT_CNT.from_data(data)?,
91 out_uc_cnt: Self::OUT_UC_CNT.from_data(data)?,
92 out_n_uc_cnt: Self::OUT_N_UC_CNT.from_data(data)?,
93 out_dsc_cnt: Self::OUT_DSC_CNT.from_data(data)?,
94 out_err_cnt: Self::OUT_ERR_CNT.from_data(data)?,
95 },
96 ))
97 }
98}
99impl crate::Model for Model15 {
100 const ID: u16 = 15;
101 fn addr(models: &crate::Models) -> crate::ModelAddr<Self> {
102 models.m15
103 }
104 fn parse(data: &[u16]) -> Result<Self, crate::ParseError<Self>> {
105 let (_, model) = Self::parse_group(data)?;
106 Ok(model)
107 }
108}