4 #include <lpc17xx_wdt.h>
11 // TODO : comment this
12 // Basically, when stuff stop answering, reset, or enter MRI mode, or something
14 Watchdog::Watchdog(uint32_t timeout
, WDT_ACTION action
)
16 WDT_Init(WDT_CLKSRC_IRC
, (action
== WDT_MRI
)?WDT_MODE_INT_ONLY
:WDT_MODE_RESET
);
19 if(action
== WDT_MRI
) {
20 // enable the interrupt
21 NVIC_EnableIRQ(WDT_IRQn
);
22 NVIC_SetPriority(WDT_IRQn
, 1);
31 void Watchdog::on_module_loaded()
33 register_for_event(ON_IDLE
);
37 void Watchdog::on_idle(void*)
43 // when watchdog triggers, set a led pattern and enter MRI which turns everything off into a safe state
44 // TODO handle when MRI is disabled
45 extern "C" void WDT_IRQHandler(void)
47 if(THEKERNEL
->is_using_leds()) {
48 // set led pattern to show we are in watchdog timeout
55 WDT_ClrTimeOutFlag(); // bootloader uses this flag to enter DFU mode