svd_encoder/
cpu.rs

1use super::{new_node, Config, Element, Encode, EncodeError};
2
3use crate::svd::Cpu;
4impl Encode for Cpu {
5    type Error = EncodeError;
6
7    fn encode_with_config(&self, _config: &Config) -> Result<Element, EncodeError> {
8        let mut children = vec![
9            new_node("name", self.name.clone()),
10            new_node("revision", self.revision.clone()),
11            self.endian.encode_node()?,
12            new_node("mpuPresent", format!("{}", self.mpu_present)),
13            new_node("fpuPresent", format!("{}", self.fpu_present)),
14        ];
15        if let Some(v) = &self.fpu_double_precision {
16            children.push(new_node("fpuDP", format!("{}", v)));
17        }
18        if let Some(v) = &self.dsp_present {
19            children.push(new_node("dspPresent", format!("{}", v)));
20        }
21        if let Some(v) = &self.icache_present {
22            children.push(new_node("icachePresent", format!("{}", v)));
23        }
24        if let Some(v) = &self.dcache_present {
25            children.push(new_node("dcachePresent", format!("{}", v)));
26        }
27        if let Some(v) = &self.itcm_present {
28            children.push(new_node("itcmPresent", format!("{}", v)));
29        }
30        if let Some(v) = &self.dtcm_present {
31            children.push(new_node("dtcmPresent", format!("{}", v)));
32        }
33        if let Some(v) = &self.vtor_present {
34            children.push(new_node("vtorPresent", format!("{}", v)));
35        }
36        children.push(new_node(
37            "nvicPrioBits",
38            format!("{}", self.nvic_priority_bits),
39        ));
40        children.push(new_node(
41            "vendorSystickConfig",
42            format!("{}", self.has_vendor_systick),
43        ));
44
45        if let Some(v) = &self.device_num_interrupts {
46            children.push(new_node("deviceNumInterrupts", format!("{}", v)));
47        }
48        if let Some(v) = &self.sau_num_regions {
49            children.push(new_node("sauNumRegions", format!("{}", v)));
50        }
51
52        let mut elem = Element::new("cpu");
53        elem.children = children;
54        Ok(elem)
55    }
56}