diff options
Diffstat (limited to 'embassy-nrf')
| -rw-r--r-- | embassy-nrf/src/interrupt.rs | 41 |
1 files changed, 1 insertions, 40 deletions
diff --git a/embassy-nrf/src/interrupt.rs b/embassy-nrf/src/interrupt.rs index 8d069e329..a29861977 100644 --- a/embassy-nrf/src/interrupt.rs +++ b/embassy-nrf/src/interrupt.rs | |||
| @@ -3,48 +3,9 @@ | |||
| 3 | //! This module implements an API for managing interrupts compatible with | 3 | //! This module implements an API for managing interrupts compatible with |
| 4 | //! nrf_softdevice::interrupt. Intended for switching between the two at compile-time. | 4 | //! nrf_softdevice::interrupt. Intended for switching between the two at compile-time. |
| 5 | 5 | ||
| 6 | use core::sync::atomic::{compiler_fence, Ordering}; | ||
| 7 | |||
| 8 | use crate::pac::NVIC_PRIO_BITS; | ||
| 9 | |||
| 10 | // Re-exports | 6 | // Re-exports |
| 11 | pub use embassy::interrupt::{declare, take, Interrupt}; | 7 | pub use embassy::interrupt::{declare, take, Interrupt}; |
| 12 | 8 | pub use embassy_extras::interrupt::Priority3 as Priority; | |
| 13 | #[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] | ||
| 14 | #[cfg_attr(feature = "defmt", derive(defmt::Format))] | ||
| 15 | #[repr(u8)] | ||
| 16 | pub enum Priority { | ||
| 17 | Level0 = 0, | ||
| 18 | Level1 = 1, | ||
| 19 | Level2 = 2, | ||
| 20 | Level3 = 3, | ||
| 21 | Level4 = 4, | ||
| 22 | Level5 = 5, | ||
| 23 | Level6 = 6, | ||
| 24 | Level7 = 7, | ||
| 25 | } | ||
| 26 | |||
| 27 | impl From<u8> for Priority { | ||
| 28 | fn from(priority: u8) -> Self { | ||
| 29 | match priority >> (8 - NVIC_PRIO_BITS) { | ||
| 30 | 0 => Self::Level0, | ||
| 31 | 1 => Self::Level1, | ||
| 32 | 2 => Self::Level2, | ||
| 33 | 3 => Self::Level3, | ||
| 34 | 4 => Self::Level4, | ||
| 35 | 5 => Self::Level5, | ||
| 36 | 6 => Self::Level6, | ||
| 37 | 7 => Self::Level7, | ||
| 38 | _ => unreachable!(), | ||
| 39 | } | ||
| 40 | } | ||
| 41 | } | ||
| 42 | |||
| 43 | impl From<Priority> for u8 { | ||
| 44 | fn from(p: Priority) -> Self { | ||
| 45 | (p as u8) << (8 - NVIC_PRIO_BITS) | ||
| 46 | } | ||
| 47 | } | ||
| 48 | 9 | ||
| 49 | #[cfg(feature = "52810")] | 10 | #[cfg(feature = "52810")] |
| 50 | mod irqs { | 11 | mod irqs { |
