diff options
| -rw-r--r-- | embassy-net-driver-channel/src/lib.rs | 6 | ||||
| -rw-r--r-- | embassy-nrf/src/gpiote.rs | 5 | ||||
| -rw-r--r-- | embassy-nrf/src/time_driver.rs | 3 | ||||
| -rw-r--r-- | embassy-nrf/src/usb/mod.rs | 9 | ||||
| -rw-r--r-- | embassy-nrf/src/wdt.rs | 3 | ||||
| -rw-r--r-- | embassy-nxp/src/pint.rs | 16 | ||||
| -rw-r--r-- | embassy-rp/src/dma.rs | 3 | ||||
| -rw-r--r-- | embassy-rp/src/gpio.rs | 6 | ||||
| -rw-r--r-- | embassy-rp/src/pio/mod.rs | 4 | ||||
| -rw-r--r-- | embassy-rp/src/time_driver.rs | 9 | ||||
| -rw-r--r-- | embassy-rp/src/usb.rs | 7 | ||||
| -rw-r--r-- | embassy-stm32/src/eth/mod.rs | 6 | ||||
| -rw-r--r-- | embassy-stm32/src/exti.rs | 3 | ||||
| -rw-r--r-- | embassy-stm32/src/ipcc.rs | 6 | ||||
| -rw-r--r-- | embassy-stm32/src/time_driver.rs | 5 | ||||
| -rw-r--r-- | embassy-stm32/src/timer/mod.rs | 5 | ||||
| -rw-r--r-- | embassy-stm32/src/usb/usb.rs | 11 | ||||
| -rw-r--r-- | embassy-time/src/driver_std.rs | 4 | ||||
| -rw-r--r-- | embassy-time/src/driver_wasm.rs | 4 |
19 files changed, 46 insertions, 69 deletions
diff --git a/embassy-net-driver-channel/src/lib.rs b/embassy-net-driver-channel/src/lib.rs index 6390502a8..600efd9e5 100644 --- a/embassy-net-driver-channel/src/lib.rs +++ b/embassy-net-driver-channel/src/lib.rs | |||
| @@ -26,13 +26,11 @@ pub struct State<const MTU: usize, const N_RX: usize, const N_TX: usize> { | |||
| 26 | } | 26 | } |
| 27 | 27 | ||
| 28 | impl<const MTU: usize, const N_RX: usize, const N_TX: usize> State<MTU, N_RX, N_TX> { | 28 | impl<const MTU: usize, const N_RX: usize, const N_TX: usize> State<MTU, N_RX, N_TX> { |
| 29 | const NEW_PACKET: PacketBuf<MTU> = PacketBuf::new(); | ||
| 30 | |||
| 31 | /// Create a new channel state. | 29 | /// Create a new channel state. |
| 32 | pub const fn new() -> Self { | 30 | pub const fn new() -> Self { |
| 33 | Self { | 31 | Self { |
| 34 | rx: [Self::NEW_PACKET; N_RX], | 32 | rx: [const { PacketBuf::new() }; N_RX], |
| 35 | tx: [Self::NEW_PACKET; N_TX], | 33 | tx: [const { PacketBuf::new() }; N_TX], |
| 36 | inner: MaybeUninit::uninit(), | 34 | inner: MaybeUninit::uninit(), |
| 37 | } | 35 | } |
| 38 | } | 36 | } |
diff --git a/embassy-nrf/src/gpiote.rs b/embassy-nrf/src/gpiote.rs index 87bb405f4..8771f9f08 100644 --- a/embassy-nrf/src/gpiote.rs +++ b/embassy-nrf/src/gpiote.rs | |||
| @@ -29,9 +29,8 @@ const PIN_COUNT: usize = 48; | |||
| 29 | const PIN_COUNT: usize = 32; | 29 | const PIN_COUNT: usize = 32; |
| 30 | 30 | ||
| 31 | #[allow(clippy::declare_interior_mutable_const)] | 31 | #[allow(clippy::declare_interior_mutable_const)] |
| 32 | const NEW_AW: AtomicWaker = AtomicWaker::new(); | 32 | static CHANNEL_WAKERS: [AtomicWaker; CHANNEL_COUNT] = [const { AtomicWaker::new() }; CHANNEL_COUNT]; |
| 33 | static CHANNEL_WAKERS: [AtomicWaker; CHANNEL_COUNT] = [NEW_AW; CHANNEL_COUNT]; | 33 | static PORT_WAKERS: [AtomicWaker; PIN_COUNT] = [const { AtomicWaker::new() }; PIN_COUNT]; |
| 34 | static PORT_WAKERS: [AtomicWaker; PIN_COUNT] = [NEW_AW; PIN_COUNT]; | ||
| 35 | 34 | ||
| 36 | /// Polarity for listening to events for GPIOTE input channels. | 35 | /// Polarity for listening to events for GPIOTE input channels. |
| 37 | pub enum InputChannelPolarity { | 36 | pub enum InputChannelPolarity { |
diff --git a/embassy-nrf/src/time_driver.rs b/embassy-nrf/src/time_driver.rs index 81aabb11c..9ba38ec1b 100644 --- a/embassy-nrf/src/time_driver.rs +++ b/embassy-nrf/src/time_driver.rs | |||
| @@ -123,11 +123,10 @@ struct RtcDriver { | |||
| 123 | alarms: Mutex<[AlarmState; ALARM_COUNT]>, | 123 | alarms: Mutex<[AlarmState; ALARM_COUNT]>, |
| 124 | } | 124 | } |
| 125 | 125 | ||
| 126 | const ALARM_STATE_NEW: AlarmState = AlarmState::new(); | ||
| 127 | embassy_time_driver::time_driver_impl!(static DRIVER: RtcDriver = RtcDriver { | 126 | embassy_time_driver::time_driver_impl!(static DRIVER: RtcDriver = RtcDriver { |
| 128 | period: AtomicU32::new(0), | 127 | period: AtomicU32::new(0), |
| 129 | alarm_count: AtomicU8::new(0), | 128 | alarm_count: AtomicU8::new(0), |
| 130 | alarms: Mutex::const_new(CriticalSectionRawMutex::new(), [ALARM_STATE_NEW; ALARM_COUNT]), | 129 | alarms: Mutex::const_new(CriticalSectionRawMutex::new(), [const {AlarmState::new()}; ALARM_COUNT]), |
| 131 | }); | 130 | }); |
| 132 | 131 | ||
| 133 | impl RtcDriver { | 132 | impl RtcDriver { |
diff --git a/embassy-nrf/src/usb/mod.rs b/embassy-nrf/src/usb/mod.rs index 52c9c532b..a9bf16708 100644 --- a/embassy-nrf/src/usb/mod.rs +++ b/embassy-nrf/src/usb/mod.rs | |||
| @@ -22,11 +22,10 @@ use crate::pac::usbd::vals; | |||
| 22 | use crate::util::slice_in_ram; | 22 | use crate::util::slice_in_ram; |
| 23 | use crate::{interrupt, pac, Peripheral}; | 23 | use crate::{interrupt, pac, Peripheral}; |
| 24 | 24 | ||
| 25 | const NEW_AW: AtomicWaker = AtomicWaker::new(); | 25 | static BUS_WAKER: AtomicWaker = AtomicWaker::new(); |
| 26 | static BUS_WAKER: AtomicWaker = NEW_AW; | 26 | static EP0_WAKER: AtomicWaker = AtomicWaker::new(); |
| 27 | static EP0_WAKER: AtomicWaker = NEW_AW; | 27 | static EP_IN_WAKERS: [AtomicWaker; 8] = [const { AtomicWaker::new() }; 8]; |
| 28 | static EP_IN_WAKERS: [AtomicWaker; 8] = [NEW_AW; 8]; | 28 | static EP_OUT_WAKERS: [AtomicWaker; 8] = [const { AtomicWaker::new() }; 8]; |
| 29 | static EP_OUT_WAKERS: [AtomicWaker; 8] = [NEW_AW; 8]; | ||
| 30 | static READY_ENDPOINTS: AtomicU32 = AtomicU32::new(0); | 29 | static READY_ENDPOINTS: AtomicU32 = AtomicU32::new(0); |
| 31 | 30 | ||
| 32 | /// Interrupt handler. | 31 | /// Interrupt handler. |
diff --git a/embassy-nrf/src/wdt.rs b/embassy-nrf/src/wdt.rs index dfe6cbec3..f7812258c 100644 --- a/embassy-nrf/src/wdt.rs +++ b/embassy-nrf/src/wdt.rs | |||
| @@ -112,8 +112,7 @@ impl Watchdog { | |||
| 112 | 112 | ||
| 113 | let this = Self { _private: () }; | 113 | let this = Self { _private: () }; |
| 114 | 114 | ||
| 115 | const DUMMY_HANDLE: WatchdogHandle = WatchdogHandle { index: 0 }; | 115 | let mut handles = [const { WatchdogHandle { index: 0 } }; N]; |
| 116 | let mut handles = [DUMMY_HANDLE; N]; | ||
| 117 | for i in 0..N { | 116 | for i in 0..N { |
| 118 | handles[i] = WatchdogHandle { index: i as u8 }; | 117 | handles[i] = WatchdogHandle { index: i as u8 }; |
| 119 | handles[i].pet(); | 118 | handles[i].pet(); |
diff --git a/embassy-nxp/src/pint.rs b/embassy-nxp/src/pint.rs index 3313f91a6..809be4bff 100644 --- a/embassy-nxp/src/pint.rs +++ b/embassy-nxp/src/pint.rs | |||
| @@ -52,14 +52,16 @@ impl PinInterrupt { | |||
| 52 | } | 52 | } |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | const NEW_PIN_INTERRUPT: PinInterrupt = PinInterrupt { | ||
| 56 | assigned: false, | ||
| 57 | waker: AtomicWaker::new(), | ||
| 58 | at_fault: false, | ||
| 59 | }; | ||
| 60 | const INTERUPT_COUNT: usize = 8; | 55 | const INTERUPT_COUNT: usize = 8; |
| 61 | static PIN_INTERRUPTS: Mutex<RefCell<[PinInterrupt; INTERUPT_COUNT]>> = | 56 | static PIN_INTERRUPTS: Mutex<RefCell<[PinInterrupt; INTERUPT_COUNT]>> = Mutex::new(RefCell::new( |
| 62 | Mutex::new(RefCell::new([NEW_PIN_INTERRUPT; INTERUPT_COUNT])); | 57 | [const { |
| 58 | PinInterrupt { | ||
| 59 | assigned: false, | ||
| 60 | waker: AtomicWaker::new(), | ||
| 61 | at_fault: false, | ||
| 62 | } | ||
| 63 | }; INTERUPT_COUNT], | ||
| 64 | )); | ||
| 63 | 65 | ||
| 64 | fn next_available_interrupt() -> Option<usize> { | 66 | fn next_available_interrupt() -> Option<usize> { |
| 65 | critical_section::with(|cs| { | 67 | critical_section::with(|cs| { |
diff --git a/embassy-rp/src/dma.rs b/embassy-rp/src/dma.rs index 34abe3e2d..2edcfdf5b 100644 --- a/embassy-rp/src/dma.rs +++ b/embassy-rp/src/dma.rs | |||
| @@ -212,8 +212,7 @@ impl<'a, C: Channel> Future for Transfer<'a, C> { | |||
| 212 | pub(crate) const CHANNEL_COUNT: usize = 12; | 212 | pub(crate) const CHANNEL_COUNT: usize = 12; |
| 213 | #[cfg(feature = "_rp235x")] | 213 | #[cfg(feature = "_rp235x")] |
| 214 | pub(crate) const CHANNEL_COUNT: usize = 16; | 214 | pub(crate) const CHANNEL_COUNT: usize = 16; |
| 215 | const NEW_AW: AtomicWaker = AtomicWaker::new(); | 215 | static CHANNEL_WAKERS: [AtomicWaker; CHANNEL_COUNT] = [const { AtomicWaker::new() }; CHANNEL_COUNT]; |
| 216 | static CHANNEL_WAKERS: [AtomicWaker; CHANNEL_COUNT] = [NEW_AW; CHANNEL_COUNT]; | ||
| 217 | 216 | ||
| 218 | trait SealedChannel {} | 217 | trait SealedChannel {} |
| 219 | trait SealedWord {} | 218 | trait SealedWord {} |
diff --git a/embassy-rp/src/gpio.rs b/embassy-rp/src/gpio.rs index cb54375e4..203192827 100644 --- a/embassy-rp/src/gpio.rs +++ b/embassy-rp/src/gpio.rs | |||
| @@ -13,18 +13,16 @@ use crate::pac::common::{Reg, RW}; | |||
| 13 | use crate::pac::SIO; | 13 | use crate::pac::SIO; |
| 14 | use crate::{interrupt, pac, peripherals, Peripheral, RegExt}; | 14 | use crate::{interrupt, pac, peripherals, Peripheral, RegExt}; |
| 15 | 15 | ||
| 16 | const NEW_AW: AtomicWaker = AtomicWaker::new(); | ||
| 17 | |||
| 18 | #[cfg(any(feature = "rp2040", feature = "rp235xa"))] | 16 | #[cfg(any(feature = "rp2040", feature = "rp235xa"))] |
| 19 | pub(crate) const BANK0_PIN_COUNT: usize = 30; | 17 | pub(crate) const BANK0_PIN_COUNT: usize = 30; |
| 20 | #[cfg(feature = "rp235xb")] | 18 | #[cfg(feature = "rp235xb")] |
| 21 | pub(crate) const BANK0_PIN_COUNT: usize = 48; | 19 | pub(crate) const BANK0_PIN_COUNT: usize = 48; |
| 22 | 20 | ||
| 23 | static BANK0_WAKERS: [AtomicWaker; BANK0_PIN_COUNT] = [NEW_AW; BANK0_PIN_COUNT]; | 21 | static BANK0_WAKERS: [AtomicWaker; BANK0_PIN_COUNT] = [const { AtomicWaker::new() }; BANK0_PIN_COUNT]; |
| 24 | #[cfg(feature = "qspi-as-gpio")] | 22 | #[cfg(feature = "qspi-as-gpio")] |
| 25 | const QSPI_PIN_COUNT: usize = 6; | 23 | const QSPI_PIN_COUNT: usize = 6; |
| 26 | #[cfg(feature = "qspi-as-gpio")] | 24 | #[cfg(feature = "qspi-as-gpio")] |
| 27 | static QSPI_WAKERS: [AtomicWaker; QSPI_PIN_COUNT] = [NEW_AW; QSPI_PIN_COUNT]; | 25 | static QSPI_WAKERS: [AtomicWaker; QSPI_PIN_COUNT] = [const { AtomicWaker::new() }; QSPI_PIN_COUNT]; |
| 28 | 26 | ||
| 29 | /// Represents a digital input or output level. | 27 | /// Represents a digital input or output level. |
| 30 | #[derive(Debug, Eq, PartialEq, Clone, Copy)] | 28 | #[derive(Debug, Eq, PartialEq, Clone, Copy)] |
diff --git a/embassy-rp/src/pio/mod.rs b/embassy-rp/src/pio/mod.rs index 98f4f8943..e3c25020f 100644 --- a/embassy-rp/src/pio/mod.rs +++ b/embassy-rp/src/pio/mod.rs | |||
| @@ -1270,9 +1270,7 @@ trait SealedInstance { | |||
| 1270 | 1270 | ||
| 1271 | #[inline] | 1271 | #[inline] |
| 1272 | fn wakers() -> &'static Wakers { | 1272 | fn wakers() -> &'static Wakers { |
| 1273 | const NEW_AW: AtomicWaker = AtomicWaker::new(); | 1273 | static WAKERS: Wakers = Wakers([const { AtomicWaker::new() }; 12]); |
| 1274 | static WAKERS: Wakers = Wakers([NEW_AW; 12]); | ||
| 1275 | |||
| 1276 | &WAKERS | 1274 | &WAKERS |
| 1277 | } | 1275 | } |
| 1278 | 1276 | ||
diff --git a/embassy-rp/src/time_driver.rs b/embassy-rp/src/time_driver.rs index e5b407a29..40fc71bb1 100644 --- a/embassy-rp/src/time_driver.rs +++ b/embassy-rp/src/time_driver.rs | |||
| @@ -21,10 +21,6 @@ struct AlarmState { | |||
| 21 | unsafe impl Send for AlarmState {} | 21 | unsafe impl Send for AlarmState {} |
| 22 | 22 | ||
| 23 | const ALARM_COUNT: usize = 4; | 23 | const ALARM_COUNT: usize = 4; |
| 24 | const DUMMY_ALARM: AlarmState = AlarmState { | ||
| 25 | timestamp: Cell::new(0), | ||
| 26 | callback: Cell::new(None), | ||
| 27 | }; | ||
| 28 | 24 | ||
| 29 | struct TimerDriver { | 25 | struct TimerDriver { |
| 30 | alarms: Mutex<CriticalSectionRawMutex, [AlarmState; ALARM_COUNT]>, | 26 | alarms: Mutex<CriticalSectionRawMutex, [AlarmState; ALARM_COUNT]>, |
| @@ -32,7 +28,10 @@ struct TimerDriver { | |||
| 32 | } | 28 | } |
| 33 | 29 | ||
| 34 | embassy_time_driver::time_driver_impl!(static DRIVER: TimerDriver = TimerDriver{ | 30 | embassy_time_driver::time_driver_impl!(static DRIVER: TimerDriver = TimerDriver{ |
| 35 | alarms: Mutex::const_new(CriticalSectionRawMutex::new(), [DUMMY_ALARM; ALARM_COUNT]), | 31 | alarms: Mutex::const_new(CriticalSectionRawMutex::new(), [const{AlarmState { |
| 32 | timestamp: Cell::new(0), | ||
| 33 | callback: Cell::new(None), | ||
| 34 | }}; ALARM_COUNT]), | ||
| 36 | next_alarm: AtomicU8::new(0), | 35 | next_alarm: AtomicU8::new(0), |
| 37 | }); | 36 | }); |
| 38 | 37 | ||
diff --git a/embassy-rp/src/usb.rs b/embassy-rp/src/usb.rs index 20ef881f9..26cb90d89 100644 --- a/embassy-rp/src/usb.rs +++ b/embassy-rp/src/usb.rs | |||
| @@ -43,10 +43,9 @@ const EP_COUNT: usize = 16; | |||
| 43 | const EP_MEMORY_SIZE: usize = 4096; | 43 | const EP_MEMORY_SIZE: usize = 4096; |
| 44 | const EP_MEMORY: *mut u8 = pac::USB_DPRAM.as_ptr() as *mut u8; | 44 | const EP_MEMORY: *mut u8 = pac::USB_DPRAM.as_ptr() as *mut u8; |
| 45 | 45 | ||
| 46 | const NEW_AW: AtomicWaker = AtomicWaker::new(); | 46 | static BUS_WAKER: AtomicWaker = AtomicWaker::new(); |
| 47 | static BUS_WAKER: AtomicWaker = NEW_AW; | 47 | static EP_IN_WAKERS: [AtomicWaker; EP_COUNT] = [const { AtomicWaker::new() }; EP_COUNT]; |
| 48 | static EP_IN_WAKERS: [AtomicWaker; EP_COUNT] = [NEW_AW; EP_COUNT]; | 48 | static EP_OUT_WAKERS: [AtomicWaker; EP_COUNT] = [const { AtomicWaker::new() }; EP_COUNT]; |
| 49 | static EP_OUT_WAKERS: [AtomicWaker; EP_COUNT] = [NEW_AW; EP_COUNT]; | ||
| 50 | 49 | ||
| 51 | struct EndpointBuffer<T: Instance> { | 50 | struct EndpointBuffer<T: Instance> { |
| 52 | addr: u16, | 51 | addr: u16, |
diff --git a/embassy-stm32/src/eth/mod.rs b/embassy-stm32/src/eth/mod.rs index 1b875b71a..773452bf2 100644 --- a/embassy-stm32/src/eth/mod.rs +++ b/embassy-stm32/src/eth/mod.rs | |||
| @@ -42,11 +42,9 @@ pub struct PacketQueue<const TX: usize, const RX: usize> { | |||
| 42 | impl<const TX: usize, const RX: usize> PacketQueue<TX, RX> { | 42 | impl<const TX: usize, const RX: usize> PacketQueue<TX, RX> { |
| 43 | /// Create a new packet queue. | 43 | /// Create a new packet queue. |
| 44 | pub const fn new() -> Self { | 44 | pub const fn new() -> Self { |
| 45 | const NEW_TDES: TDes = TDes::new(); | ||
| 46 | const NEW_RDES: RDes = RDes::new(); | ||
| 47 | Self { | 45 | Self { |
| 48 | tx_desc: [NEW_TDES; TX], | 46 | tx_desc: [const { TDes::new() }; TX], |
| 49 | rx_desc: [NEW_RDES; RX], | 47 | rx_desc: [const { RDes::new() }; RX], |
| 50 | tx_buf: [Packet([0; TX_BUFFER_SIZE]); TX], | 48 | tx_buf: [Packet([0; TX_BUFFER_SIZE]); TX], |
| 51 | rx_buf: [Packet([0; RX_BUFFER_SIZE]); RX], | 49 | rx_buf: [Packet([0; RX_BUFFER_SIZE]); RX], |
| 52 | } | 50 | } |
diff --git a/embassy-stm32/src/exti.rs b/embassy-stm32/src/exti.rs index 87512c92d..5cff74264 100644 --- a/embassy-stm32/src/exti.rs +++ b/embassy-stm32/src/exti.rs | |||
| @@ -14,8 +14,7 @@ use crate::pac::EXTI; | |||
| 14 | use crate::{interrupt, pac, peripherals, Peripheral}; | 14 | use crate::{interrupt, pac, peripherals, Peripheral}; |
| 15 | 15 | ||
| 16 | const EXTI_COUNT: usize = 16; | 16 | const EXTI_COUNT: usize = 16; |
| 17 | const NEW_AW: AtomicWaker = AtomicWaker::new(); | 17 | static EXTI_WAKERS: [AtomicWaker; EXTI_COUNT] = [const { AtomicWaker::new() }; EXTI_COUNT]; |
| 18 | static EXTI_WAKERS: [AtomicWaker; EXTI_COUNT] = [NEW_AW; EXTI_COUNT]; | ||
| 19 | 18 | ||
| 20 | #[cfg(exti_w)] | 19 | #[cfg(exti_w)] |
| 21 | fn cpu_regs() -> pac::exti::Cpu { | 20 | fn cpu_regs() -> pac::exti::Cpu { |
diff --git a/embassy-stm32/src/ipcc.rs b/embassy-stm32/src/ipcc.rs index 6c8347311..20cd20dca 100644 --- a/embassy-stm32/src/ipcc.rs +++ b/embassy-stm32/src/ipcc.rs | |||
| @@ -229,11 +229,9 @@ struct State { | |||
| 229 | 229 | ||
| 230 | impl State { | 230 | impl State { |
| 231 | const fn new() -> Self { | 231 | const fn new() -> Self { |
| 232 | const WAKER: AtomicWaker = AtomicWaker::new(); | ||
| 233 | |||
| 234 | Self { | 232 | Self { |
| 235 | rx_wakers: [WAKER; 6], | 233 | rx_wakers: [const { AtomicWaker::new() }; 6], |
| 236 | tx_wakers: [WAKER; 6], | 234 | tx_wakers: [const { AtomicWaker::new() }; 6], |
| 237 | } | 235 | } |
| 238 | } | 236 | } |
| 239 | 237 | ||
diff --git a/embassy-stm32/src/time_driver.rs b/embassy-stm32/src/time_driver.rs index f8041bf1e..74e4d0575 100644 --- a/embassy-stm32/src/time_driver.rs +++ b/embassy-stm32/src/time_driver.rs | |||
| @@ -261,13 +261,10 @@ pub(crate) struct RtcDriver { | |||
| 261 | rtc: Mutex<CriticalSectionRawMutex, Cell<Option<&'static Rtc>>>, | 261 | rtc: Mutex<CriticalSectionRawMutex, Cell<Option<&'static Rtc>>>, |
| 262 | } | 262 | } |
| 263 | 263 | ||
| 264 | #[allow(clippy::declare_interior_mutable_const)] | ||
| 265 | const ALARM_STATE_NEW: AlarmState = AlarmState::new(); | ||
| 266 | |||
| 267 | embassy_time_driver::time_driver_impl!(static DRIVER: RtcDriver = RtcDriver { | 264 | embassy_time_driver::time_driver_impl!(static DRIVER: RtcDriver = RtcDriver { |
| 268 | period: AtomicU32::new(0), | 265 | period: AtomicU32::new(0), |
| 269 | alarm_count: AtomicU8::new(0), | 266 | alarm_count: AtomicU8::new(0), |
| 270 | alarms: Mutex::const_new(CriticalSectionRawMutex::new(), [ALARM_STATE_NEW; ALARM_COUNT]), | 267 | alarms: Mutex::const_new(CriticalSectionRawMutex::new(), [const{AlarmState::new()}; ALARM_COUNT]), |
| 271 | #[cfg(feature = "low-power")] | 268 | #[cfg(feature = "low-power")] |
| 272 | rtc: Mutex::const_new(CriticalSectionRawMutex::new(), Cell::new(None)), | 269 | rtc: Mutex::const_new(CriticalSectionRawMutex::new(), Cell::new(None)), |
| 273 | }); | 270 | }); |
diff --git a/embassy-stm32/src/timer/mod.rs b/embassy-stm32/src/timer/mod.rs index aa9dd91d9..97740c2ed 100644 --- a/embassy-stm32/src/timer/mod.rs +++ b/embassy-stm32/src/timer/mod.rs | |||
| @@ -59,10 +59,9 @@ struct State { | |||
| 59 | 59 | ||
| 60 | impl State { | 60 | impl State { |
| 61 | const fn new() -> Self { | 61 | const fn new() -> Self { |
| 62 | const NEW_AW: AtomicWaker = AtomicWaker::new(); | ||
| 63 | Self { | 62 | Self { |
| 64 | up_waker: NEW_AW, | 63 | up_waker: AtomicWaker::new(), |
| 65 | cc_waker: [NEW_AW; 4], | 64 | cc_waker: [const { AtomicWaker::new() }; 4], |
| 66 | } | 65 | } |
| 67 | } | 66 | } |
| 68 | } | 67 | } |
diff --git a/embassy-stm32/src/usb/usb.rs b/embassy-stm32/src/usb/usb.rs index 0ab2306c8..94af00b6e 100644 --- a/embassy-stm32/src/usb/usb.rs +++ b/embassy-stm32/src/usb/usb.rs | |||
| @@ -119,15 +119,12 @@ const USBRAM_ALIGN: usize = 2; | |||
| 119 | #[cfg(any(usbram_32_2048, usbram_32_1024))] | 119 | #[cfg(any(usbram_32_2048, usbram_32_1024))] |
| 120 | const USBRAM_ALIGN: usize = 4; | 120 | const USBRAM_ALIGN: usize = 4; |
| 121 | 121 | ||
| 122 | const NEW_AW: AtomicWaker = AtomicWaker::new(); | 122 | static BUS_WAKER: AtomicWaker = AtomicWaker::new(); |
| 123 | static BUS_WAKER: AtomicWaker = NEW_AW; | ||
| 124 | static EP0_SETUP: AtomicBool = AtomicBool::new(false); | 123 | static EP0_SETUP: AtomicBool = AtomicBool::new(false); |
| 125 | 124 | ||
| 126 | const NEW_CTR_TRIGGERED: AtomicBool = AtomicBool::new(false); | 125 | static CTR_TRIGGERED: [AtomicBool; EP_COUNT] = [const { AtomicBool::new(false) }; EP_COUNT]; |
| 127 | static CTR_TRIGGERED: [AtomicBool; EP_COUNT] = [NEW_CTR_TRIGGERED; EP_COUNT]; | 126 | static EP_IN_WAKERS: [AtomicWaker; EP_COUNT] = [const { AtomicWaker::new() }; EP_COUNT]; |
| 128 | 127 | static EP_OUT_WAKERS: [AtomicWaker; EP_COUNT] = [const { AtomicWaker::new() }; EP_COUNT]; | |
| 129 | static EP_IN_WAKERS: [AtomicWaker; EP_COUNT] = [NEW_AW; EP_COUNT]; | ||
| 130 | static EP_OUT_WAKERS: [AtomicWaker; EP_COUNT] = [NEW_AW; EP_COUNT]; | ||
| 131 | static IRQ_RESET: AtomicBool = AtomicBool::new(false); | 128 | static IRQ_RESET: AtomicBool = AtomicBool::new(false); |
| 132 | static IRQ_SUSPEND: AtomicBool = AtomicBool::new(false); | 129 | static IRQ_SUSPEND: AtomicBool = AtomicBool::new(false); |
| 133 | static IRQ_RESUME: AtomicBool = AtomicBool::new(false); | 130 | static IRQ_RESUME: AtomicBool = AtomicBool::new(false); |
diff --git a/embassy-time/src/driver_std.rs b/embassy-time/src/driver_std.rs index d182f8331..cbef7aae1 100644 --- a/embassy-time/src/driver_std.rs +++ b/embassy-time/src/driver_std.rs | |||
| @@ -43,7 +43,6 @@ struct TimeDriver { | |||
| 43 | signaler: UninitCell<Signaler>, | 43 | signaler: UninitCell<Signaler>, |
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | const ALARM_NEW: AlarmState = AlarmState::new(); | ||
| 47 | embassy_time_driver::time_driver_impl!(static DRIVER: TimeDriver = TimeDriver { | 46 | embassy_time_driver::time_driver_impl!(static DRIVER: TimeDriver = TimeDriver { |
| 48 | alarm_count: AtomicU8::new(0), | 47 | alarm_count: AtomicU8::new(0), |
| 49 | 48 | ||
| @@ -56,7 +55,8 @@ embassy_time_driver::time_driver_impl!(static DRIVER: TimeDriver = TimeDriver { | |||
| 56 | impl TimeDriver { | 55 | impl TimeDriver { |
| 57 | fn init(&self) { | 56 | fn init(&self) { |
| 58 | self.once.call_once(|| unsafe { | 57 | self.once.call_once(|| unsafe { |
| 59 | self.alarms.write(CsMutex::new(RefCell::new([ALARM_NEW; ALARM_COUNT]))); | 58 | self.alarms |
| 59 | .write(CsMutex::new(RefCell::new([const { AlarmState::new() }; ALARM_COUNT]))); | ||
| 60 | self.zero_instant.write(StdInstant::now()); | 60 | self.zero_instant.write(StdInstant::now()); |
| 61 | self.signaler.write(Signaler::new()); | 61 | self.signaler.write(Signaler::new()); |
| 62 | 62 | ||
diff --git a/embassy-time/src/driver_wasm.rs b/embassy-time/src/driver_wasm.rs index ad884f060..d65629e49 100644 --- a/embassy-time/src/driver_wasm.rs +++ b/embassy-time/src/driver_wasm.rs | |||
| @@ -40,7 +40,6 @@ struct TimeDriver { | |||
| 40 | zero_instant: UninitCell<StdInstant>, | 40 | zero_instant: UninitCell<StdInstant>, |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | const ALARM_NEW: AlarmState = AlarmState::new(); | ||
| 44 | embassy_time_driver::time_driver_impl!(static DRIVER: TimeDriver = TimeDriver { | 43 | embassy_time_driver::time_driver_impl!(static DRIVER: TimeDriver = TimeDriver { |
| 45 | alarm_count: AtomicU8::new(0), | 44 | alarm_count: AtomicU8::new(0), |
| 46 | once: Once::new(), | 45 | once: Once::new(), |
| @@ -51,7 +50,8 @@ embassy_time_driver::time_driver_impl!(static DRIVER: TimeDriver = TimeDriver { | |||
| 51 | impl TimeDriver { | 50 | impl TimeDriver { |
| 52 | fn init(&self) { | 51 | fn init(&self) { |
| 53 | self.once.call_once(|| unsafe { | 52 | self.once.call_once(|| unsafe { |
| 54 | self.alarms.write(Mutex::new([ALARM_NEW; ALARM_COUNT])); | 53 | self.alarms |
| 54 | .write(Mutex::new([const { AlarmState::new() }; ALARM_COUNT])); | ||
| 55 | self.zero_instant.write(StdInstant::now()); | 55 | self.zero_instant.write(StdInstant::now()); |
| 56 | }); | 56 | }); |
| 57 | } | 57 | } |
