1*fe270d35SAndrew Geissler #pragma once 2*fe270d35SAndrew Geissler 3*fe270d35SAndrew Geissler #include "config.h" 4*fe270d35SAndrew Geissler 5*fe270d35SAndrew Geissler #include "settings.hpp" 6*fe270d35SAndrew Geissler #include "xyz/openbmc_project/State/Host/server.hpp" 7*fe270d35SAndrew Geissler 8*fe270d35SAndrew Geissler #include <sdbusplus/bus.hpp> 9*fe270d35SAndrew Geissler 10*fe270d35SAndrew Geissler namespace phosphor 11*fe270d35SAndrew Geissler { 12*fe270d35SAndrew Geissler namespace state 13*fe270d35SAndrew Geissler { 14*fe270d35SAndrew Geissler namespace manager 15*fe270d35SAndrew Geissler { 16*fe270d35SAndrew Geissler 17*fe270d35SAndrew Geissler using HypervisorInherit = sdbusplus::server::object::object< 18*fe270d35SAndrew Geissler sdbusplus::xyz::openbmc_project::State::server::Host>; 19*fe270d35SAndrew Geissler 20*fe270d35SAndrew Geissler namespace server = sdbusplus::xyz::openbmc_project::State::server; 21*fe270d35SAndrew Geissler 22*fe270d35SAndrew Geissler /** @class Host 23*fe270d35SAndrew Geissler * @brief OpenBMC host state management implementation. 24*fe270d35SAndrew Geissler * @details A concrete implementation for xyz.openbmc_project.State.Host 25*fe270d35SAndrew Geissler * DBus API. 26*fe270d35SAndrew Geissler */ 27*fe270d35SAndrew Geissler class Hypervisor : public HypervisorInherit 28*fe270d35SAndrew Geissler { 29*fe270d35SAndrew Geissler public: 30*fe270d35SAndrew Geissler Hypervisor() = delete; 31*fe270d35SAndrew Geissler Hypervisor(const Hypervisor&) = delete; 32*fe270d35SAndrew Geissler Hypervisor& operator=(const Hypervisor&) = delete; 33*fe270d35SAndrew Geissler Hypervisor(Hypervisor&&) = delete; 34*fe270d35SAndrew Geissler Hypervisor& operator=(Hypervisor&&) = delete; 35*fe270d35SAndrew Geissler virtual ~Hypervisor() = default; 36*fe270d35SAndrew Geissler 37*fe270d35SAndrew Geissler /** @brief Constructs Hypervisor State Manager 38*fe270d35SAndrew Geissler * 39*fe270d35SAndrew Geissler * @param[in] bus - The Dbus bus object 40*fe270d35SAndrew Geissler * @param[in] objPath - The Dbus object path 41*fe270d35SAndrew Geissler */ 42*fe270d35SAndrew Geissler Hypervisor(sdbusplus::bus::bus& bus, const char* objPath) : 43*fe270d35SAndrew Geissler HypervisorInherit(bus, objPath, false), bus(bus) 44*fe270d35SAndrew Geissler {} 45*fe270d35SAndrew Geissler 46*fe270d35SAndrew Geissler /** @brief Set value of HostTransition */ 47*fe270d35SAndrew Geissler server::Host::Transition 48*fe270d35SAndrew Geissler requestedHostTransition(server::Host::Transition value) override; 49*fe270d35SAndrew Geissler 50*fe270d35SAndrew Geissler /** @brief Set value of CurrentHostState */ 51*fe270d35SAndrew Geissler server::Host::HostState 52*fe270d35SAndrew Geissler currentHostState(server::Host::HostState value) override; 53*fe270d35SAndrew Geissler 54*fe270d35SAndrew Geissler private: 55*fe270d35SAndrew Geissler /** @brief Persistent sdbusplus DBus bus connection. */ 56*fe270d35SAndrew Geissler sdbusplus::bus::bus& bus; 57*fe270d35SAndrew Geissler }; 58*fe270d35SAndrew Geissler 59*fe270d35SAndrew Geissler } // namespace manager 60*fe270d35SAndrew Geissler } // namespace state 61*fe270d35SAndrew Geissler } // namespace phosphor 62