bcm2837_lpa/
interrupt.rs

1#[doc = r"Enumeration of all the interrupts."]
2#[cfg_attr(feature = "defmt", derive(defmt::Format))]
3#[derive(Copy, Clone, Debug, PartialEq, Eq)]
4#[repr(u16)]
5pub enum Interrupt {
6    #[doc = "0 - Timer 0 matched"]
7    TIMER_0 = 0,
8    #[doc = "1 - Timer 1 matched"]
9    TIMER_1 = 1,
10    #[doc = "2 - Timer 2 matched"]
11    TIMER_2 = 2,
12    #[doc = "3 - Timer 3 matched"]
13    TIMER_3 = 3,
14    #[doc = "9 - USB interrupt"]
15    USB = 9,
16    #[doc = "29 - Interrupt from AUX"]
17    AUX = 29,
18    #[doc = "49 - Interrupt from bank 0"]
19    GPIO0 = 49,
20    #[doc = "50 - Interrupt from bank 1"]
21    GPIO1 = 50,
22    #[doc = "51 - Interrupt from bank 2"]
23    GPIO2 = 51,
24    #[doc = "52 - OR of all GPIO interrupts"]
25    GPIO = 52,
26    #[doc = "53 - OR of all I2C interrupts"]
27    I2C = 53,
28    #[doc = "54 - OR of all SPI interrupts except 1 and 2"]
29    SPI = 54,
30    #[doc = "57 - OR of all UART interrupts except 1"]
31    UART = 57,
32    #[doc = "62 - OR of EMMC and EMMC2"]
33    EMMC = 62,
34}
35#[doc = r" TryFromInterruptError"]
36#[derive(Debug, Copy, Clone)]
37pub struct TryFromInterruptError(());
38impl Interrupt {
39    #[doc = r" Attempt to convert a given value into an `Interrupt`"]
40    #[inline]
41    pub fn try_from(value: u8) -> Result<Self, TryFromInterruptError> {
42        match value {
43            0 => Ok(Interrupt::TIMER_0),
44            1 => Ok(Interrupt::TIMER_1),
45            2 => Ok(Interrupt::TIMER_2),
46            3 => Ok(Interrupt::TIMER_3),
47            9 => Ok(Interrupt::USB),
48            29 => Ok(Interrupt::AUX),
49            49 => Ok(Interrupt::GPIO0),
50            50 => Ok(Interrupt::GPIO1),
51            51 => Ok(Interrupt::GPIO2),
52            52 => Ok(Interrupt::GPIO),
53            53 => Ok(Interrupt::I2C),
54            54 => Ok(Interrupt::SPI),
55            57 => Ok(Interrupt::UART),
56            62 => Ok(Interrupt::EMMC),
57            _ => Err(TryFromInterruptError(())),
58        }
59    }
60}