diff options
| author | Dario Nieuwenhuis <[email protected]> | 2021-03-18 02:01:29 +0100 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2021-03-18 18:49:10 +0100 |
| commit | 0cd19a58c3dcaa689ba57da80c02af75866f7e09 (patch) | |
| tree | fc27bb5c7dad30e401aa0ef9df28be9e3aacc1f5 /embassy-nrf/src/buffered_uarte.rs | |
| parent | 4b2fdd450e70270f346f302829fa493a67fe3ce1 (diff) | |
Remove free() from PeripheralMutex and all nrf drivers.
Diffstat (limited to 'embassy-nrf/src/buffered_uarte.rs')
| -rw-r--r-- | embassy-nrf/src/buffered_uarte.rs | 29 |
1 files changed, 3 insertions, 26 deletions
diff --git a/embassy-nrf/src/buffered_uarte.rs b/embassy-nrf/src/buffered_uarte.rs index b1366cd9e..9b4ec6061 100644 --- a/embassy-nrf/src/buffered_uarte.rs +++ b/embassy-nrf/src/buffered_uarte.rs | |||
| @@ -201,29 +201,6 @@ impl<'a, U: Instance, T: TimerInstance, P1: ConfigurablePpi, P2: ConfigurablePpi | |||
| 201 | fn inner(self: Pin<&mut Self>) -> Pin<&mut PeripheralMutex<State<'a, U, T, P1, P2>>> { | 201 | fn inner(self: Pin<&mut Self>) -> Pin<&mut PeripheralMutex<State<'a, U, T, P1, P2>>> { |
| 202 | unsafe { Pin::new_unchecked(&mut self.get_unchecked_mut().inner) } | 202 | unsafe { Pin::new_unchecked(&mut self.get_unchecked_mut().inner) } |
| 203 | } | 203 | } |
| 204 | |||
| 205 | pub fn free(self: Pin<&mut Self>) -> (U, T, P1, P2, U::Interrupt) { | ||
| 206 | let (mut state, irq) = self.inner().free(); | ||
| 207 | state.stop(); | ||
| 208 | ( | ||
| 209 | state.uarte, | ||
| 210 | state.timer, | ||
| 211 | state.ppi_channel_1, | ||
| 212 | state.ppi_channel_2, | ||
| 213 | irq, | ||
| 214 | ) | ||
| 215 | } | ||
| 216 | } | ||
| 217 | |||
| 218 | impl<'a, U: Instance, T: TimerInstance, P1: ConfigurablePpi, P2: ConfigurablePpi> Drop | ||
| 219 | for BufferedUarte<'a, U, T, P1, P2> | ||
| 220 | { | ||
| 221 | fn drop(&mut self) { | ||
| 222 | let inner = unsafe { Pin::new_unchecked(&mut self.inner) }; | ||
| 223 | if let Some((mut state, _irq)) = inner.try_free() { | ||
| 224 | state.stop(); | ||
| 225 | } | ||
| 226 | } | ||
| 227 | } | 204 | } |
| 228 | 205 | ||
| 229 | impl<'a, U: Instance, T: TimerInstance, P1: ConfigurablePpi, P2: ConfigurablePpi> AsyncBufRead | 206 | impl<'a, U: Instance, T: TimerInstance, P1: ConfigurablePpi, P2: ConfigurablePpi> AsyncBufRead |
| @@ -293,10 +270,10 @@ impl<'a, U: Instance, T: TimerInstance, P1: ConfigurablePpi, P2: ConfigurablePpi | |||
| 293 | } | 270 | } |
| 294 | } | 271 | } |
| 295 | 272 | ||
| 296 | impl<'a, U: Instance, T: TimerInstance, P1: ConfigurablePpi, P2: ConfigurablePpi> | 273 | impl<'a, U: Instance, T: TimerInstance, P1: ConfigurablePpi, P2: ConfigurablePpi> Drop |
| 297 | State<'a, U, T, P1, P2> | 274 | for State<'a, U, T, P1, P2> |
| 298 | { | 275 | { |
| 299 | fn stop(&mut self) { | 276 | fn drop(&mut self) { |
| 300 | self.timer.tasks_stop.write(|w| unsafe { w.bits(1) }); | 277 | self.timer.tasks_stop.write(|w| unsafe { w.bits(1) }); |
| 301 | if let RxState::Receiving = self.rx_state { | 278 | if let RxState::Receiving = self.rx_state { |
| 302 | self.uarte.tasks_stoprx.write(|w| unsafe { w.bits(1) }); | 279 | self.uarte.tasks_stoprx.write(|w| unsafe { w.bits(1) }); |
