svd_encoder/
registerproperties.rs1use super::{new_node, Config, Encode, EncodeChildren, EncodeError, XMLNode};
2
3use crate::{config::format_number, svd::RegisterProperties};
4
5impl EncodeChildren for RegisterProperties {
6 type Error = EncodeError;
7
8 fn encode_with_config(&self, config: &Config) -> Result<Vec<XMLNode>, EncodeError> {
9 let mut children = Vec::new();
10
11 if let Some(v) = &self.size {
12 children.push(new_node("size", format_number(*v, config.register_size)));
13 };
14
15 if let Some(v) = &self.access {
16 children.push(v.encode_node_with_config(config)?);
17 };
18
19 if let Some(v) = &self.protection {
20 children.push(v.encode_node_with_config(config)?);
21 };
22
23 if let Some(v) = &self.reset_value {
24 children.push(new_node(
25 "resetValue",
26 format_number(*v, config.register_reset_value),
27 ));
28 };
29
30 if let Some(v) = &self.reset_mask {
31 children.push(new_node(
32 "resetMask",
33 format_number(*v, config.register_reset_mask),
34 ));
35 };
36
37 Ok(children)
38 }
39}