svd_encoder/
registerproperties.rs

1use 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}