summaryrefslogtreecommitdiff
path: root/src/drivers/Watchdog.h
blob: 73f99ea10bb71c3f6e5ef07058d18bd9c6a763c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#pragma once

namespace Pinetime {
  namespace Drivers {
    class Watchdog {
      public:
        enum class ResetReasons { ResetPin, Watchdog, SoftReset, CpuLockup, SystemOff, LpComp, DebugInterface, NFC, HardReset };
        void Setup(uint8_t timeoutSeconds);
        void Start();
        void Kick();
        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;
    };
  }
}