fdt_parser/base/node/
interrupt_controller.rs

1use core::ops::Deref;
2
3use super::NodeBase;
4use crate::FdtError;
5
6#[derive(Clone)]
7pub struct InterruptController<'a> {
8    node: NodeBase<'a>,
9}
10
11impl<'a> InterruptController<'a> {
12    pub(crate) fn new(node: NodeBase<'a>) -> Self {
13        InterruptController { node }
14    }
15
16    pub fn name(&self) -> &'a str {
17        self.node.name()
18    }
19
20    pub fn interrupt_cells(&self) -> Result<u8, FdtError> {
21        let prop = self.node.find_property("#interrupt-cells")?;
22        let val = prop.u32()?;
23        Ok(val as u8)
24    }
25}
26
27impl core::fmt::Debug for InterruptController<'_> {
28    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
29        let mut st = f.debug_struct("InterruptController");
30        st.field("name", &self.name());
31        st.finish()
32    }
33}
34
35impl<'a> Deref for InterruptController<'a> {
36    type Target = NodeBase<'a>;
37
38    fn deref(&self) -> &Self::Target {
39        &self.node
40    }
41}