aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2024-11-24 20:58:48 +0100
committerGitHub <[email protected]>2024-11-24 20:58:48 +0100
commitaaad8450e990f74c6b398aca9a6ec495720bf845 (patch)
tree17452428d53110cf07e9ee06ec0c3b372a1dc02f
parentb9408f051080398f38e03f7d0d20bba860213064 (diff)
Use inline const for initializing arrays. (#3567)
-rw-r--r--embassy-net-driver-channel/src/lib.rs6
-rw-r--r--embassy-nrf/src/gpiote.rs5
-rw-r--r--embassy-nrf/src/time_driver.rs3
-rw-r--r--embassy-nrf/src/usb/mod.rs9
-rw-r--r--embassy-nrf/src/wdt.rs3
-rw-r--r--embassy-nxp/src/pint.rs16
-rw-r--r--embassy-rp/src/dma.rs3
-rw-r--r--embassy-rp/src/gpio.rs6
-rw-r--r--embassy-rp/src/pio/mod.rs4
-rw-r--r--embassy-rp/src/time_driver.rs9
-rw-r--r--embassy-rp/src/usb.rs7
-rw-r--r--embassy-stm32/src/eth/mod.rs6
-rw-r--r--embassy-stm32/src/exti.rs3
-rw-r--r--embassy-stm32/src/ipcc.rs6
-rw-r--r--embassy-stm32/src/time_driver.rs5
-rw-r--r--embassy-stm32/src/timer/mod.rs5
-rw-r--r--embassy-stm32/src/usb/usb.rs11
-rw-r--r--embassy-time/src/driver_std.rs4
-rw-r--r--embassy-time/src/driver_wasm.rs4
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
28impl<const MTU: usize, const N_RX: usize, const N_TX: usize> State<MTU, N_RX, N_TX> { 28impl<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;
29const PIN_COUNT: usize = 32; 29const PIN_COUNT: usize = 32;
30 30
31#[allow(clippy::declare_interior_mutable_const)] 31#[allow(clippy::declare_interior_mutable_const)]
32const NEW_AW: AtomicWaker = AtomicWaker::new(); 32static CHANNEL_WAKERS: [AtomicWaker; CHANNEL_COUNT] = [const { AtomicWaker::new() }; CHANNEL_COUNT];
33static CHANNEL_WAKERS: [AtomicWaker; CHANNEL_COUNT] = [NEW_AW; CHANNEL_COUNT]; 33static PORT_WAKERS: [AtomicWaker; PIN_COUNT] = [const { AtomicWaker::new() }; PIN_COUNT];
34static 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.
37pub enum InputChannelPolarity { 36pub 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
126const ALARM_STATE_NEW: AlarmState = AlarmState::new();
127embassy_time_driver::time_driver_impl!(static DRIVER: RtcDriver = RtcDriver { 126embassy_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
133impl RtcDriver { 132impl 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;
22use crate::util::slice_in_ram; 22use crate::util::slice_in_ram;
23use crate::{interrupt, pac, Peripheral}; 23use crate::{interrupt, pac, Peripheral};
24 24
25const NEW_AW: AtomicWaker = AtomicWaker::new(); 25static BUS_WAKER: AtomicWaker = AtomicWaker::new();
26static BUS_WAKER: AtomicWaker = NEW_AW; 26static EP0_WAKER: AtomicWaker = AtomicWaker::new();
27static EP0_WAKER: AtomicWaker = NEW_AW; 27static EP_IN_WAKERS: [AtomicWaker; 8] = [const { AtomicWaker::new() }; 8];
28static EP_IN_WAKERS: [AtomicWaker; 8] = [NEW_AW; 8]; 28static EP_OUT_WAKERS: [AtomicWaker; 8] = [const { AtomicWaker::new() }; 8];
29static EP_OUT_WAKERS: [AtomicWaker; 8] = [NEW_AW; 8];
30static READY_ENDPOINTS: AtomicU32 = AtomicU32::new(0); 29static 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
55const NEW_PIN_INTERRUPT: PinInterrupt = PinInterrupt {
56 assigned: false,
57 waker: AtomicWaker::new(),
58 at_fault: false,
59};
60const INTERUPT_COUNT: usize = 8; 55const INTERUPT_COUNT: usize = 8;
61static PIN_INTERRUPTS: Mutex<RefCell<[PinInterrupt; INTERUPT_COUNT]>> = 56static 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
64fn next_available_interrupt() -> Option<usize> { 66fn 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> {
212pub(crate) const CHANNEL_COUNT: usize = 12; 212pub(crate) const CHANNEL_COUNT: usize = 12;
213#[cfg(feature = "_rp235x")] 213#[cfg(feature = "_rp235x")]
214pub(crate) const CHANNEL_COUNT: usize = 16; 214pub(crate) const CHANNEL_COUNT: usize = 16;
215const NEW_AW: AtomicWaker = AtomicWaker::new(); 215static CHANNEL_WAKERS: [AtomicWaker; CHANNEL_COUNT] = [const { AtomicWaker::new() }; CHANNEL_COUNT];
216static CHANNEL_WAKERS: [AtomicWaker; CHANNEL_COUNT] = [NEW_AW; CHANNEL_COUNT];
217 216
218trait SealedChannel {} 217trait SealedChannel {}
219trait SealedWord {} 218trait 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};
13use crate::pac::SIO; 13use crate::pac::SIO;
14use crate::{interrupt, pac, peripherals, Peripheral, RegExt}; 14use crate::{interrupt, pac, peripherals, Peripheral, RegExt};
15 15
16const NEW_AW: AtomicWaker = AtomicWaker::new();
17
18#[cfg(any(feature = "rp2040", feature = "rp235xa"))] 16#[cfg(any(feature = "rp2040", feature = "rp235xa"))]
19pub(crate) const BANK0_PIN_COUNT: usize = 30; 17pub(crate) const BANK0_PIN_COUNT: usize = 30;
20#[cfg(feature = "rp235xb")] 18#[cfg(feature = "rp235xb")]
21pub(crate) const BANK0_PIN_COUNT: usize = 48; 19pub(crate) const BANK0_PIN_COUNT: usize = 48;
22 20
23static BANK0_WAKERS: [AtomicWaker; BANK0_PIN_COUNT] = [NEW_AW; BANK0_PIN_COUNT]; 21static BANK0_WAKERS: [AtomicWaker; BANK0_PIN_COUNT] = [const { AtomicWaker::new() }; BANK0_PIN_COUNT];
24#[cfg(feature = "qspi-as-gpio")] 22#[cfg(feature = "qspi-as-gpio")]
25const QSPI_PIN_COUNT: usize = 6; 23const QSPI_PIN_COUNT: usize = 6;
26#[cfg(feature = "qspi-as-gpio")] 24#[cfg(feature = "qspi-as-gpio")]
27static QSPI_WAKERS: [AtomicWaker; QSPI_PIN_COUNT] = [NEW_AW; QSPI_PIN_COUNT]; 25static 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 {
21unsafe impl Send for AlarmState {} 21unsafe impl Send for AlarmState {}
22 22
23const ALARM_COUNT: usize = 4; 23const ALARM_COUNT: usize = 4;
24const DUMMY_ALARM: AlarmState = AlarmState {
25 timestamp: Cell::new(0),
26 callback: Cell::new(None),
27};
28 24
29struct TimerDriver { 25struct 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
34embassy_time_driver::time_driver_impl!(static DRIVER: TimerDriver = TimerDriver{ 30embassy_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;
43const EP_MEMORY_SIZE: usize = 4096; 43const EP_MEMORY_SIZE: usize = 4096;
44const EP_MEMORY: *mut u8 = pac::USB_DPRAM.as_ptr() as *mut u8; 44const EP_MEMORY: *mut u8 = pac::USB_DPRAM.as_ptr() as *mut u8;
45 45
46const NEW_AW: AtomicWaker = AtomicWaker::new(); 46static BUS_WAKER: AtomicWaker = AtomicWaker::new();
47static BUS_WAKER: AtomicWaker = NEW_AW; 47static EP_IN_WAKERS: [AtomicWaker; EP_COUNT] = [const { AtomicWaker::new() }; EP_COUNT];
48static EP_IN_WAKERS: [AtomicWaker; EP_COUNT] = [NEW_AW; EP_COUNT]; 48static EP_OUT_WAKERS: [AtomicWaker; EP_COUNT] = [const { AtomicWaker::new() }; EP_COUNT];
49static EP_OUT_WAKERS: [AtomicWaker; EP_COUNT] = [NEW_AW; EP_COUNT];
50 49
51struct EndpointBuffer<T: Instance> { 50struct 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> {
42impl<const TX: usize, const RX: usize> PacketQueue<TX, RX> { 42impl<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;
14use crate::{interrupt, pac, peripherals, Peripheral}; 14use crate::{interrupt, pac, peripherals, Peripheral};
15 15
16const EXTI_COUNT: usize = 16; 16const EXTI_COUNT: usize = 16;
17const NEW_AW: AtomicWaker = AtomicWaker::new(); 17static EXTI_WAKERS: [AtomicWaker; EXTI_COUNT] = [const { AtomicWaker::new() }; EXTI_COUNT];
18static EXTI_WAKERS: [AtomicWaker; EXTI_COUNT] = [NEW_AW; EXTI_COUNT];
19 18
20#[cfg(exti_w)] 19#[cfg(exti_w)]
21fn cpu_regs() -> pac::exti::Cpu { 20fn 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
230impl State { 230impl 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)]
265const ALARM_STATE_NEW: AlarmState = AlarmState::new();
266
267embassy_time_driver::time_driver_impl!(static DRIVER: RtcDriver = RtcDriver { 264embassy_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
60impl State { 60impl 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))]
120const USBRAM_ALIGN: usize = 4; 120const USBRAM_ALIGN: usize = 4;
121 121
122const NEW_AW: AtomicWaker = AtomicWaker::new(); 122static BUS_WAKER: AtomicWaker = AtomicWaker::new();
123static BUS_WAKER: AtomicWaker = NEW_AW;
124static EP0_SETUP: AtomicBool = AtomicBool::new(false); 123static EP0_SETUP: AtomicBool = AtomicBool::new(false);
125 124
126const NEW_CTR_TRIGGERED: AtomicBool = AtomicBool::new(false); 125static CTR_TRIGGERED: [AtomicBool; EP_COUNT] = [const { AtomicBool::new(false) }; EP_COUNT];
127static CTR_TRIGGERED: [AtomicBool; EP_COUNT] = [NEW_CTR_TRIGGERED; EP_COUNT]; 126static EP_IN_WAKERS: [AtomicWaker; EP_COUNT] = [const { AtomicWaker::new() }; EP_COUNT];
128 127static EP_OUT_WAKERS: [AtomicWaker; EP_COUNT] = [const { AtomicWaker::new() }; EP_COUNT];
129static EP_IN_WAKERS: [AtomicWaker; EP_COUNT] = [NEW_AW; EP_COUNT];
130static EP_OUT_WAKERS: [AtomicWaker; EP_COUNT] = [NEW_AW; EP_COUNT];
131static IRQ_RESET: AtomicBool = AtomicBool::new(false); 128static IRQ_RESET: AtomicBool = AtomicBool::new(false);
132static IRQ_SUSPEND: AtomicBool = AtomicBool::new(false); 129static IRQ_SUSPEND: AtomicBool = AtomicBool::new(false);
133static IRQ_RESUME: AtomicBool = AtomicBool::new(false); 130static 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
46const ALARM_NEW: AlarmState = AlarmState::new();
47embassy_time_driver::time_driver_impl!(static DRIVER: TimeDriver = TimeDriver { 46embassy_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 {
56impl TimeDriver { 55impl 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
43const ALARM_NEW: AlarmState = AlarmState::new();
44embassy_time_driver::time_driver_impl!(static DRIVER: TimeDriver = TimeDriver { 43embassy_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 {
51impl TimeDriver { 50impl 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 }