1*a90a31a9SAndrew Geissler #pragma once 2*a90a31a9SAndrew Geissler 3*a90a31a9SAndrew Geissler #include <sdbusplus/bus.hpp> 4*a90a31a9SAndrew Geissler #include "xyz/openbmc_project/State/Chassis/server.hpp" 5*a90a31a9SAndrew Geissler 6*a90a31a9SAndrew Geissler namespace phosphor 7*a90a31a9SAndrew Geissler { 8*a90a31a9SAndrew Geissler namespace state 9*a90a31a9SAndrew Geissler { 10*a90a31a9SAndrew Geissler namespace manager 11*a90a31a9SAndrew Geissler { 12*a90a31a9SAndrew Geissler 13*a90a31a9SAndrew Geissler /** @class Chassis 14*a90a31a9SAndrew Geissler * @brief OpenBMC chassis state management implementation. 15*a90a31a9SAndrew Geissler * @details A concrete implementation for xyz.openbmc_project.State.Chassis 16*a90a31a9SAndrew Geissler * DBus API. 17*a90a31a9SAndrew Geissler */ 18*a90a31a9SAndrew Geissler class Chassis : public sdbusplus::server::object::object< 19*a90a31a9SAndrew Geissler sdbusplus::xyz::openbmc_project::State::server::Chassis> 20*a90a31a9SAndrew Geissler { 21*a90a31a9SAndrew Geissler public: 22*a90a31a9SAndrew Geissler /** @brief Constructs Chassis State Manager 23*a90a31a9SAndrew Geissler * 24*a90a31a9SAndrew Geissler * @param[in] bus - The Dbus bus object 25*a90a31a9SAndrew Geissler * @param[in] busName - The Dbus name to own 26*a90a31a9SAndrew Geissler * @param[in] objPath - The Dbus object path 27*a90a31a9SAndrew Geissler */ 28*a90a31a9SAndrew Geissler Chassis(sdbusplus::bus::bus& bus, 29*a90a31a9SAndrew Geissler const char* busName, 30*a90a31a9SAndrew Geissler const char* objPath) : 31*a90a31a9SAndrew Geissler sdbusplus::server::object::object< 32*a90a31a9SAndrew Geissler sdbusplus::xyz::openbmc_project::State::server::Chassis>( 33*a90a31a9SAndrew Geissler bus, objPath), 34*a90a31a9SAndrew Geissler bus(bus) 35*a90a31a9SAndrew Geissler {} 36*a90a31a9SAndrew Geissler 37*a90a31a9SAndrew Geissler /** @brief Set value of RequestedPowerTransition */ 38*a90a31a9SAndrew Geissler Transition requestedPowerTransition(Transition value) override; 39*a90a31a9SAndrew Geissler 40*a90a31a9SAndrew Geissler /** @brief Set value of CurrentPowerState */ 41*a90a31a9SAndrew Geissler PowerState currentPowerState(PowerState value) override; 42*a90a31a9SAndrew Geissler 43*a90a31a9SAndrew Geissler private: 44*a90a31a9SAndrew Geissler /** @brief Persistent sdbusplus DBus connection. */ 45*a90a31a9SAndrew Geissler sdbusplus::bus::bus& bus; 46*a90a31a9SAndrew Geissler }; 47*a90a31a9SAndrew Geissler 48*a90a31a9SAndrew Geissler } // namespace manager 49*a90a31a9SAndrew Geissler } // namespace state 50*a90a31a9SAndrew Geissler } // namespace phosphor 51