diff --git a/embassy-stm32/src/ipcc.rs b/embassy-stm32/src/ipcc.rs index 9af5f171..2b9caf8e 100644 --- a/embassy-stm32/src/ipcc.rs +++ b/embassy-stm32/src/ipcc.rs @@ -35,6 +35,10 @@ pub struct Ipcc<'d> { impl<'d> Ipcc<'d> { pub fn new(peri: impl Peripheral

+ 'd, _config: Config) -> Self { + Self::new_inner(peri) + } + + pub(crate) fn new_inner(peri: impl Peripheral

+ 'd) -> Self { into_ref!(peri); Self { _peri: peri } @@ -180,14 +184,3 @@ unsafe fn _configure_pwr() { // set RF wake-up clock = LSE rcc.csr().modify(|w| w.set_rfwkpsel(0b01)); } - -// TODO: if anyone has a better idea, please let me know -/// extension trait that constrains the [`Ipcc`] peripheral -pub trait IpccExt<'d> { - fn constrain(self) -> Ipcc<'d>; -} -impl<'d> IpccExt<'d> for IPCC { - fn constrain(self) -> Ipcc<'d> { - Ipcc { _peri: self.into_ref() } - } -} diff --git a/embassy-stm32/src/tl_mbox/evt.rs b/embassy-stm32/src/tl_mbox/evt.rs index 0ecd4dab..770133f2 100644 --- a/embassy-stm32/src/tl_mbox/evt.rs +++ b/embassy-stm32/src/tl_mbox/evt.rs @@ -131,8 +131,9 @@ impl EvtBox { impl Drop for EvtBox { fn drop(&mut self) { - use crate::ipcc::IpccExt; - let mut ipcc = unsafe { crate::Peripherals::steal() }.IPCC.constrain(); + use crate::ipcc::Ipcc; + + let mut ipcc = Ipcc::new_inner(unsafe { crate::Peripherals::steal() }.IPCC); mm::MemoryManager::evt_drop(self.ptr, &mut ipcc); } }