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}