~aleteoryx/muditaos

ref: d97688135029446a9f07d0d0884e247f00682ead muditaos/module-bsp/board/rt1051/bsp/watchdog/watchdog.cpp -rw-r--r-- 1.4 KiB
d9768813 — Radoslaw Wicik [EGD-5823] Fix Use full hash in artefacts 5 years ago
                                                                                
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "bsp/watchdog/watchdog.hpp"
extern "C"
{
#include "../../common/fsl_drivers/fsl_wdog.h"
}
#include <log/log.hpp>

#define WDOG_1_BASE          WDOG1
#define DEMO_WDOG_IRQHandler RTWDOG

namespace bsp::watchdog
{
    void init()
    {
        wdog_config_t config;
        WDOG_GetDefaultConfig(&config);
        config.timeoutValue = 0xFF; /* Timeout value is (0xFF + 1)/2 = 125 sec. */
        WDOG_Init(WDOG_1_BASE, &config);
        LOG_INFO("wdog init done-");
    }
    void system_reset()
    {
        LOG_DEBUG("request system reset to watchdog");
        WDOG_TriggerSystemSoftwareReset(WDOG_1_BASE);
    }

    void pet()
    {
        WDOG_Refresh(WDOG_1_BASE);
    }

    // taken straight from example wdog.c in NXP mcuxpresso
    std::string reset_cause()
    {
        auto resetFlag = WDOG_GetStatusFlags(WDOG_1_BASE);
        switch (resetFlag & (kWDOG_PowerOnResetFlag | kWDOG_TimeoutResetFlag | kWDOG_SoftwareResetFlag)) {
        case kWDOG_PowerOnResetFlag:
            return ("Power On Reset");
        case kWDOG_TimeoutResetFlag:
            return ("Time Out Reset!");
        case kWDOG_SoftwareResetFlag:
            return ("Software Reset!");
        default:
            return ("Error status!");
        }
    }
} // namespace bsp::watchdog