aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32
diff options
context:
space:
mode:
authorRasmus Melchior Jacobsen <[email protected]>2023-05-25 13:54:40 +0200
committerRasmus Melchior Jacobsen <[email protected]>2023-05-25 20:07:43 +0200
commit49a31bd5d8496e8ceb1144e6e02de0e55dd0508b (patch)
tree187496936744c0b83759d67ca63357eab1b6ea3e /embassy-stm32
parent7371eefa8666c304fce5c0e25f5315b1f10161fa (diff)
Simplify SR->Result
Diffstat (limited to 'embassy-stm32')
-rw-r--r--embassy-stm32/src/flash/f4.rs45
1 files changed, 17 insertions, 28 deletions
diff --git a/embassy-stm32/src/flash/f4.rs b/embassy-stm32/src/flash/f4.rs
index 2b0472640..53e58835e 100644
--- a/embassy-stm32/src/flash/f4.rs
+++ b/embassy-stm32/src/flash/f4.rs
@@ -4,6 +4,7 @@ use core::sync::atomic::{fence, Ordering};
4 4
5#[cfg(feature = "nightly")] 5#[cfg(feature = "nightly")]
6use embassy_sync::waitqueue::AtomicWaker; 6use embassy_sync::waitqueue::AtomicWaker;
7use pac::flash::regs::Sr;
7 8
8use super::{FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; 9use super::{FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE};
9use crate::flash::Error; 10use crate::flash::Error;
@@ -347,17 +348,7 @@ pub(crate) async unsafe fn wait_ready() -> Result<(), Error> {
347 348
348 let sr = pac::FLASH.sr().read(); 349 let sr = pac::FLASH.sr().read();
349 if !sr.bsy() { 350 if !sr.bsy() {
350 Poll::Ready(if sr.pgserr() { 351 Poll::Ready(get_result(sr))
351 Err(Error::Seq)
352 } else if sr.pgperr() {
353 Err(Error::Parallelism)
354 } else if sr.pgaerr() {
355 Err(Error::Unaligned)
356 } else if sr.wrperr() {
357 Err(Error::Protected)
358 } else {
359 Ok(())
360 })
361 } else { 352 } else {
362 return Poll::Pending; 353 return Poll::Pending;
363 } 354 }
@@ -370,27 +361,25 @@ unsafe fn wait_ready_blocking() -> Result<(), Error> {
370 let sr = pac::FLASH.sr().read(); 361 let sr = pac::FLASH.sr().read();
371 362
372 if !sr.bsy() { 363 if !sr.bsy() {
373 if sr.pgserr() { 364 return get_result(sr);
374 return Err(Error::Seq);
375 }
376
377 if sr.pgperr() {
378 return Err(Error::Parallelism);
379 }
380
381 if sr.pgaerr() {
382 return Err(Error::Unaligned);
383 }
384
385 if sr.wrperr() {
386 return Err(Error::Protected);
387 }
388
389 return Ok(());
390 } 365 }
391 } 366 }
392} 367}
393 368
369fn get_result(sr: Sr) -> Result<(), Error> {
370 if sr.pgserr() {
371 Err(Error::Seq)
372 } else if sr.pgperr() {
373 Err(Error::Parallelism)
374 } else if sr.pgaerr() {
375 Err(Error::Unaligned)
376 } else if sr.wrperr() {
377 Err(Error::Protected)
378 } else {
379 Ok(())
380 }
381}
382
394#[cfg(test)] 383#[cfg(test)]
395mod tests { 384mod tests {
396 use super::*; 385 use super::*;