summaryrefslogtreecommitdiffstats
path: root/app/watchdog_service.hpp
blob: 4590e310fb2d7d474f8dc2e54599ca0738c10388 (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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#pragma once
#include <sdbusplus/bus.hpp>

/** @class WatchdogService
 *  @brief Access to the running OpenBMC watchdog implementation.
 *  @details Easy accessor for servers that implement the
 *  xyz.openbmc_project.State.Watchdog DBus API.
 */
class WatchdogService {
    public:
        WatchdogService();

        /** @brief Contains a copy of the properties enumerated by the
         *         watchdog service.
         */
        struct Properties {
            bool enabled;
            uint64_t interval;
            uint64_t timeRemaining;
        };

        /** @brief Retrieves a copy of the currently set properties on the
         *         host watchdog
         *
         *  @return A populated WatchdogProperties struct
         */
        Properties getProperties();

        /** @brief Sets the value of the enabled property on the host watchdog
         *
         *  @param[in] enabled - The new enabled value
         */
        void setEnabled(bool enabled);

        /** @brief Sets the value of the interval property on the host watchdog
         *
         *  @param[in] interval - The new interval value
         */
        void setInterval(uint64_t interval);

        /** @brief Sets the value of the timeRemaining property on the host
         *         watchdog
         *
         *  @param[in] timeRemaining - The new timeRemaining value
         */
        void setTimeRemaining(uint64_t timeRemaining);

    private:
        /** @brief sdbusplus handle */
        sdbusplus::bus::bus bus;
        /** @brief The name of the mapped host watchdog service */
        const std::string wd_service;

        /** @brief Sets the value of the property on the host watchdog
         *
         *  @param[in] key - The name of the property
         *  @param[in] val - The new value
         */
        template <typename T>
        void setProperty(const std::string& key, const T& val);
};
OpenPOWER on IntegriCloud