1dd2c6fdcSAndrew Geissler #pragma once 2dd2c6fdcSAndrew Geissler 3dd2c6fdcSAndrew Geissler #include <sdbusplus/bus.hpp> 4dd2c6fdcSAndrew Geissler #include <xyz/openbmc_project/Control/Host/server.hpp> 5dd2c6fdcSAndrew Geissler 6dd2c6fdcSAndrew Geissler namespace phosphor 7dd2c6fdcSAndrew Geissler { 8dd2c6fdcSAndrew Geissler namespace host 9dd2c6fdcSAndrew Geissler { 10dd2c6fdcSAndrew Geissler 11dd2c6fdcSAndrew Geissler /** @class Host 12dd2c6fdcSAndrew Geissler * @brief OpenBMC control host interface implementation. 13dd2c6fdcSAndrew Geissler * @details A concrete implementation for xyz.openbmc_project.Control.Host 14dd2c6fdcSAndrew Geissler * DBus API. 15dd2c6fdcSAndrew Geissler */ 16dd2c6fdcSAndrew Geissler class Host : public sdbusplus::server::object::object< 17dd2c6fdcSAndrew Geissler sdbusplus::xyz::openbmc_project::Control::server::Host> 18dd2c6fdcSAndrew Geissler { 19dd2c6fdcSAndrew Geissler public: 20dd2c6fdcSAndrew Geissler /** @brief Constructs Host Control Interface 21dd2c6fdcSAndrew Geissler * 22dd2c6fdcSAndrew Geissler * @param[in] bus - The Dbus bus object 23dd2c6fdcSAndrew Geissler * @param[in] objPath - The Dbus object path 24dd2c6fdcSAndrew Geissler */ 25dd2c6fdcSAndrew Geissler Host(sdbusplus::bus::bus& bus, 26dd2c6fdcSAndrew Geissler const char* objPath) : 27dd2c6fdcSAndrew Geissler sdbusplus::server::object::object< 28dd2c6fdcSAndrew Geissler sdbusplus::xyz::openbmc_project::Control::server::Host>( 29dd2c6fdcSAndrew Geissler bus, objPath) 30dd2c6fdcSAndrew Geissler {} 31*62817fa9SAndrew Geissler 32*62817fa9SAndrew Geissler /** @brief Send input command to host 33*62817fa9SAndrew Geissler * 34*62817fa9SAndrew Geissler * Note that the command will be queued in a FIFO if other commands 35*62817fa9SAndrew Geissler * to the host have yet to be run 36*62817fa9SAndrew Geissler * 37*62817fa9SAndrew Geissler * @param[in] command - Input command to execute 38*62817fa9SAndrew Geissler */ 39*62817fa9SAndrew Geissler void execute(Command command) override; 40dd2c6fdcSAndrew Geissler }; 41dd2c6fdcSAndrew Geissler 42dd2c6fdcSAndrew Geissler } // namespace host 43dd2c6fdcSAndrew Geissler } // namespace phosphor 44