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; use crate::flash::in_ram;
/// Polls the BOOTSEL button. Returns true if the button is pressed. 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 /// Polling isn't cheap, as this function waits for core 1 to finish it's current
pub fn poll_bootsel() -> bool { /// task and for any DMAs from flash to complete
let mut cs_status = Default::default(); 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 // bootsel is active low, so invert
!cs_status.infrompad() !cs_status.infrompad()
}
} }
mod ram_helpers { mod ram_helpers {

View File

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