fdt_parser/
interrupt.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use crate::{node::Node, property::Property, read::U32Array};

pub struct InterruptController<'a> {
    pub node: Node<'a>,
}

impl<'a> InterruptController<'a> {
    pub fn interrupt_cells(&self) -> usize {
        self.node.find_property("#interrupt-cells").unwrap().u32() as _
    }
}

pub struct InterruptInfo<'a> {
    pub cell_size: usize,
    pub(crate) prop: Property<'a>,
}

impl<'a> InterruptInfo<'a> {
    pub fn interrupts(&self) -> impl Iterator<Item = u32> + 'a {
        U32Array::new(self.prop.raw_value())
    }
}