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