aboutsummaryrefslogtreecommitdiff
path: root/embassy-nrf/src/radio
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2025-03-26 16:01:37 +0100
committerDario Nieuwenhuis <[email protected]>2025-03-27 15:18:06 +0100
commitd41eeeae79388f219bf6a84e2f7bde9f6b532516 (patch)
tree678b6fc732216e529dc38e6f65b72a309917ac32 /embassy-nrf/src/radio
parent9edf5b7f049f95742b60b041e4443967d8a6b708 (diff)
Remove Peripheral trait, rename PeripheralRef->Peri.
Diffstat (limited to 'embassy-nrf/src/radio')
-rw-r--r--embassy-nrf/src/radio/ble.rs8
-rw-r--r--embassy-nrf/src/radio/ieee802154.rs9
-rw-r--r--embassy-nrf/src/radio/mod.rs5
3 files changed, 9 insertions, 13 deletions
diff --git a/embassy-nrf/src/radio/ble.rs b/embassy-nrf/src/radio/ble.rs
index 682ca1c79..d42bbe5f6 100644
--- a/embassy-nrf/src/radio/ble.rs
+++ b/embassy-nrf/src/radio/ble.rs
@@ -5,7 +5,6 @@ use core::sync::atomic::{compiler_fence, Ordering};
5use core::task::Poll; 5use core::task::Poll;
6 6
7use embassy_hal_internal::drop::OnDrop; 7use embassy_hal_internal::drop::OnDrop;
8use embassy_hal_internal::{into_ref, PeripheralRef};
9pub use pac::radio::vals::Mode; 8pub use pac::radio::vals::Mode;
10#[cfg(not(feature = "_nrf51"))] 9#[cfg(not(feature = "_nrf51"))]
11use pac::radio::vals::Plen as PreambleLength; 10use pac::radio::vals::Plen as PreambleLength;
@@ -15,20 +14,19 @@ use crate::pac::radio::vals;
15use crate::radio::*; 14use crate::radio::*;
16pub use crate::radio::{Error, TxPower}; 15pub use crate::radio::{Error, TxPower};
17use crate::util::slice_in_ram_or; 16use crate::util::slice_in_ram_or;
17use crate::Peri;
18 18
19/// Radio driver. 19/// Radio driver.
20pub struct Radio<'d, T: Instance> { 20pub struct Radio<'d, T: Instance> {
21 _p: PeripheralRef<'d, T>, 21 _p: Peri<'d, T>,
22} 22}
23 23
24impl<'d, T: Instance> Radio<'d, T> { 24impl<'d, T: Instance> Radio<'d, T> {
25 /// Create a new radio driver. 25 /// Create a new radio driver.
26 pub fn new( 26 pub fn new(
27 radio: impl Peripheral<P = T> + 'd, 27 radio: Peri<'d, T>,
28 _irq: impl interrupt::typelevel::Binding<T::Interrupt, InterruptHandler<T>> + 'd, 28 _irq: impl interrupt::typelevel::Binding<T::Interrupt, InterruptHandler<T>> + 'd,
29 ) -> Self { 29 ) -> Self {
30 into_ref!(radio);
31
32 let r = T::regs(); 30 let r = T::regs();
33 31
34 r.pcnf1().write(|w| { 32 r.pcnf1().write(|w| {
diff --git a/embassy-nrf/src/radio/ieee802154.rs b/embassy-nrf/src/radio/ieee802154.rs
index 083842f4a..2f0bcbe04 100644
--- a/embassy-nrf/src/radio/ieee802154.rs
+++ b/embassy-nrf/src/radio/ieee802154.rs
@@ -4,13 +4,12 @@ use core::sync::atomic::{compiler_fence, Ordering};
4use core::task::Poll; 4use core::task::Poll;
5 5
6use embassy_hal_internal::drop::OnDrop; 6use embassy_hal_internal::drop::OnDrop;
7use embassy_hal_internal::{into_ref, PeripheralRef};
8 7
9use super::{state, Error, Instance, InterruptHandler, RadioState, TxPower}; 8use super::{state, Error, Instance, InterruptHandler, RadioState, TxPower};
10use crate::interrupt::typelevel::Interrupt; 9use crate::interrupt::typelevel::Interrupt;
11use crate::interrupt::{self}; 10use crate::interrupt::{self};
12use crate::pac::radio::vals; 11use crate::pac::radio::vals;
13use crate::Peripheral; 12use crate::Peri;
14 13
15/// Default (IEEE compliant) Start of Frame Delimiter 14/// Default (IEEE compliant) Start of Frame Delimiter
16pub const DEFAULT_SFD: u8 = 0xA7; 15pub const DEFAULT_SFD: u8 = 0xA7;
@@ -33,18 +32,16 @@ pub enum Cca {
33 32
34/// IEEE 802.15.4 radio driver. 33/// IEEE 802.15.4 radio driver.
35pub struct Radio<'d, T: Instance> { 34pub struct Radio<'d, T: Instance> {
36 _p: PeripheralRef<'d, T>, 35 _p: Peri<'d, T>,
37 needs_enable: bool, 36 needs_enable: bool,
38} 37}
39 38
40impl<'d, T: Instance> Radio<'d, T> { 39impl<'d, T: Instance> Radio<'d, T> {
41 /// Create a new IEEE 802.15.4 radio driver. 40 /// Create a new IEEE 802.15.4 radio driver.
42 pub fn new( 41 pub fn new(
43 radio: impl Peripheral<P = T> + 'd, 42 radio: Peri<'d, T>,
44 _irq: impl interrupt::typelevel::Binding<T::Interrupt, InterruptHandler<T>> + 'd, 43 _irq: impl interrupt::typelevel::Binding<T::Interrupt, InterruptHandler<T>> + 'd,
45 ) -> Self { 44 ) -> Self {
46 into_ref!(radio);
47
48 let r = T::regs(); 45 let r = T::regs();
49 46
50 // Disable and enable to reset peripheral 47 // Disable and enable to reset peripheral
diff --git a/embassy-nrf/src/radio/mod.rs b/embassy-nrf/src/radio/mod.rs
index 251f37d3d..982436266 100644
--- a/embassy-nrf/src/radio/mod.rs
+++ b/embassy-nrf/src/radio/mod.rs
@@ -19,11 +19,12 @@ pub mod ieee802154;
19 19
20use core::marker::PhantomData; 20use core::marker::PhantomData;
21 21
22use embassy_hal_internal::PeripheralType;
22use embassy_sync::waitqueue::AtomicWaker; 23use embassy_sync::waitqueue::AtomicWaker;
23use pac::radio::vals::State as RadioState; 24use pac::radio::vals::State as RadioState;
24pub use pac::radio::vals::Txpower as TxPower; 25pub use pac::radio::vals::Txpower as TxPower;
25 26
26use crate::{interrupt, pac, Peripheral}; 27use crate::{interrupt, pac};
27 28
28/// RADIO error. 29/// RADIO error.
29#[derive(Debug, Clone, Copy, PartialEq, Eq)] 30#[derive(Debug, Clone, Copy, PartialEq, Eq)]
@@ -94,7 +95,7 @@ macro_rules! impl_radio {
94 95
95/// Radio peripheral instance. 96/// Radio peripheral instance.
96#[allow(private_bounds)] 97#[allow(private_bounds)]
97pub trait Instance: Peripheral<P = Self> + SealedInstance + 'static + Send { 98pub trait Instance: SealedInstance + PeripheralType + 'static + Send {
98 /// Interrupt for this peripheral. 99 /// Interrupt for this peripheral.
99 type Interrupt: interrupt::typelevel::Interrupt; 100 type Interrupt: interrupt::typelevel::Interrupt;
100} 101}