xref: /openbmc/phosphor-state-manager/settings.hpp (revision 9a286db223cecd88ecdcf29e6a1e713fdd1bf115)
1a646edd4SDeepak Kodihalli #pragma once
2a646edd4SDeepak Kodihalli 
3a646edd4SDeepak Kodihalli #include <sdbusplus/bus.hpp>
4*9a286db2SPatrick Williams #include <xyz/openbmc_project/Control/Boot/RebootPolicy/client.hpp>
5*9a286db2SPatrick Williams #include <xyz/openbmc_project/Control/Power/RestorePolicy/client.hpp>
6a646edd4SDeepak Kodihalli 
7e426b589SAndrew Geissler #include <string>
8e426b589SAndrew Geissler 
9a646edd4SDeepak Kodihalli namespace settings
10a646edd4SDeepak Kodihalli {
11a646edd4SDeepak Kodihalli 
12a646edd4SDeepak Kodihalli using Path = std::string;
13a646edd4SDeepak Kodihalli using Service = std::string;
14a646edd4SDeepak Kodihalli using Interface = std::string;
15a646edd4SDeepak Kodihalli 
16c328a4cfSPotin Lai constexpr auto defaultRoot = "/";
17*9a286db2SPatrick Williams constexpr auto autoRebootIntf = sdbusplus::client::xyz::openbmc_project::
18*9a286db2SPatrick Williams     control::boot::RebootPolicy<>::interface;
19*9a286db2SPatrick Williams constexpr auto powerRestoreIntf = sdbusplus::client::xyz::openbmc_project::
20*9a286db2SPatrick Williams     control::power::RestorePolicy<>::interface;
21a646edd4SDeepak Kodihalli 
22a646edd4SDeepak Kodihalli /** @class Objects
23a646edd4SDeepak Kodihalli  *  @brief Fetch paths of settings d-bus objects of interest, upon construction
24a646edd4SDeepak Kodihalli  */
25a646edd4SDeepak Kodihalli struct Objects
26a646edd4SDeepak Kodihalli {
27a646edd4SDeepak Kodihalli   public:
28a646edd4SDeepak Kodihalli     /** @brief Constructor - fetch settings objects
29a646edd4SDeepak Kodihalli      *
30a646edd4SDeepak Kodihalli      * @param[in] bus  - The Dbus bus object
31c328a4cfSPotin Lai      * @param[in] root - The root object path
32a646edd4SDeepak Kodihalli      */
33f053e6feSPatrick Williams     explicit Objects(sdbusplus::bus_t& bus, const Path& root = defaultRoot);
34a646edd4SDeepak Kodihalli     Objects(const Objects&) = delete;
35a646edd4SDeepak Kodihalli     Objects& operator=(const Objects&) = delete;
36a646edd4SDeepak Kodihalli     Objects(Objects&&) = delete;
37a646edd4SDeepak Kodihalli     Objects& operator=(Objects&&) = delete;
38a646edd4SDeepak Kodihalli     ~Objects() = default;
39a646edd4SDeepak Kodihalli 
40a646edd4SDeepak Kodihalli     /** @brief Fetch d-bus service, given a path and an interface. The
41a646edd4SDeepak Kodihalli      *         service can't be cached because mapper returns unique
42a646edd4SDeepak Kodihalli      *         service names.
43a646edd4SDeepak Kodihalli      *
44a646edd4SDeepak Kodihalli      * @param[in] path - The Dbus object
45a646edd4SDeepak Kodihalli      * @param[in] interface - The Dbus interface
46a646edd4SDeepak Kodihalli      *
47a646edd4SDeepak Kodihalli      * @return std::string - the dbus service name
48a646edd4SDeepak Kodihalli      */
49a646edd4SDeepak Kodihalli     Service service(const Path& path, const Interface& interface) const;
50a646edd4SDeepak Kodihalli 
51e87db709SAndrew Geissler     /** @brief host auto_reboot user settings object */
52a646edd4SDeepak Kodihalli     Path autoReboot;
53a646edd4SDeepak Kodihalli 
54e87db709SAndrew Geissler     /** @brief host auto_reboot one-time settings object */
55e87db709SAndrew Geissler     Path autoRebootOneTime;
56e87db709SAndrew Geissler 
57a646edd4SDeepak Kodihalli     /** @brief host power_restore_policy settings object */
58a646edd4SDeepak Kodihalli     Path powerRestorePolicy;
59a646edd4SDeepak Kodihalli 
6035ca2e34SAndrew Geissler     /** @brief host power_restore_policy one-time settings object */
6135ca2e34SAndrew Geissler     Path powerRestorePolicyOneTime;
6235ca2e34SAndrew Geissler 
63a646edd4SDeepak Kodihalli     /** @brief The Dbus bus object */
64f053e6feSPatrick Williams     sdbusplus::bus_t& bus;
65a646edd4SDeepak Kodihalli };
66a646edd4SDeepak Kodihalli 
67c328a4cfSPotin Lai /** @class HostObjects
68c328a4cfSPotin Lai  *  @brief Fetch paths of settings d-bus objects of Host
69c328a4cfSPotin Lai  *  @note  IMPORTANT: This class only supports settings under the
70c328a4cfSPotin Lai  *         /xyz/openbmc_project/control/hostX object paths
71c328a4cfSPotin Lai  */
72c328a4cfSPotin Lai struct HostObjects : public Objects
73c328a4cfSPotin Lai {
74c328a4cfSPotin Lai   public:
75c328a4cfSPotin Lai     /** @brief Constructor - fetch settings objects of Host
76c328a4cfSPotin Lai      *
77c328a4cfSPotin Lai      * @param[in] bus - The Dbus bus object
78c328a4cfSPotin Lai      * @param[in] id  - The Host id
79c328a4cfSPotin Lai      */
80f053e6feSPatrick Williams     HostObjects(sdbusplus::bus_t& bus, size_t id);
81c328a4cfSPotin Lai };
82c328a4cfSPotin Lai 
83a646edd4SDeepak Kodihalli } // namespace settings
84