blob: 1d5ffb86ef416c25598add24d954e0266cbf12cd [file] [log] [blame]
William A. Kennington III52575252018-02-09 15:54:56 -08001#pragma once
2#include <sdbusplus/bus.hpp>
3
4/** @class WatchdogService
5 * @brief Access to the running OpenBMC watchdog implementation.
6 * @details Easy accessor for servers that implement the
7 * xyz.openbmc_project.State.Watchdog DBus API.
8 */
9class WatchdogService {
10 public:
11 WatchdogService();
12
13 /** @brief Contains a copy of the properties enumerated by the
14 * watchdog service.
15 */
16 struct Properties {
William A. Kennington IIIde14a022018-02-09 16:11:18 -080017 bool initialized;
William A. Kennington III52575252018-02-09 15:54:56 -080018 bool enabled;
19 uint64_t interval;
20 uint64_t timeRemaining;
21 };
22
23 /** @brief Retrieves a copy of the currently set properties on the
24 * host watchdog
25 *
26 * @return A populated WatchdogProperties struct
27 */
28 Properties getProperties();
29
William A. Kennington IIIde14a022018-02-09 16:11:18 -080030 /** @brief Sets the value of the initialized property on the host
31 * watchdog
32 *
33 * @param[in] initialized - The new initializedvalue
34 */
35 void setInitialized(bool initialized);
36
William A. Kennington III52575252018-02-09 15:54:56 -080037 /** @brief Sets the value of the enabled property on the host watchdog
38 *
39 * @param[in] enabled - The new enabled value
40 */
41 void setEnabled(bool enabled);
42
43 /** @brief Sets the value of the interval property on the host watchdog
44 *
45 * @param[in] interval - The new interval value
46 */
47 void setInterval(uint64_t interval);
48
49 /** @brief Sets the value of the timeRemaining property on the host
50 * watchdog
51 *
52 * @param[in] timeRemaining - The new timeRemaining value
53 */
54 void setTimeRemaining(uint64_t timeRemaining);
55
56 private:
57 /** @brief sdbusplus handle */
58 sdbusplus::bus::bus bus;
59 /** @brief The name of the mapped host watchdog service */
60 const std::string wd_service;
61
62 /** @brief Sets the value of the property on the host watchdog
63 *
64 * @param[in] key - The name of the property
65 * @param[in] val - The new value
66 */
67 template <typename T>
68 void setProperty(const std::string& key, const T& val);
69};