summaryrefslogtreecommitdiff
path: root/src/drivers/Watchdog.cpp
diff options
context:
space:
mode:
authorJF <jf@codingfield.com>2020-03-22 12:03:17 +0100
committerJF <jf@codingfield.com>2020-03-22 12:03:17 +0100
commitfb64ba8fb6953fe7e98db6874207a687d0d57bac (patch)
tree786d1b187697c927dfcdb684da48e2feca80e0ce /src/drivers/Watchdog.cpp
parent8ed6ffaaf8d0ad681c4f84b89e4a72792edb5a8f (diff)
Add new App : Sysinfo. It displays various info about the running system : version, date/time, battery, brightness and resetreason. It contains placeholder for future use (like mac address, uptime,...).
Diffstat (limited to 'src/drivers/Watchdog.cpp')
-rw-r--r--src/drivers/Watchdog.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/drivers/Watchdog.cpp b/src/drivers/Watchdog.cpp
index b0dc12e5..55b6de73 100644
--- a/src/drivers/Watchdog.cpp
+++ b/src/drivers/Watchdog.cpp
@@ -19,6 +19,8 @@ void Watchdog::Setup(uint8_t timeoutSeconds) {
/* Enable reload requests */
NRF_WDT->RREN = (WDT_RREN_RR0_Enabled << WDT_RREN_RR0_Pos);
+
+ resetReason = ActualResetReason();
}
void Watchdog::Start() {
@@ -29,18 +31,18 @@ void Watchdog::Kick() {
NRF_WDT->RR[0] = WDT_RR_RR_Reload;
}
-Watchdog::ResetReasons Watchdog::ResetReason() {
+Watchdog::ResetReasons Watchdog::ActualResetReason() const {
uint32_t resetReason;
sd_power_reset_reason_get(&resetReason);
sd_power_reset_reason_clr(0xFFFFFFFF);
- if(resetReason & 0x01) return ResetReasons::ResetPin;
- if((resetReason >> 1) & 0x01) return ResetReasons::Watchdog;
- if((resetReason >> 2) & 0x01) return ResetReasons::SoftReset;
- if((resetReason >> 3) & 0x01) return ResetReasons::CpuLockup;
- if((resetReason >> 16) & 0x01) return ResetReasons::SystemOff;
- if((resetReason >> 17) & 0x01) return ResetReasons::LpComp;
- if((resetReason >> 18) & 0x01) return ResetReasons::DebugInterface;
- if((resetReason >> 19) & 0x01) return ResetReasons::NFC;
+ if(resetReason & 0x01u) return ResetReasons::ResetPin;
+ if((resetReason >> 1u) & 0x01u) return ResetReasons::Watchdog;
+ if((resetReason >> 2u) & 0x01u) return ResetReasons::SoftReset;
+ if((resetReason >> 3u) & 0x01u) return ResetReasons::CpuLockup;
+ if((resetReason >> 16u) & 0x01u) return ResetReasons::SystemOff;
+ if((resetReason >> 17u) & 0x01u) return ResetReasons::LpComp;
+ if((resetReason >> 18u) & 0x01u) return ResetReasons::DebugInterface;
+ if((resetReason >> 19u) & 0x01u) return ResetReasons::NFC;
return ResetReasons::HardReset;
}