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,...).

This commit is contained in:
JF
2020-03-22 12:03:17 +01:00
parent 8ed6ffaaf8
commit fb64ba8fb6
15 changed files with 276 additions and 41 deletions

View File

@@ -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;
}

View File

@@ -8,10 +8,20 @@ namespace Pinetime {
void Setup(uint8_t timeoutSeconds);
void Start();
void Kick();
ResetReasons ResetReason();
ResetReasons ResetReason() const { return resetReason; }
static const char* ResetReasonToString(ResetReasons reason);
private:
ResetReasons resetReason;
ResetReasons ActualResetReason() const;
};
class WatchdogView {
public:
WatchdogView(const Watchdog& watchdog) : watchdog{watchdog} { }
Watchdog::ResetReasons ResetReason() const { return watchdog.ResetReason();}
private:
const Watchdog& watchdog;
};
}
}