fdt_parser/base/node/
interrupt_controller.rs1use 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}