Pass WDT config around

By passing WDT config around we can control it more easily and promote sharing it between files.
This commit is contained in:
huntc 2023-01-04 10:19:39 +11:00
parent 0aa2a9ac27
commit 651eec0242
2 changed files with 9 additions and 6 deletions

View file

@ -149,11 +149,7 @@ pub struct WatchdogFlash<'d> {
impl<'d> WatchdogFlash<'d> { impl<'d> WatchdogFlash<'d> {
/// Start a new watchdog with a given flash and WDT peripheral and a timeout /// Start a new watchdog with a given flash and WDT peripheral and a timeout
pub fn start(flash: Nvmc<'d>, wdt: WDT, timeout: u32) -> Self { pub fn start(flash: Nvmc<'d>, wdt: WDT, config: wdt::Config) -> Self {
let mut config = wdt::Config::default();
config.timeout_ticks = 32768 * timeout; // timeout seconds
config.run_during_sleep = true;
config.run_during_debug_halt = false;
let (_wdt, [wdt]) = match wdt::Watchdog::try_new(wdt, config) { let (_wdt, [wdt]) = match wdt::Watchdog::try_new(wdt, config) {
Ok(x) => x, Ok(x) => x,
Err(_) => { Err(_) => {

View file

@ -6,6 +6,7 @@ use cortex_m_rt::{entry, exception};
use defmt_rtt as _; use defmt_rtt as _;
use embassy_boot_nrf::*; use embassy_boot_nrf::*;
use embassy_nrf::nvmc::Nvmc; use embassy_nrf::nvmc::Nvmc;
use embassy_nrf::wdt;
#[entry] #[entry]
fn main() -> ! { fn main() -> ! {
@ -20,8 +21,14 @@ fn main() -> ! {
*/ */
let mut bl = BootLoader::default(); let mut bl = BootLoader::default();
let mut wdt_config = wdt::Config::default();
wdt_config.timeout_ticks = 32768 * 5; // timeout seconds
wdt_config.run_during_sleep = true;
wdt_config.run_during_debug_halt = false;
let start = bl.prepare(&mut SingleFlashConfig::new(&mut BootFlash::<_, 4096>::new( let start = bl.prepare(&mut SingleFlashConfig::new(&mut BootFlash::<_, 4096>::new(
WatchdogFlash::start(Nvmc::new(p.NVMC), p.WDT, 5), WatchdogFlash::start(Nvmc::new(p.NVMC), p.WDT, wdt_config),
))); )));
unsafe { bl.load(start) } unsafe { bl.load(start) }
} }