rp/bootsel: change it to a method on the peripheral.

This commit is contained in:
Dario Nieuwenhuis 2023-10-07 01:46:57 +02:00
parent 3e054a6f0d
commit d4ed8e5779
2 changed files with 12 additions and 9 deletions

View file

@ -9,17 +9,19 @@
use crate::flash::in_ram;
/// Polls the BOOTSEL button. Returns true if the button is pressed.
///
/// Polling isn't cheap, as this function waits for core 1 to finish it's current
/// task and for any DMAs from flash to complete
pub fn poll_bootsel() -> bool {
let mut cs_status = Default::default();
impl crate::peripherals::BOOTSEL {
/// Polls the BOOTSEL button. Returns true if the button is pressed.
///
/// Polling isn't cheap, as this function waits for core 1 to finish it's current
/// task and for any DMAs from flash to complete
pub fn is_pressed(&mut self) -> bool {
let mut cs_status = Default::default();
unsafe { in_ram(|| cs_status = ram_helpers::read_cs_status()) }.expect("Must be called from Core 0");
unsafe { in_ram(|| cs_status = ram_helpers::read_cs_status()) }.expect("Must be called from Core 0");
// bootsel is active low, so invert
!cs_status.infrompad()
// bootsel is active low, so invert
!cs_status.infrompad()
}
}
mod ram_helpers {

View file

@ -194,6 +194,7 @@ embassy_hal_internal::peripherals! {
PIO1,
WATCHDOG,
BOOTSEL,
}
macro_rules! select_bootloader {