diff options
| author | Rasmus Melchior Jacobsen <[email protected]> | 2023-05-25 13:54:40 +0200 |
|---|---|---|
| committer | Rasmus Melchior Jacobsen <[email protected]> | 2023-05-25 13:54:40 +0200 |
| commit | 8b1eaf00a0fd24459407a70e76bdbc16983b9af6 (patch) | |
| tree | e44474b2b14ea913e20049a54b9c203f41e76e2e /embassy-stm32/src/flash | |
| parent | baf1c2efbe0b218f86b491b88e48531fde691851 (diff) | |
Simplify SR->Result
Diffstat (limited to 'embassy-stm32/src/flash')
| -rw-r--r-- | embassy-stm32/src/flash/f4.rs | 45 |
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")] |
| 6 | use embassy_sync::waitqueue::AtomicWaker; | 6 | use embassy_sync::waitqueue::AtomicWaker; |
| 7 | use pac::flash::regs::Sr; | ||
| 7 | 8 | ||
| 8 | use super::{FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; | 9 | use super::{FlashRegion, FlashSector, FLASH_REGIONS, WRITE_SIZE}; |
| 9 | use crate::flash::Error; | 10 | use 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 | ||
| 369 | fn 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)] |
| 395 | mod tests { | 384 | mod tests { |
| 396 | use super::*; | 385 | use super::*; |
