aboutsummaryrefslogtreecommitdiff
path: root/embassy-nrf/src
diff options
context:
space:
mode:
authorLiam Murphy <[email protected]>2021-07-29 15:11:26 +1000
committerLiam Murphy <[email protected]>2021-07-29 15:11:26 +1000
commitd5ba35424d7eef2cc0c501758d214ce3a6febfc1 (patch)
tree8d3b07073b7f5f2ea67bb061a990b019c79aeeb5 /embassy-nrf/src
parent4d9514cbcb97343c3a75bfa565d753c44c2a0e27 (diff)
Replace `PeripheralStateUnchecked` with `register_interrupt_unchecked`
Diffstat (limited to 'embassy-nrf/src')
-rw-r--r--embassy-nrf/src/buffered_uarte.rs13
1 files changed, 6 insertions, 7 deletions
diff --git a/embassy-nrf/src/buffered_uarte.rs b/embassy-nrf/src/buffered_uarte.rs
index 2cce122bc..9be4d4d54 100644
--- a/embassy-nrf/src/buffered_uarte.rs
+++ b/embassy-nrf/src/buffered_uarte.rs
@@ -7,7 +7,7 @@ use core::task::{Context, Poll};
7use embassy::interrupt::InterruptExt; 7use embassy::interrupt::InterruptExt;
8use embassy::io::{AsyncBufRead, AsyncWrite, Result}; 8use embassy::io::{AsyncBufRead, AsyncWrite, Result};
9use embassy::util::{Unborrow, WakerRegistration}; 9use embassy::util::{Unborrow, WakerRegistration};
10use embassy_extras::peripheral::{PeripheralMutex, PeripheralStateUnchecked}; 10use embassy_extras::peripheral::{PeripheralMutex, PeripheralState};
11use embassy_extras::ring_buffer::RingBuffer; 11use embassy_extras::ring_buffer::RingBuffer;
12use embassy_extras::{low_power_wait_until, unborrow}; 12use embassy_extras::{low_power_wait_until, unborrow};
13 13
@@ -175,7 +175,7 @@ impl<'d, U: UarteInstance, T: TimerInstance> BufferedUarte<'d, U, T> {
175 175
176 pub fn set_baudrate(self: Pin<&mut Self>, baudrate: Baudrate) { 176 pub fn set_baudrate(self: Pin<&mut Self>, baudrate: Baudrate) {
177 let mut inner = self.inner(); 177 let mut inner = self.inner();
178 inner.as_mut().register_interrupt(); 178 unsafe { inner.as_mut().register_interrupt_unchecked() }
179 inner.with(|state| { 179 inner.with(|state| {
180 let r = U::regs(); 180 let r = U::regs();
181 181
@@ -195,7 +195,7 @@ impl<'d, U: UarteInstance, T: TimerInstance> BufferedUarte<'d, U, T> {
195impl<'d, U: UarteInstance, T: TimerInstance> AsyncBufRead for BufferedUarte<'d, U, T> { 195impl<'d, U: UarteInstance, T: TimerInstance> AsyncBufRead for BufferedUarte<'d, U, T> {
196 fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<&[u8]>> { 196 fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<&[u8]>> {
197 let mut inner = self.inner(); 197 let mut inner = self.inner();
198 inner.as_mut().register_interrupt(); 198 unsafe { inner.as_mut().register_interrupt_unchecked() }
199 inner.with(|state| { 199 inner.with(|state| {
200 // Conservative compiler fence to prevent optimizations that do not 200 // Conservative compiler fence to prevent optimizations that do not
201 // take in to account actions by DMA. The fence has been placed here, 201 // take in to account actions by DMA. The fence has been placed here,
@@ -220,7 +220,7 @@ impl<'d, U: UarteInstance, T: TimerInstance> AsyncBufRead for BufferedUarte<'d,
220 220
221 fn consume(self: Pin<&mut Self>, amt: usize) { 221 fn consume(self: Pin<&mut Self>, amt: usize) {
222 let mut inner = self.inner(); 222 let mut inner = self.inner();
223 inner.as_mut().register_interrupt(); 223 unsafe { inner.as_mut().register_interrupt_unchecked() }
224 inner.as_mut().with(|state| { 224 inner.as_mut().with(|state| {
225 trace!("consume {:?}", amt); 225 trace!("consume {:?}", amt);
226 state.rx.pop(amt); 226 state.rx.pop(amt);
@@ -232,7 +232,7 @@ impl<'d, U: UarteInstance, T: TimerInstance> AsyncBufRead for BufferedUarte<'d,
232impl<'d, U: UarteInstance, T: TimerInstance> AsyncWrite for BufferedUarte<'d, U, T> { 232impl<'d, U: UarteInstance, T: TimerInstance> AsyncWrite for BufferedUarte<'d, U, T> {
233 fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll<Result<usize>> { 233 fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll<Result<usize>> {
234 let mut inner = self.inner(); 234 let mut inner = self.inner();
235 inner.as_mut().register_interrupt(); 235 unsafe { inner.as_mut().register_interrupt_unchecked() }
236 let poll = inner.as_mut().with(|state| { 236 let poll = inner.as_mut().with(|state| {
237 trace!("poll_write: {:?}", buf.len()); 237 trace!("poll_write: {:?}", buf.len());
238 238
@@ -285,8 +285,7 @@ impl<'a, U: UarteInstance, T: TimerInstance> Drop for State<'a, U, T> {
285 } 285 }
286} 286}
287 287
288// SAFETY: the safety contract of `PeripheralStateUnchecked` is forwarded to `BufferedUarte::new`. 288impl<'a, U: UarteInstance, T: TimerInstance> PeripheralState for State<'a, U, T> {
289unsafe impl<'a, U: UarteInstance, T: TimerInstance> PeripheralStateUnchecked for State<'a, U, T> {
290 type Interrupt = U::Interrupt; 289 type Interrupt = U::Interrupt;
291 fn on_interrupt(&mut self) { 290 fn on_interrupt(&mut self) {
292 trace!("irq: start"); 291 trace!("irq: start");