aboutsummaryrefslogtreecommitdiff
path: root/embassy-nrf/src
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2021-08-02 20:13:41 +0200
committerDario Nieuwenhuis <[email protected]>2021-08-02 20:13:41 +0200
commit3f28bb6c77de3d8ecbb6d401f107586f24e416a4 (patch)
treeda16008285a54746a07bdf7881a4fce4cbf8d23e /embassy-nrf/src
parente238079d7d921cab589eb6106059d4fb0b12ce1c (diff)
common: Initialize PeripheralMutex state with closure to ensure it's done in-place.
Diffstat (limited to 'embassy-nrf/src')
-rw-r--r--embassy-nrf/src/buffered_uarte.rs30
1 files changed, 14 insertions, 16 deletions
diff --git a/embassy-nrf/src/buffered_uarte.rs b/embassy-nrf/src/buffered_uarte.rs
index 642c30185..048c36d39 100644
--- a/embassy-nrf/src/buffered_uarte.rs
+++ b/embassy-nrf/src/buffered_uarte.rs
@@ -155,23 +155,21 @@ impl<'d, U: UarteInstance, T: TimerInstance> BufferedUarte<'d, U, T> {
155 ppi_ch2.set_task(Task::from_reg(&r.tasks_stoprx)); 155 ppi_ch2.set_task(Task::from_reg(&r.tasks_stoprx));
156 ppi_ch2.enable(); 156 ppi_ch2.enable();
157 157
158 let initial_state = StateInner {
159 phantom: PhantomData,
160 timer,
161 _ppi_ch1: ppi_ch1,
162 _ppi_ch2: ppi_ch2,
163
164 rx: RingBuffer::new(rx_buffer),
165 rx_state: RxState::Idle,
166 rx_waker: WakerRegistration::new(),
167
168 tx: RingBuffer::new(tx_buffer),
169 tx_state: TxState::Idle,
170 tx_waker: WakerRegistration::new(),
171 };
172
173 Self { 158 Self {
174 inner: PeripheralMutex::new_unchecked(&mut state.0, initial_state, irq), 159 inner: PeripheralMutex::new_unchecked(irq, &mut state.0, move || StateInner {
160 phantom: PhantomData,
161 timer,
162 _ppi_ch1: ppi_ch1,
163 _ppi_ch2: ppi_ch2,
164
165 rx: RingBuffer::new(rx_buffer),
166 rx_state: RxState::Idle,
167 rx_waker: WakerRegistration::new(),
168
169 tx: RingBuffer::new(tx_buffer),
170 tx_state: TxState::Idle,
171 tx_waker: WakerRegistration::new(),
172 }),
175 } 173 }
176 } 174 }
177 175