sunspec/models/
model714.rs1#[derive(Debug)]
6#[cfg_attr(feature = "serde", derive(::serde::Serialize, ::serde::Deserialize))]
7pub struct Model714 {
8 pub prt_alrms: Option<PrtAlrms>,
14 pub n_prt: Option<u16>,
18 pub dca: Option<i16>,
22 pub dcw: Option<i16>,
26 pub dc_wh_inj: Option<u64>,
30 pub dc_wh_abs: Option<u64>,
34 pub dca_sf: Option<i16>,
38 pub dcv_sf: Option<i16>,
42 pub dcw_sf: Option<i16>,
46 pub dcwh_sf: Option<i16>,
50 pub tmp_sf: Option<i16>,
54}
55#[allow(missing_docs)]
56impl Model714 {
57 pub const PRT_ALRMS: crate::Point<Self, Option<PrtAlrms>> = crate::Point::new(0, 2, false);
58 pub const N_PRT: crate::Point<Self, Option<u16>> = crate::Point::new(2, 1, false);
59 pub const DCA: crate::Point<Self, Option<i16>> = crate::Point::new(3, 1, false);
60 pub const DCW: crate::Point<Self, Option<i16>> = crate::Point::new(4, 1, false);
61 pub const DC_WH_INJ: crate::Point<Self, Option<u64>> = crate::Point::new(5, 4, false);
62 pub const DC_WH_ABS: crate::Point<Self, Option<u64>> = crate::Point::new(9, 4, false);
63 pub const DCA_SF: crate::Point<Self, Option<i16>> = crate::Point::new(13, 1, false);
64 pub const DCV_SF: crate::Point<Self, Option<i16>> = crate::Point::new(14, 1, false);
65 pub const DCW_SF: crate::Point<Self, Option<i16>> = crate::Point::new(15, 1, false);
66 pub const DCWH_SF: crate::Point<Self, Option<i16>> = crate::Point::new(16, 1, false);
67 pub const TMP_SF: crate::Point<Self, Option<i16>> = crate::Point::new(17, 1, false);
68}
69impl crate::Model for Model714 {
70 const ID: u16 = 714;
71 fn from_data(data: &[u16]) -> Result<Self, crate::DecodeError> {
72 Ok(Self {
73 prt_alrms: Self::PRT_ALRMS.from_data(data)?,
74 n_prt: Self::N_PRT.from_data(data)?,
75 dca: Self::DCA.from_data(data)?,
76 dcw: Self::DCW.from_data(data)?,
77 dc_wh_inj: Self::DC_WH_INJ.from_data(data)?,
78 dc_wh_abs: Self::DC_WH_ABS.from_data(data)?,
79 dca_sf: Self::DCA_SF.from_data(data)?,
80 dcv_sf: Self::DCV_SF.from_data(data)?,
81 dcw_sf: Self::DCW_SF.from_data(data)?,
82 dcwh_sf: Self::DCWH_SF.from_data(data)?,
83 tmp_sf: Self::TMP_SF.from_data(data)?,
84 })
85 }
86 fn addr(models: &crate::Models) -> crate::ModelAddr<Self> {
87 models.m714
88 }
89}
90bitflags::bitflags! {
91 #[doc = " Port Alarms"] #[doc = " "] #[doc =
92 " Bitfield of ports with active alarms. Bit is 1 if port has an active alarm. Bit 0 is first port."]
93 #[doc = " "] #[doc = " Comments: DC General"] #[derive(Copy, Clone, Debug, Eq,
94 PartialEq)] #[cfg_attr(feature = "serde", derive(::serde::Serialize,
95 ::serde::Deserialize))] pub struct PrtAlrms : u32 {}
96}
97impl crate::Value for PrtAlrms {
98 fn decode(data: &[u16]) -> Result<Self, crate::DecodeError> {
99 let value = u32::decode(data)?;
100 Ok(Self::from_bits_retain(value))
101 }
102 fn encode(self) -> Box<[u16]> {
103 self.bits().encode()
104 }
105}
106impl crate::Value for Option<PrtAlrms> {
107 fn decode(data: &[u16]) -> Result<Self, crate::DecodeError> {
108 let value = u32::decode(data)?;
109 if value != 4294967295u32 {
110 Ok(Some(PrtAlrms::from_bits_retain(value)))
111 } else {
112 Ok(None)
113 }
114 }
115 fn encode(self) -> Box<[u16]> {
116 if let Some(value) = self {
117 value.encode()
118 } else {
119 4294967295u32.encode()
120 }
121 }
122}